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

Measure: Bone Density Evaluation for Patients with Prostate Cancer and Receiving Androgen Deprivation TherapyFHIR

Official URL: https://madie.cms.gov/Measure/BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Version: 1.4.000
Draft as of 2024-07-09 Responsible: Oregon Urology Computable Name: BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR
Other Identifiers: Short Name (use: usual, ), UUID:299de9c4-755d-4f5a-ac9e-fa74fe34f759 (use: official, ), UUID:aed79368-1b42-422a-b31b-c01a9de8501f (use: official, ), Publisher (use: official, )

Copyright/Legal: 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.

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.

UNKNOWN

Title: Bone Density Evaluation for Patients with Prostate Cancer and Receiving Androgen Deprivation TherapyFHIR
Id: BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR
Version: 1.4.000
Url: Bone Density Evaluation for Patients with Prostate Cancer and Receiving Androgen Deprivation TherapyFHIR
short-name identifier:

CMS645FHIR

version-independent identifier:

urn:uuid:299de9c4-755d-4f5a-ac9e-fa74fe34f759

version-specific identifier:

urn:uuid:aed79368-1b42-422a-b31b-c01a9de8501f

publisher (CMS) identifier:

645FHIR

Effective Period: 2025-01-01..2025-12-31
Status: draft
Publisher: Oregon Urology
Author: Oregon Urology
Description:

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:

UNKNOWN

Copyright:

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.

Disclaimer:

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:

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).

Clinical recommendation statement:

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.

Guidance (Usage): 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).
Population Criteria:
6643b7c1a7a1805d3b7374f8
Initial Population: 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
Denominator: Equals Initial Population
Numerator: 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
Denominator Exception: 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
Supplemental Data Elements:

SDE Ethnicity

SDE Payer

SDE Race

SDE Sex

Supplemental Data Guidance : For every patient evaluated by this measure also identify payer, race, ethnicity and sex
Libraries:
BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR
Terminology and Other Dependencies:
  • Library/SupplementalDataElements|3.5.000
  • Library/FHIRHelpers|4.4.000
  • Library/QICoreCommon|2.1.000
  • AdministrativeGender
  • SNOMED CT (all versions)
  • Condition Clinical Status Codes
  • ConditionVerificationStatus
  • DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care
  • Androgen deprivation therapy for Urology Care
  • Prostate Cancer
  • Office Visit
  • Payer
  • Parameters:
    name use min max type
    Measurement Period In 0 1 Period
    SDE Sex Out 0 1 Coding
    Numerator Out 0 1 boolean
    Denominator Exception Out 0 1 boolean
    Denominator Out 0 1 boolean
    SDE Payer Out 0 * Resource
    Initial Population Out 0 1 boolean
    SDE Ethnicity Out 0 1 Resource
    SDE Race Out 0 1 Resource
    DataRequirements:
    Resource Type Resource Elements Valueset Name Valueset
    Patient(QICorePatient) ethnicity race
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    MedicationRequest(QICoreMedicationRequest) medication.reference dosageInstruction status status.value intent intent.value authoredOn authoredOn.value
    MedicationRequest(QICoreMedicationRequest) medication dosageInstruction status status.value intent intent.value authoredOn authoredOn.value Androgen deprivation therapy for Urology Care Androgen deprivation therapy for Urology Care
    Condition(QICoreCondition) code clinicalStatus verificationStatus Prostate Cancer Prostate Cancer
    ServiceRequest(QICoreServiceRequest) code authoredOn authoredOn.value status status.value intent intent.value doNotPerform doNotPerform.value
    ServiceRequest(QICoreServiceRequest) code authoredOn authoredOn.value status status.value intent intent.value doNotPerform doNotPerform.value DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care
    Observation(QICoreObservation) code effective status status.value DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care
    Encounter(QICoreEncounter) type period status status.value Office Visit Office Visit
    Coverage(QICoreCoverage) type period Payer Type Payer
    Direct Reference Codes:
    display code system
    Male M http://hl7.org/fhir/administrative-gender
    Female F http://hl7.org/fhir/administrative-gender
    Injection of leuprolide acetate for twelve month period (regime/therapy) 456381000124102 http://snomed.info/sct
    Active active http://terminology.hl7.org/CodeSystem/condition-clinical
    Confirmed confirmed http://terminology.hl7.org/CodeSystem/condition-ver-status
    Logic Definitions:
    Group Scoring Population Criteria Expression
    6643b7c1a7a1805d3b7374f8 Group scoring: proportion
    Type:

    Process

    Rate Aggregation: None
    Improvement Notation:

    Increased score indicates improvement

    Initial Population
    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"
    Denominator
    define "Denominator":
      "Initial Population"
    Numerator
    define "Numerator":
      "Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT"
    Denominator Exception
    /*
    @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
    Library Name Name
    SupplementalDataElements SDE Sex
    define "SDE Sex":
      case
        when Patient.gender = 'male' then "M"
        when Patient.gender = 'female' then "F"
        else null
      end
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR SDE Sex
    define "SDE Sex":
      SDE."SDE Sex"
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Androgen Deprivation Therapy for Urology Care Medication Active Start Dates
    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
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Androgen Deprivation Therapy for Urology Care Medication Order Start Dates
    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
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Prostate Cancer Diagnosis
    define "Prostate Cancer Diagnosis":
      [Condition: "Prostate Cancer"] ProstateCancer
        where ProstateCancer.prevalenceInterval ( ) overlaps "Measurement Period"
          and ProstateCancer.clinicalStatus ~ QICoreCommon."active"
          and ProstateCancer.verificationStatus ~ QICoreCommon."confirmed"
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR First ADT in 3 Months Before to 9 Months After Start of Measurement Period
    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
      )
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period
    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
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT
    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' }
          )
      )
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Numerator
    define "Numerator":
      "Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT"
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Denominator Exception
    /*
    @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
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Has Qualifying Encounter
    define "Has Qualifying Encounter":
      exists ( ["Encounter": "Office Visit"] OfficeVisit
          where OfficeVisit.period during "Measurement Period"
            and OfficeVisit.status = 'finished'
      )
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Initial Population
    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"
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR Denominator
    define "Denominator":
      "Initial Population"
    Library Name Name
    SupplementalDataElements SDE Payer
    define "SDE Payer":
      [Coverage: type in "Payer Type"] Payer
        return {
          code: Payer.type,
          period: Payer.period
        }
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR SDE Payer
    define "SDE Payer":
      SDE."SDE Payer"
    Library Name Name
    SupplementalDataElements SDE Ethnicity
    define "SDE Ethnicity":
      Patient.ethnicity E
        return Tuple {
          codes: { E.ombCategory } union E.detailed,
          display: E.text
        }
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR SDE Ethnicity
    define "SDE Ethnicity":
      SDE."SDE Ethnicity"
    Library Name Name
    SupplementalDataElements SDE Race
    define "SDE Race":
      Patient.race R
        return Tuple {
          codes: R.ombCategory union R.detailed,
          display: R.text
        }
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR SDE Race
    define "SDE Race":
      SDE."SDE Race"
    Library Name Name
    QICoreCommon earliest
    /*
    @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
    Library Name Name
    BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR NormalizeInterval
    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>
    Library Name Name
    QICoreCommon prevalenceInterval
    /*
    @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]
    Library Name Name
    FHIRHelpers ToString
    define function ToString(value uri): value.value
    Library Name Name
    FHIRHelpers ToCode
    /*
    @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
            }