CMS FHIR Quality Measure Development IG
0.8.0-cibuild - CI Build
CMS FHIR Quality Measure Development IG, published by Centers for Medicare & Medicaid Services (CMS). This guide is not an authorized publication; it is the continuous build for version 0.8.0-cibuild built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/cms-qmd/ and changes regularly. See the Directory of published versions
US Quality Core defines a US Quality Core Patient profile that extends the US Core Patient profile.
The Patient patterns page in the US CQL implementation guide covers name, birth date, age, gender, sex, race and ethnicity, and deceased. This page records only what differs for quality measurement; see the Pattern Index for the full list of available patterns.
For Patient, see also modifier elements, search parameters, and cross-version considerations in that guide.
See Patient age.
Where decision support applications typically ask for a patient’s age as of today, a quality measure calculates it as of a specific date — usually the start of the measurement period:
define "Patient Age Between 50 and 75":
Patient.ageInYearsAt(date from start of "Measurement Period") between 50 and 75
CQL supports age calculations over both Date and DateTime values. The DateTime overloads take the timezone offset into account, which can produce unexpected results when the offset differs significantly from the execution timestamp, so best practice is to apply the date from extractor to the as of value as above. The ageInYearsAt() and related functions in USCoreElements apply that extractor already, so logic using them does not need to.
See Patient race and ethnicity.
US Core defines extensions for representing a patient’s race and ethnicity using the CDC’s race and ethnicity codes. Under the derived ModelInfo used by US Quality Core, these are reached through the race() and ethnicity() fluent functions in USCoreCommon:
define "Patient Race Includes Alaska Native":
Patient P
where exists (P.race().ombCategory Category where Category ~ "American Indian or Alaska Native")
and exists (P.race().detailed RaceDetail where RaceDetail ~ "Alaska Native")
race() and ethnicity() each return a tuple of ombCategory, detailed, and text. Note that race().ombCategory is a list while ethnicity().ombCategory is a single Coding, following the extension definitions. For the full list of extension-backed elements and their accessors, see the Extension Index.
NOTE: CQL uses the underlying data model to determine how to access patient information through the
Patientdefinition, which is available in Patient context. A retrieve is not required.
Measures that report race and ethnicity as supplemental data elements use the SupplementalDataElements library rather than accessing the extensions directly; see the Library Index for its current version and the fluent functions it now uses.