-
Notifications
You must be signed in to change notification settings - Fork 24
Specifying Population Criteria
To encourage consistency among measures, the following guidelines for specifying population criteria within a measure are proposed. The measure population criteria names and calculation methods used here are based on the Health Quality Measures Format (HQMF) HL7 standard.
Note that CQL allows both Patient and Population context expressions to be defined. For the purposes of measure definition with HQMF, all criteria expressions are Patient context. The Population context is used here to illustrate the measure scoring calculation as applied to the populations, but the criteria expressions are always Patient context.
The name of an expression specifying a population criteria within a measure should always be the name of the criteria type:
- "Initial Population"
- "Denominator"
- "Denominator Exclusion"
- "Denominator Exception"
- "Numerator"
- "Numerator Exclusion"
- "Measure Population"
- "Measure Population Exclusion"
- "Measure Observation" (Note that this is the name of a function, see the Continuous Variable section for more)
- "Stratification"
When a measure has multiple populations, the criteria names will follow the convention above, adding the number of the population group to each criteria, e.g. "Initial Population 1", "Denominator 1", etc. Note that when multiple populations are present, the number of the group is added to all population groups, not just the groups other than the first.
For multiple population ratio measures that specify 2 initial populations, the populations would be named with an additional "_X" to distinguish the initial populations, e.g. "Initial Population 1_1", "Initial Population 1_2", "Initial Population 2_1", "Initial Population 2_2".
Note also that when a measure has multiple population groups, the expectation is that the measure would have multiple scores, one for each population group. The formulas for calculation of the groups do not change, they are the same as for single group measures, just calculated using the criteria for each group.
For each type of measure, the set of applicable criteria are defined by the Health Quality Measure Format (HQMF) specification. In addition, the formula for calculating the measure score is implied by the type of the measure. The following sections describe the expected result type for population criteria for each type of measure, as well as explicitly defining the measure score calculation formula.
In addition to the measure type, measures generally fall into two categories, patient-based, and non-patient-based, such as episode-of-care-based. In general, patient-based measures count the number of patients in each population, while non-patient-based measures count the number of items (such as encounters) in each population. Although the calculation formulas are conceptually the same for both categories, for ease of expression, population criteria for patient-based measures return true or false, while non-patient-based measures return the item to be counted such as an encounter or procedure.
For stratification criteria, each measure type can have any number of stratification criteria, and the name for each one simply adds the number of the criteria, e.g. "Stratification 1", "Stratification 2", etc. The result type of the stratification criteria expressions must be the same as the result type for the other criteria types appropriate for that measure type.
The following population criteria types apply to proportion measures:
- Initial Population
- Denominator
- Denominator Exclusion
- Denominator Exception
- Numerator
- Numerator Exclusion
- Stratification
The following snippet defines the measure score for a patient-based proportion measure:
context Patient
define "Denominator Membership":
"Initial Population"
and "Denominator"
and not "Denominator Exclusion"
and not ("Denominator Exception" and not "Numerator")
define "Numerator Membership":
"Initial Population"
and "Denominator"
and not "Denominator Exclusion"
and "Numerator"
and not "Numerator Exclusion"
context Population
define "Measure Score":
Count("Numerator Membership" IsMember where IsMember is true)
/ Count("Denominator Membership" IsMember where IsMember is true)
The above snippet is taken from this example.
For the Initial Population, for each patient, if the patient meets the Initial Population criteria, the patient is a member of the Initial Population.
For the Denominator Population, for each patient, if the patient meets the Initial Population criteria, and the patient meets the Denominator criteria, then exclusions are considered. If the patient meets a Denominator Exclusion criteria, or if the patient meets a Denominator Exception criteria and does not meet the Numerator criteria, the patient is not a member of the Denominator Population. Otherwise, the patient is a member of the Denominator Population.
For the Numerator Population, for each patient, if the patient meets the Initial Population criteria, and the patient meets the Denominator criteria, and the patient does not meet the Denominator Exclusion criteria, and the patient meets the Numerator criteria, and the patient does not meet the Numerator Exclusion criteria, then the patient is a member of the Numerator Population.
For patient-based measures, stratifications are determined by adding the stratification criteria for each stratification to the numerator and denominator membership expressions:
context Patient
define "Stratification Numerator Membership":
"Numerator Membership"
and "Stratification 1"
define "Stratification Denominator Membership":
"Denominator Membership"
and "Stratification 1"
For non-patient-based measures, the following snippet describes the measure score calculation:
context Patient
define "Numerator Membership":
"Initial Population"
intersect "Denominator"
except "Denominator Exclusion"
intersect "Numerator"
except "Numerator Exclusion"
define "Denominator Membership":
"Initial Population"
intersect "Denominator"
except "Denominator Exclusion"
except ("Denominator Exception" except "Numerator")
context Population
define "Measure Score":
Count("Numerator Membership") /
Count("Denominator Membership")
This snippet is taken from this example.
For non-patient-based measures, stratification is computed by adding the stratification expression for each stratification as an intersection to the numerator and denominator expressions:
context Population
define "Stratification 1 Measure Score":
Count(
"Numerator Membership"
intersect "Stratification 1"
) /
Count(
"Denominator Membership"
intersect "Stratification 1"
)
For ratio measures, the following population criteria types are applicable:
- Initial Population
- Denominator
- Denominator Exclusion
- Numerator
- Numerator Exclusion
- Measure Observation
- Stratification
For patient-based ratio measures, all population criteria must return true or false (or null). For non-patient-based ratio measures, each population criteria must return the same type, such as an Encounter, or Procedure.
For ratio measures that include a Measure Observation, the measure observation is specified in the same way as it is for continuous variable measures. In particular, the Measure Observation is defined as a function that takes a single argument of the same type as the elements returned by all the population criteria, and the aggregation method is specified in the HQMF.
The following snippet describes the calculation formulas for a patient-based ratio measure:
context Patient
define "Denominator Membership":
"Initial Population"
and "Denominator"
and not "Denominator Exclusion"
define "Numerator Membership":
"Initial Population"
and "Numerator"
and not "Numerator Exclusion"
context Population
define "Measure Ratio Numerator":
Count("Numerator Membership" IsMember where IsMember is true)
define "Measure Ratio Denominator":
Count("Denominator Membership" IsMember where IsMember is true)
The above snippet is taken from this example.
For the Initial Population, for each patient, if the patient meets the Initial Population criteria, the patient is a member of the Initial Population.
For the Denominator Population, for each patient, if the patient meets the Initial Population criteria, and the patient meets the Denominator criteria, and the patient does not meet the Denominator Exclusion criteria, then the patient is a member of the Denominator Population.
For the Numerator Population, for each patient, if the patient meets the Initial Population criteria, and the patient meets the Numerator criteria, and the patient does not meet the Numerator Exclusion criteria, then the patient is a member of the Numerator Population.
For patient-based ratio measures, the stratifications are computed by adding the stratification criteria for each stratification to the numerator and denominator counts.
The following snippet describes the calculation formulas for a non-patient-based ratio measure:
context Patient
define "Numerator Membership":
"Initial Population"
intersect "Numerator"
except "Numerator Exclusion"
define "Denominator Membership":
"Initial Population"
intersect "Denominator"
except "Denominator Exclusion"
context Population
define "Measure Score Numerator":
Count("Numerator Membership")
define "Measure Score Denominator":
Count("Denominator Membership")
This snippet is taken from this example.
For non-patient-based ratio measures, stratifications are produced by intersecting the stratification criteria for each stratification with the numerator and denominator counts.
The following snippet describes the calculation formula for a non-patient-based continuous variable ratio measure that uses Avg to aggregate population measurements:
context Population
define "Measure Score Numerator":
Avg(
"Numerator Membership" Numerator
return "Measure Observation"(Numerator)
)
define "Measure Score Denominator":
Avg(
"Denominator Membership" Denominator
return "Measure Observation"(Denominator)
)
This snippet is taken from this example.
For continuous variable measures, the following population criteria types are applicable:
- Initial Population
- Measure Population
- Measure Population Exclusion
- Measure Observation
- Stratification
For continuous variable measures, the measure observation is defined as a function that takes a single parameter of the type of elements returned by the population criteria. Each population criteria other than the measure observation must return the same type.
The following snippet illustrates how a continuous variable measure score is calculated:
context Patient
define "Measure Population Membership":
"Initial Population"
intersect "Measure Population"
except "Measure Population Exclusion"
context Population
define "Measure Score":
Avg("Measure Population Membership" PopulationMember
return "Median ED Time"(PopulationMember)
)
Note that the aggregation method (Avg in this case) is specified in the HQMF. The above snippet is taken from this example.
For the Initial Population, for each patient, if the patient meets the Initial Population criteria, the patient is a member of the Initial Population.
For the Measure Population, for each patient, if the patient meets the Initial Population criteria, and the patient meets the Measure Population criteria, and the patient does not meet the Measure Exclusion criteria, the patient is a member of the Measure Population.
Stratifications for continuous variable measures are computed by intersecting the stratification criteria for each stratification with the measure population expressions.
For cohort definitions, only the Initial Population criteria type is used. For patient-based cohort definitions, the criteria should return a true or false (or null). For other types of cohort definitions, the criteria may return any type.
For the Initial Population, for each patient, if the patient meets the Initial Population criteria, the patient is a member of the Initial Population.
As a general rule, to simplify the expression and implementation of quality measures, criteria should be specified independently. In other words, because the structure of a proportion measure implies that the denominator is a subset of the initial population, it is not necessary to restate the initial population criteria in the definition of the denominator. For example:
context Patient
define "Initial Population":
AgeInYearsAt(start of "Measurement Period") >= 18
define "Denominator":
exists (
["Encounter, Performed": "Inpatient"] Encounter
where Encounter.startDatetime during "Measurement Period"
)
In this case, the initial population is all patients who were at least 18 years old at the start of the measurement period. The denominator is then a subset of those patients in the initial population that also had an encounter starting during the measurement period. It is implied that the patients must be in the initial population in order to be in the denominator, so it does not need to be stated explicitly.
However, this is not a strict requirement because for non-patient-based measures, it is often easier to restate at least part of the criteria than to build up a completely independent expression. For example:
context Patient
define "Valid Encounter":
["Encounter, Performed": "Inpatient"] Encounter
where Encounter.startDatetime during "Measurement Period"
define "Initial Population":
"Valid Encounter" Encounter
where AgeInYearsAt(Encounter.startDatetime) >= 18
define "Denominator":
"Valid Encounter" Encounter
with ["Diagnosis": "AMI"] AMIDiagnosis
such that AMIDiagnosis.startDatetime <= Encounter.startDatetime
In this case, the Valid Encounter
expression is used to simplify the expression of the initial population and denominator criteria, resulting in some overlap between them. The calculation is unaffected though, because the overlap is effectively just a restatement of the same criteria and will give the correct result when they are combined to calculate the measure score.
Authoring Patterns - QICore v4.1.1
Authoring Patterns - QICore v5.0.0
Authoring Patterns - QICore v6.0.0
Cooking with CQL Q&A All Categories
Additional Q&A Examples
Developers Introduction to CQL
Specifying Population Criteria