eCQM QICore Content Implementation Guide
2024.0.0 - CI Build
eCQM QICore Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2024.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/ecqm-content-qicore-2024/ and changes regularly. See the Directory of published versions
Draft as of 2024-07-09 |
<Measure xmlns="http://hl7.org/fhir">
<id value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
<meta>
<profile
value="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/computable-measure-cqfm"/>
<profile
value="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/publishable-measure-cqfm"/>
<profile
value="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/executable-measure-cqfm"/>
</meta>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<table class="grid dict">
<tr>
<th scope="row"><b>Title: </b></th>
<td style="padding-left: 4px;">Functional Status Assessments for Heart FailureFHIR</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">FunctionalStatusAssessmentsforHeartFailureFHIR</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">0.1.000</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Measure-FunctionalStatusAssessmentsforHeartFailureFHIR.html">Functional Status Assessments for Heart FailureFHIR</a></td>
</tr>
<tr>
<th scope="row">
<b>
short-name identifier:
</b>
</th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<span>CMS90FHIR</span>
</p>
</td>
</tr>
<tr>
<th scope="row">
<b>
version-independent identifier:
</b>
</th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<span>urn:uuid:54792d38-7ad9-459c-b209-91b8915ab7ac</span>
</p>
</td>
</tr>
<tr>
<th scope="row">
<b>
version-specific identifier:
</b>
</th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<span>urn:uuid:e1455c1f-ab8a-4337-86ad-903576c55d4e</span>
</p>
</td>
</tr>
<tr>
<th scope="row">
<b>
publisher (CMS) identifier:
</b>
</th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<span>90FHIR</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Effective Period: </b></th>
<td style="padding-left: 4px;">2025-01-01..2025-12-31</td>
</tr>
<tr>
<th scope="row"><b>Status: </b></th>
<td style="padding-left: 4px;">draft</td>
</tr>
<tr>
<th scope="row"><b>Publisher: </b></th>
<td style="padding-left: 4px;">Centers for Medicare & Medicaid Services (CMS)</td>
</tr>
<tr>
<th scope="row"><b>Author: </b></th>
<td style="padding-left: 4px;">National Committee for Quality Assurance</td>
</tr>
<tr>
<th scope="row"><b>Description: </b></th>
<td style="padding-left: 4px;"><div><p>Percentage of patients 18 years of age and older with heart failure who completed initial and follow-up patient-reported functional status assessments</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Purpose: </b></th>
<td style="padding-left: 4px;"><div><p>UNKNOWN</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Copyright: </b></th>
<td style="padding-left: 4px;"><div><p>Copyright This Physician Performance Measure (Measure) and related data specifications are owned and stewarded by the Centers for Medicare & Medicaid Services (CMS). CMS contracted (Contract HHSP23320095627WC; HHSP23337008T) with the National Committee for Quality Assurance (NCQA) to develop this electronic measure. NCQA is not responsible for any use of the Measure. NCQA makes no representations, warranties, or endorsement about the quality of any organization or physician that uses or reports performance measures and NCQA has no liability to anyone who relies on such measures or specifications.</p>
<p>Limited proprietary coding is contained in the Measure specifications for user convenience. Users of proprietary code sets should obtain all necessary licenses from the owners of the code sets. NCQA disclaims all liability for use or accuracy of any third-party codes contained in the specifications.</p>
<p>CPT(R) codes, descriptions and other data are copyright 2024. American Medical Association. All rights reserved. CPT is a trademark of the American Medical Association. Fee schedules, relative value units, conversion factors and/or related components are not assigned by the AMA, are not part of CPT, and the AMA is not recommending their use. The AMA does not directly or indirectly practice medicine or dispense medical services. The AMA assumes no liability for data contained or not contained herein. Applicable FARS/DFARS restrictions apply to government use.</p>
<p>The American Dental Association (“ADA”) holds a copyright to the Current Dental Terminology (“CDT”) codes contained in certain measure specifications. The CDT codes in the measure specifications are included with the permission of the ADA. All uses of the CDT codes require a license from the ADA. No alteration, amendments, or modifications of the CDT or any portion thereof is allowed. Resale, transmission, or distribution of copies of the CDT or other portions of the CDT is also not allowed. To inquire about licensing, contact CDT-SNODENT@ada.org.</p>
<p>The measure specifications contain coding from LOINC(R) (http://loinc.org). The LOINC table, LOINC codes, LOINC panels and form file, LOINC linguistic variants file, LOINC/RSNA Radiology Playbook, and LOINC/IEEE Medical Device Code Mapping Table are copyright 2004-2024 Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee, and are available at no cost under the license at http://loinc.org/terms-of-use.</p>
<p>This material contains SNOMED Clinical Terms(R) (SNOMED CT[R]) copyright 2004-2023 International Health Terminology Standards Development Organisation.</p>
<p>ICD-10 copyright 2024 World Health Organization. All Rights Reserved.</p>
<p>“HL7” is the registered trademark of Health Level Seven International.</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Disclaimer: </b></th>
<td style="padding-left: 4px;"><div><p>The performance Measure is not a clinical guideline and does not establish a standard of medical care, and has not been tested for all potential applications. THE MEASURE AND SPECIFICATIONS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.</p>
<p>Due to technical limitations, registered trademarks are indicated by (R) or [R] and unregistered trademarks are indicated by (TM) or [TM].</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Scoring: </b></th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<span>Proportion </span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Rationale: </b></th>
<td style="padding-left: 4px;"><div><p>Patients living with heart failure often have poor functional status and health-related quality of life, which declines as the disease progresses (Allen et al., 2012). In addition, their care is often complicated by multiple comorbidities. To assist in managing these complex patients, the American College of Cardiology Foundation and American Heart Association recommend collecting initial and repeat assessments of a patient's function and ability to complete desired activities of daily living (Hunt et al., 2009). The American Heart Association also released scientific statements emphasizing the collection of patient-reported health status (for example, functional limitations, symptom burden, quality of life) from heart failure patients as an important means of establishing a dynamic conversation between patient and provider regarding care goals and the patient's priorities (Allen et al., 2012; Rumsfeld et al., 2013).</p>
<p>The most recent update to clinical guidelines by the American Heart Association, the American College of Cardiology, and the Heart Failure Society of America further emphasizes that better understanding of symptom burden and prognosis may improve the quality of treatment decisions. The guideline also indicates that routine assessment can facilitate population health management by identifying high-risk patients needing closer monitoring or referral to specialized centers and that patient-reported health status assessment increases the patient’s role in care, which can motivate initiation and uptake of medical therapy (Heidenreich et al., 2022).</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Clinical recommendation statement: </b></th>
<td style="padding-left: 4px;"><div><p>The American Heart Association, the American College of Cardiology, and the Heart Failure Society of America (2022):
This guideline provides patient-centric recommendations for clinicians to prevent, diagnose, and manage patients with heart failure and specifically recommends assessing patient-reported health status using a validated questionnaire to provide incremental information for patient functional status, symptom burden, and prognosis. Tools specifically recommended in the guideline are as follows:</p>
<ul>
<li>The Kansas City Cardiomyopathy Questionnaire or,</li>
<li>The Minnesota Living with Heart Failure Questionnaire</li>
<li>PROMIS-Plus-HF [Patient Reported Outcomes Measurement Information System Plus-Heart Failure]</li>
</ul>
</div></td>
</tr>
<tr>
<th scope="row"><b>Guidance (Usage): </b></th>
<td style="padding-left: 4px;">Initial functional status assessment (FSA) and encounter: The initial FSA is an FSA that occurs within two weeks before or during an encounter, in the 180 days or more before the end of the measurement period.
Follow-up FSA: The follow-up FSA must be completed at least 30 days but no more than 180 days after the initial FSA.
The same FSA instrument must be used for the initial and follow-up assessment.
This eCQM is a patient-based measure.
This FHIR-based measure has been derived from the QDM-based measure: CMS90v14.
Please refer to the HL7 QI-Core Implementation Guide (http://hl7.org/fhir/us/qicore/STU4.1.1/) for more information on QI-Core and mapping recommendations from QDM to QI-Core 4.1.1 (http://hl7.org/fhir/us/qicore/STU4.1.1/qdm-to-qicore.html).</td>
</tr>
<tr>
<th scope="row"><b>Population Criteria: </b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<th><b>654a6f0e78418140875e3610</b></th>
</tr>
<tr>
<td>Initial Population:</td>
<td>Patients 18 years of age and older who had two outpatient encounters during the measurement period and a diagnosis of heart failure that starts any time before and continues into the measurement period</td>
</tr>
<tr>
<td>Denominator:</td>
<td>Equals Initial Population</td>
</tr>
<tr>
<td>Denominator Exclusion:</td>
<td>Exclude patients who are in hospice care for any part of the measurement period.
Exclude patients with severe cognitive impairment in any part of the measurement period.</td>
</tr>
<tr>
<td>Numerator:</td>
<td>Patients with patient-reported functional status assessment results (i.e., Veterans RAND 12-item health survey [VR-12]; VR-36; Kansas City Cardiomyopathy Questionnaire [KCCQ]; KCCQ-12; Minnesota Living with Heart Failure Questionnaire [MLHFQ]; Patient-Reported Outcomes Measurement Information System [PROMIS]-10 Global Health; PROMIS-29) present in the EHR within two weeks before or during the initial FSA encounter and results for the follow-up FSA at least 30 days but no more than 180 days after the initial FSA</td>
</tr>
</table>
</td>
</tr>
<tr>
<th scope="row"><b>Libraries: </b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<td><a href="Library-FunctionalStatusAssessmentsforHeartFailureFHIR.html">FunctionalStatusAssessmentsforHeartFailureFHIR</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<th scope="row"><b>Terminology and Other Dependencies: </b></th>
<td style="padding-left: 4px;">
<li><code>Library/Status|1.8.000</code></li>
<li><code>Library/QICoreCommon|2.1.000</code></li>
<li><code>Library/FHIRHelpers|4.4.000</code></li>
<li><code>Library/Hospice|6.12.000</code></li>
<li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-observation-category.html">Observation Category Codes</a></li>
<li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">Logical Observation Identifiers, Names and Codes (LOINC)</a></li>
<li><a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">SNOMED CT (all versions)</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.464.1003.101.12.1001/expansion">Office Visit</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.464.1003.101.12.1080/expansion">Telephone Visits</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.464.1003.101.12.1089/expansion">http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.526.3.376/expansion">Heart Failure</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.666.5.307/expansion">Encounter Inpatient</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.464.1003.1003/expansion">http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.526.3.1584/expansion">Hospice Care Ambulatory</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.464.1003.1165/expansion">http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165</a></li>
</td>
</tr>
<tr>
<th scope="row"><b>Parameters:</b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<th><b>name</b></th>
<th><b>use</b></th>
<th><b>min</b></th>
<th><b>max</b></th>
<th><b>type</b></th>
</tr>
<tr>
<td>Measurement Period</td>
<td>In</td>
<td>0</td>
<td>1</td>
<td>Period</td>
</tr>
<tr>
<td>Numerator</td>
<td>Out</td>
<td>0</td>
<td>1</td>
<td>boolean</td>
</tr>
<tr>
<td>Denominator</td>
<td>Out</td>
<td>0</td>
<td>1</td>
<td>boolean</td>
</tr>
<tr>
<td>Initial Population</td>
<td>Out</td>
<td>0</td>
<td>1</td>
<td>boolean</td>
</tr>
<tr>
<td>Denominator Exclusions</td>
<td>Out</td>
<td>0</td>
<td>1</td>
<td>boolean</td>
</tr>
</table>
</td>
</tr>
<tr>
<th scope="row"><b>DataRequirements:</b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<th><b>Resource Type</b></th>
<th><b>Resource Elements</b></th>
<th><b>Valueset Name</b></th>
<th><b>Valueset</b></th>
</tr>
<tr>
<td>Patient(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-patient.html">QICorePatient</a>)</td>
<td>
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Encounter(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-encounter.html">QICoreEncounter</a>)</td>
<td>
type
status
status.value
period
</td>
<td>
Office Visit
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.464.1003.101.12.1001/expansion">Office Visit</a></td>
</tr>
<tr>
<td>Encounter(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-encounter.html">QICoreEncounter</a>)</td>
<td>
type
status
status.value
period
</td>
<td>
Telephone Visits
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.464.1003.101.12.1080/expansion">Telephone Visits</a></td>
</tr>
<tr>
<td>Encounter(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-encounter.html">QICoreEncounter</a>)</td>
<td>
type
status
status.value
period
</td>
<td>
Virtual Encounter
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.464.1003.101.12.1089/expansion">http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089</a></td>
</tr>
<tr>
<td>Encounter(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-encounter.html">QICoreEncounter</a>)</td>
<td>
type
hospitalization
hospitalization.dischargeDisposition
period
status
status.value
</td>
<td>
Encounter Inpatient
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.666.5.307/expansion">Encounter Inpatient</a></td>
</tr>
<tr>
<td>Encounter(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-encounter.html">QICoreEncounter</a>)</td>
<td>
type
period
status
status.value
</td>
<td>
Hospice Encounter
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.464.1003.1003/expansion">http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003</a></td>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
effective
value
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Observation(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-observation.html">QICoreObservation</a>)</td>
<td>
code
value
effective
status
status.value
category
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Condition(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-condition.html">QICoreCondition</a>)</td>
<td>
code
</td>
<td>
Heart Failure
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.526.3.376/expansion">Heart Failure</a></td>
</tr>
<tr>
<td>Condition(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-condition.html">QICoreCondition</a>)</td>
<td>
code
</td>
<td>
Hospice Diagnosis
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.464.1003.1165/expansion">http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165</a></td>
</tr>
<tr>
<td>Condition(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-condition.html">QICoreCondition</a>)</td>
<td>
code
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>ServiceRequest(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-servicerequest.html">QICoreServiceRequest</a>)</td>
<td>
code
authoredOn
authoredOn.value
status
status.value
intent
intent.value
</td>
<td>
Hospice Care Ambulatory
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.526.3.1584/expansion">Hospice Care Ambulatory</a></td>
</tr>
<tr>
<td>Procedure(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-procedure.html">QICoreProcedure</a>)</td>
<td>
code
performed
status
status.value
</td>
<td>
Hospice Care Ambulatory
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.526.3.1584/expansion">Hospice Care Ambulatory</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<th scope="row"><b>Direct Reference Codes:</b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<th><b>display</b></th>
<th><b>code</b></th>
<th><b>system</b></th>
</tr>
<tr>
<td>survey</td>
<td>survey</td>
<td><a href="http://hl7.org/fhir/R4/codesystem-observation-category.html">http://terminology.hl7.org/CodeSystem/observation-category</a></td>
</tr>
<tr>
<td>PROMIS-10 Global Mental Health (GMH) score T-score</td>
<td>71969-0</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>PROMIS-10 Global Physical Health (GPH) score T-score</td>
<td>71971-6</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>PROMIS-29 Sleep disturbance score T-score</td>
<td>71955-9</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>PROMIS-29 Satisfaction with participation in social roles score T-score</td>
<td>71957-5</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>PROMIS-29 Physical function score T-score</td>
<td>71959-1</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>PROMIS-29 Pain interference score T-score</td>
<td>71961-7</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>PROMIS-29 Fatigue score T-score</td>
<td>71963-3</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>PROMIS-29 Depression score T-score</td>
<td>71965-8</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>PROMIS-29 Anxiety score T-score</td>
<td>71967-4</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>VR-12 Mental component summary (MCS) score - oblique method T-score</td>
<td>72026-8</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>VR-12 Physical component summary (PCS) score - oblique method T-score</td>
<td>72025-0</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>VR-12 Mental component summary (MCS) score - orthogonal method T-score</td>
<td>72028-4</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>VR-12 Physical component summary (PCS) score - orthogonal method T-score</td>
<td>72027-6</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>VR-36 Mental component summary (MCS) score - oblique method T-score</td>
<td>71990-6</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>VR-36 Physical component summary (PCS) score - oblique method T-score</td>
<td>71989-8</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>VR-36 Mental component summary (MCS) score - orthogonal method T-score</td>
<td>72008-6</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>VR-36 Physical component summary (PCS) score - orthogonal method T-score</td>
<td>72007-8</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Physical score [MLHFQ]</td>
<td>85618-7</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Emotional score [MLHFQ]</td>
<td>85609-6</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Kansas City Cardiomyopathy Questionnaire - 12 item [KCCQ-12]</td>
<td>86923-0</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Overall summary score [KCCQ-12]</td>
<td>86924-8</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Quality of life score [KCCQ]</td>
<td>72189-4</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Symptom stability score [KCCQ]</td>
<td>72194-4</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Self-efficacy score [KCCQ]</td>
<td>72190-2</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Total symptom score [KCCQ]</td>
<td>72191-0</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Physical limitation score [KCCQ]</td>
<td>72195-1</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Social limitation score [KCCQ]</td>
<td>72196-9</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Overall summary score [KCCQ]</td>
<td>71940-1</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Discharge to home for hospice care (procedure)</td>
<td>428361000124107</td>
<td><a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">http://snomed.info/sct</a></td>
</tr>
<tr>
<td>Discharge to healthcare facility for hospice care (procedure)</td>
<td>428371000124100</td>
<td><a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">http://snomed.info/sct</a></td>
</tr>
<tr>
<td>Yes (qualifier value)</td>
<td>373066001</td>
<td><a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">http://snomed.info/sct</a></td>
</tr>
<tr>
<td>Hospice care [Minimum Data Set]</td>
<td>45755-6</td>
<td><a href="http://terminology.hl7.org/5.5.0/CodeSystem-v3-loinc.html">http://loinc.org</a></td>
</tr>
<tr>
<td>Severe cognitive impairment (finding)</td>
<td>702956004</td>
<td><a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">http://snomed.info/sct</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<th scope="row"><b>Logic Definitions:</b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<th><b>Group</b></th>
<th><b>Scoring</b></th>
<th><b>Population Criteria</b></th>
<th><b>Expression</b></th>
</tr>
<tr>
<td> 654a6f0e78418140875e3610 </td>
<td colspan="3" style="padding-left: 4px;">
<b>Group scoring:</b>
<span> proportion </span>
<b>Measure scoring:</b>
<p style="margin-bottom: 5px;">
<span>Proportion</span>
</p>
<tr>
<th scope="row"><b>Type: </b></th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<span>Process </span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Rate Aggregation: </b></th>
<td colspan="3" style="padding-left: 4px;">None</td>
</tr>
<tr>
<th scope="row"><b>Improvement Notation: </b></th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<span>increase </span>
</p>
</td>
</tr>
</td>
<tr>
<td/>
<td/>
<td>Initial Population</td>
<td>
<pre><code class="language-cql">define "Initial Population":
AgeInYearsAt(date from start of "Measurement Period") >= 18
and exists ( ( [Condition: "Heart Failure"] ) HeartFailure
where HeartFailure.prevalenceInterval ( ) overlaps before "Measurement Period"
)
and exists ( "Two Outpatient Encounters during Measurement Period" )</code></pre>
</td>
</tr>
<tr>
<td/>
<td/>
<td>Denominator</td>
<td>
<pre><code class="language-cql">define "Denominator":
"Initial Population"</code></pre>
</td>
</tr>
<tr>
<td/>
<td/>
<td>Denominator Exclusion</td>
<td>
<pre><code class="language-cql">define "Denominator Exclusions":
Hospice."Has Hospice Services"
or exists ( ( [Condition: "Severe cognitive impairment (finding)"] ) SevereCognitiveImpairment
where SevereCognitiveImpairment.prevalenceInterval ( ) overlaps "Measurement Period"
)</code></pre>
</td>
</tr>
<tr>
<td/>
<td/>
<td>Numerator</td>
<td>
<pre><code class="language-cql">define "Numerator":
( "Has Encounter with Initial and Follow Up PROMIS10 Assessments" )
or ( "Has Encounter with Initial and Follow Up PROMIS29 Assessments" )
or ( "Has Encounter with Initial and Follow Up VR12 Oblique Assessments" )
or ( "Has Encounter with Initial and Follow Up VR12 Orthogonal Assessments" )
or ( "Has Encounter with Initial and Follow Up VR36 Oblique Assessments" )
or ( "Has Encounter with Initial and Follow Up VR36 Orthogonal Assessments" )
or ( "Has Encounter with Initial and Follow Up MLHFQ Assessments" )
or ( "Has Encounter with Initial and Follow Up KCCQ12 Assessments" )
or ( "Has Encounter with Initial and Follow Up KCCQ Domain Score Assessments" )
or ( "Has Encounter with Initial and Follow Up KCCQ Total Score Assessments" )</code></pre>
</td>
</tr>
</tr>
</table>
<table class="grid-dict">
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Qualifying Encounters</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Qualifying Encounters":
( ( [Encounter: "Office Visit"]
union [Encounter: "Telephone Visits"]
union [Encounter: "Virtual Encounter"]
).isEncounterPerformed ( ) ) ValidEncounter
where ValidEncounter.period.toInterval ( ) during day of "Measurement Period"</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Date PROMIS10 Total Assessment Completed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Date PROMIS10 Total Assessment Completed":
from
( ( [Observation: "PROMIS-10 Global Mental Health (GMH) score T-score"] ).isAssessmentPerformed ( ) ) PROMIS10MentalScore,
( ( [Observation: "PROMIS-10 Global Physical Health (GPH) score T-score"] ).isAssessmentPerformed ( ) ) PROMIS10PhysicalScore
let PROMIS10MentalScoreDate: date from start of PROMIS10MentalScore.effective.toInterval ( ),
PROMIS10PhysicalScoreDate: date from start of PROMIS10PhysicalScore.effective.toInterval ( )
where PROMIS10MentalScoreDate same day as PROMIS10PhysicalScoreDate
and PROMIS10MentalScore.value is not null
and PROMIS10PhysicalScore.value is not null
return PROMIS10MentalScoreDate</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Has Encounter with Initial and Follow Up PROMIS10 Assessments</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Encounter with Initial and Follow Up PROMIS10 Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date PROMIS10 Total Assessment Completed" InitialPROMIS10Date,
"Date PROMIS10 Total Assessment Completed" FollowupPROMIS10Date
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialPROMIS10Date 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupPROMIS10Date during day of Interval[date from InitialPROMIS10Date + 30 days, date from InitialPROMIS10Date + 180 days]
return ValidEncounters
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Date PROMIS29 Total Assessment Completed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Date PROMIS29 Total Assessment Completed":
from
( ( [Observation: "PROMIS-29 Sleep disturbance score T-score"] ).isAssessmentPerformed ( ) ) Promis29Sleep,
( ( [Observation: "PROMIS-29 Satisfaction with participation in social roles score T-score"] ).isAssessmentPerformed ( ) ) Promis29SocialRoles,
( ( [Observation: "PROMIS-29 Physical function score T-score"] ).isAssessmentPerformed ( ) ) Promis29Physical,
( ( [Observation: "PROMIS-29 Pain interference score T-score"] ).isAssessmentPerformed ( ) ) Promis29Pain,
( ( [Observation: "PROMIS-29 Fatigue score T-score"] ).isAssessmentPerformed ( ) ) Promis29Fatigue,
( ( [Observation: "PROMIS-29 Depression score T-score"] ).isAssessmentPerformed ( ) ) Promis29Depression,
( ( [Observation: "PROMIS-29 Anxiety score T-score"] ).isAssessmentPerformed ( ) ) Promis29Anxiety
let Promis29SleepDate: date from start of Promis29Sleep.effective.toInterval ( ),
Promis29SocialRolesDate: date from start of Promis29SocialRoles.effective.toInterval ( ),
Promis29PhysicalDate: date from start of Promis29Physical.effective.toInterval ( ),
Promis29PainDate: date from start of Promis29Pain.effective.toInterval ( ),
Promis29FatigueDate: date from start of Promis29Fatigue.effective.toInterval ( ),
Promis29DepressionDate: date from start of Promis29Depression.effective.toInterval ( ),
Promis29AnxietyDate: date from start of Promis29Anxiety.effective.toInterval ( )
where Promis29SleepDate same day as Promis29SocialRolesDate
and Promis29SocialRoles.value is not null
and Promis29SleepDate same day as Promis29PhysicalDate
and Promis29Physical.value is not null
and Promis29SleepDate same day as Promis29PainDate
and Promis29Pain.value is not null
and Promis29SleepDate same day as Promis29FatigueDate
and Promis29Fatigue.value is not null
and Promis29SleepDate same day as Promis29DepressionDate
and Promis29Depression.value is not null
and Promis29SleepDate same day as Promis29AnxietyDate
and Promis29Anxiety.value is not null
and Promis29Sleep.value is not null
return Promis29SleepDate</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Has Encounter with Initial and Follow Up PROMIS29 Assessments</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Encounter with Initial and Follow Up PROMIS29 Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date PROMIS29 Total Assessment Completed" InitialPROMIS29Date,
"Date PROMIS29 Total Assessment Completed" FollowupPROMIS29Date
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialPROMIS29Date 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupPROMIS29Date during day of Interval[date from InitialPROMIS29Date + 30 days, date from InitialPROMIS29Date + 180 days]
return ValidEncounters
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Date VR12 Oblique Total Assessment Completed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Date VR12 Oblique Total Assessment Completed":
from
( ( [Observation: "VR-12 Mental component summary (MCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR12MentalAssessment,
( ( [Observation: "VR-12 Physical component summary (PCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR12PhysicalAssessment
let VR12MentalAssessmentDate: date from start of VR12MentalAssessment.effective.toInterval ( ),
VR12PhysicalAssessmentDate: date from start of VR12PhysicalAssessment.effective.toInterval ( )
where VR12MentalAssessmentDate same day as VR12PhysicalAssessmentDate
and VR12MentalAssessment.value is not null
and VR12PhysicalAssessment.value is not null
return VR12MentalAssessmentDate</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Has Encounter with Initial and Follow Up VR12 Oblique Assessments</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Encounter with Initial and Follow Up VR12 Oblique Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date VR12 Oblique Total Assessment Completed" InitialVR12ObliqueDate,
"Date VR12 Oblique Total Assessment Completed" FollowupVR12ObliqueDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialVR12ObliqueDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupVR12ObliqueDate during day of Interval[date from InitialVR12ObliqueDate + 30 days, date from InitialVR12ObliqueDate + 180 days]
return ValidEncounters
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Date VR12 Orthogonal Total Assessment Completed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Date VR12 Orthogonal Total Assessment Completed":
from
( ( [Observation: "VR-12 Mental component summary (MCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR12MentalAssessment,
( ( [Observation: "VR-12 Physical component summary (PCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR12PhysicalAssessment
let VR12MentalAssessmentDate: date from start of VR12MentalAssessment.effective.toInterval ( ),
VR12PhysicalAssessmentDate: date from start of VR12PhysicalAssessment.effective.toInterval ( )
where VR12MentalAssessmentDate same day as VR12PhysicalAssessmentDate
and VR12MentalAssessment.value is not null
and VR12PhysicalAssessment.value is not null
return VR12MentalAssessmentDate</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Has Encounter with Initial and Follow Up VR12 Orthogonal Assessments</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Encounter with Initial and Follow Up VR12 Orthogonal Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date VR12 Orthogonal Total Assessment Completed" InitialVR12OrthogonalDate,
"Date VR12 Orthogonal Total Assessment Completed" FollowupVR12OrthogonalDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialVR12OrthogonalDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupVR12OrthogonalDate during day of Interval[date from InitialVR12OrthogonalDate + 30 days, date from InitialVR12OrthogonalDate + 180 days]
return ValidEncounters
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Date VR36 Oblique Total Assessment Completed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Date VR36 Oblique Total Assessment Completed":
from
( ( [Observation: "VR-36 Mental component summary (MCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR36MentalAssessment,
( ( [Observation: "VR-36 Physical component summary (PCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR36PhysicalAssessment
let VR36MentalAssessmentDate: date from start of VR36MentalAssessment.effective.toInterval ( ),
VR36PhysicalAssessmentDate: date from start of VR36PhysicalAssessment.effective.toInterval ( )
where VR36MentalAssessmentDate same day as VR36PhysicalAssessmentDate
and VR36MentalAssessment.value is not null
and VR36PhysicalAssessment.value is not null
return VR36MentalAssessmentDate</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Has Encounter with Initial and Follow Up VR36 Oblique Assessments</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Encounter with Initial and Follow Up VR36 Oblique Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date VR36 Oblique Total Assessment Completed" InitialVR36ObliqueDate,
"Date VR36 Oblique Total Assessment Completed" FollowupVR36ObliqueDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialVR36ObliqueDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupVR36ObliqueDate during day of Interval[date from InitialVR36ObliqueDate + 30 days, date from InitialVR36ObliqueDate + 180 days]
return ValidEncounters
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Date VR36 Orthogonal Total Assessment Completed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Date VR36 Orthogonal Total Assessment Completed":
from
( ( [Observation: "VR-36 Mental component summary (MCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR36MentalAssessment,
( ( [Observation: "VR-36 Physical component summary (PCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR36PhysicalAssessment
let VR36MentalAssessmentDate: date from start of VR36MentalAssessment.effective.toInterval ( ),
VR36PhysicalAssessmentDate: date from start of VR36PhysicalAssessment.effective.toInterval ( )
where VR36MentalAssessmentDate same day as VR36PhysicalAssessmentDate
and VR36MentalAssessment.value is not null
and VR36PhysicalAssessment.value is not null
return VR36MentalAssessmentDate</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Has Encounter with Initial and Follow Up VR36 Orthogonal Assessments</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Encounter with Initial and Follow Up VR36 Orthogonal Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date VR36 Orthogonal Total Assessment Completed" InitialVR36OrthogonalDate,
"Date VR36 Orthogonal Total Assessment Completed" FollowupVR36OrthogonalDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialVR36OrthogonalDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupVR36OrthogonalDate during day of Interval[date from InitialVR36OrthogonalDate + 30 days, date from InitialVR36OrthogonalDate + 180 days]
return ValidEncounters
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Date MLHFQ Total Assessment Completed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Date MLHFQ Total Assessment Completed":
from
( ( [Observation: "Physical score [MLHFQ]"] ).isAssessmentPerformed ( ) ) MLHFQPhysical,
( ( [Observation: "Emotional score [MLHFQ]"] ).isAssessmentPerformed ( ) ) MLHFQEmotional
let MLHFQPhysicalDate: date from start of MLHFQPhysical.effective.toInterval ( ),
MLHFQEmotionalDate: date from start of MLHFQEmotional.effective.toInterval ( )
where MLHFQPhysicalDate same day as MLHFQEmotionalDate
and MLHFQPhysical.value is not null
and MLHFQEmotional.value is not null
return MLHFQPhysicalDate</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Has Encounter with Initial and Follow Up MLHFQ Assessments</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Encounter with Initial and Follow Up MLHFQ Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date MLHFQ Total Assessment Completed" InitialMLHFQDate,
"Date MLHFQ Total Assessment Completed" FollowupMLHFQDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialMLHFQDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupMLHFQDate during day of Interval[date from InitialMLHFQDate + 30 days, date from InitialMLHFQDate + 180 days]
return ValidEncounters
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Date KCCQ12 Total Assessment Completed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Date KCCQ12 Total Assessment Completed":
from
( ( [Observation: "Kansas City Cardiomyopathy Questionnaire - 12 item [KCCQ-12]"] ).isAssessmentPerformed ( ) ) KCCQ12Item,
( ( [Observation: "Overall summary score [KCCQ-12]"] ).isAssessmentPerformed ( ) ) KCCQ12Summary
let KCCQ12ItemDate: date from start of KCCQ12Item.effective.toInterval ( ),
KCCQ12SummaryDate: date from start of KCCQ12Summary.effective.toInterval ( )
where KCCQ12ItemDate same day as KCCQ12SummaryDate
and KCCQ12Item.value is not null
and KCCQ12Summary.value is not null
return KCCQ12ItemDate</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Has Encounter with Initial and Follow Up KCCQ12 Assessments</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Encounter with Initial and Follow Up KCCQ12 Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date KCCQ12 Total Assessment Completed" InitialKCCQ12Date,
"Date KCCQ12 Total Assessment Completed" FollowupKCCQ12Date
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialKCCQ12Date 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupKCCQ12Date during day of Interval[date from InitialKCCQ12Date + 30 days, date from InitialKCCQ12Date + 180 days]
return ValidEncounters
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Date KCCQ Domain Assessment Completed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Date KCCQ Domain Assessment Completed":
from
( ( [Observation: "Quality of life score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQLifeQuality,
( ( [Observation: "Symptom stability score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSymptomStability,
( ( [Observation: "Self-efficacy score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSelfEfficacy,
( ( [Observation: "Total symptom score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSymptoms,
( ( [Observation: "Physical limitation score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQPhysicalLimits,
( ( [Observation: "Social limitation score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSocialLimits
let KCCQLifeQualityDate: date from start of KCCQLifeQuality.effective.toInterval ( ),
KCCQSymptomStabilityDate: date from start of KCCQSymptomStability.effective.toInterval ( ),
KCCQSelfEfficacyDate: date from start of KCCQSelfEfficacy.effective.toInterval ( ),
KCCQSymptomsDate: date from start of KCCQSymptoms.effective.toInterval ( ),
KCCQPhysicalLimitsDate: date from start of KCCQPhysicalLimits.effective.toInterval ( ),
KCCQSocialLimitsDate: date from start of KCCQSocialLimits.effective.toInterval ( )
where KCCQLifeQualityDate same day as KCCQSymptomStabilityDate
and KCCQSymptomStability.value is not null
and KCCQLifeQualityDate same day as KCCQSelfEfficacyDate
and KCCQSelfEfficacy.value is not null
and KCCQLifeQualityDate same day as KCCQSymptomsDate
and KCCQSymptoms.value is not null
and KCCQLifeQualityDate same day as KCCQPhysicalLimitsDate
and KCCQPhysicalLimits.value is not null
and KCCQLifeQualityDate same day as KCCQSocialLimitsDate
and KCCQSocialLimits.value is not null
and KCCQLifeQuality.value is not null
return KCCQLifeQualityDate</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Has Encounter with Initial and Follow Up KCCQ Domain Score Assessments</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Encounter with Initial and Follow Up KCCQ Domain Score Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date KCCQ Domain Assessment Completed" InitialKCCQAssessmentDate,
"Date KCCQ Domain Assessment Completed" FollowupKCCQAssessmentDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialKCCQAssessmentDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupKCCQAssessmentDate during day of Interval[date from InitialKCCQAssessmentDate + 30 days, date from InitialKCCQAssessmentDate + 180 days]
return ValidEncounters
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Date KCCQ Total Assessment Completed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Date KCCQ Total Assessment Completed":
( ( [Observation: "Overall summary score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSummaryScore
let KCCQSummaryScoreDate: date from start of KCCQSummaryScore.effective.toInterval ( )
where KCCQSummaryScore.value is not null
return KCCQSummaryScoreDate</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Has Encounter with Initial and Follow Up KCCQ Total Score Assessments</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Encounter with Initial and Follow Up KCCQ Total Score Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date KCCQ Total Assessment Completed" InitialKCCQTotalScore,
"Date KCCQ Total Assessment Completed" FollowupKCCQTotalScore
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialKCCQTotalScore 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupKCCQTotalScore during day of Interval[date from InitialKCCQTotalScore + 30 days, date from InitialKCCQTotalScore + 180 days]
return ValidEncounters
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Numerator</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Numerator":
( "Has Encounter with Initial and Follow Up PROMIS10 Assessments" )
or ( "Has Encounter with Initial and Follow Up PROMIS29 Assessments" )
or ( "Has Encounter with Initial and Follow Up VR12 Oblique Assessments" )
or ( "Has Encounter with Initial and Follow Up VR12 Orthogonal Assessments" )
or ( "Has Encounter with Initial and Follow Up VR36 Oblique Assessments" )
or ( "Has Encounter with Initial and Follow Up VR36 Orthogonal Assessments" )
or ( "Has Encounter with Initial and Follow Up MLHFQ Assessments" )
or ( "Has Encounter with Initial and Follow Up KCCQ12 Assessments" )
or ( "Has Encounter with Initial and Follow Up KCCQ Domain Score Assessments" )
or ( "Has Encounter with Initial and Follow Up KCCQ Total Score Assessments" )</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Two Outpatient Encounters during Measurement Period</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Two Outpatient Encounters during Measurement Period":
from
"Qualifying Encounters" OfficeVisit1,
"Qualifying Encounters" OfficeVisit2
where OfficeVisit2.period.toInterval ( ) starts 1 day or more after day of end of OfficeVisit1.period.toInterval ( )
return OfficeVisit1</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Initial Population</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Initial Population":
AgeInYearsAt(date from start of "Measurement Period") >= 18
and exists ( ( [Condition: "Heart Failure"] ) HeartFailure
where HeartFailure.prevalenceInterval ( ) overlaps before "Measurement Period"
)
and exists ( "Two Outpatient Encounters during Measurement Period" )</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Denominator</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Denominator":
"Initial Population"</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>Hospice</td>
<td>Has Hospice Services</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Hospice Services":
exists ((([Encounter: "Encounter Inpatient"]).isEncounterPerformed()) InpatientEncounter
where (InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to home for hospice care (procedure)"
or InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to healthcare facility for hospice care (procedure)"
)
and InpatientEncounter.period.toInterval() ends during day of "Measurement Period"
)
or exists ((([Encounter: "Hospice Encounter"]).isEncounterPerformed()) HospiceEncounter
where HospiceEncounter.period.toInterval() overlaps day of "Measurement Period"
)
or exists ((([Observation: "Hospice care [Minimum Data Set]"]).isAssessmentPerformed()) HospiceAssessment
where HospiceAssessment.value ~ "Yes (qualifier value)"
and HospiceAssessment.effective.toInterval() overlaps day of "Measurement Period"
)
or exists ((([ServiceRequest: "Hospice Care Ambulatory"]).isInterventionOrder()) HospiceOrder
where HospiceOrder.authoredOn.toInterval() during day of "Measurement Period"
// and HospiceOrder.doNotPerform is not true
// https://oncprojectracking.healthit.gov/support/browse/CQLIT-447
)
or exists ((([Procedure: "Hospice Care Ambulatory"]).isInterventionPerformed()) HospicePerformed
where HospicePerformed.performed.toInterval() overlaps day of "Measurement Period"
)
or exists (([Condition: "Hospice Diagnosis"]) HospiceCareDiagnosis
where HospiceCareDiagnosis.prevalenceInterval() overlaps day of "Measurement Period"
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FunctionalStatusAssessmentsforHeartFailureFHIR</td>
<td>Denominator Exclusions</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Denominator Exclusions":
Hospice."Has Hospice Services"
or exists ( ( [Condition: "Severe cognitive impairment (finding)"] ) SevereCognitiveImpairment
where SevereCognitiveImpairment.prevalenceInterval ( ) overlaps "Measurement Period"
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>Status</td>
<td>isEncounterPerformed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">//Encounter, Performed
//General usage unless required otherwise by measure intent (e.g., follow-up encounters)
define fluent function isEncounterPerformed(Enc List<Encounter>):
Enc E
where E.status in {'finished', 'arrived', 'triaged', 'in-progress', 'onleave'}</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>QICoreCommon</td>
<td>toInterval</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">/*
@description: Normalizes a value that is a choice of timing-valued types to an equivalent interval
@comment: Normalizes a choice type of DateTime, Quanitty, Interval<DateTime>, or Interval<Quantity> types
to an equivalent interval. This selection of choice types is a superset of the majority of choice types that are used as possible
representations for timing-valued elements in QICore, allowing this function to be used across any resource.
The input can be provided as a DateTime, Quantity, Interval<DateTime> or Interval<Quantity>.
The intent of this function is to provide a clear and concise mechanism to treat single
elements that have multiple possible representations as intervals so that logic doesn't have to account
for the variability. More complex calculations (such as medication request period or dispense period
calculation) need specific guidance and consideration. That guidance may make use of this function, but
the focus of this function is on single element calculations where the semantics are unambiguous.
If the input is a DateTime, the result a DateTime Interval beginning and ending on that DateTime.
If the input is a Quantity, the quantity is expected to be a calendar-duration interpreted as an Age,
and the result is a DateTime Interval beginning on the Date the patient turned that age and ending immediately before one year later.
If the input is a DateTime Interval, the result is the input.
If the input is a Quantity Interval, the quantities are expected to be calendar-durations interpreted as an Age, and the result
is a DateTime Interval beginning on the date the patient turned the age given as the start of the quantity interval, and ending
immediately before one year later than the date the patient turned the age given as the end of the quantity interval.
If the input is a Timing, an error will be thrown indicating that Timing calculations are not implemented. Any other input will reslt in a null DateTime Interval
*/
define fluent function toInterval(choice Choice<DateTime, Quantity, Interval<DateTime>, Interval<Quantity>, Timing>):
case
when choice is DateTime then
Interval[choice as DateTime, choice as DateTime]
when choice is Interval<DateTime> then
choice as Interval<DateTime>
when choice is Quantity then
Interval[Patient.birthDate + (choice as Quantity),
Patient.birthDate + (choice as Quantity) + 1 year)
when choice is Interval<Quantity> then
Interval[Patient.birthDate + (choice.low as Quantity),
Patient.birthDate + (choice.high as Quantity) + 1 year)
when choice is Timing then
Message(null, true, 'NOT_IMPLEMENTED', 'Error', 'Calculation of an interval from a Timing value is not supported') as Interval<DateTime>
else
null as Interval<DateTime>
end</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>Status</td>
<td>isAssessmentPerformed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">//This library contains functions that are based on QDM 5.6 to QICore 4.1.1 March 2023 (https://github.com/cqframework/CQL-Formatting-and-Usage-Wiki/wiki/Authoring-Patterns---QICore-v4.1.1). The functions may appear similar to some QICoreCommon functions but different in that they have constraints that are relevant for measures authored by NCQA.
//Assessment, Performed
define fluent function isAssessmentPerformed(Obs List<Observation>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
and exists ( O.category ObservationCategory
where ( ObservationCategory ) ~ "survey"
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FHIRHelpers</td>
<td>ToConcept</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">/*
@description: Converts the given FHIR [CodeableConcept](https://hl7.org/fhir/datatypes.html#CodeableConcept) value to a CQL Concept.
*/
define function ToConcept(concept FHIR.CodeableConcept):
if concept is null then
null
else
System.Concept {
codes: concept.coding C return ToCode(C),
display: concept.text.value
}</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>QICoreCommon</td>
<td>prevalenceInterval</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">/*
@description: Returns an interval representing the normalized prevalence period of a given Condition.
@comment: Uses the ToInterval and ToAbatementInterval functions to determine the widest potential interval from
onset to abatement as specified in the given Condition. If the condition is active, or has an abatement date the resulting
interval will have a closed ending boundary. Otherwise, the resulting interval will have an open ending boundary.
*/
define fluent function prevalenceInterval(condition Condition):
if condition.clinicalStatus ~ "active"
or condition.clinicalStatus ~ "recurrence"
or condition.clinicalStatus ~ "relapse" then
Interval[start of condition.onset.toInterval(), end of condition.abatementInterval()]
else
(end of condition.abatementInterval()) abatementDate
return if abatementDate is null then
Interval[start of condition.onset.toInterval(), abatementDate)
else
Interval[start of condition.onset.toInterval(), abatementDate]</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>Status</td>
<td>isInterventionOrder</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">//Intervention, Order: active and completed only
define fluent function isInterventionOrder(ServiceRequest List<ServiceRequest>):
ServiceRequest S
where S.status in { 'active', 'completed' }
and S.intent = 'order'</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>Status</td>
<td>isInterventionPerformed</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">//Intervention, Performed
define fluent function isInterventionPerformed(Proc List<Procedure>):
Proc P
where P.status ~ 'completed'</code></pre>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</text>
<contained>
<Library>
<id value="effective-data-requirements"/>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system
value="http://terminology.hl7.org/CodeSystem/observation-category"/>
<code value="survey"/>
<display value="survey"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71969-0"/>
<display
value="PROMIS-10 Global Mental Health (GMH) score T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71971-6"/>
<display
value="PROMIS-10 Global Physical Health (GPH) score T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71955-9"/>
<display value="PROMIS-29 Sleep disturbance score T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71957-5"/>
<display
value="PROMIS-29 Satisfaction with participation in social roles score T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71959-1"/>
<display value="PROMIS-29 Physical function score T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71961-7"/>
<display value="PROMIS-29 Pain interference score T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71963-3"/>
<display value="PROMIS-29 Fatigue score T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71965-8"/>
<display value="PROMIS-29 Depression score T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71967-4"/>
<display value="PROMIS-29 Anxiety score T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72026-8"/>
<display
value="VR-12 Mental component summary (MCS) score - oblique method T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72025-0"/>
<display
value="VR-12 Physical component summary (PCS) score - oblique method T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72028-4"/>
<display
value="VR-12 Mental component summary (MCS) score - orthogonal method T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72027-6"/>
<display
value="VR-12 Physical component summary (PCS) score - orthogonal method T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71990-6"/>
<display
value="VR-36 Mental component summary (MCS) score - oblique method T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71989-8"/>
<display
value="VR-36 Physical component summary (PCS) score - oblique method T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72008-6"/>
<display
value="VR-36 Mental component summary (MCS) score - orthogonal method T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72007-8"/>
<display
value="VR-36 Physical component summary (PCS) score - orthogonal method T-score"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="85618-7"/>
<display value="Physical score [MLHFQ]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="85609-6"/>
<display value="Emotional score [MLHFQ]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="86923-0"/>
<display
value="Kansas City Cardiomyopathy Questionnaire - 12 item [KCCQ-12]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="86924-8"/>
<display value="Overall summary score [KCCQ-12]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72189-4"/>
<display value="Quality of life score [KCCQ]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72194-4"/>
<display value="Symptom stability score [KCCQ]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72190-2"/>
<display value="Self-efficacy score [KCCQ]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72191-0"/>
<display value="Total symptom score [KCCQ]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72195-1"/>
<display value="Physical limitation score [KCCQ]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="72196-9"/>
<display value="Social limitation score [KCCQ]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="71940-1"/>
<display value="Overall summary score [KCCQ]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://snomed.info/sct"/>
<code value="428361000124107"/>
<display value="Discharge to home for hospice care (procedure)"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://snomed.info/sct"/>
<code value="428371000124100"/>
<display
value="Discharge to healthcare facility for hospice care (procedure)"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://snomed.info/sct"/>
<code value="373066001"/>
<display value="Yes (qualifier value)"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://loinc.org"/>
<code value="45755-6"/>
<display value="Hospice care [Minimum Data Set]"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://snomed.info/sct"/>
<code value="702956004"/>
<display value="Severe cognitive impairment (finding)"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Qualifying Encounters"/>
</extension>
<extension url="statement">
<valueString
value="define "Qualifying Encounters":
( ( [Encounter: "Office Visit"]
union [Encounter: "Telephone Visits"]
union [Encounter: "Virtual Encounter"]
).isEncounterPerformed ( ) ) ValidEncounter
where ValidEncounter.period.toInterval ( ) during day of "Measurement Period""/>
</extension>
<extension url="displaySequence">
<valueInteger value="0"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Date PROMIS10 Total Assessment Completed"/>
</extension>
<extension url="statement">
<valueString
value="define "Date PROMIS10 Total Assessment Completed":
from
( ( [Observation: "PROMIS-10 Global Mental Health (GMH) score T-score"] ).isAssessmentPerformed ( ) ) PROMIS10MentalScore,
( ( [Observation: "PROMIS-10 Global Physical Health (GPH) score T-score"] ).isAssessmentPerformed ( ) ) PROMIS10PhysicalScore
let PROMIS10MentalScoreDate: date from start of PROMIS10MentalScore.effective.toInterval ( ),
PROMIS10PhysicalScoreDate: date from start of PROMIS10PhysicalScore.effective.toInterval ( )
where PROMIS10MentalScoreDate same day as PROMIS10PhysicalScoreDate
and PROMIS10MentalScore.value is not null
and PROMIS10PhysicalScore.value is not null
return PROMIS10MentalScoreDate"/>
</extension>
<extension url="displaySequence">
<valueInteger value="1"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Encounter with Initial and Follow Up PROMIS10 Assessments"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Encounter with Initial and Follow Up PROMIS10 Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date PROMIS10 Total Assessment Completed" InitialPROMIS10Date,
"Date PROMIS10 Total Assessment Completed" FollowupPROMIS10Date
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialPROMIS10Date 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupPROMIS10Date during day of Interval[date from InitialPROMIS10Date + 30 days, date from InitialPROMIS10Date + 180 days]
return ValidEncounters
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="2"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Date PROMIS29 Total Assessment Completed"/>
</extension>
<extension url="statement">
<valueString
value="define "Date PROMIS29 Total Assessment Completed":
from
( ( [Observation: "PROMIS-29 Sleep disturbance score T-score"] ).isAssessmentPerformed ( ) ) Promis29Sleep,
( ( [Observation: "PROMIS-29 Satisfaction with participation in social roles score T-score"] ).isAssessmentPerformed ( ) ) Promis29SocialRoles,
( ( [Observation: "PROMIS-29 Physical function score T-score"] ).isAssessmentPerformed ( ) ) Promis29Physical,
( ( [Observation: "PROMIS-29 Pain interference score T-score"] ).isAssessmentPerformed ( ) ) Promis29Pain,
( ( [Observation: "PROMIS-29 Fatigue score T-score"] ).isAssessmentPerformed ( ) ) Promis29Fatigue,
( ( [Observation: "PROMIS-29 Depression score T-score"] ).isAssessmentPerformed ( ) ) Promis29Depression,
( ( [Observation: "PROMIS-29 Anxiety score T-score"] ).isAssessmentPerformed ( ) ) Promis29Anxiety
let Promis29SleepDate: date from start of Promis29Sleep.effective.toInterval ( ),
Promis29SocialRolesDate: date from start of Promis29SocialRoles.effective.toInterval ( ),
Promis29PhysicalDate: date from start of Promis29Physical.effective.toInterval ( ),
Promis29PainDate: date from start of Promis29Pain.effective.toInterval ( ),
Promis29FatigueDate: date from start of Promis29Fatigue.effective.toInterval ( ),
Promis29DepressionDate: date from start of Promis29Depression.effective.toInterval ( ),
Promis29AnxietyDate: date from start of Promis29Anxiety.effective.toInterval ( )
where Promis29SleepDate same day as Promis29SocialRolesDate
and Promis29SocialRoles.value is not null
and Promis29SleepDate same day as Promis29PhysicalDate
and Promis29Physical.value is not null
and Promis29SleepDate same day as Promis29PainDate
and Promis29Pain.value is not null
and Promis29SleepDate same day as Promis29FatigueDate
and Promis29Fatigue.value is not null
and Promis29SleepDate same day as Promis29DepressionDate
and Promis29Depression.value is not null
and Promis29SleepDate same day as Promis29AnxietyDate
and Promis29Anxiety.value is not null
and Promis29Sleep.value is not null
return Promis29SleepDate"/>
</extension>
<extension url="displaySequence">
<valueInteger value="3"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Encounter with Initial and Follow Up PROMIS29 Assessments"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Encounter with Initial and Follow Up PROMIS29 Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date PROMIS29 Total Assessment Completed" InitialPROMIS29Date,
"Date PROMIS29 Total Assessment Completed" FollowupPROMIS29Date
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialPROMIS29Date 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupPROMIS29Date during day of Interval[date from InitialPROMIS29Date + 30 days, date from InitialPROMIS29Date + 180 days]
return ValidEncounters
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="4"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Date VR12 Oblique Total Assessment Completed"/>
</extension>
<extension url="statement">
<valueString
value="define "Date VR12 Oblique Total Assessment Completed":
from
( ( [Observation: "VR-12 Mental component summary (MCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR12MentalAssessment,
( ( [Observation: "VR-12 Physical component summary (PCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR12PhysicalAssessment
let VR12MentalAssessmentDate: date from start of VR12MentalAssessment.effective.toInterval ( ),
VR12PhysicalAssessmentDate: date from start of VR12PhysicalAssessment.effective.toInterval ( )
where VR12MentalAssessmentDate same day as VR12PhysicalAssessmentDate
and VR12MentalAssessment.value is not null
and VR12PhysicalAssessment.value is not null
return VR12MentalAssessmentDate"/>
</extension>
<extension url="displaySequence">
<valueInteger value="5"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Encounter with Initial and Follow Up VR12 Oblique Assessments"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Encounter with Initial and Follow Up VR12 Oblique Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date VR12 Oblique Total Assessment Completed" InitialVR12ObliqueDate,
"Date VR12 Oblique Total Assessment Completed" FollowupVR12ObliqueDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialVR12ObliqueDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupVR12ObliqueDate during day of Interval[date from InitialVR12ObliqueDate + 30 days, date from InitialVR12ObliqueDate + 180 days]
return ValidEncounters
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="6"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Date VR12 Orthogonal Total Assessment Completed"/>
</extension>
<extension url="statement">
<valueString
value="define "Date VR12 Orthogonal Total Assessment Completed":
from
( ( [Observation: "VR-12 Mental component summary (MCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR12MentalAssessment,
( ( [Observation: "VR-12 Physical component summary (PCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR12PhysicalAssessment
let VR12MentalAssessmentDate: date from start of VR12MentalAssessment.effective.toInterval ( ),
VR12PhysicalAssessmentDate: date from start of VR12PhysicalAssessment.effective.toInterval ( )
where VR12MentalAssessmentDate same day as VR12PhysicalAssessmentDate
and VR12MentalAssessment.value is not null
and VR12PhysicalAssessment.value is not null
return VR12MentalAssessmentDate"/>
</extension>
<extension url="displaySequence">
<valueInteger value="7"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Encounter with Initial and Follow Up VR12 Orthogonal Assessments"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Encounter with Initial and Follow Up VR12 Orthogonal Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date VR12 Orthogonal Total Assessment Completed" InitialVR12OrthogonalDate,
"Date VR12 Orthogonal Total Assessment Completed" FollowupVR12OrthogonalDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialVR12OrthogonalDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupVR12OrthogonalDate during day of Interval[date from InitialVR12OrthogonalDate + 30 days, date from InitialVR12OrthogonalDate + 180 days]
return ValidEncounters
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="8"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Date VR36 Oblique Total Assessment Completed"/>
</extension>
<extension url="statement">
<valueString
value="define "Date VR36 Oblique Total Assessment Completed":
from
( ( [Observation: "VR-36 Mental component summary (MCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR36MentalAssessment,
( ( [Observation: "VR-36 Physical component summary (PCS) score - oblique method T-score"] ).isAssessmentPerformed ( ) ) VR36PhysicalAssessment
let VR36MentalAssessmentDate: date from start of VR36MentalAssessment.effective.toInterval ( ),
VR36PhysicalAssessmentDate: date from start of VR36PhysicalAssessment.effective.toInterval ( )
where VR36MentalAssessmentDate same day as VR36PhysicalAssessmentDate
and VR36MentalAssessment.value is not null
and VR36PhysicalAssessment.value is not null
return VR36MentalAssessmentDate"/>
</extension>
<extension url="displaySequence">
<valueInteger value="9"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Encounter with Initial and Follow Up VR36 Oblique Assessments"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Encounter with Initial and Follow Up VR36 Oblique Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date VR36 Oblique Total Assessment Completed" InitialVR36ObliqueDate,
"Date VR36 Oblique Total Assessment Completed" FollowupVR36ObliqueDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialVR36ObliqueDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupVR36ObliqueDate during day of Interval[date from InitialVR36ObliqueDate + 30 days, date from InitialVR36ObliqueDate + 180 days]
return ValidEncounters
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="10"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Date VR36 Orthogonal Total Assessment Completed"/>
</extension>
<extension url="statement">
<valueString
value="define "Date VR36 Orthogonal Total Assessment Completed":
from
( ( [Observation: "VR-36 Mental component summary (MCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR36MentalAssessment,
( ( [Observation: "VR-36 Physical component summary (PCS) score - orthogonal method T-score"] ).isAssessmentPerformed ( ) ) VR36PhysicalAssessment
let VR36MentalAssessmentDate: date from start of VR36MentalAssessment.effective.toInterval ( ),
VR36PhysicalAssessmentDate: date from start of VR36PhysicalAssessment.effective.toInterval ( )
where VR36MentalAssessmentDate same day as VR36PhysicalAssessmentDate
and VR36MentalAssessment.value is not null
and VR36PhysicalAssessment.value is not null
return VR36MentalAssessmentDate"/>
</extension>
<extension url="displaySequence">
<valueInteger value="11"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Encounter with Initial and Follow Up VR36 Orthogonal Assessments"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Encounter with Initial and Follow Up VR36 Orthogonal Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date VR36 Orthogonal Total Assessment Completed" InitialVR36OrthogonalDate,
"Date VR36 Orthogonal Total Assessment Completed" FollowupVR36OrthogonalDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialVR36OrthogonalDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupVR36OrthogonalDate during day of Interval[date from InitialVR36OrthogonalDate + 30 days, date from InitialVR36OrthogonalDate + 180 days]
return ValidEncounters
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="12"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Date MLHFQ Total Assessment Completed"/>
</extension>
<extension url="statement">
<valueString
value="define "Date MLHFQ Total Assessment Completed":
from
( ( [Observation: "Physical score [MLHFQ]"] ).isAssessmentPerformed ( ) ) MLHFQPhysical,
( ( [Observation: "Emotional score [MLHFQ]"] ).isAssessmentPerformed ( ) ) MLHFQEmotional
let MLHFQPhysicalDate: date from start of MLHFQPhysical.effective.toInterval ( ),
MLHFQEmotionalDate: date from start of MLHFQEmotional.effective.toInterval ( )
where MLHFQPhysicalDate same day as MLHFQEmotionalDate
and MLHFQPhysical.value is not null
and MLHFQEmotional.value is not null
return MLHFQPhysicalDate"/>
</extension>
<extension url="displaySequence">
<valueInteger value="13"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Encounter with Initial and Follow Up MLHFQ Assessments"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Encounter with Initial and Follow Up MLHFQ Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date MLHFQ Total Assessment Completed" InitialMLHFQDate,
"Date MLHFQ Total Assessment Completed" FollowupMLHFQDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialMLHFQDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupMLHFQDate during day of Interval[date from InitialMLHFQDate + 30 days, date from InitialMLHFQDate + 180 days]
return ValidEncounters
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="14"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Date KCCQ12 Total Assessment Completed"/>
</extension>
<extension url="statement">
<valueString
value="define "Date KCCQ12 Total Assessment Completed":
from
( ( [Observation: "Kansas City Cardiomyopathy Questionnaire - 12 item [KCCQ-12]"] ).isAssessmentPerformed ( ) ) KCCQ12Item,
( ( [Observation: "Overall summary score [KCCQ-12]"] ).isAssessmentPerformed ( ) ) KCCQ12Summary
let KCCQ12ItemDate: date from start of KCCQ12Item.effective.toInterval ( ),
KCCQ12SummaryDate: date from start of KCCQ12Summary.effective.toInterval ( )
where KCCQ12ItemDate same day as KCCQ12SummaryDate
and KCCQ12Item.value is not null
and KCCQ12Summary.value is not null
return KCCQ12ItemDate"/>
</extension>
<extension url="displaySequence">
<valueInteger value="15"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Encounter with Initial and Follow Up KCCQ12 Assessments"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Encounter with Initial and Follow Up KCCQ12 Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date KCCQ12 Total Assessment Completed" InitialKCCQ12Date,
"Date KCCQ12 Total Assessment Completed" FollowupKCCQ12Date
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialKCCQ12Date 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupKCCQ12Date during day of Interval[date from InitialKCCQ12Date + 30 days, date from InitialKCCQ12Date + 180 days]
return ValidEncounters
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="16"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Date KCCQ Domain Assessment Completed"/>
</extension>
<extension url="statement">
<valueString
value="define "Date KCCQ Domain Assessment Completed":
from
( ( [Observation: "Quality of life score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQLifeQuality,
( ( [Observation: "Symptom stability score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSymptomStability,
( ( [Observation: "Self-efficacy score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSelfEfficacy,
( ( [Observation: "Total symptom score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSymptoms,
( ( [Observation: "Physical limitation score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQPhysicalLimits,
( ( [Observation: "Social limitation score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSocialLimits
let KCCQLifeQualityDate: date from start of KCCQLifeQuality.effective.toInterval ( ),
KCCQSymptomStabilityDate: date from start of KCCQSymptomStability.effective.toInterval ( ),
KCCQSelfEfficacyDate: date from start of KCCQSelfEfficacy.effective.toInterval ( ),
KCCQSymptomsDate: date from start of KCCQSymptoms.effective.toInterval ( ),
KCCQPhysicalLimitsDate: date from start of KCCQPhysicalLimits.effective.toInterval ( ),
KCCQSocialLimitsDate: date from start of KCCQSocialLimits.effective.toInterval ( )
where KCCQLifeQualityDate same day as KCCQSymptomStabilityDate
and KCCQSymptomStability.value is not null
and KCCQLifeQualityDate same day as KCCQSelfEfficacyDate
and KCCQSelfEfficacy.value is not null
and KCCQLifeQualityDate same day as KCCQSymptomsDate
and KCCQSymptoms.value is not null
and KCCQLifeQualityDate same day as KCCQPhysicalLimitsDate
and KCCQPhysicalLimits.value is not null
and KCCQLifeQualityDate same day as KCCQSocialLimitsDate
and KCCQSocialLimits.value is not null
and KCCQLifeQuality.value is not null
return KCCQLifeQualityDate"/>
</extension>
<extension url="displaySequence">
<valueInteger value="17"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Encounter with Initial and Follow Up KCCQ Domain Score Assessments"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Encounter with Initial and Follow Up KCCQ Domain Score Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date KCCQ Domain Assessment Completed" InitialKCCQAssessmentDate,
"Date KCCQ Domain Assessment Completed" FollowupKCCQAssessmentDate
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialKCCQAssessmentDate 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupKCCQAssessmentDate during day of Interval[date from InitialKCCQAssessmentDate + 30 days, date from InitialKCCQAssessmentDate + 180 days]
return ValidEncounters
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="18"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Date KCCQ Total Assessment Completed"/>
</extension>
<extension url="statement">
<valueString
value="define "Date KCCQ Total Assessment Completed":
( ( [Observation: "Overall summary score [KCCQ]"] ).isAssessmentPerformed ( ) ) KCCQSummaryScore
let KCCQSummaryScoreDate: date from start of KCCQSummaryScore.effective.toInterval ( )
where KCCQSummaryScore.value is not null
return KCCQSummaryScoreDate"/>
</extension>
<extension url="displaySequence">
<valueInteger value="19"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Encounter with Initial and Follow Up KCCQ Total Score Assessments"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Encounter with Initial and Follow Up KCCQ Total Score Assessments":
exists ( from
"Qualifying Encounters" ValidEncounters,
"Date KCCQ Total Assessment Completed" InitialKCCQTotalScore,
"Date KCCQ Total Assessment Completed" FollowupKCCQTotalScore
where ValidEncounters.period.toInterval ( ) ends 180 days or more before day of end of "Measurement Period"
and InitialKCCQTotalScore 14 days or less on or before day of end of ValidEncounters.period.toInterval ( )
and date from FollowupKCCQTotalScore during day of Interval[date from InitialKCCQTotalScore + 30 days, date from InitialKCCQTotalScore + 180 days]
return ValidEncounters
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="20"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Numerator"/>
</extension>
<extension url="statement">
<valueString
value="define "Numerator":
( "Has Encounter with Initial and Follow Up PROMIS10 Assessments" )
or ( "Has Encounter with Initial and Follow Up PROMIS29 Assessments" )
or ( "Has Encounter with Initial and Follow Up VR12 Oblique Assessments" )
or ( "Has Encounter with Initial and Follow Up VR12 Orthogonal Assessments" )
or ( "Has Encounter with Initial and Follow Up VR36 Oblique Assessments" )
or ( "Has Encounter with Initial and Follow Up VR36 Orthogonal Assessments" )
or ( "Has Encounter with Initial and Follow Up MLHFQ Assessments" )
or ( "Has Encounter with Initial and Follow Up KCCQ12 Assessments" )
or ( "Has Encounter with Initial and Follow Up KCCQ Domain Score Assessments" )
or ( "Has Encounter with Initial and Follow Up KCCQ Total Score Assessments" )"/>
</extension>
<extension url="displaySequence">
<valueInteger value="21"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString
value="Two Outpatient Encounters during Measurement Period"/>
</extension>
<extension url="statement">
<valueString
value="define "Two Outpatient Encounters during Measurement Period":
from
"Qualifying Encounters" OfficeVisit1,
"Qualifying Encounters" OfficeVisit2
where OfficeVisit2.period.toInterval ( ) starts 1 day or more after day of end of OfficeVisit1.period.toInterval ( )
return OfficeVisit1"/>
</extension>
<extension url="displaySequence">
<valueInteger value="22"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Initial Population"/>
</extension>
<extension url="statement">
<valueString
value="define "Initial Population":
AgeInYearsAt(date from start of "Measurement Period") >= 18
and exists ( ( [Condition: "Heart Failure"] ) HeartFailure
where HeartFailure.prevalenceInterval ( ) overlaps before "Measurement Period"
)
and exists ( "Two Outpatient Encounters during Measurement Period" )"/>
</extension>
<extension url="displaySequence">
<valueInteger value="23"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Denominator"/>
</extension>
<extension url="statement">
<valueString
value="define "Denominator":
"Initial Population""/>
</extension>
<extension url="displaySequence">
<valueInteger value="24"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString value="Hospice"/>
</extension>
<extension url="name">
<valueString value="Has Hospice Services"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Hospice Services":
exists ((([Encounter: "Encounter Inpatient"]).isEncounterPerformed()) InpatientEncounter
where (InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to home for hospice care (procedure)"
or InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to healthcare facility for hospice care (procedure)"
)
and InpatientEncounter.period.toInterval() ends during day of "Measurement Period"
)
or exists ((([Encounter: "Hospice Encounter"]).isEncounterPerformed()) HospiceEncounter
where HospiceEncounter.period.toInterval() overlaps day of "Measurement Period"
)
or exists ((([Observation: "Hospice care [Minimum Data Set]"]).isAssessmentPerformed()) HospiceAssessment
where HospiceAssessment.value ~ "Yes (qualifier value)"
and HospiceAssessment.effective.toInterval() overlaps day of "Measurement Period"
)
or exists ((([ServiceRequest: "Hospice Care Ambulatory"]).isInterventionOrder()) HospiceOrder
where HospiceOrder.authoredOn.toInterval() during day of "Measurement Period"
// and HospiceOrder.doNotPerform is not true
// https://oncprojectracking.healthit.gov/support/browse/CQLIT-447
)
or exists ((([Procedure: "Hospice Care Ambulatory"]).isInterventionPerformed()) HospicePerformed
where HospicePerformed.performed.toInterval() overlaps day of "Measurement Period"
)
or exists (([Condition: "Hospice Diagnosis"]) HospiceCareDiagnosis
where HospiceCareDiagnosis.prevalenceInterval() overlaps day of "Measurement Period"
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="25"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString
value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
</extension>
<extension url="name">
<valueString value="Denominator Exclusions"/>
</extension>
<extension url="statement">
<valueString
value="define "Denominator Exclusions":
Hospice."Has Hospice Services"
or exists ( ( [Condition: "Severe cognitive impairment (finding)"] ) SevereCognitiveImpairment
where SevereCognitiveImpairment.prevalenceInterval ( ) overlaps "Measurement Period"
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="26"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString value="Status"/>
</extension>
<extension url="name">
<valueString value="isEncounterPerformed"/>
</extension>
<extension url="statement">
<valueString
value="//Encounter, Performed
//General usage unless required otherwise by measure intent (e.g., follow-up encounters)
define fluent function isEncounterPerformed(Enc List<Encounter>):
Enc E
where E.status in {'finished', 'arrived', 'triaged', 'in-progress', 'onleave'}"/>
</extension>
<extension url="displaySequence">
<valueInteger value="27"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString value="QICoreCommon"/>
</extension>
<extension url="name">
<valueString value="toInterval"/>
</extension>
<extension url="statement">
<valueString
value="/*
@description: Normalizes a value that is a choice of timing-valued types to an equivalent interval
@comment: Normalizes a choice type of DateTime, Quanitty, Interval<DateTime>, or Interval<Quantity> types
to an equivalent interval. This selection of choice types is a superset of the majority of choice types that are used as possible
representations for timing-valued elements in QICore, allowing this function to be used across any resource.
The input can be provided as a DateTime, Quantity, Interval<DateTime> or Interval<Quantity>.
The intent of this function is to provide a clear and concise mechanism to treat single
elements that have multiple possible representations as intervals so that logic doesn't have to account
for the variability. More complex calculations (such as medication request period or dispense period
calculation) need specific guidance and consideration. That guidance may make use of this function, but
the focus of this function is on single element calculations where the semantics are unambiguous.
If the input is a DateTime, the result a DateTime Interval beginning and ending on that DateTime.
If the input is a Quantity, the quantity is expected to be a calendar-duration interpreted as an Age,
and the result is a DateTime Interval beginning on the Date the patient turned that age and ending immediately before one year later.
If the input is a DateTime Interval, the result is the input.
If the input is a Quantity Interval, the quantities are expected to be calendar-durations interpreted as an Age, and the result
is a DateTime Interval beginning on the date the patient turned the age given as the start of the quantity interval, and ending
immediately before one year later than the date the patient turned the age given as the end of the quantity interval.
If the input is a Timing, an error will be thrown indicating that Timing calculations are not implemented. Any other input will reslt in a null DateTime Interval
*/
define fluent function toInterval(choice Choice<DateTime, Quantity, Interval<DateTime>, Interval<Quantity>, Timing>):
case
when choice is DateTime then
Interval[choice as DateTime, choice as DateTime]
when choice is Interval<DateTime> then
choice as Interval<DateTime>
when choice is Quantity then
Interval[Patient.birthDate + (choice as Quantity),
Patient.birthDate + (choice as Quantity) + 1 year)
when choice is Interval<Quantity> then
Interval[Patient.birthDate + (choice.low as Quantity),
Patient.birthDate + (choice.high as Quantity) + 1 year)
when choice is Timing then
Message(null, true, 'NOT_IMPLEMENTED', 'Error', 'Calculation of an interval from a Timing value is not supported') as Interval<DateTime>
else
null as Interval<DateTime>
end"/>
</extension>
<extension url="displaySequence">
<valueInteger value="28"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString value="Status"/>
</extension>
<extension url="name">
<valueString value="isAssessmentPerformed"/>
</extension>
<extension url="statement">
<valueString
value="//This library contains functions that are based on QDM 5.6 to QICore 4.1.1 March 2023 (https://github.com/cqframework/CQL-Formatting-and-Usage-Wiki/wiki/Authoring-Patterns---QICore-v4.1.1). The functions may appear similar to some QICoreCommon functions but different in that they have constraints that are relevant for measures authored by NCQA.
//Assessment, Performed
define fluent function isAssessmentPerformed(Obs List<Observation>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
and exists ( O.category ObservationCategory
where ( ObservationCategory ) ~ "survey"
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="29"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToConcept"/>
</extension>
<extension url="statement">
<valueString
value="/*
@description: Converts the given FHIR [CodeableConcept](https://hl7.org/fhir/datatypes.html#CodeableConcept) value to a CQL Concept.
*/
define function ToConcept(concept FHIR.CodeableConcept):
if concept is null then
null
else
System.Concept {
codes: concept.coding C return ToCode(C),
display: concept.text.value
}"/>
</extension>
<extension url="displaySequence">
<valueInteger value="30"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString value="QICoreCommon"/>
</extension>
<extension url="name">
<valueString value="prevalenceInterval"/>
</extension>
<extension url="statement">
<valueString
value="/*
@description: Returns an interval representing the normalized prevalence period of a given Condition.
@comment: Uses the ToInterval and ToAbatementInterval functions to determine the widest potential interval from
onset to abatement as specified in the given Condition. If the condition is active, or has an abatement date the resulting
interval will have a closed ending boundary. Otherwise, the resulting interval will have an open ending boundary.
*/
define fluent function prevalenceInterval(condition Condition):
if condition.clinicalStatus ~ "active"
or condition.clinicalStatus ~ "recurrence"
or condition.clinicalStatus ~ "relapse" then
Interval[start of condition.onset.toInterval(), end of condition.abatementInterval()]
else
(end of condition.abatementInterval()) abatementDate
return if abatementDate is null then
Interval[start of condition.onset.toInterval(), abatementDate)
else
Interval[start of condition.onset.toInterval(), abatementDate]"/>
</extension>
<extension url="displaySequence">
<valueInteger value="31"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString value="Status"/>
</extension>
<extension url="name">
<valueString value="isInterventionOrder"/>
</extension>
<extension url="statement">
<valueString
value="//Intervention, Order: active and completed only
define fluent function isInterventionOrder(ServiceRequest List<ServiceRequest>):
ServiceRequest S
where S.status in { 'active', 'completed' }
and S.intent = 'order'"/>
</extension>
<extension url="displaySequence">
<valueInteger value="32"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString value="Status"/>
</extension>
<extension url="name">
<valueString value="isInterventionPerformed"/>
</extension>
<extension url="statement">
<valueString
value="//Intervention, Performed
define fluent function isInterventionPerformed(Proc List<Procedure>):
Proc P
where P.status ~ 'completed'"/>
</extension>
<extension url="displaySequence">
<valueInteger value="33"/>
</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 Status"/>
<resource value="Library/Status|1.8.000"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library QICoreCommon"/>
<resource value="Library/QICoreCommon|2.1.000"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library FHIRHelpers"/>
<resource value="Library/FHIRHelpers|4.4.000"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Hospice"/>
<resource value="Library/Hospice|6.12.000"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Code system ObservationCategoryCodes"/>
<resource
value="http://terminology.hl7.org/CodeSystem/observation-category"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Code system LOINC"/>
<resource value="http://loinc.org"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Code system SNOMEDCT"/>
<resource value="http://snomed.info/sct"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Value set Office Visit"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Value set Telephone Visits"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Value set Virtual Encounter"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Value set Heart Failure"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.376"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Value set Encounter Inpatient"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Value set Hospice Encounter"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Value set Hospice Care Ambulatory"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1584"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Value set Hospice Diagnosis"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165"/>
</relatedArtifact>
<parameter>
<name value="Measurement Period"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="Period"/>
</parameter>
<parameter>
<name value="Numerator"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Denominator"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Initial Population"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Denominator Exclusions"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<dataRequirement>
<type value="Patient"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient"/>
</dataRequirement>
<dataRequirement>
<type value="Encounter"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter"/>
<mustSupport value="type"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="period"/>
<codeFilter>
<path value="type"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001"/>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Encounter"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter"/>
<mustSupport value="type"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="period"/>
<codeFilter>
<path value="type"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080"/>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Encounter"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter"/>
<mustSupport value="type"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="period"/>
<codeFilter>
<path value="type"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089"/>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Encounter"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter"/>
<mustSupport value="type"/>
<mustSupport value="hospitalization"/>
<mustSupport value="hospitalization.dischargeDisposition"/>
<mustSupport value="period"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<codeFilter>
<path value="type"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Encounter"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter"/>
<mustSupport value="type"/>
<mustSupport value="period"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<codeFilter>
<path value="type"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003"/>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71969-0"/>
<display
value="PROMIS-10 Global Mental Health (GMH) score T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71971-6"/>
<display
value="PROMIS-10 Global Physical Health (GPH) score T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71955-9"/>
<display value="PROMIS-29 Sleep disturbance score T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71957-5"/>
<display
value="PROMIS-29 Satisfaction with participation in social roles score T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71959-1"/>
<display value="PROMIS-29 Physical function score T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71961-7"/>
<display value="PROMIS-29 Pain interference score T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71963-3"/>
<display value="PROMIS-29 Fatigue score T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71965-8"/>
<display value="PROMIS-29 Depression score T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71967-4"/>
<display value="PROMIS-29 Anxiety score T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72026-8"/>
<display
value="VR-12 Mental component summary (MCS) score - oblique method T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72025-0"/>
<display
value="VR-12 Physical component summary (PCS) score - oblique method T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72028-4"/>
<display
value="VR-12 Mental component summary (MCS) score - orthogonal method T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72027-6"/>
<display
value="VR-12 Physical component summary (PCS) score - orthogonal method T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71990-6"/>
<display
value="VR-36 Mental component summary (MCS) score - oblique method T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71989-8"/>
<display
value="VR-36 Physical component summary (PCS) score - oblique method T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72008-6"/>
<display
value="VR-36 Mental component summary (MCS) score - orthogonal method T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72007-8"/>
<display
value="VR-36 Physical component summary (PCS) score - orthogonal method T-score"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="85618-7"/>
<display value="Physical score [MLHFQ]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="85609-6"/>
<display value="Emotional score [MLHFQ]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="86923-0"/>
<display
value="Kansas City Cardiomyopathy Questionnaire - 12 item [KCCQ-12]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="86924-8"/>
<display value="Overall summary score [KCCQ-12]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72189-4"/>
<display value="Quality of life score [KCCQ]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72194-4"/>
<display value="Symptom stability score [KCCQ]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72190-2"/>
<display value="Self-efficacy score [KCCQ]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72191-0"/>
<display value="Total symptom score [KCCQ]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72195-1"/>
<display value="Physical limitation score [KCCQ]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="72196-9"/>
<display value="Social limitation score [KCCQ]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="effective"/>
<mustSupport value="value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="71940-1"/>
<display value="Overall summary score [KCCQ]"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation"/>
<mustSupport value="code"/>
<mustSupport value="value"/>
<mustSupport value="effective"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="category"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://loinc.org"/>
<code value="45755-6"/>
<display value="Hospice care [Minimum Data Set]"/>
</code>
</codeFilter>
<codeFilter>
<path value="value"/>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Condition"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition"/>
<mustSupport value="code"/>
<codeFilter>
<path value="code"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.376"/>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Condition"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition"/>
<mustSupport value="code"/>
<codeFilter>
<path value="code"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165"/>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Condition"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition"/>
<mustSupport value="code"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://snomed.info/sct"/>
<code value="702956004"/>
<display value="Severe cognitive impairment (finding)"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="ServiceRequest"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest"/>
<mustSupport value="code"/>
<mustSupport value="authoredOn"/>
<mustSupport value="authoredOn.value"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="intent"/>
<mustSupport value="intent.value"/>
<codeFilter>
<path value="code"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1584"/>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Procedure"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure"/>
<mustSupport value="code"/>
<mustSupport value="performed"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<codeFilter>
<path value="code"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1584"/>
</codeFilter>
</dataRequirement>
</Library>
</contained>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-effectiveDataRequirements" id="effective-data-requirements">
<valueReference>
<reference value="#effective-data-requirements"/>
</valueReference>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-softwaresystem">
<valueReference>
<reference value="Device/cqf-tooling"/>
</valueReference>
</extension>
<url
value="https://madie.cms.gov/Measure/FunctionalStatusAssessmentsforHeartFailureFHIR"/>
<identifier>
<use value="usual"/>
<type>
<coding>
<system
value="http://hl7.org/fhir/us/cqfmeasures/CodeSystem/identifier-type"/>
<code value="short-name"/>
</coding>
</type>
<system value="https://madie.cms.gov/measure/shortName"/>
<value value="CMS90FHIR"/>
</identifier>
<identifier>
<use value="official"/>
<type>
<coding>
<system
value="http://hl7.org/fhir/us/cqfmeasures/CodeSystem/identifier-type"/>
<code value="version-independent"/>
</coding>
</type>
<system value="urn:ietf:rfc:3986"/>
<value value="urn:uuid:54792d38-7ad9-459c-b209-91b8915ab7ac"/>
</identifier>
<identifier>
<use value="official"/>
<type>
<coding>
<system
value="http://hl7.org/fhir/us/cqfmeasures/CodeSystem/identifier-type"/>
<code value="version-specific"/>
</coding>
</type>
<system value="urn:ietf:rfc:3986"/>
<value value="urn:uuid:e1455c1f-ab8a-4337-86ad-903576c55d4e"/>
</identifier>
<identifier>
<use value="official"/>
<type>
<coding>
<system
value="http://hl7.org/fhir/us/cqfmeasures/CodeSystem/identifier-type"/>
<code value="publisher"/>
</coding>
</type>
<system value="https://madie.cms.gov/measure/cmsId"/>
<value value="90FHIR"/>
<assigner>
<display value="CMS"/>
</assigner>
</identifier>
<version value="0.1.000"/>
<name value="FunctionalStatusAssessmentsforHeartFailureFHIR"/>
<title value="Functional Status Assessments for Heart FailureFHIR"/>
<status value="draft"/>
<experimental value="false"/>
<date value="2024-07-09T14:53:57+00:00"/>
<publisher value="Centers for Medicare & Medicaid Services (CMS)"/>
<contact>
<telecom>
<system value="url"/>
<value value="https://www.cms.gov/"/>
</telecom>
</contact>
<description
value="Percentage of patients 18 years of age and older with heart failure who completed initial and follow-up patient-reported functional status assessments"/>
<purpose value="UNKNOWN"/>
<usage
value="Initial functional status assessment (FSA) and encounter: The initial FSA is an FSA that occurs within two weeks before or during an encounter, in the 180 days or more before the end of the measurement period.
Follow-up FSA: The follow-up FSA must be completed at least 30 days but no more than 180 days after the initial FSA.
The same FSA instrument must be used for the initial and follow-up assessment.
This eCQM is a patient-based measure.
This FHIR-based measure has been derived from the QDM-based measure: CMS90v14.
Please refer to the HL7 QI-Core Implementation Guide (http://hl7.org/fhir/us/qicore/STU4.1.1/) for more information on QI-Core and mapping recommendations from QDM to QI-Core 4.1.1 (http://hl7.org/fhir/us/qicore/STU4.1.1/qdm-to-qicore.html)."/>
<copyright
value="Copyright This Physician Performance Measure (Measure) and related data specifications are owned and stewarded by the Centers for Medicare & Medicaid Services (CMS). CMS contracted (Contract HHSP23320095627WC; HHSP23337008T) with the National Committee for Quality Assurance (NCQA) to develop this electronic measure. NCQA is not responsible for any use of the Measure. NCQA makes no representations, warranties, or endorsement about the quality of any organization or physician that uses or reports performance measures and NCQA has no liability to anyone who relies on such measures or specifications.
Limited proprietary coding is contained in the Measure specifications for user convenience. Users of proprietary code sets should obtain all necessary licenses from the owners of the code sets. NCQA disclaims all liability for use or accuracy of any third-party codes contained in the specifications.
CPT(R) codes, descriptions and other data are copyright 2024. American Medical Association. All rights reserved. CPT is a trademark of the American Medical Association. Fee schedules, relative value units, conversion factors and/or related components are not assigned by the AMA, are not part of CPT, and the AMA is not recommending their use. The AMA does not directly or indirectly practice medicine or dispense medical services. The AMA assumes no liability for data contained or not contained herein. Applicable FARS/DFARS restrictions apply to government use.
The American Dental Association (“ADA”) holds a copyright to the Current Dental Terminology (“CDT”) codes contained in certain measure specifications. The CDT codes in the measure specifications are included with the permission of the ADA. All uses of the CDT codes require a license from the ADA. No alteration, amendments, or modifications of the CDT or any portion thereof is allowed. Resale, transmission, or distribution of copies of the CDT or other portions of the CDT is also not allowed. To inquire about licensing, contact CDT-SNODENT@ada.org.
The measure specifications contain coding from LOINC(R) (http://loinc.org). The LOINC table, LOINC codes, LOINC panels and form file, LOINC linguistic variants file, LOINC/RSNA Radiology Playbook, and LOINC/IEEE Medical Device Code Mapping Table are copyright 2004-2024 Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee, and are available at no cost under the license at http://loinc.org/terms-of-use.
This material contains SNOMED Clinical Terms(R) (SNOMED CT[R]) copyright 2004-2023 International Health Terminology Standards Development Organisation.
ICD-10 copyright 2024 World Health Organization. All Rights Reserved.
“HL7” is the registered trademark of Health Level Seven International."/>
<effectivePeriod>
<start value="2025-01-01"/>
<end value="2025-12-31"/>
</effectivePeriod>
<author>
<name value="National Committee for Quality Assurance"/>
<telecom>
<system value="url"/>
<value value="https://www.ncqa.org/"/>
</telecom>
</author>
<library
value="https://madie.cms.gov/Library/FunctionalStatusAssessmentsforHeartFailureFHIR"/>
<disclaimer
value="The performance Measure is not a clinical guideline and does not establish a standard of medical care, and has not been tested for all potential applications. THE MEASURE AND SPECIFICATIONS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
Due to technical limitations, registered trademarks are indicated by (R) or [R] and unregistered trademarks are indicated by (TM) or [TM]."/>
<scoring>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/measure-scoring"/>
<code value="proportion"/>
<display value="Proportion"/>
</coding>
</scoring>
<rationale
value="Patients living with heart failure often have poor functional status and health-related quality of life, which declines as the disease progresses (Allen et al., 2012). In addition, their care is often complicated by multiple comorbidities. To assist in managing these complex patients, the American College of Cardiology Foundation and American Heart Association recommend collecting initial and repeat assessments of a patient's function and ability to complete desired activities of daily living (Hunt et al., 2009). The American Heart Association also released scientific statements emphasizing the collection of patient-reported health status (for example, functional limitations, symptom burden, quality of life) from heart failure patients as an important means of establishing a dynamic conversation between patient and provider regarding care goals and the patient's priorities (Allen et al., 2012; Rumsfeld et al., 2013).
The most recent update to clinical guidelines by the American Heart Association, the American College of Cardiology, and the Heart Failure Society of America further emphasizes that better understanding of symptom burden and prognosis may improve the quality of treatment decisions. The guideline also indicates that routine assessment can facilitate population health management by identifying high-risk patients needing closer monitoring or referral to specialized centers and that patient-reported health status assessment increases the patient’s role in care, which can motivate initiation and uptake of medical therapy (Heidenreich et al., 2022)."/>
<clinicalRecommendationStatement
value="The American Heart Association, the American College of Cardiology, and the Heart Failure Society of America (2022):
This guideline provides patient-centric recommendations for clinicians to prevent, diagnose, and manage patients with heart failure and specifically recommends assessing patient-reported health status using a validated questionnaire to provide incremental information for patient functional status, symptom burden, and prognosis. Tools specifically recommended in the guideline are as follows:
- The Kansas City Cardiomyopathy Questionnaire or,
- The Minnesota Living with Heart Failure Questionnaire
- PROMIS-Plus-HF [Patient Reported Outcomes Measurement Information System Plus-Heart Failure]"/>
<group id="654a6f0e78418140875e3610">
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-scoring">
<valueCodeableConcept>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-scoring"/>
<code value="proportion"/>
<display value="Proportion"/>
</coding>
</valueCodeableConcept>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-populationBasis">
<valueCode value="boolean"/>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-type">
<valueCodeableConcept>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/measure-type"/>
<code value="process"/>
<display value="Process"/>
</coding>
</valueCodeableConcept>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-rateAggregation">
<valueCode value="None"/>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-improvementNotation">
<valueCodeableConcept>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-improvement-notation"/>
<code value="decrease"/>
<display value="increase"/>
</coding>
</valueCodeableConcept>
</extension>
<population id="2E9E52A5-86CB-4BBC-946E-CF9F508ED4ED">
<code>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-population"/>
<code value="initial-population"/>
<display value="Initial Population"/>
</coding>
</code>
<description
value="Patients 18 years of age and older who had two outpatient encounters during the measurement period and a diagnosis of heart failure that starts any time before and continues into the measurement period"/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="Initial Population"/>
</criteria>
</population>
<population id="415C061F-BCED-4D60-A095-8D49899F1C63">
<code>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-population"/>
<code value="denominator"/>
<display value="Denominator"/>
</coding>
</code>
<description value="Equals Initial Population"/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="Denominator"/>
</criteria>
</population>
<population id="00703AD5-2195-42F3-99CA-CC95B25D5A1C">
<code>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-population"/>
<code value="denominator-exclusion"/>
<display value="Denominator Exclusion"/>
</coding>
</code>
<description
value="Exclude patients who are in hospice care for any part of the measurement period.
Exclude patients with severe cognitive impairment in any part of the measurement period."/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="Denominator Exclusions"/>
</criteria>
</population>
<population id="1513CC95-F7B4-495B-910E-6AF5CF970E33">
<code>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-population"/>
<code value="numerator"/>
<display value="Numerator"/>
</coding>
</code>
<description
value="Patients with patient-reported functional status assessment results (i.e., Veterans RAND 12-item health survey [VR-12]; VR-36; Kansas City Cardiomyopathy Questionnaire [KCCQ]; KCCQ-12; Minnesota Living with Heart Failure Questionnaire [MLHFQ]; Patient-Reported Outcomes Measurement Information System [PROMIS]-10 Global Health; PROMIS-29) present in the EHR within two weeks before or during the initial FSA encounter and results for the follow-up FSA at least 30 days but no more than 180 days after the initial FSA"/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="Numerator"/>
</criteria>
</population>
</group>
</Measure>