Quality Measure Implementation Guide, published by HL7 International / Clinical Quality Information. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-cqm/ and changes regularly. See the Directory of published versions
Page standards status: Informative |
<Measure xmlns="http://hl7.org/fhir">
<id value="age-stratified-example"/>
<meta>
<profile
value="http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-computablemeasure"/>
</meta>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<table class="narrative-table">
<tbody>
<tr>
<th colspan="2" scope="row" class="row-header">Metadata</th>
</tr>
<tr>
<th scope="row" class="row-header">Title</th>
<td class="content-container">Measure Age Stratified Example</td>
</tr>
<tr>
<th scope="row" class="row-header">Version</th>
<td class="content-container">1.0.0</td>
</tr>
<tr>
<th scope="row" class="row-header">Identifier</th>
<td class="content-container">urn:oid:2.16.840.1.113883.4.642.40.61.29.20</td>
</tr>
<tr>
<th scope="row" class="row-header">Experimental</th>
<td class="content-container">true</td>
</tr>
<tr>
<th scope="row" class="row-header">Jurisdiction</th>
<td class="content-container"><span title="Codes:{http://unstats.un.org/unsd/methods/m49/m49.htm 001}">Global (Whole world)</span></td>
</tr>
<tr>
<th scope="row" class="row-header">Steward (Publisher)</th>
<td class="content-container">HL7 International / Clinical Quality Information</td>
</tr>
<tr>
<th scope="row" class="row-header">Description</th>
<td class="content-container"><div><p>A sample measure demonstrating age stratification using age ranges represented as ISO-8601-Derived periods.</p>
</div></td>
</tr>
<tr>
<th scope="row" class="row-header">Measure Basis</th>
<td class="content-container">boolean</td>
</tr>
<tr>
<th scope="row" class="row-header">Measure Scoring</th>
<td class="content-container"><span title="Codes:{http://terminology.hl7.org/CodeSystem/measure-scoring cohort}">Cohort</span></td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header">Measure Group (Rate) (ID: primary)</th>
</tr>
<tr>
<th scope="row" class="row-header">Initial Population</th>
<td class="content-container">
<em>ID</em>: primary-age-stratified-example-initial-population
<br/>
<em>Description</em>: No description provided
<em>Criteria</em>: <a href="#primary-primary-age-stratified-example-initial-population">Initial Population</a>
</td>
</tr>
<tr>
<th scope="row" class="row-header">Stratifier</th>
<td class="content-container">
<em>Code</em>: <span title="Codes:">Age Group</span>
<br/>
<em>Description</em>: Stratification by age groups represented as ISO-8601-Derived periods.
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header">Measure Logic</th>
</tr>
<tr>
<th scope="row" class="row-header">Primary Library</th>
<td class="content-container"><a href="Library-AgeStratificationExample.html">Age Stratification Example</a></td>
</tr>
<tr>
<th scope="row" class="row-header">Contents</th>
<td class="content-container">
<em><a href="#population-criteria">Population Criteria</a></em>
<br/>
<em><a href="#definitions">Logic Definitions</a></em>
<br/>
<em><a href="#terminology">Terminology</a></em>
<br/>
<em><a href="#dependencies">Dependencies</a></em>
<br/>
<em><a href="#data-requirements">Data Requirements</a></em>
<br/>
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header"><a name="population-criteria"> </a>Population Criteria</th>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header">Measure Group (Rate) (ID: primary)</th>
</tr>
<tr>
<th scope="row" rowspan="2" class="row-header">
Initial Population
</th>
</tr>
<tr>
<td>
<a name="primary-primary-age-stratified-example-initial-population"> </a>
<pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define "Initial Population":
exists (
[Encounter] E
where E.period during "Measurement Period"
)</code></pre>
<a href="#agestratificationexample-initial-population"><em>Definition</em></a>
</td>
</tr>
<tr>
<th scope="row" rowspan="2" class="row-header">
Stratifier
</th>
</tr>
<tr>
<td>
<pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">/*
By Patient Age as of the start of the Measurement Period
Age (10-14, 15-19, 20+)
*/
define "By Age":
case
when AgeInYearsAt(start of "Measurement Period") in Interval[10, 14] then "P10Y--P15Y"
when AgeInYearsAt(start of "Measurement Period") in Interval[15, 19] then "P15Y--P20Y"
when AgeInYearsAt(start of "Measurement Period") >= 20 then "P20Y--P9999Y"
else null
end</code></pre>
<a href="#agestratificationexample-by-age"><em>Definition</em></a>
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header"><a name="definitions"> </a>Logic Definitions</th>
</tr>
<tr>
<th scope="row" rowspan="2" class="row-header">
Logic Definition
</th>
<td class="content-container"><em>Library Name:</em> AgeStratificationExample</td>
</tr>
<tr>
<td>
<a name="agestratificationexample-initial-population"> </a>
<pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">define "Initial Population":
exists (
[Encounter] E
where E.period during "Measurement Period"
)</code></pre>
</td>
</tr>
<tr>
<th scope="row" rowspan="2" class="row-header">
Logic Definition
</th>
<td class="content-container"><em>Library Name:</em> AgeStratificationExample</td>
</tr>
<tr>
<td>
<a name="agestratificationexample-by-age"> </a>
<pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">/*
By Patient Age as of the start of the Measurement Period
Age (10-14, 15-19, 20+)
*/
define "By Age":
case
when AgeInYearsAt(start of "Measurement Period") in Interval[10, 14] then "P10Y--P15Y"
when AgeInYearsAt(start of "Measurement Period") in Interval[15, 19] then "P15Y--P20Y"
when AgeInYearsAt(start of "Measurement Period") >= 20 then "P20Y--P9999Y"
else null
end</code></pre>
</td>
</tr>
<tr>
<th scope="row" rowspan="2" class="row-header">
Logic Definition
</th>
<td class="content-container"><em>Library Name:</em> FHIRHelpers</td>
</tr>
<tr>
<td>
<a name="fhirhelpers-tointerval"> </a>
<pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">/*
@description: Converts the given [Period](https://hl7.org/fhir/datatypes.html#Period)
value to a CQL DateTime Interval
@comment: If the start value of the given period is unspecified, the starting
boundary of the resulting interval will be open (meaning the start of the interval
is unknown, as opposed to interpreted as the beginning of time).
*/
define function ToInterval(period FHIR.Period):
if period is null then
null
else
if period."start" is null then
Interval(period."start".value, period."end".value]
else
Interval[period."start".value, period."end".value]</code></pre>
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header"><a name="terminology"> </a>Terminology</th>
</tr>
<tr>
<th scope="row" class="row-header">Code System</th>
<td class="content-container">
<em>Description</em>: Code system ISO-8601-Derived Periods
<br/>
<em>Resource</em>: <a href="CodeSystem-iso-8601-derived-periods.html">ISO-8601-Derived Periods Codes</a>
<br/>
<em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/iso-8601-derived-periods</tt>
</td>
</tr>
<tr>
<th scope="row" class="row-header">Direct Reference Code</th>
<td class="content-container">
<em>Display</em>: 10-14 years
<br/>
<em>Code</em>: P10Y--P15Y
<br/>
<em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/iso-8601-derived-periods</tt>
</td>
</tr>
<tr>
<th scope="row" class="row-header">Direct Reference Code</th>
<td class="content-container">
<em>Display</em>: 15-19 years
<br/>
<em>Code</em>: P15Y--P20Y
<br/>
<em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/iso-8601-derived-periods</tt>
</td>
</tr>
<tr>
<th scope="row" class="row-header">Direct Reference Code</th>
<td class="content-container">
<em>Display</em>: 20+ years
<br/>
<em>Code</em>: P20Y--P9999Y
<br/>
<em>System</em>: <tt>http://terminology.hl7.org/CodeSystem/iso-8601-derived-periods</tt>
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header"><a name="dependencies"> </a>Dependencies</th>
</tr>
<tr>
<th scope="row" class="row-header">Dependency</th>
<td class="content-container">
<em>Description</em>: Library FHIRHelpers
<br/>
<em>Resource</em>: <a href="http://hl7.org/fhir/uv/cql/STU2/Library-FHIRHelpers.html">http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.1</a>
<br/>
<em>Canonical URL</em>: <tt>http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.1</tt>
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header"><a name="data-requirements"> </a>Data Requirements</th>
</tr>
<tr>
<th scope="row" class="row-header">Data Requirement</th>
<td class="content-container">
<em>Type</em>: Encounter
<br/>
<em>Profile(s)</em>:
<a href="http://hl7.org/fhir/R4/encounter.html">Encounter</a>
<br/>
<em>Must Support Elements</em>: period
<br/>
</td>
</tr>
<tr>
<th scope="row" class="row-header">Data Requirement</th>
<td class="content-container">
<em>Type</em>: Patient
<br/>
<em>Profile(s)</em>:
<a href="http://hl7.org/fhir/R4/patient.html">Patient</a>
<br/>
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header">Generated using version 0.4.9 of the sample-content-ig Liquid templates</th>
</tr>
</tbody>
</table>
</div>
</text>
<contained>
<Library>
<id value="effective-data-requirements"/>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
<valueCoding>
<system
value="http://terminology.hl7.org/CodeSystem/iso-8601-derived-periods"/>
<code value="P10Y--P15Y"/>
<display value="10-14 years"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
<valueCoding>
<system
value="http://terminology.hl7.org/CodeSystem/iso-8601-derived-periods"/>
<code value="P15Y--P20Y"/>
<display value="15-19 years"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
<valueCoding>
<system
value="http://terminology.hl7.org/CodeSystem/iso-8601-derived-periods"/>
<code value="P20Y--P9999Y"/>
<display value="20+ years"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="AgeStratificationExample"/>
</extension>
<extension url="name">
<valueString value="Initial Population"/>
</extension>
<extension url="statement">
<valueString
value="define "Initial Population":
exists (
[Encounter] E
where E.period during "Measurement Period"
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="0"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="AgeStratificationExample"/>
</extension>
<extension url="name">
<valueString value="By Age"/>
</extension>
<extension url="statement">
<valueString
value="/*
By Patient Age as of the start of the Measurement Period
Age (10-14, 15-19, 20+)
*/
define "By Age":
case
when AgeInYearsAt(start of "Measurement Period") in Interval[10, 14] then "P10Y--P15Y"
when AgeInYearsAt(start of "Measurement Period") in Interval[15, 19] then "P15Y--P20Y"
when AgeInYearsAt(start of "Measurement Period") >= 20 then "P20Y--P9999Y"
else null
end"/>
</extension>
<extension url="displaySequence">
<valueInteger value="1"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToInterval"/>
</extension>
<extension url="statement">
<valueString
value="/*
@description: Converts the given [Period](https://hl7.org/fhir/datatypes.html#Period)
value to a CQL DateTime Interval
@comment: If the start value of the given period is unspecified, the starting
boundary of the resulting interval will be open (meaning the start of the interval
is unknown, as opposed to interpreted as the beginning of time).
*/
define function ToInterval(period FHIR.Period):
if period is null then
null
else
if period."start" is null then
Interval(period."start".value, period."end".value]
else
Interval[period."start".value, period."end".value]"/>
</extension>
<extension url="displaySequence">
<valueInteger value="2"/>
</extension>
</extension>
<name value="EffectiveDataRequirements"/>
<status value="active"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="module-definition"/>
</coding>
</type>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library FHIRHelpers"/>
<resource
value="http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.1"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Code system ISO-8601-Derived Periods"/>
<resource
value="http://terminology.hl7.org/CodeSystem/iso-8601-derived-periods"/>
</relatedArtifact>
<parameter>
<name value="Measurement Period"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="Period"/>
</parameter>
<parameter>
<name value="Initial Population"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="By Age"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Coding"/>
</parameter>
<dataRequirement>
<type value="Encounter"/>
<profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
<mustSupport value="period"/>
</dataRequirement>
<dataRequirement>
<type value="Patient"/>
<profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
</dataRequirement>
</Library>
</contained>
<extension
url="http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-populationBasis">
<valueCode value="boolean"/>
</extension>
<extension
url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements" id="effective-data-requirements">
<valueCanonical value="#effective-data-requirements"/>
</extension>
<url value="http://hl7.org/fhir/uv/cqm/Measure/age-stratified-example"/>
<identifier>
<system value="urn:ietf:rfc:3986"/>
<value value="urn:oid:2.16.840.1.113883.4.642.40.61.29.20"/>
</identifier>
<version value="1.0.0"/>
<name value="MeasureAgeStratifiedExample"/>
<title value="Measure Age Stratified Example"/>
<status value="active"/>
<experimental value="true"/>
<date value="2025-08-13"/>
<publisher value="HL7 International / Clinical Quality Information"/>
<contact>
<telecom>
<system value="url"/>
<value value="http://www.hl7.org/Special/committees/cqi"/>
</telecom>
</contact>
<description
value="A sample measure demonstrating age stratification using age ranges represented as ISO-8601-Derived periods."/>
<jurisdiction>
<coding>
<system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/>
<code value="001"/>
</coding>
</jurisdiction>
<library
value="http://hl7.org/fhir/uv/cqm/Library/AgeStratificationExample"/>
<scoring>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/measure-scoring"/>
<code value="cohort"/>
</coding>
</scoring>
<group>
<extension
url="http://hl7.org/fhir/5.0/StructureDefinition/extension-Measure.group.linkId">
<valueString value="primary"/>
</extension>
<population>
<extension
url="http://hl7.org/fhir/5.0/StructureDefinition/extension-Measure.group.population.linkId">
<valueString
value="primary-age-stratified-example-initial-population"/>
</extension>
<code>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-population"/>
<code value="initial-population"/>
</coding>
</code>
<criteria>
<language value="text/cql-identifier"/>
<expression value="Initial Population"/>
</criteria>
</population>
<stratifier>
<extension
url="http://hl7.org/fhir/5.0/StructureDefinition/extension-Measure.group.stratifier.linkId">
<valueString value="primary-age-stratified-example-stratification-1"/>
</extension>
<extension
url="http://hl7.org/fhir/uv/cqm/StructureDefinition/cqm-valueSet">
<valueCanonical
value="http://hl7.org/fhir/uv/cqm/ValueSet/age-stratified-example"/>
</extension>
<code>
<text value="Age Group"/>
</code>
<description
value="Stratification by age groups represented as ISO-8601-Derived periods."/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="By Age"/>
</criteria>
</stratifier>
</group>
</Measure>