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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
<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;">Bone Density Evaluation for Patients with Prostate Cancer and Receiving Androgen Deprivation TherapyFHIR</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">1.4.000</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Measure-BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR.html">Bone Density Evaluation for Patients with Prostate Cancer and Receiving Androgen Deprivation TherapyFHIR</a></td>
</tr>
<tr>
<th scope="row">
<b>
short-name identifier:
</b>
</th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<span>CMS645FHIR</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:299de9c4-755d-4f5a-ac9e-fa74fe34f759</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:aed79368-1b42-422a-b31b-c01a9de8501f</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>645FHIR</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;">Oregon Urology</td>
</tr>
<tr>
<th scope="row"><b>Author: </b></th>
<td style="padding-left: 4px;">Oregon Urology</td>
</tr>
<tr>
<th scope="row"><b>Description: </b></th>
<td style="padding-left: 4px;"><div><p>Percentage of patients determined as having prostate cancer who are currently starting or undergoing androgen deprivation therapy (ADT), for an anticipated period of 12 months or greater and who receive an initial bone density evaluation. The bone density evaluation must be prior to the start of ADT or within 3 months of the start of ADT.</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>Limited proprietary coding is contained in the measure specifications for convenience. Users of the proprietary code sets should obtain all necessary licenses from the owners of these code sets. Oregon Urology Institute (OUI) and Large Urology Group Practice Association (LUGPA) disclaim all liability for use or accuracy of third party codes contained in the specifications. CPT(R) contained in the Measure specifications is copyright 2004-2023. American Medical Association. LOINC(R) copyright 2004-2023 Regenstrief Institute, Inc. This material contains SNOMED Clinical Terms(R) (SNOMED CT[R]) copyright 2004-2023. International Health Terminology Standards Development Organisation. ICD-10 copyright 2023 World Health Organization. All Rights Reserved.</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 MEASURES 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].</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Rationale: </b></th>
<td style="padding-left: 4px;"><div><p>Androgen suppression as a treatment for prostate cancer can cause osteoporosis (Qaseem, 2008). Men undergoing prolonged androgen deprivation therapy (ADT) incur bone loss at a rate higher than menopausal women (Guise, 2007). In preserving bone health, the goal is to prevent or treat osteopenia/osteoporosis for the patient on ADT and to prevent or delay skeletal related events. The National Osteoporosis Foundation recommendations including a baseline assessment of bone density with a dual energy X-ray absorptiometry (DEXA) scan and daily calcium and Vitamin D supplementation (Watts, 2012). The DEXA scan is the gold standard for bone density screening. Men at risk for adverse bone consequences from chronic ADT do not always receive care according to evidence-based guidelines. These findings call for improved processes that standardize evidence-based practice including baseline and follow up bone density assessment (Watts, 2012).</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Clinical recommendation statement: </b></th>
<td style="padding-left: 4px;"><div><p>Bone density screening should be performed at the start of Androgen Deprivation Therapy (ADT) for prostate cancer. It should also be performed every 2 years for the patient with continued ADT or for patients with known osteoporosis. Current insurance practice is to possibly cover the cost of bone density screening if osteoporosis is known or if there is a high-risk drug. Some patients choose to delay bone density screening until after ADT is started and they therefore have insurance authorization due to the administration of a high-risk drug.</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Guidance (Usage): </b></th>
<td style="padding-left: 4px;">In order to capture the practitioner's intent of androgen deprivation therapy (ADT) for a period of 12 months or greater, SNOMEDCT 456381000124102 which is Injection of leuprolide acetate for twelve-month period (regime/therapy) is the correct code. This eCQM is a patient-based measure. This FHIR-based measure has been derived from the QDM-based measure: CMS645v8. Please refer to the HL7 QI-Core Implementation Guide (https://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 (https://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>6643b7c1a7a1805d3b7374f8</b></th>
</tr>
<tr>
<td>Initial Population:</td>
<td>Patients with a qualifying encounter in the measurement period AND with a diagnosis of prostate cancer AND with an order for ADT or an active medication of ADT with an intent for treatment greater than or equal to 12 months during the measurement period AND order for ADT in 3 months before to 9 months after the start of the measurement period</td>
</tr>
<tr>
<td>Denominator:</td>
<td>Equals Initial Population</td>
</tr>
<tr>
<td>Numerator:</td>
<td>Patients with a bone density evaluation within the two years prior to the start of or less than three months after the start of ADT treatment</td>
</tr>
<tr>
<td>Denominator Exception:</td>
<td>Patient refused the bone density evaluation at the time ordered or did not have it performed within 3 months after the start of ADT NOTE: Created a placeholder population due to issues around negation: refer to https://github.com/cqframework/cql-execution/issues/296, which is tied to https://oncprojectracking.healthit.gov/support/browse/BONNIEMAT-1455</td>
</tr>
</table>
</td>
</tr>
<tr>
<th scope="row"><b> Supplemental Data Elements: </b></th>
<td style="padding-left: 4px;">
<p>SDE Ethnicity</p>
<p>SDE Payer</p>
<p>SDE Race</p>
<p>SDE Sex</p>
</td>
</tr>
<tr>
<th scope="row">
<b> Supplemental Data Guidance
: </b></th>
<td style="padding-left: 4px;"> For every patient evaluated by this measure also identify payer, race, ethnicity and sex </td>
</tr>
<tr>
<th scope="row"><b>Libraries: </b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<td><a href="Library-BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR.html">BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</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/SupplementalDataElements|3.5.000</code></li>
<li><code>Library/FHIRHelpers|4.4.000</code></li>
<li><code>Library/QICoreCommon|2.1.000</code></li>
<li><a href="http://hl7.org/fhir/R4/codesystem-administrative-gender.html">AdministrativeGender</a></li>
<li><a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">SNOMED CT (all versions)</a></li>
<li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-condition-clinical.html">Condition Clinical Status Codes</a></li>
<li><a href="http://terminology.hl7.org/5.5.0/CodeSystem-condition-ver-status.html">ConditionVerificationStatus</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1151.38/expansion">DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1151.48/expansion">Androgen deprivation therapy for Urology Care</a></li>
<li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.526.3.319/expansion">Prostate Cancer</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.114222.4.11.3591/expansion">Payer</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>SDE Sex</td>
<td>Out</td>
<td>0</td>
<td>1</td>
<td>Coding</td>
</tr>
<tr>
<td>Numerator</td>
<td>Out</td>
<td>0</td>
<td>1</td>
<td>boolean</td>
</tr>
<tr>
<td>Denominator Exception</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>SDE Payer</td>
<td>Out</td>
<td>0</td>
<td>*</td>
<td>Resource</td>
</tr>
<tr>
<td>Initial Population</td>
<td>Out</td>
<td>0</td>
<td>1</td>
<td>boolean</td>
</tr>
<tr>
<td>SDE Ethnicity</td>
<td>Out</td>
<td>0</td>
<td>1</td>
<td>Resource</td>
</tr>
<tr>
<td>SDE Race</td>
<td>Out</td>
<td>0</td>
<td>1</td>
<td>Resource</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>
ethnicity
race
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Medication(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-medication.html">QICoreMedication</a>)</td>
<td>
id
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>Medication(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-medication.html">QICoreMedication</a>)</td>
<td>
id
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>MedicationRequest(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-medicationrequest.html">QICoreMedicationRequest</a>)</td>
<td>
medication.reference
dosageInstruction
status
status.value
intent
intent.value
authoredOn
authoredOn.value
</td>
<td>
</td>
<td/>
</tr>
<tr>
<td>MedicationRequest(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-medicationrequest.html">QICoreMedicationRequest</a>)</td>
<td>
medication
dosageInstruction
status
status.value
intent
intent.value
authoredOn
authoredOn.value
</td>
<td>
Androgen deprivation therapy for Urology Care
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1151.48/expansion">Androgen deprivation therapy for Urology Care</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
clinicalStatus
verificationStatus
</td>
<td>
Prostate Cancer
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.526.3.319/expansion">Prostate Cancer</a></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
doNotPerform
doNotPerform.value
</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
doNotPerform
doNotPerform.value
</td>
<td>
DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1151.38/expansion">DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care</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
status
status.value
</td>
<td>
DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1151.38/expansion">DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care</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>
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>Coverage(<a href="http://hl7.org/fhir/us/qicore/STU4.1.1/StructureDefinition-qicore-coverage.html">QICoreCoverage</a>)</td>
<td>
type
period
</td>
<td>
Payer Type
</td>
<td><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.114222.4.11.3591/expansion">Payer</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>Male</td>
<td>M</td>
<td><a href="http://hl7.org/fhir/R4/codesystem-administrative-gender.html">http://hl7.org/fhir/administrative-gender</a></td>
</tr>
<tr>
<td>Female</td>
<td>F</td>
<td><a href="http://hl7.org/fhir/R4/codesystem-administrative-gender.html">http://hl7.org/fhir/administrative-gender</a></td>
</tr>
<tr>
<td>Injection of leuprolide acetate for twelve month period (regime/therapy)</td>
<td>456381000124102</td>
<td><a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">http://snomed.info/sct</a></td>
</tr>
<tr>
<td>Active</td>
<td>active</td>
<td><a href="http://hl7.org/fhir/R4/codesystem-condition-clinical.html">http://terminology.hl7.org/CodeSystem/condition-clinical</a></td>
</tr>
<tr>
<td>Confirmed</td>
<td>confirmed</td>
<td><a href="http://hl7.org/fhir/R4/codesystem-condition-ver-status.html">http://terminology.hl7.org/CodeSystem/condition-ver-status</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> 6643b7c1a7a1805d3b7374f8 </td>
<td colspan="3" style="padding-left: 4px;">
<b>Group scoring:</b>
<span> proportion </span>
<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>Increased score indicates improvement </span>
</p>
</td>
</tr>
</td>
<tr>
<td/>
<td/>
<td>Initial Population</td>
<td>
<pre><code class="language-cql">define "Initial Population":
"Has Qualifying Encounter"
and exists "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of 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>Numerator</td>
<td>
<pre><code class="language-cql">define "Numerator":
"Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT"</code></pre>
</td>
</tr>
<tr>
<td/>
<td/>
<td>Denominator Exception</td>
<td>
<pre><code class="language-cql">/*
@commentedOut: exists ( "No Bone Density Scan Ordered Due to Patient Refusal" )
or exists ( "No Bone Density Scan Performed Due to Patient Refusal" )
@commmentedOutReason: Negation issue related to https://github.com/cqframework/cql-execution/issues/296, which is tied to https://oncprojectracking.healthit.gov/support/browse/BONNIEMAT-1455. Due to this being the only logic in population, created a 'false' placeholder
*/
define "Denominator Exception":
//placeholder
false</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>SupplementalDataElements</td>
<td>SDE Sex</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "SDE Sex":
case
when Patient.gender = 'male' then "M"
when Patient.gender = 'female' then "F"
else null
end</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>SDE Sex</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "SDE Sex":
SDE."SDE Sex"</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>Androgen Deprivation Therapy for Urology Care Medication Active Start Dates</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Androgen Deprivation Therapy for Urology Care Medication Active Start Dates":
[MedicationRequest: "Androgen deprivation therapy for Urology Care"] ADTActive
let firstMedicationPeriod: First((collapse(ADTActive.dosageInstruction.timing.repeat.bounds DoseTime
return DoseTime.toInterval()
)) DrugPeriods
sort by start of $this
),
//get the very first event
firstMedicationEvent: First((ADTActive.dosageInstruction.timing dosageTiming
//returns first event for the specific dosageTiming
return First(dosageTiming.event dosageTimingEvents
sort ascending
)) firstEvents
sort ascending
),
medicationDateTime: NormalizeInterval(firstMedicationEvent, firstMedicationPeriod).earliest ( )
where ADTActive.status in { 'active', 'completed' }
and ADTActive.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }
return medicationDateTime</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>Androgen Deprivation Therapy for Urology Care Medication Order Start Dates</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Androgen Deprivation Therapy for Urology Care Medication Order Start Dates":
[MedicationRequest: "Androgen deprivation therapy for Urology Care"] ADTOrder
let firstMedicationPeriod: First((collapse(ADTOrder.dosageInstruction.timing.repeat.bounds DoseTime
return DoseTime.toInterval()
)) DrugPeriods
sort by start of $this
),
medicationDateTime: NormalizeInterval(ADTOrder.authoredOn, firstMedicationPeriod).earliest ( )
where ADTOrder.status in { 'active', 'completed' }
and ADTOrder.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }
return medicationDateTime</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>Prostate Cancer Diagnosis</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Prostate Cancer Diagnosis":
[Condition: "Prostate Cancer"] ProstateCancer
where ProstateCancer.prevalenceInterval ( ) overlaps "Measurement Period"
and ProstateCancer.clinicalStatus ~ QICoreCommon."active"
and ProstateCancer.verificationStatus ~ QICoreCommon."confirmed"</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>First ADT in 3 Months Before to 9 Months After Start of Measurement Period</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "First ADT in 3 Months Before to 9 Months After Start of Measurement Period":
First(("Androgen Deprivation Therapy for Urology Care Medication Active Start Dates"
union "Androgen Deprivation Therapy for Urology Care Medication Order Start Dates") ADTDateTime
with "Prostate Cancer Diagnosis" ProstateCancer
such that ADTDateTime during day of ProstateCancer.prevalenceInterval()
and ADTDateTime during day of Interval[start of "Measurement Period" - 3 months, start of "Measurement Period" + 9 months]
sort ascending
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period":
[ServiceRequest: "Injection of leuprolide acetate for twelve month period (regime/therapy)"] OrderTwelveMonthADT
with "First ADT in 3 Months Before to 9 Months After Start of Measurement Period" FirstADTMP
such that OrderTwelveMonthADT.authoredOn on or after day of FirstADTMP
and OrderTwelveMonthADT.authoredOn during day of Interval[start of "Measurement Period" - 3 months, start of "Measurement Period" + 9 months]
and OrderTwelveMonthADT.status in { 'active', 'completed' }
and OrderTwelveMonthADT.intent = 'order'
and OrderTwelveMonthADT.doNotPerform is not true</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT":
exists ( ( [ServiceRequest: "DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care"] DEXAOrdered
with "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period" OrderTwelveMonthsADT
such that DEXAOrdered.authoredOn 3 months or less on or after day of OrderTwelveMonthsADT.authoredOn
or DEXAOrdered.authoredOn 2 years or less before day of OrderTwelveMonthsADT.authoredOn
where DEXAOrdered.status in { 'active', 'completed' }
and DEXAOrdered.intent = 'order'
and DEXAOrdered.doNotPerform is not true
)
union ( [Observation: "DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care"] DEXAPerformed
with "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period" OrderTwelveMonthsADT
such that DEXAPerformed.effective.toInterval ( ) 3 months or less on or after day of OrderTwelveMonthsADT.authoredOn
or DEXAPerformed.effective.toInterval ( ) 2 years or less before day of OrderTwelveMonthsADT.authoredOn
where DEXAPerformed.status in { 'final', 'amended', 'corrected' }
)
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>Numerator</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Numerator":
"Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT"</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>Denominator Exception</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">/*
@commentedOut: exists ( "No Bone Density Scan Ordered Due to Patient Refusal" )
or exists ( "No Bone Density Scan Performed Due to Patient Refusal" )
@commmentedOutReason: Negation issue related to https://github.com/cqframework/cql-execution/issues/296, which is tied to https://oncprojectracking.healthit.gov/support/browse/BONNIEMAT-1455. Due to this being the only logic in population, created a 'false' placeholder
*/
define "Denominator Exception":
//placeholder
false</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>Has Qualifying Encounter</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Has Qualifying Encounter":
exists ( ["Encounter": "Office Visit"] OfficeVisit
where OfficeVisit.period during "Measurement Period"
and OfficeVisit.status = 'finished'
)</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>Initial Population</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "Initial Population":
"Has Qualifying Encounter"
and exists "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period"</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</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>SupplementalDataElements</td>
<td>SDE Payer</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "SDE Payer":
[Coverage: type in "Payer Type"] Payer
return {
code: Payer.type,
period: Payer.period
}</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>SDE Payer</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "SDE Payer":
SDE."SDE Payer"</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>SupplementalDataElements</td>
<td>SDE Ethnicity</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "SDE Ethnicity":
Patient.ethnicity E
return Tuple {
codes: { E.ombCategory } union E.detailed,
display: E.text
}</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>SDE Ethnicity</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "SDE Ethnicity":
SDE."SDE Ethnicity"</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>SupplementalDataElements</td>
<td>SDE Race</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "SDE Race":
Patient.race R
return Tuple {
codes: R.ombCategory union R.detailed,
display: R.text
}</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>SDE Race</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define "SDE Race":
SDE."SDE Race"</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>QICoreCommon</td>
<td>earliest</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">/*
@description: Given an interval, return the starting point if the interval has a starting boundary specified,
otherwise, return the ending point
*/
define fluent function earliest(choice Choice<DateTime, Quantity, Interval<DateTime>, Interval<Quantity>> ):
(choice.toInterval()) period
return
if (period."hasStart"()) then start of period
else end of period</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR</td>
<td>NormalizeInterval</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define function NormalizeInterval(pointInTime DateTime, dateTimeInterval Interval<DateTime>):
if pointInTime is not null then Interval[pointInTime, pointInTime]
else if dateTimeInterval is not null then dateTimeInterval
else null as Interval<DateTime></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>FHIRHelpers</td>
<td>ToString</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">define function ToString(value uri): value.value</code></pre>
</td>
</tr>
<tr>
<th><b>Library Name</b></th>
<th><b>Name</b></th>
</tr>
<tr>
<td>FHIRHelpers</td>
<td>ToCode</td>
</tr>
<tr>
<td/>
<td>
<pre class="highlight language-cql"><code class="language-cql">/*
@description: Converts the given FHIR [Coding](https://hl7.org/fhir/datatypes.html#Coding) value to a CQL Code.
*/
define function ToCode(coding FHIR.Coding):
if coding is null then
null
else
System.Code {
code: coding.code.value,
system: coding.system.value,
version: coding.version.value,
display: coding.display.value
}</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://hl7.org/fhir/administrative-gender"/>
<code value="M"/>
<display value="Male"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://hl7.org/fhir/administrative-gender"/>
<code value="F"/>
<display value="Female"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system value="http://snomed.info/sct"/>
<code value="456381000124102"/>
<display
value="Injection of leuprolide acetate for twelve month period (regime/therapy)"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system
value="http://terminology.hl7.org/CodeSystem/condition-clinical"/>
<code value="active"/>
<display value="Active"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-directReferenceCode">
<valueCoding>
<system
value="http://terminology.hl7.org/CodeSystem/condition-ver-status"/>
<code value="confirmed"/>
<display value="Confirmed"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-logicDefinition">
<extension url="libraryName">
<valueString value="SupplementalDataElements"/>
</extension>
<extension url="name">
<valueString value="SDE Sex"/>
</extension>
<extension url="statement">
<valueString
value="define "SDE Sex":
case
when Patient.gender = 'male' then "M"
when Patient.gender = 'female' then "F"
else null
end"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="SDE Sex"/>
</extension>
<extension url="statement">
<valueString
value="define "SDE Sex":
SDE."SDE Sex""/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString
value="Androgen Deprivation Therapy for Urology Care Medication Active Start Dates"/>
</extension>
<extension url="statement">
<valueString
value="define "Androgen Deprivation Therapy for Urology Care Medication Active Start Dates":
[MedicationRequest: "Androgen deprivation therapy for Urology Care"] ADTActive
let firstMedicationPeriod: First((collapse(ADTActive.dosageInstruction.timing.repeat.bounds DoseTime
return DoseTime.toInterval()
)) DrugPeriods
sort by start of $this
),
//get the very first event
firstMedicationEvent: First((ADTActive.dosageInstruction.timing dosageTiming
//returns first event for the specific dosageTiming
return First(dosageTiming.event dosageTimingEvents
sort ascending
)) firstEvents
sort ascending
),
medicationDateTime: NormalizeInterval(firstMedicationEvent, firstMedicationPeriod).earliest ( )
where ADTActive.status in { 'active', 'completed' }
and ADTActive.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }
return medicationDateTime"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString
value="Androgen Deprivation Therapy for Urology Care Medication Order Start Dates"/>
</extension>
<extension url="statement">
<valueString
value="define "Androgen Deprivation Therapy for Urology Care Medication Order Start Dates":
[MedicationRequest: "Androgen deprivation therapy for Urology Care"] ADTOrder
let firstMedicationPeriod: First((collapse(ADTOrder.dosageInstruction.timing.repeat.bounds DoseTime
return DoseTime.toInterval()
)) DrugPeriods
sort by start of $this
),
medicationDateTime: NormalizeInterval(ADTOrder.authoredOn, firstMedicationPeriod).earliest ( )
where ADTOrder.status in { 'active', 'completed' }
and ADTOrder.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }
return medicationDateTime"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="Prostate Cancer Diagnosis"/>
</extension>
<extension url="statement">
<valueString
value="define "Prostate Cancer Diagnosis":
[Condition: "Prostate Cancer"] ProstateCancer
where ProstateCancer.prevalenceInterval ( ) overlaps "Measurement Period"
and ProstateCancer.clinicalStatus ~ QICoreCommon."active"
and ProstateCancer.verificationStatus ~ QICoreCommon."confirmed""/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString
value="First ADT in 3 Months Before to 9 Months After Start of Measurement Period"/>
</extension>
<extension url="statement">
<valueString
value="define "First ADT in 3 Months Before to 9 Months After Start of Measurement Period":
First(("Androgen Deprivation Therapy for Urology Care Medication Active Start Dates"
union "Androgen Deprivation Therapy for Urology Care Medication Order Start Dates") ADTDateTime
with "Prostate Cancer Diagnosis" ProstateCancer
such that ADTDateTime during day of ProstateCancer.prevalenceInterval()
and ADTDateTime during day of Interval[start of "Measurement Period" - 3 months, start of "Measurement Period" + 9 months]
sort ascending
)"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString
value="Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period"/>
</extension>
<extension url="statement">
<valueString
value="define "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period":
[ServiceRequest: "Injection of leuprolide acetate for twelve month period (regime/therapy)"] OrderTwelveMonthADT
with "First ADT in 3 Months Before to 9 Months After Start of Measurement Period" FirstADTMP
such that OrderTwelveMonthADT.authoredOn on or after day of FirstADTMP
and OrderTwelveMonthADT.authoredOn during day of Interval[start of "Measurement Period" - 3 months, start of "Measurement Period" + 9 months]
and OrderTwelveMonthADT.status in { 'active', 'completed' }
and OrderTwelveMonthADT.intent = 'order'
and OrderTwelveMonthADT.doNotPerform is not true"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString
value="Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT":
exists ( ( [ServiceRequest: "DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care"] DEXAOrdered
with "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period" OrderTwelveMonthsADT
such that DEXAOrdered.authoredOn 3 months or less on or after day of OrderTwelveMonthsADT.authoredOn
or DEXAOrdered.authoredOn 2 years or less before day of OrderTwelveMonthsADT.authoredOn
where DEXAOrdered.status in { 'active', 'completed' }
and DEXAOrdered.intent = 'order'
and DEXAOrdered.doNotPerform is not true
)
union ( [Observation: "DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care"] DEXAPerformed
with "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period" OrderTwelveMonthsADT
such that DEXAPerformed.effective.toInterval ( ) 3 months or less on or after day of OrderTwelveMonthsADT.authoredOn
or DEXAPerformed.effective.toInterval ( ) 2 years or less before day of OrderTwelveMonthsADT.authoredOn
where DEXAPerformed.status in { 'final', 'amended', 'corrected' }
)
)"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="Numerator"/>
</extension>
<extension url="statement">
<valueString
value="define "Numerator":
"Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT""/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="Denominator Exception"/>
</extension>
<extension url="statement">
<valueString
value="/*
@commentedOut: exists ( "No Bone Density Scan Ordered Due to Patient Refusal" )
or exists ( "No Bone Density Scan Performed Due to Patient Refusal" )
@commmentedOutReason: Negation issue related to https://github.com/cqframework/cql-execution/issues/296, which is tied to https://oncprojectracking.healthit.gov/support/browse/BONNIEMAT-1455. Due to this being the only logic in population, created a 'false' placeholder
*/
define "Denominator Exception":
//placeholder
false"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="Has Qualifying Encounter"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Qualifying Encounter":
exists ( ["Encounter": "Office Visit"] OfficeVisit
where OfficeVisit.period during "Measurement Period"
and OfficeVisit.status = 'finished'
)"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="Initial Population"/>
</extension>
<extension url="statement">
<valueString
value="define "Initial Population":
"Has Qualifying Encounter"
and exists "Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period""/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="Denominator"/>
</extension>
<extension url="statement">
<valueString
value="define "Denominator":
"Initial Population""/>
</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="SupplementalDataElements"/>
</extension>
<extension url="name">
<valueString value="SDE Payer"/>
</extension>
<extension url="statement">
<valueString
value="define "SDE Payer":
[Coverage: type in "Payer Type"] Payer
return {
code: Payer.type,
period: Payer.period
}"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="SDE Payer"/>
</extension>
<extension url="statement">
<valueString
value="define "SDE Payer":
SDE."SDE Payer""/>
</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="SupplementalDataElements"/>
</extension>
<extension url="name">
<valueString value="SDE Ethnicity"/>
</extension>
<extension url="statement">
<valueString
value="define "SDE Ethnicity":
Patient.ethnicity E
return Tuple {
codes: { E.ombCategory } union E.detailed,
display: E.text
}"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="SDE Ethnicity"/>
</extension>
<extension url="statement">
<valueString
value="define "SDE Ethnicity":
SDE."SDE Ethnicity""/>
</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="SupplementalDataElements"/>
</extension>
<extension url="name">
<valueString value="SDE Race"/>
</extension>
<extension url="statement">
<valueString
value="define "SDE Race":
Patient.race R
return Tuple {
codes: R.ombCategory union R.detailed,
display: R.text
}"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="SDE Race"/>
</extension>
<extension url="statement">
<valueString
value="define "SDE Race":
SDE."SDE Race""/>
</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="QICoreCommon"/>
</extension>
<extension url="name">
<valueString value="earliest"/>
</extension>
<extension url="statement">
<valueString
value="/*
@description: Given an interval, return the starting point if the interval has a starting boundary specified,
otherwise, return the ending point
*/
define fluent function earliest(choice Choice<DateTime, Quantity, Interval<DateTime>, Interval<Quantity>> ):
(choice.toInterval()) period
return
if (period."hasStart"()) then start of period
else end of period"/>
</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="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
</extension>
<extension url="name">
<valueString value="NormalizeInterval"/>
</extension>
<extension url="statement">
<valueString
value="define function NormalizeInterval(pointInTime DateTime, dateTimeInterval Interval<DateTime>):
if pointInTime is not null then Interval[pointInTime, pointInTime]
else if dateTimeInterval is not null then dateTimeInterval
else null as Interval<DateTime>"/>
</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="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="21"/>
</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="ToString"/>
</extension>
<extension url="statement">
<valueString
value="define function ToString(value uri): value.value"/>
</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="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToCode"/>
</extension>
<extension url="statement">
<valueString
value="/*
@description: Converts the given FHIR [Coding](https://hl7.org/fhir/datatypes.html#Coding) value to a CQL Code.
*/
define function ToCode(coding FHIR.Coding):
if coding is null then
null
else
System.Code {
code: coding.code.value,
system: coding.system.value,
version: coding.version.value,
display: coding.display.value
}"/>
</extension>
<extension url="displaySequence">
<valueInteger value="23"/>
</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 SDE"/>
<resource value="Library/SupplementalDataElements|3.5.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 QICoreCommon"/>
<resource value="Library/QICoreCommon|2.1.000"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Code system AdministrativeGender"/>
<resource value="http://hl7.org/fhir/administrative-gender"/>
</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="Code system ConditionClinicalStatusCodes"/>
<resource
value="http://terminology.hl7.org/CodeSystem/condition-clinical"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Code system ConditionVerificationStatusCodes"/>
<resource
value="http://terminology.hl7.org/CodeSystem/condition-ver-status"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display
value="Value set DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1151.38"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display
value="Value set Androgen deprivation therapy for Urology Care"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1151.48"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Value set Prostate Cancer"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.319"/>
</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 Payer Type"/>
<resource
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"/>
</relatedArtifact>
<parameter>
<name value="Measurement Period"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="Period"/>
</parameter>
<parameter>
<name value="SDE Sex"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Coding"/>
</parameter>
<parameter>
<name value="Numerator"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Denominator Exception"/>
<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="SDE Payer"/>
<use value="out"/>
<min value="0"/>
<max value="*"/>
<type value="Resource"/>
</parameter>
<parameter>
<name value="Initial Population"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="SDE Ethnicity"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<parameter>
<name value="SDE Race"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<dataRequirement>
<type value="Patient"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient"/>
<mustSupport value="ethnicity"/>
<mustSupport value="race"/>
</dataRequirement>
<dataRequirement>
<type value="Medication"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medication"/>
<mustSupport value="id"/>
</dataRequirement>
<dataRequirement>
<type value="Medication"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medication"/>
<mustSupport value="id"/>
</dataRequirement>
<dataRequirement>
<type value="MedicationRequest"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest"/>
<mustSupport value="medication.reference"/>
<mustSupport value="dosageInstruction"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="intent"/>
<mustSupport value="intent.value"/>
<mustSupport value="authoredOn"/>
<mustSupport value="authoredOn.value"/>
</dataRequirement>
<dataRequirement>
<type value="MedicationRequest"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest"/>
<mustSupport value="medication"/>
<mustSupport value="dosageInstruction"/>
<mustSupport value="status"/>
<mustSupport value="status.value"/>
<mustSupport value="intent"/>
<mustSupport value="intent.value"/>
<mustSupport value="authoredOn"/>
<mustSupport value="authoredOn.value"/>
<codeFilter>
<path value="medication"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1151.48"/>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Condition"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition"/>
<mustSupport value="code"/>
<mustSupport value="clinicalStatus"/>
<mustSupport value="verificationStatus"/>
<codeFilter>
<path value="code"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.319"/>
</codeFilter>
<codeFilter>
<path value="clinicalStatus"/>
</codeFilter>
<codeFilter>
<path value="verificationStatus"/>
</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"/>
<mustSupport value="doNotPerform"/>
<mustSupport value="doNotPerform.value"/>
<codeFilter>
<path value="code"/>
<code>
<system value="http://snomed.info/sct"/>
<code value="456381000124102"/>
<display
value="Injection of leuprolide acetate for twelve month period (regime/therapy)"/>
</code>
</codeFilter>
<codeFilter>
<path value="intent.value"/>
<code>
<code value="order"/>
</code>
</codeFilter>
<dateFilter>
<path value="authoredOn.value"/>
<valuePeriod>
<extension url="http://hl7.org/fhir/uv/crmi-analysisException">
<valueString
value="Error attempting to determine filter value: toFhirValue not implemented for Subtract"/>
</extension>
</valuePeriod>
</dateFilter>
</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"/>
<mustSupport value="doNotPerform"/>
<mustSupport value="doNotPerform.value"/>
<codeFilter>
<path value="code"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1151.38"/>
</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="status"/>
<mustSupport value="status.value"/>
<codeFilter>
<path value="code"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1151.38"/>
</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.101.12.1001"/>
</codeFilter>
<codeFilter>
<path value="status.value"/>
<code>
<code value="finished"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Coverage"/>
<profile
value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-coverage"/>
<mustSupport value="type"/>
<mustSupport value="period"/>
<codeFilter>
<path value="type"/>
<valueSet
value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"/>
</codeFilter>
</dataRequirement>
</Library>
</contained>
<extension
url="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-supplementalDataGuidance" id="supplementalDataGuidance">
<extension url="guidance">
<valueString
value="For every patient evaluated by this measure also identify payer, race, ethnicity and sex"/>
</extension>
<extension url="usage">
<valueCodeableConcept>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-data-usage"/>
<code value="supplemental-data"/>
<display value="Supplemental Data"/>
</coding>
<text value="Supplemental Data Guidance"/>
</valueCodeableConcept>
</extension>
</extension>
<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/BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
<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="CMS645FHIR"/>
</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:299de9c4-755d-4f5a-ac9e-fa74fe34f759"/>
</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:aed79368-1b42-422a-b31b-c01a9de8501f"/>
</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="645FHIR"/>
<assigner>
<display value="CMS"/>
</assigner>
</identifier>
<version value="1.4.000"/>
<name value="BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
<title
value="Bone Density Evaluation for Patients with Prostate Cancer and Receiving Androgen Deprivation TherapyFHIR"/>
<status value="draft"/>
<experimental value="false"/>
<date value="2024-07-09T14:53:57+00:00"/>
<publisher value="Oregon Urology"/>
<contact>
<telecom>
<system value="url"/>
<value value="www.oregonurology.com"/>
</telecom>
</contact>
<description
value="Percentage of patients determined as having prostate cancer who are currently starting or undergoing androgen deprivation therapy (ADT), for an anticipated period of 12 months or greater and who receive an initial bone density evaluation. The bone density evaluation must be prior to the start of ADT or within 3 months of the start of ADT."/>
<purpose value="UNKNOWN"/>
<usage
value="In order to capture the practitioner's intent of androgen deprivation therapy (ADT) for a period of 12 months or greater, SNOMEDCT 456381000124102 which is Injection of leuprolide acetate for twelve-month period (regime/therapy) is the correct code. This eCQM is a patient-based measure. This FHIR-based measure has been derived from the QDM-based measure: CMS645v8. Please refer to the HL7 QI-Core Implementation Guide (https://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 (https://hl7.org/fhir/us/qicore/STU4.1.1/qdm-to-qicore.html)."/>
<copyright
value="Limited proprietary coding is contained in the measure specifications for convenience. Users of the proprietary code sets should obtain all necessary licenses from the owners of these code sets. Oregon Urology Institute (OUI) and Large Urology Group Practice Association (LUGPA) disclaim all liability for use or accuracy of third party codes contained in the specifications. CPT(R) contained in the Measure specifications is copyright 2004-2023. American Medical Association. LOINC(R) copyright 2004-2023 Regenstrief Institute, Inc. This material contains SNOMED Clinical Terms(R) (SNOMED CT[R]) copyright 2004-2023. International Health Terminology Standards Development Organisation. ICD-10 copyright 2023 World Health Organization. All Rights Reserved."/>
<effectivePeriod>
<start value="2025-01-01"/>
<end value="2025-12-31"/>
</effectivePeriod>
<author>
<name value="Oregon Urology"/>
<telecom>
<system value="url"/>
<value value="www.oregonurology.com"/>
</telecom>
</author>
<library
value="https://madie.cms.gov/Library/BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"/>
<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 MEASURES 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]."/>
<rationale
value="Androgen suppression as a treatment for prostate cancer can cause osteoporosis (Qaseem, 2008). Men undergoing prolonged androgen deprivation therapy (ADT) incur bone loss at a rate higher than menopausal women (Guise, 2007). In preserving bone health, the goal is to prevent or treat osteopenia/osteoporosis for the patient on ADT and to prevent or delay skeletal related events. The National Osteoporosis Foundation recommendations including a baseline assessment of bone density with a dual energy X-ray absorptiometry (DEXA) scan and daily calcium and Vitamin D supplementation (Watts, 2012). The DEXA scan is the gold standard for bone density screening. Men at risk for adverse bone consequences from chronic ADT do not always receive care according to evidence-based guidelines. These findings call for improved processes that standardize evidence-based practice including baseline and follow up bone density assessment (Watts, 2012)."/>
<clinicalRecommendationStatement
value="Bone density screening should be performed at the start of Androgen Deprivation Therapy (ADT) for prostate cancer. It should also be performed every 2 years for the patient with continued ADT or for patients with known osteoporosis. Current insurance practice is to possibly cover the cost of bone density screening if osteoporosis is known or if there is a high-risk drug. Some patients choose to delay bone density screening until after ADT is started and they therefore have insurance authorization due to the administration of a high-risk drug."/>
<group id="6643b7c1a7a1805d3b7374f8">
<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="increase"/>
<display value="Increased score indicates improvement"/>
</coding>
</valueCodeableConcept>
</extension>
<population id="E8F25116-1779-4BA6-B606-34F12AE4F5BA">
<code>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-population"/>
<code value="initial-population"/>
<display value="Initial Population"/>
</coding>
</code>
<description
value="Patients with a qualifying encounter in the measurement period AND with a diagnosis of prostate cancer AND with an order for ADT or an active medication of ADT with an intent for treatment greater than or equal to 12 months during the measurement period AND order for ADT in 3 months before to 9 months after the start of the measurement period"/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="Initial Population"/>
</criteria>
</population>
<population id="1C145A56-9250-4444-A497-86C44F55CFDB">
<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="B1E0E3D2-D44E-4BFF-92F8-077CF1AE234F">
<code>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-population"/>
<code value="numerator"/>
<display value="Numerator"/>
</coding>
</code>
<description
value="Patients with a bone density evaluation within the two years prior to the start of or less than three months after the start of ADT treatment"/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="Numerator"/>
</criteria>
</population>
<population id="A9552F46-139C-4270-835C-224132205362">
<code>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-population"/>
<code value="denominator-exception"/>
<display value="Denominator Exception"/>
</coding>
</code>
<description
value="Patient refused the bone density evaluation at the time ordered or did not have it performed within 3 months after the start of ADT NOTE: Created a placeholder population due to issues around negation: refer to https://github.com/cqframework/cql-execution/issues/296, which is tied to https://oncprojectracking.healthit.gov/support/browse/BONNIEMAT-1455"/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="Denominator Exception"/>
</criteria>
</population>
</group>
<supplementalData id="sde-ethnicity">
<usage>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-data-usage"/>
<code value="supplemental-data"/>
</coding>
</usage>
<description value="SDE Ethnicity"/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="SDE Ethnicity"/>
</criteria>
</supplementalData>
<supplementalData id="sde-payer">
<usage>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-data-usage"/>
<code value="supplemental-data"/>
</coding>
</usage>
<description value="SDE Payer"/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="SDE Payer"/>
</criteria>
</supplementalData>
<supplementalData id="sde-race">
<usage>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-data-usage"/>
<code value="supplemental-data"/>
</coding>
</usage>
<description value="SDE Race"/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="SDE Race"/>
</criteria>
</supplementalData>
<supplementalData id="sde-sex">
<usage>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/measure-data-usage"/>
<code value="supplemental-data"/>
</coding>
</usage>
<description value="SDE Sex"/>
<criteria>
<language value="text/cql-identifier"/>
<expression value="SDE Sex"/>
</criteria>
</supplementalData>
</Measure>