SMART Guidelines Starter Kit
2.1.0 - ci-build
SMART Guidelines Starter Kit, published by WHO. This guide is not an authorized publication; it is the continuous build for version 2.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-ig-starter-kit/ and changes regularly. See the Directory of published versions
Indicators are a machine-readable expressions that define the indicator and its input variables, population, and stratifiers. Indicators are expressed using FHIR Measure resource.
Measures are FHIR resources and can refer to CQL libraries.
Summary: For each indicator in the L2, the L3 author creates a Measure resource. This includes adding populations and stratifiers (consulting the CQF-Measures guidance). The create the CQL definitions needed for the calculations, which will be encoded into the Library resources.
group
appropriate to the scoring type (only one group is supported)
Add the canonical URL of the Library to the Measure
scoring
. In particular:
type
and improvementNotation
This topic discusses modeling measures that involve estimated denominators, i.e. measures where the denominator value is provided by other means, rather than derived from data in the source system.
For this discussion, we'll consider a measles indicator from the WHO SMART Guideline for Measles Immunizations:
Library: IMMZ.IND.12 Logic
Immunization coverage for Measles and rubella containing vaccine, 1st dose
The percentage in the target population who have received one dose of measles and rubella vaccine during reporting period
Numerator: Number of measles and rubella doses (1st dose) administered through routine services during reporting period
Numerator Computation: COUNT of immunization events WHERE "Vaccine type" = "Measles and rubella containing vaccines" for the first dose in the primary series AND "Date and time of vaccination" is during the reporting period
Denominator: Number in target group
Denominator Computation: As defined by the Member States
References: WHO Immunization facility analysis guide;WHO Handbook on immunization data
This indicator definition allows implementing member states to define the denominator. In some cases, the denominator is pulled from source system data, but in some cases, the denominator is based on population estimates from the region, rather than source system data.
To support this approach, instead of modeling the measure as a simple proportion measure, we set the measure up as a ratio of continuous variables. This allows us to control how the counting is performed for both the numerator and denominator values.
Because it is a ratio measure, we can define different bases for the denominator and numerator, so while the numerator will be patient-based, the denominator will be location-based:
/*
* As defined by Member State, but defaulted based on locations with encounters
*/
define "Denominator Initial Population":
[Location] L
with "Encounter During Measurement Period" E
such that E.location.references(L)
define "Denominator":
"Denominator Initial Population"
By default, this sets up the denominator as the set of locations that had patient encounters.
define function "Denominator Observation"(location Location):
Count(
"Encounter During Measurement Period" E
where E.location.references(location)
return E.subject
)
And we can simply provide a default observation function that counts the number of patients with encounters at each location.
For the numerator, this is modeled in the same way that a typical patient-based proportion measure would be:
define "Numerator Initial Population":
exists ("Encounter During Measurement Period")
/*
* Numerator: Number of measles and rubella doses (1st dose) administered through routine services during reporting period
* Numerator Computation: COUNT of immunization events WHERE "Vaccine type" = "Measles and rubella containing vaccines" for the first dose in the primary series AND "Date and time of vaccination" is during the reporting period
*/
define "Numerator":
exists (
Elements."MCV Doses Administered to Patient During Measurement Period" I
where I.protocolApplied.only().doseNumber = 1
)
define function "Numerator Observation"():
if "Numerator" then 1 else 0
And then the numerator observation is just a 1 if the patient is in the numerator, and a 0 otherwise.
By setting up the measure in this way, we can allow implementing systems to define their own denominator observation, substituting counts of patients from the source system data with estimated counts for the location.
Note that in this case, we effectively have two continuous-variable measures, one for the denominator, and one for the numerator, and we need to indicate in the criteria which is which, using the criteriaReference extension:
* population[denominator]
* id = "IMMZ.IND.12.DEN"
* extension[http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-criteriaReference].valueString = "denominator-initialPopulation"
* description = "Locations in target group, as defined by Member State, but defaulted based on locations with encounters"
* code = $measure-population#denominator "Denominator"
* criteria.language = #text/cql-identifier
* criteria.expression = "Denominator"
In addition, as with any continuous-variable criteria, we need to define the aggregation method for each measure observation using the aggregateMethod extension:
* population[denominator-observation]
* id = "IMMZ.IND.12.NUMOBS"
* extension[http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-criteriaReference].valueString = "denominator-initialPopulation"
* extension[http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-aggregateMethod].valueCode = #sum
* description = "Number in target group, as defined by Member State, but defaulted to number of patients with encounters at each location"
* code = $measure-population#measure-observation "Measure Observation"
* criteria.language = #text/cql-identifier
* criteria.expression = "Denominator Observation"
From the scoring, see what populations are permitted - according to the CQF Guidance
NOTE: Determining effective data requirements is a detailed process and should be done through the use of tooling such as the CQF Tooling to process Measure and Library resources
Add a contained Library to the resource and refer to it using the expression EffectiveDataRequirements.
If known, add the data requirements:
terms
.All terms shall part of the Data Dictionary
$evaluate-measure
operation, with example data included or available.As with all FHIR Conformance resources, change management is critical. Do not set the version element of Measures defined in the SMART Guideline, the version element will be set by the publication process. See the versioning topic for more information on change management.
Tool | Usage | Doc |
---|---|---|
Sushi | Create FHIR resources in FSH syntax | HL7 Spec Sushi Documentation |
CQF Ruler | A FHIR server to upload the artifacts and test the $evaluate-measure |
SMART Guidelines - Immunizations (Measles): Indicator 05 SMART Guidelines - Immunizations (Measles): Indicator 08
There are a few open questions on standards that are still pending to be addressed: