eCQM QICore Content Implementation Guide
2023.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 2023.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-2023/ and changes regularly. See the Directory of published versions

Measure: Use of High-Risk Medications in Older AdultsFHIR

Official URL: http://ecqi.healthit.gov/ecqms/Measure/UseofHighRiskMedicationsintheElderlyFHIR Version: 0.0.001
Draft as of 2023-10-27 Responsible: National Committee for Quality Assurance Computable Name: UseofHighRiskMedicationsintheElderlyFHIR
Other Identifiers: Short Name (use: usual, ), UUID:fa08c5d7-5345-4e0b-aa2d-d937099db108 (use: official, ), UUID:2c928084808a958901809a8b347f0755 (use: official, ), Publisher (use: official, )

Usage:Program: EP/EC

Copyright/Legal: This Physician Performance Measure (Measure) and related data specifications are owned and stewarded by the Centers for Medicare & Medicaid Services (CMS). CMS contracted (Contract HHSM-500-2011-00079C) with the National Committee for Quality Assurance (NCQA) to develop this electronic measure. NCQA is not responsible for any use of the Measure. NCQA makes no representations, warranties, or endorsement about the quality of any organization or physician that uses or reports performance measures and NCQA has no liability to anyone who relies on such measures or specifications.

Limited proprietary coding is contained in the Measure specifications for user convenience. Users of proprietary code sets should obtain all necessary licenses from the owners of the code sets. NCQA disclaims all liability for use or accuracy of any third party codes contained in the specifications.

CPT(R) codes, descriptions and other data are copyright 2022. American Medical Association. All rights reserved. CPT is a trademark of the American Medical Association. No fee schedules, basic units, relative values or related listings are included in CPT. The AMA assumes no liability for the data contained herein. Applicable FARS/DFARS restrictions apply to government use.

LOINC(R) copyright 2004-2022 Regenstrief Institute, Inc. This material contains SNOMED Clinical Terms(R) (SNOMED CT[R]) copyright 2004-2022 International Health Terminology Standards Development Organisation.

ICD-10 copyright 2022 World Health Organization. All Rights Reserved.

Percentage of patients 65 years of age and older who were ordered at least two high-risk medications from the same drug class. Three rates are reported.

  1. Percentage of patients 65 years of age and older who were ordered at least two high-risk medications from the same drug class.
  2. Percentage of patients 65 years of age and older who were ordered at least two high-risk medications from the same drug class, except for appropriate diagnoses.
  3. Total rate (the sum of the two numerators divided by the denominator, deduplicating for patients in both numerators).

UNKNOWN

Title: Use of High-Risk Medications in Older AdultsFHIR
Id: UseofHighRiskMedicationsintheElderlyFHIR
Download cql: UseofHighRiskMedicationsintheElderlyFHIR.cql
Version: 0.0.001
Url: Use of High-Risk Medications in Older AdultsFHIR
short-name identifier:

CMS156FHIR

version-independent identifier:

urn:uuid:fa08c5d7-5345-4e0b-aa2d-d937099db108

version-specific identifier:

urn:uuid:2c928084808a958901809a8b347f0755

publisher (CMS) identifier:

156FHIR

Effective Period: 2024-01-01 ..2024-12-31
Status: draft
Date: 2023-10-27 08:12:32+0000
Approval Date: 2023-08-28
Last Review Date: 2023-08-28
Name: UseofHighRiskMedicationsintheElderlyFHIR
Publisher: National Committee for Quality Assurance
Author: National Committee for Quality Assurance: https://www.ncqa.org/
Description:

Percentage of patients 65 years of age and older who were ordered at least two high-risk medications from the same drug class. Three rates are reported.

  1. Percentage of patients 65 years of age and older who were ordered at least two high-risk medications from the same drug class.
  2. Percentage of patients 65 years of age and older who were ordered at least two high-risk medications from the same drug class, except for appropriate diagnoses.
  3. Total rate (the sum of the two numerators divided by the denominator, deduplicating for patients in both numerators).
Use Context:
code value
program
Purpose:

UNKNOWN

Copyright:

This Physician Performance Measure (Measure) and related data specifications are owned and stewarded by the Centers for Medicare & Medicaid Services (CMS). CMS contracted (Contract HHSM-500-2011-00079C) with the National Committee for Quality Assurance (NCQA) to develop this electronic measure. NCQA is not responsible for any use of the Measure. NCQA makes no representations, warranties, or endorsement about the quality of any organization or physician that uses or reports performance measures and NCQA has no liability to anyone who relies on such measures or specifications.

Limited proprietary coding is contained in the Measure specifications for user convenience. Users of proprietary code sets should obtain all necessary licenses from the owners of the code sets. NCQA disclaims all liability for use or accuracy of any third party codes contained in the specifications.

CPT(R) codes, descriptions and other data are copyright 2022. American Medical Association. All rights reserved. CPT is a trademark of the American Medical Association. No fee schedules, basic units, relative values or related listings are included in CPT. The AMA assumes no liability for the data contained herein. Applicable FARS/DFARS restrictions apply to government use.

LOINC(R) copyright 2004-2022 Regenstrief Institute, Inc. This material contains SNOMED Clinical Terms(R) (SNOMED CT[R]) copyright 2004-2022 International Health Terminology Standards Development Organisation.

ICD-10 copyright 2022 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 MEASURE AND SPECIFICATIONS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.

Due to technical limitations, registered trademarks are indicated by (R) or [R] and unregistered trademarks are indicated by (TM) or [TM].

Rationale:

Certain medications (MacKinnon & Hepler, 2003) are associated with increased risk of harm from drug side-effects and drug toxicity and pose a concern for patient safety. There is clinical consensus that these drugs pose increased risks in older adults (Kaufman, Brodin, & Sarafian, 2005). Potentially inappropriate medication use in older adults has been connected to significantly longer hospital stay lengths and increased hospitalization costs (Hagstrom et al., 2015) as well as increased risk of death (Lau et al., 2004). Use of specific high-risk medications such as hypnotics, including benzodiazepine receptor agonists, and nonsteroidal anti-inflammatory drugs (NSAIDS) can result in increased risk of delirium, falls, fractures, gastrointestinal bleeding and acute kidney injury (Merel et al., 2017). Long-term use of benzodiazepines in older adults has been associated with increased risk of dementia (Zhong et al., 2015; Takada et al., 2016). Additionally, the use of antipsychotics can lead to increased risk of stroke and greater cognitive decline in older adults with dementia (Tampi et al., 2016).

Older adults receiving inappropriate medications are more likely to report poorer health status at follow-up, compared to those who receive appropriate medications (Fu, Liu, & Christensen, 2004). A study of the prevalence of potentially inappropriate medication use in older adults found that 40 percent of individuals 65 and older filled at least one prescription for a potentially inappropriate medication and 13 percent filled two or more (Fick et al., 2008). While some adverse drug events (ADEs) are unavoidable, studies estimate that between 30 and 80 percent of ADEs in older adults are preventable (MacKinnon & Hepler, 2003). More recently with the onset of the COVID-19 pandemic, several studies have shown an increase in anxiety, insomnia and depression rates, which could result in an increase in the use of high-risk medications in order to treat these conditions (Agrawal, 2020).

Reducing the number of inappropriate prescriptions can lead to improved patient safety and significant cost savings. Conservative estimates of extra costs due to potentially inappropriate medications in older adults average $7.2 billion a year (Fu et al., 2007). Medication use by older adults will likely increase further as the U.S. population ages, new drugs are developed, and new therapeutic and preventive uses for medications are discovered (Rothberg et al., 2008). The annual direct costs of preventable ADEs in the Medicare population have been estimated to exceed $800 million (Institute of Medicine, 2007). By the year 2030, nearly one in five U.S. residents is expected to be aged 65 years or older; this age group is projected to more than double from 38.7 million in 2008 to more than 88.5 million in 2050. Likewise, the population aged 85 years or older is expected to increase almost four-fold, from 5.4 million to 19 million between 2008 and 2050. As the older adult population continues to grow, the number of older adults who present with multiple medical conditions for which several medications are prescribed will likely continue to increase, resulting in polypharmacy concerns (Gray & Gardner, 2009).

Clinical recommendation statement:

The measure is based on recommendations from the American Geriatrics Society Beers Criteria[R] for Potentially Inappropriate Medication Use in Older Adults (2019 Update). The criteria were developed through key clinical expert consensus processes by Beers in 1997, Zhan in 2001, and an updated process by Fick et al. in 2003, 2012, 2015, and 2019. The Beers Criteria identifies lists of drugs that are potentially inappropriate for all older adults, except for those with certain conditions for which some high-risk medications may be warranted, and drugs that are potentially inappropriate in older adults based on various high-risk factors such as dosage, days supply and underlying diseases or conditions. NCQA's Geriatric Measurement Advisory Panel recommended a subset of drugs that should be used with caution in older adults for inclusion in the measure based upon the recommendations in the Beers Criteria.

Guidance (Usage): The intent of the measure is to assess if the patient has been ordered at least two high-risk medication prescriptions from the same drug class on different days. The intent of the measure is to assess if the reporting provider ordered the high-risk medication(s). If the patient had a high-risk medication previously prescribed by another provider, they would not be counted towards the numerator unless the reporting provider also ordered a high-risk medication from the same drug class for them. Calculate average daily dose for each prescription event. To calculate average daily dose, multiply the quantity of pills prescribed by the dose of each pill and divide by the days supply. For example, a prescription for the 30-days supply of digoxin containing 15 pills, 0.25 mg each pill, has an average daily dose of 0.125 mg. To calculate average daily dose for elixirs and concentrates, multiply the volume prescribed by daily dose and divide by the days supply. Do not round when calculating average daily dose. This eCQM is a patient-based measure. This FHIR-based measure has been derived from the QDM-based measure:  CMS156v12. Please refer to the HL7 QI-Core Implementation Guide (http://hl7.org/fhir/us/qicore/index.html) for more information on QI-Core and mapping recommendations from QDM to QI-Core 4.1.1 (http://hl7.org/fhir/us/qicore/qdm-to-qicore.html).
Population Criteria:
649c8b4a4c79454c026f7495
Initial Population: Patients 65 years and older at the end of the measurement period who had a visit during the measurement period
Denominator: Equals Initial Population
Denominator Exclusion: Exclude patients who are in hospice care for any part of the measurement period. Exclude patients receiving palliative care for any part of the measurement period.
Numerator: Rate 1: Patients with at least two orders of high-risk medications from the same drug class on different days. a. At least two orders of high-risk medications from the same drug class. b. At least two orders of high-risk medications from the same drug class with summed days supply greater than 90 days. c. At least two orders of high-risk medications from the same drug class each exceeding average daily dose criteria.
Numerator Exclusion: None
Denominator Exception: None
649c8b4a4c79454c026f7496
Initial Population: Patients 65 years and older at the end of the measurement period who had a visit during the measurement period
Denominator: Equals Initial Population
Denominator Exclusion: Exclude patients who are in hospice care for any part of the measurement period. Exclude patients receiving palliative care for any part of the measurement period.
Numerator: Rate 2: Patients with at least two orders of high-risk medications from the same drug class (i.e., antipsychotics and benzodiazepines) on different days except for appropriate diagnoses. a. Patients with two or more antipsychotic prescriptions ordered on different days, and who did not have a diagnosis of schizophrenia, schizoaffective disorder, or bipolar disorder on or between January 1 of the year prior to the measurement period and the IPSD for antipsychotics. b. Patients with two or more benzodiazepine prescriptions ordered on different days, and who did not have a diagnosis of seizure disorders, rapid eye movement sleep behavior disorder, benzodiazepine withdrawal, ethanol withdrawal, or severe generalized anxiety disorder on or between January 1 of the year prior to the measurement period and the IPSD for benzodiazepines.
Numerator Exclusion: None
Denominator Exception: None
649c8b4a4c79454c026f7497
Initial Population: Patients 65 years and older at the end of the measurement period who had a visit during the measurement period
Denominator: Equals Initial Population
Denominator Exclusion: Exclude patients who are in hospice care for any part of the measurement period. Exclude patients receiving palliative care for any part of the measurement period.
Numerator: Total rate (the sum of the two previous numerators, deduplicated).
Numerator Exclusion: None
Denominator Exception: None
Libraries:
UseofHighRiskMedicationsintheElderlyFHIR
Related Artifact Dependencies:
  • Status version: 1.6.000
  • CumulativeMedicationDuration version: 3.3.000
  • FHIRHelpers version: 4.3.000
  • QICoreCommon version: 1.5.000
  • CQMCommon version: 1.4.000
  • Hospice version: 6.7.000
  • PalliativeCare version: 1.7.000
  • RxNorm
  • CPT
  • SNOMED CT (all versions)
  • Observation Category Codes
  • LOINC
  • Potentially Harmful Antipsychotics for Older Adults
  • Schizophrenia
  • Bipolar Disorder
  • Potentially Harmful Benzodiazepines for Older Adults
  • Seizure Disorder
  • REM Sleep Behavior Disorder
  • Benzodiazepine Withdrawal
  • Alcohol Withdrawal
  • Generalized Anxiety Disorder
  • Potentially Harmful Antihistamines for Older Adults
  • Potentially Harmful Antiparkinsonian Agents for Older Adults
  • Potentially Harmful Gastrointestinal Antispasmodics for Older Adults
  • Dipyridamole Medications
  • Cardiovascular, alpha agonists, central
  • Nifedipine Medications
  • Potentially Harmful Antidepressants for Older Adults
  • Potentially Harmful Barbiturates for Older Adults
  • Ergoloid Mesylates Medications
  • Meprobamate Medications
  • Potentially Harmful Estrogens for Older Adults
  • Potentially Harmful Sulfonylureas for Older Adults
  • Desiccated Thyroid Medications
  • Nonbenzodiazepine hypnotics
  • Potentially Harmful Skeletal Muscle Relaxants for Older Adults
  • Potentially Harmful Pain Medications for Older Adults
  • Anti Infectives, other
  • Reserpine
  • Digoxin Medications
  • Doxepin Medications
  • Office Visit
  • Ophthalmologic Services
  • Preventive Care Services - Established Office Visit, 18 and Up
  • Discharge Services - Nursing Facility
  • Nursing Facility Visit
  • Care Services in Long-Term Residential Facility
  • Preventive Care Services-Initial Office Visit, 18 and Up
  • Annual Wellness Visit
  • Home Healthcare Services
  • Telephone Visits
  • Virtual Encounter
  • Encounter Inpatient
  • Hospice Encounter
  • Hospice Care Ambulatory
  • Hospice Diagnosis
  • Palliative Care Diagnosis
  • Palliative Care Encounter
  • Palliative Care Intervention
  • Parameters:
    name use min max type
    Measurement Period In 0 1 Period
    ErrorLevel In 0 1 string
    Numerator 3 Out 0 1 boolean
    Denominator Out 0 1 boolean
    Numerator 1 Out 0 1 boolean
    Numerator 2 Out 0 1 boolean
    Initial Population Out 0 1 boolean
    Denominator Exclusions Out 0 1 boolean
    DataRequirements:
    Type Elements Valueset Name Valueset
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Antipsychotic Potentially Harmful Antipsychotics for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Benzodiazepine Potentially Harmful Benzodiazepines for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Anticholinergics, first generation antihistamines Potentially Harmful Antihistamines for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Anticholinergics, anti Parkinson agents Potentially Harmful Antiparkinsonian Agents for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Antispasmodics Potentially Harmful Gastrointestinal Antispasmodics for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Antithrombotic Dipyridamole Medications
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Cardiovascular, alpha agonists, central Cardiovascular, alpha agonists, central
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Cardiovascular, other Nifedipine Medications
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Central nervous system, antidepressants Potentially Harmful Antidepressants for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Central nervous system, barbiturates Potentially Harmful Barbiturates for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Central nervous system, vasodilators Ergoloid Mesylates Medications
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Central nervous system, other Meprobamate Medications
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Endocrine system, estrogens with or without progestins Potentially Harmful Estrogens for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Endocrine system, sulfonylureas, long duration Potentially Harmful Sulfonylureas for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Endocrine system, other Desiccated Thyroid Medications
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Nonbenzodiazepine hypnotics Nonbenzodiazepine hypnotics
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Pain medications, skeletal muscle relaxants Potentially Harmful Skeletal Muscle Relaxants for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Pain medications, other Potentially Harmful Pain Medications for Older Adults
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Anti Infectives, other Anti Infectives, other
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Reserpine Reserpine
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Digoxin Digoxin Medications
    MedicationRequest(QICoreMedicationRequest) medication.reference status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod
    MedicationRequest(QICoreMedicationRequest) medication status status.value intent intent.value dosageInstruction dispenseRequest dispenseRequest.expectedSupplyDuration dispenseRequest.quantity dispenseRequest.numberOfRepeatsAllowed dispenseRequest.numberOfRepeatsAllowed.value authoredOn authoredOn.value dispenseRequest.validityPeriod Doxepin Doxepin Medications
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Medication(QICoreMedication) id
    Condition(QICoreCondition) code Schizophrenia Schizophrenia
    Condition(QICoreCondition) code Bipolar Disorder Bipolar Disorder
    Condition(QICoreCondition) code Seizure Disorder Seizure Disorder
    Condition(QICoreCondition) code REM Sleep Behavior Disorder REM Sleep Behavior Disorder
    Condition(QICoreCondition) code Benzodiazepine Withdrawal Benzodiazepine Withdrawal
    Condition(QICoreCondition) code Alcohol Withdrawal Alcohol Withdrawal
    Condition(QICoreCondition) code Generalized Anxiety Disorder Generalized Anxiety Disorder
    Condition(QICoreCondition) code Hospice Diagnosis Hospice Diagnosis
    Condition(QICoreCondition) code Palliative Care Diagnosis Palliative Care Diagnosis
    Patient(QICorePatient)
    Encounter(QICoreEncounter) type period status status.value
    Encounter(QICoreEncounter) type period status status.value Office Visit Office Visit
    Encounter(QICoreEncounter) type period status status.value Ophthalmologic Services Ophthalmologic Services
    Encounter(QICoreEncounter) type period status status.value Preventive Care Services Established Office Visit, 18 and Up Preventive Care Services - Established Office Visit, 18 and Up
    Encounter(QICoreEncounter) type period status status.value Discharge Services Nursing Facility Discharge Services - Nursing Facility
    Encounter(QICoreEncounter) type period status status.value Nursing Facility Visit Nursing Facility Visit
    Encounter(QICoreEncounter) type period status status.value Care Services in Long Term Residential Facility Care Services in Long-Term Residential Facility
    Encounter(QICoreEncounter) type period status status.value Preventive Care Services Initial Office Visit, 18 and Up Preventive Care Services-Initial Office Visit, 18 and Up
    Encounter(QICoreEncounter) type period status status.value Annual Wellness Visit Annual Wellness Visit
    Encounter(QICoreEncounter) type period status status.value Home Healthcare Services Home Healthcare Services
    Encounter(QICoreEncounter) type period status status.value Telephone Visits Telephone Visits
    Encounter(QICoreEncounter) type period status status.value Online Assessments Virtual Encounter
    Encounter(QICoreEncounter) type hospitalization hospitalization.dischargeDisposition period status status.value Encounter Inpatient Encounter Inpatient
    Encounter(QICoreEncounter) type period status status.value Hospice Encounter Hospice Encounter
    Encounter(QICoreEncounter) type period status status.value Palliative Care Encounter Palliative Care Encounter
    Observation(QICoreObservation) code value effective status status.value category
    Observation(QICoreObservation) code effective status status.value category
    ServiceRequest(QICoreServiceRequest) code authoredOn authoredOn.value status status.value intent intent.value Hospice Care Ambulatory Hospice Care Ambulatory
    Procedure(QICoreProcedure) code performed status status.value Hospice Care Ambulatory Hospice Care Ambulatory
    Procedure(QICoreProcedure) code performed status status.value Palliative Care Intervention Palliative Care Intervention
    Direct Reference Codes:
    display code system
    reserpine 0.1 MG Oral Tablet 198196 http://www.nlm.nih.gov/research/umls/rxnorm
    reserpine 0.25 MG Oral Tablet 198197 http://www.nlm.nih.gov/research/umls/rxnorm
    digoxin 0.05 MG/ML Oral Solution 393245 http://www.nlm.nih.gov/research/umls/rxnorm
    digoxin 0.0625 MG Oral Tablet 245273 http://www.nlm.nih.gov/research/umls/rxnorm
    1 ML digoxin 0.1 MG/ML Injection 204504 http://www.nlm.nih.gov/research/umls/rxnorm
    digoxin 0.125 MG Oral Tablet 197604 http://www.nlm.nih.gov/research/umls/rxnorm
    digoxin 0.1875 MG Oral Tablet 1441565 http://www.nlm.nih.gov/research/umls/rxnorm
    digoxin 0.25 MG Oral Tablet 197606 http://www.nlm.nih.gov/research/umls/rxnorm
    2 ML digoxin 0.25 MG/ML Injection 104208 http://www.nlm.nih.gov/research/umls/rxnorm
    doxepin 3 MG Oral Tablet 966787 http://www.nlm.nih.gov/research/umls/rxnorm
    doxepin 6 MG Oral Tablet 966793 http://www.nlm.nih.gov/research/umls/rxnorm
    doxepin hydrochloride 10 MG Oral Capsule 1000048 http://www.nlm.nih.gov/research/umls/rxnorm
    doxepin hydrochloride 10 MG/ML Oral Solution 1000054 http://www.nlm.nih.gov/research/umls/rxnorm
    doxepin hydrochloride 25 MG Oral Capsule 1000070 http://www.nlm.nih.gov/research/umls/rxnorm
    doxepin hydrochloride 50 MG Oral Capsule 1000076 http://www.nlm.nih.gov/research/umls/rxnorm
    doxepin hydrochloride 75 MG Oral Capsule 1000097 http://www.nlm.nih.gov/research/umls/rxnorm
    doxepin hydrochloride 100 MG Oral Capsule 1000058 http://www.nlm.nih.gov/research/umls/rxnorm
    doxepin hydrochloride 150 MG Oral Capsule 1000064 http://www.nlm.nih.gov/research/umls/rxnorm
    Office or other outpatient visit for the evaluation and management of an established patient, that may not require the presence of a physician or other qualified health care professional. Usually, the presenting problem(s) are minimal. 99211 http://www.ama-assn.org/go/cpt
    Discharge to home for hospice care (procedure) 428361000124107 http://snomed.info/sct
    Discharge to healthcare facility for hospice care (procedure) 428371000124100 http://snomed.info/sct
    survey survey http://terminology.hl7.org/CodeSystem/observation-category
    Hospice care [Minimum Data Set] 45755-6 http://loinc.org
    Yes (qualifier value) 373066001 http://snomed.info/sct
    Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal) 71007-9 http://loinc.org
    Logic Definitions:
    Group Scoring Population Criteria Expression
    649c8b4a4c79454c026f7495 Group scoring: proportion
    Initial Population
    define "Initial Population":
      AgeInYearsAt(date from 
        end of "Measurement Period"
      ) >= 65
        and exists ( "Qualifying Encounters" )
    Denominator
    define "Denominator":
      "Initial Population"
    Denominator Exclusion
    define "Denominator Exclusions":
      Hospice."Has Hospice Services"
        or PalliativeCare."Has Palliative Care in the Measurement Period"
    Numerator
    define "Numerator 1":
      exists ( "Same High Risk Medications Ordered on Different Days" )
        or ( "Two High Risk Medications with Prolonged Duration" )
        or ( "High Risk Medications with Average Daily Dose Criteria" )
    Numerator Exclusion None
    Denominator Exception None
    649c8b4a4c79454c026f7496 Group scoring: proportion
    Initial Population
    define "Initial Population":
      AgeInYearsAt(date from 
        end of "Measurement Period"
      ) >= 65
        and exists ( "Qualifying Encounters" )
    Denominator
    define "Denominator":
      "Initial Population"
    Denominator Exclusion
    define "Denominator Exclusions":
      Hospice."Has Hospice Services"
        or PalliativeCare."Has Palliative Care in the Measurement Period"
    Numerator
    define "Numerator 2":
      ( "More than One Antipsychotic Order"
          and ( not exists ( ( [Condition: "Schizophrenia"]
                union [Condition: "Bipolar Disorder"] ) AntipsychoticTreatedDiagnoses
                where QICoreCommon."ToPrevalenceInterval" ( AntipsychoticTreatedDiagnoses ) overlaps Interval[start of "Measurement Period" - 1 year, "Antipsychotic Index Prescription Start Date"]
            )
          )
      )
        or ( "More than One Benzodiazepine Order"
            and ( not exists ( ( [Condition: "Seizure Disorder"]
                  union [Condition: "REM Sleep Behavior Disorder"]
                  union [Condition: "Benzodiazepine Withdrawal"]
                  union [Condition: "Alcohol Withdrawal"]
                  union [Condition: "Generalized Anxiety Disorder"] ) BenzodiazepineTreatedDiagnoses
                  where QICoreCommon."ToPrevalenceInterval" ( BenzodiazepineTreatedDiagnoses ) overlaps Interval[start of "Measurement Period" - 1 year, "Benzodiazepine Index Prescription Start Date"]
              )
            )
        )
    Numerator Exclusion None
    Denominator Exception None
    649c8b4a4c79454c026f7497 Group scoring: proportion
    Initial Population
    define "Initial Population":
      AgeInYearsAt(date from 
        end of "Measurement Period"
      ) >= 65
        and exists ( "Qualifying Encounters" )
    Denominator
    define "Denominator":
      "Initial Population"
    Denominator Exclusion
    define "Denominator Exclusions":
      Hospice."Has Hospice Services"
        or PalliativeCare."Has Palliative Care in the Measurement Period"
    Numerator
    define "Numerator 3":
      "Numerator 2"
        or ( "Numerator 1"
            and not "Numerator 2"
        )
    Numerator Exclusion None
    Denominator Exception None
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR More than One Antipsychotic Order
    define "More than One Antipsychotic Order":
      exists ( "More Than One Order"([MedicationRequest: "Antipsychotic"]) )
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Antipsychotic Index Prescription Start Date
    define "Antipsychotic Index Prescription Start Date":
      First((Status."Active or Completed Medication Request"([MedicationRequest: "Antipsychotic"])) AntipsychoticMedication
          where AntipsychoticMedication.authoredOn during "Measurement Period"
          return AntipsychoticMedication.authoredOn
          sort asc
      )
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR More than One Benzodiazepine Order
    define "More than One Benzodiazepine Order":
      exists ( "More Than One Order"([MedicationRequest: "Benzodiazepine"]) )
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Benzodiazepine Index Prescription Start Date
    define "Benzodiazepine Index Prescription Start Date":
      First((Status."Active or Completed Medication Request"([MedicationRequest: "Benzodiazepine"])) BenzodiazepineMedication
          where BenzodiazepineMedication.authoredOn during "Measurement Period"
          return BenzodiazepineMedication.authoredOn
          sort asc
      )
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Numerator 2
    define "Numerator 2":
      ( "More than One Antipsychotic Order"
          and ( not exists ( ( [Condition: "Schizophrenia"]
                union [Condition: "Bipolar Disorder"] ) AntipsychoticTreatedDiagnoses
                where QICoreCommon."ToPrevalenceInterval" ( AntipsychoticTreatedDiagnoses ) overlaps Interval[start of "Measurement Period" - 1 year, "Antipsychotic Index Prescription Start Date"]
            )
          )
      )
        or ( "More than One Benzodiazepine Order"
            and ( not exists ( ( [Condition: "Seizure Disorder"]
                  union [Condition: "REM Sleep Behavior Disorder"]
                  union [Condition: "Benzodiazepine Withdrawal"]
                  union [Condition: "Alcohol Withdrawal"]
                  union [Condition: "Generalized Anxiety Disorder"] ) BenzodiazepineTreatedDiagnoses
                  where QICoreCommon."ToPrevalenceInterval" ( BenzodiazepineTreatedDiagnoses ) overlaps Interval[start of "Measurement Period" - 1 year, "Benzodiazepine Index Prescription Start Date"]
              )
            )
        )
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Same High Risk Medications Ordered on Different Days
    define "Same High Risk Medications Ordered on Different Days":
      "More Than One Order"(["MedicationRequest": "Anticholinergics, first generation antihistamines"])
        union "More Than One Order"(["MedicationRequest": "Anticholinergics, anti Parkinson agents"])
        union "More Than One Order"(["MedicationRequest": "Antispasmodics"])
        union "More Than One Order"(["MedicationRequest": "Antithrombotic"])
        union "More Than One Order"(["MedicationRequest": "Cardiovascular, alpha agonists, central"])
        union "More Than One Order"(["MedicationRequest": "Cardiovascular, other"])
        union "More Than One Order"(["MedicationRequest": "Central nervous system, antidepressants"])
        union "More Than One Order"(["MedicationRequest": "Central nervous system, barbiturates"])
        union "More Than One Order"(["MedicationRequest": "Central nervous system, vasodilators"])
        union "More Than One Order"(["MedicationRequest": "Central nervous system, other"])
        union "More Than One Order"(["MedicationRequest": "Endocrine system, estrogens with or without progestins"])
        union "More Than One Order"(["MedicationRequest": "Endocrine system, sulfonylureas, long duration"])
        union "More Than One Order"(["MedicationRequest": "Endocrine system, other"])
        union "More Than One Order"(["MedicationRequest": "Nonbenzodiazepine hypnotics"])
        union "More Than One Order"(["MedicationRequest": "Pain medications, skeletal muscle relaxants"])
        union "More Than One Order"(["MedicationRequest": "Pain medications, other"])
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Two High Risk Medications with Prolonged Duration
    define "Two High Risk Medications with Prolonged Duration":
      Sum(("More Than One Order"([MedicationRequest: "Anti Infectives, other"])) AntiInfectives
          let DaysSupply: AntiInfectives.MedicationRequestPeriodInDays()
          return all DaysSupply
      ) > 90
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR High Risk Medications with Average Daily Dose Criteria
    define "High Risk Medications with Average Daily Dose Criteria":
      exists ( "More Than One Order"([MedicationRequest: "Reserpine"] ReserpineOrdered
            where "Average Daily Dose"(ReserpineOrdered) > 0.1 'mg/d'
        )
      )
        or exists ( "More Than One Order"([MedicationRequest: "Digoxin"] DigoxinOrdered
              where "Average Daily Dose"(DigoxinOrdered) > 0.125 'mg/d'
          )
        )
        or exists ( "More Than One Order"([MedicationRequest: "Doxepin"] DoxepinOrdered
              where "Average Daily Dose"(DoxepinOrdered) > 6 'mg/d'
          )
        )
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Numerator 1
    define "Numerator 1":
      exists ( "Same High Risk Medications Ordered on Different Days" )
        or ( "Two High Risk Medications with Prolonged Duration" )
        or ( "High Risk Medications with Average Daily Dose Criteria" )
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Numerator 3
    define "Numerator 3":
      "Numerator 2"
        or ( "Numerator 1"
            and not "Numerator 2"
        )
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Qualifying Encounters
    define "Qualifying Encounters":
      ( ["Encounter": "Office Visit"]
        union ["Encounter": "Ophthalmologic Services"]
        union ["Encounter": "Preventive Care Services Established Office Visit, 18 and Up"]
        union ["Encounter": "Discharge Services Nursing Facility"]
        union ["Encounter": "Nursing Facility Visit"]
        union ["Encounter": "Care Services in Long Term Residential Facility"]
        union ["Encounter": "Preventive Care Services Initial Office Visit, 18 and Up"]
        union ["Encounter": "Annual Wellness Visit"]
        union ["Encounter": "Home Healthcare Services"]
        union ["Encounter": "Telephone Visits"]
        union ["Encounter": "Online Assessments"]
        union ( [Encounter] E
            where exists ( ( E.type ) T
                where T ~ "Office or other outpatient visit for the evaluation and management of an established patient, that may not require the presence of a physician or other qualified health care professional. Usually, the presenting problem(s) are minimal."
            )
        ) ) ValidEncounters
        where ValidEncounters.period during "Measurement Period"
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Initial Population
    define "Initial Population":
      AgeInYearsAt(date from 
        end of "Measurement Period"
      ) >= 65
        and exists ( "Qualifying Encounters" )
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Denominator
    define "Denominator":
      "Initial Population"
    Library Name Name
    Hospice Has Hospice Services
    define "Has Hospice Services":
      exists ((([Encounter: "Encounter Inpatient"]).isEncounterPerformed()) InpatientEncounter
          where (InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to home for hospice care (procedure)"
              or InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to healthcare facility for hospice care (procedure)"
          )
            and InpatientEncounter.period.toInterval() ends during day of "Measurement Period"
      )
        or exists ((([Encounter: "Hospice Encounter"]).isEncounterPerformed()) HospiceEncounter
            where HospiceEncounter.period.toInterval() overlaps day of "Measurement Period"
        )
        or exists ((([Observation: "Hospice care [Minimum Data Set]"]).isAssessmentPerformed()) HospiceAssessment
            where HospiceAssessment.value ~ "Yes (qualifier value)"
              and HospiceAssessment.effective.toInterval() overlaps day of "Measurement Period"
        )
        or exists ((([ServiceRequest: "Hospice Care Ambulatory"]).isInterventionOrder()) HospiceOrder
            where HospiceOrder.authoredOn.toInterval() during day of "Measurement Period"
        )
        or exists ((([Procedure: "Hospice Care Ambulatory"]).isInterventionPerformed()) HospicePerformed
            where HospicePerformed.performed.toInterval() overlaps day of "Measurement Period"
        )
        or exists (([Condition: "Hospice Diagnosis"]) HospiceCareDiagnosis
            where HospiceCareDiagnosis.prevalenceInterval() overlaps day of "Measurement Period"
        )
    Library Name Name
    PalliativeCare Has Palliative Care in the Measurement Period
    define "Has Palliative Care in the Measurement Period":
      exists ((([Observation: "Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)"]).isAssessmentPerformed()) PalliativeAssessment
          where PalliativeAssessment.effective.toInterval() overlaps day of "Measurement Period"
      )
        or exists ([Condition: "Palliative Care Diagnosis"] PalliativeDiagnosis
            where PalliativeDiagnosis.prevalenceInterval() overlaps day of "Measurement Period"
        )
        or exists ((([Encounter: "Palliative Care Encounter"]).isEncounterPerformed()) PalliativeEncounter
            where PalliativeEncounter.period.toInterval() overlaps day of "Measurement Period"
        )
        or exists ((([Procedure: "Palliative Care Intervention"]).isInterventionPerformed()) PalliativeIntervention
            where PalliativeIntervention.performed.toInterval() overlaps day of "Measurement Period"
        )
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Denominator Exclusions
    define "Denominator Exclusions":
      Hospice."Has Hospice Services"
        or PalliativeCare."Has Palliative Care in the Measurement Period"
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR More Than One Order
    //Functions
    
    
    define function "More Than One Order"(Medication List<"MedicationRequest">):
      ( Status."Active or Completed Medication Request" ( "Medication" ) ) OrderMedication1
        with ( Status."Active or Completed Medication Request" ( "Medication" ) ) OrderMedication2
          such that ( OrderMedication1.authoredOn during "Measurement Period"
              and OrderMedication1.dispenseRequest.numberOfRepeatsAllowed >= 1
          )
            or ( date from OrderMedication1.authoredOn !~ date from OrderMedication2.authoredOn
                and OrderMedication1.authoredOn during "Measurement Period"
                and OrderMedication2.authoredOn during "Measurement Period"
            )
            or ( date from OrderMedication1.authoredOn ~ date from OrderMedication2.authoredOn
                and OrderMedication1.authoredOn during "Measurement Period"
                and date from start of CMD."MedicationRequestPeriod" ( OrderMedication1 ) !~ date from start of CMD."MedicationRequestPeriod" ( OrderMedication2 )
                and start of CMD."MedicationRequestPeriod" ( OrderMedication1 ) during "Measurement Period"
                and start of CMD."MedicationRequestPeriod" ( OrderMedication2 ) during "Measurement Period"
            )
        return OrderMedication1
    Library Name Name
    Status Active or Completed Medication Request
    //Medication, Order: active and completed only
    define function "Active or Completed Medication Request"(MedicationRequest List<MedicationRequest>):
      MedicationRequest M
        where M.status in { 'active', 'completed' }
          and M.intent = 'order'
    Library Name Name
    CumulativeMedicationDuration MedicationRequestPeriod
    /*
    Now that we have a ToDaily function, we can approach calculation of the
    duration of medication for an order. First, consider the definitions
    for each element:
    * 1 and only 1 dosageInstruction
    * 1 and only 1 doseAndRate
    * 1 timing with 1 repeat
    * frequency, frequencyMax, defaulting to 1
    * period, periodUnit, defaulting to 1 'd'
    * doseQuantity or doseRange
    * timeOfDay
    * authoredOn: The date the prescription was written
    * dispenseRequest.validityPeriod: Time period supply is authorized for
    * dispenseRequest.quantity: amount of medication supplied per dispense
    * dispenseRequest.numberOfRepeatsAllowed: number of refills authorized
    * dispenseRequest.expectedSupplyDuration: number of days supply per dispense
    * dosageInstruction.timing.repeat.boundsDuration: total duration of the repeat
    * dosageInstruction.timing.repeat.boundsRange: range of durations of the repeat
    * dosageInstruction.timing.repeat.boundsPeriod: period bounds of the repeat
    * dosageInstruction.timing.repeat.count: number of times to repeat
    * dosageInstruction.timing.repeat.countMax: maximum number of times to repeat
    * dosageInstruction.timing.repeat.frequency: event occurs frequency times per period
    * dosageInstruction.timing.repeat.frequencyMax: event occurs up to frequencyMax times per period
    * dosageInstruction.timing.repeat.period: event occurs frequency times per period
    * dosageInstruction.timing.repeat.periodMax: upper limit of period
    * dosageInstruction.timing.repeat.periodUnit: period duration (s | min | h | d | wk | mo | a)
    * dosageInstruction.timing.repeat.timeOfDay: time of day for the event (0..*)
    * dosageInstruction.timing.repeat.when: event timing (HS | WAKE | C | CM | CD | CV | AC | ACM...)
    * dosageInstruction.timing.code: BID | TID | QID | AM | PM | QD | QOD...
    * dosageInstruction.asNeeded
    * dosageInstruction.doseAndRate.doseQuantity
    * dosageInstruction.doseAndRate.doseRange
    If expectedSupplyDuration is present, then the duration is
        expectedSupplyDuration * (1 + numberOfRepeatsAllowed)
    If expectedSupplyDuration is not present, then it must be calculated based on the quantity, dosage, and frequency:
        (quantity / (dosage * frequency)) * (1 + numberOfRepeatsAllowed)
        dosage: Coalesce(end of doseAndRate.doseRange, doseAndRate.doseQuantity)
        frequency: Coalesce(frequencyMax, frequency)
        period: Quantity(period, periodUnit)
    If expectedSupplyDuration is not present and cannot be calculated, and the boundsPeriod is present (and completely specified), we can use that directly
        dosage.timing.repeat.boundsPeriod
    This calculation results in a number of days, which can then be turned into a period by anchoring that to the
    start of the validityPeriod or the authoredOn:
        Interval[earliestDispensable, earliestDispensable + expectedSupplyDuration - 1]
        earliestDispensable: Coalesce(start of validityPeriod, authoredOn)
    The following function illustrates this completely:
    */
    
    /*
    Calculates the Medication Period for a single MedicationRequest.
    MedicationRequest instances provided to this function are expected
    to conform to the [MMEMedicationRequest](http://build.fhir.org/ig/cqframework/opioid-mme-r4/StructureDefinition-mmemedicationrequest.html)
    profile, which expects:
    * 1 and only 1 dosageInstruction, multiple dosageInstruction elements will result in an error
    * 1 and only 1 doseAndRate, multiple doseAndRate elements will result in an error
    * 1 timing with 1 repeat, missing timing or repeat elements will result in a null
    * frequency, frequencyMax, defaulting to 1
    * period, periodUnit, defaulting to 1 'd'
    * timeOfDay
    * doseQuantity or doseRange, missing doseQuantity and doseRange will result in a null
    Note that MedicationRequest status is not considered by this calculation, as the
    list of MedicationRequest instances provided to this function should already have
    considered appropriate statuses, depending on the use case, typically `completed`.
    */
    define function MedicationRequestPeriod(Request "MedicationRequest"):
      Request R
        let
          dosage: singleton from R.dosageInstruction,
          doseAndRate: singleton from dosage.doseAndRate,
          timing: dosage.timing,
          frequency: Coalesce(timing.repeat.frequencyMax, timing.repeat.frequency),
          period: Quantity(timing.repeat.period, timing.repeat.periodUnit),
          doseRange: doseAndRate.dose,
          doseQuantity: doseAndRate.dose,
          dose: Coalesce(end of doseRange, doseQuantity),
          dosesPerDay: Coalesce(ToDaily(frequency, period), Count(timing.repeat.timeOfDay), 1.0),
          boundsPeriod: timing.repeat.bounds as Interval<DateTime>,
          daysSupply: (convert R.dispenseRequest.expectedSupplyDuration to days).value,
          quantity: R.dispenseRequest.quantity,
          refills: Coalesce(R.dispenseRequest.numberOfRepeatsAllowed, 0),
          startDate:
            Coalesce(
              date from start of boundsPeriod,
              date from R.authoredOn,
              date from start of R.dispenseRequest.validityPeriod
            ),
          totalDaysSupplied: Coalesce(daysSupply, quantity.value / (dose.value * dosesPerDay)) * (1 + refills)
        return
          if startDate is not null and totalDaysSupplied is not null then
            Interval[startDate, startDate + Quantity(totalDaysSupplied - 1, 'day') ]
          else if startDate is not null and boundsPeriod."high" is not null then
            Interval[startDate, date from end of boundsPeriod]
          else
            null
    Library Name Name
    CumulativeMedicationDuration Quantity
    /**********************************************************************/
    /* Functions in this region are copied from opioid-mme-r4             */
    /**********************************************************************/
    
    define function Quantity(value Decimal, unit String):
      if value is not null then
        System.Quantity { value: value, unit: unit }
      else
        null
    Library Name Name
    CumulativeMedicationDuration ToDaily
    /*
     Goal is to get to number of days
     Two broad approaches to the calculation:
      1) Based on supply and frequency, calculate the number of expected days the medication will cover/has covered
      2) Based on relevant period, determine a covered interval and calculate the length of that interval in days
    This topic covers several use cases and illustrates how to calculate Cumulative
    Medication Duration for each type of medication resource using the supply and
    frequency approach.
    */
    
    /*
      For the first approach, we need to get from frequency to a frequency/day
      So we define ToDaily
    */
    
    /*
      Calculates daily frequency given frequency within a period
    */
    define function ToDaily(frequency System.Integer, period System.Quantity):
      case period.unit
        when 'h' then frequency * (24.0 / period.value)
        when 'min' then frequency * (24.0 / period.value) * 60
        when 's' then frequency * (24.0 / period.value) * 60 * 60
        when 'd' then frequency * (24.0 / period.value) / 24
        when 'wk' then frequency * (24.0 / period.value) / (24 * 7)
        when 'mo' then frequency * (24.0 / period.value) / (24 * 30) /* assuming 30 days in month */
        when 'a' then frequency * (24.0 / period.value) / (24 * 365) /* assuming 365 days in year */
        when 'hour' then frequency * (24.0 / period.value)
        when 'minute' then frequency * (24.0 / period.value) * 60
        when 'second' then frequency * (24.0 / period.value) * 60 * 60
        when 'day' then frequency * (24.0 / period.value) / 24
        when 'week' then frequency * (24.0 / period.value) / (24 * 7)
        when 'month' then frequency * (24.0 / period.value) / (24 * 30) /* assuming 30 days in month */
        when 'year' then frequency * (24.0 / period.value) / (24 * 365) /* assuming 365 days in year */
        when 'hours' then frequency * (24.0 / period.value)
        when 'minutes' then frequency * (24.0 / period.value) * 60
        when 'seconds' then frequency * (24.0 / period.value) * 60 * 60
        when 'days' then frequency * (24.0 / period.value) / 24
        when 'weeks' then frequency * (24.0 / period.value) / (24 * 7)
        when 'months' then frequency * (24.0 / period.value) / (24 * 30) /* assuming 30 days in month */
        when 'years' then frequency * (24.0 / period.value) / (24 * 365) /* assuming 365 days in year */
        else Message(null, true, 'CMDLogic.ToDaily.UnknownUnit', ErrorLevel, 'Unknown unit ' & period.unit)
      end
    Library Name Name
    QICoreCommon ToPrevalenceInterval
    /*
    @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, the resulting interval will have
    a closed ending boundary. If the condition is not active, the resulting interval will have an open ending boundary.
    @deprecated: This function is deprecated. Use the `prevalenceInterval()` fluent function instead
    */
    define function ToPrevalenceInterval(condition Condition):
    if condition.clinicalStatus ~ "active"
      or condition.clinicalStatus ~ "recurrence"
      or condition.clinicalStatus ~ "relapse" then
      Interval[start of ToInterval(condition.onset), end of ToAbatementInterval(condition)]
    else
      Interval[start of ToInterval(condition.onset), end of ToAbatementInterval(condition))
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR MedicationRequestPeriodInDays
    define fluent function MedicationRequestPeriodInDays(Request "MedicationRequest"):
      Request R
        let dosage: singleton from R.dosageInstruction,
        doseAndRate: singleton from dosage.doseAndRate,
        timing: dosage.timing,
        frequency: Coalesce(timing.repeat.frequencyMax, timing.repeat.frequency),
        period: CMD."Quantity" ( timing.repeat.period, timing.repeat.periodUnit ),
        doseRange: doseAndRate.dose,
        doseQuantity: doseAndRate.dose,
        dose: Coalesce(
          end of doseRange, doseQuantity
        ),
        dosesPerDay: Coalesce((CMD."ToDaily"(frequency, period)), Count(timing.repeat.timeOfDay), 1.0),
        boundsPeriod: timing.repeat.bounds as Interval<DateTime>,
        daysSupply: ( convert R.dispenseRequest.expectedSupplyDuration to days ).value,
        quantity: R.dispenseRequest.quantity,
        refills: Coalesce(R.dispenseRequest.numberOfRepeatsAllowed, 0),
        startDate: Coalesce(date from start of boundsPeriod, date from R.authoredOn, date from start of R.dispenseRequest.validityPeriod),
        totalDaysSupplied: Coalesce(daysSupply, quantity.value /(dose.value * dosesPerDay)) * ( 1 + refills )
        return totalDaysSupplied
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR Average Daily Dose
    define function "Average Daily Dose"(MedicationRequest "MedicationRequest"):
      MedicationRequest Order
        let MedicationStrength: Order.getMedicationCode ( ).MedicationStrengthPerUnit ( ),
        DaysSupplied: Order.MedicationRequestPeriodInDays ( )
        return if DaysSupplied is not null
          and ( MedicationStrength.unit = 'mg'
              or ( MedicationStrength.unit = 'mg/mL'
                  and Order.dispenseRequest.quantity.unit = 'mL'
              )
          ) then ( ( Order.dispenseRequest.quantity * MedicationStrength ) / Quantity { value: DaysSupplied, unit: 'd' } ) 
          else null
    Library Name Name
    UseofHighRiskMedicationsintheElderlyFHIR MedicationStrengthPerUnit
    define fluent function MedicationStrengthPerUnit(Strength Concept):
      case
        when Strength ~ "reserpine 0.1 MG Oral Tablet" then 0.1 'mg'
        when Strength ~ "reserpine 0.25 MG Oral Tablet" then 0.25 'mg'
        when Strength ~ "digoxin 0.05 MG/ML Oral Solution" then 0.05 'mg/mL'
        when Strength ~ "digoxin 0.0625 MG Oral Tablet" then 0.0625 'mg'
        when Strength ~ "1 ML digoxin 0.1 MG/ML Injection" then 0.1 'mg/mL'
        when Strength ~ "digoxin 0.125 MG Oral Tablet" then 0.125 'mg'
        when Strength ~ "digoxin 0.1875 MG Oral Tablet" then 0.1875 'mg'
        when Strength ~ "digoxin 0.25 MG Oral Tablet" then 0.25 'mg'
        when Strength ~ "2 ML digoxin 0.25 MG/ML Injection" then 0.25 'mg/mL'
        when Strength ~ "doxepin 3 MG Oral Tablet" then 3 'mg'
        when Strength ~ "doxepin 6 MG Oral Tablet" then 6 'mg'
        when Strength ~ "doxepin hydrochloride 10 MG Oral Capsule" then 10 'mg'
        when Strength ~ "doxepin hydrochloride 10 MG/ML Oral Solution" then 10 'mg/mL'
        when Strength ~ "doxepin hydrochloride 25 MG Oral Capsule" then 25 'mg'
        when Strength ~ "doxepin hydrochloride 50 MG Oral Capsule" then 50 'mg'
        when Strength ~ "doxepin hydrochloride 75 MG Oral Capsule" then 75 'mg'
        when Strength ~ "doxepin hydrochloride 100 MG Oral Capsule" then 100 'mg'
        when Strength ~ "doxepin hydrochloride 150 MG Oral Capsule" then 150 'mg' 
        else null end
    Library Name Name
    CQMCommon getMedicationCode
    /*
    @description: Returns the medication code for the given MedicationRequest
    */
    define fluent function getMedicationCode(request MedicationRequest ):
      if request.medication is Concept then
      	  request.medication as Concept
      	else
      	  (singleton from ([Medication] M where M.id = (request.medication as Reference).reference.getId())).code
    Library Name Name
    FHIRHelpers ToConcept
    /*
    @description: Converts the given FHIR [CodeableConcept](https://hl7.org/fhir/datatypes.html#CodeableConcept) value to a CQL Concept.
    */
    define function ToConcept(concept FHIR.CodeableConcept):
        if concept is null then
            null
        else
            System.Concept {
                codes: concept.coding C return ToCode(C),
                display: concept.text.value
            }
    Library Name Name
    Status isEncounterPerformed
    define fluent function isEncounterPerformed(Enc List<Encounter>):
      Enc E
        where E.status in {'finished', 'arrived', 'triaged', 'in-progress', 'onleave'}
    Library Name Name
    QICoreCommon toInterval
    /*
    @description: Normalizes a value that is a choice of timing-valued types to an equivalent interval
    @comment: Normalizes a choice type of DateTime, Quanitty, Interval<DateTime>, or Interval<Quantity> types
    to an equivalent interval. This selection of choice types is a superset of the majority of choice types that are used as possible
    representations for timing-valued elements in QICore, allowing this function to be used across any resource.
    The input can be provided as a DateTime, Quantity, Interval<DateTime> or Interval<Quantity>.
    The intent of this function is to provide a clear and concise mechanism to treat single
    elements that have multiple possible representations as intervals so that logic doesn't have to account
    for the variability. More complex calculations (such as medication request period or dispense period
    calculation) need specific guidance and consideration. That guidance may make use of this function, but
    the focus of this function is on single element calculations where the semantics are unambiguous.
    If the input is a DateTime, the result a DateTime Interval beginning and ending on that DateTime.
    If the input is a Quantity, the quantity is expected to be a calendar-duration interpreted as an Age,
    and the result is a DateTime Interval beginning on the Date the patient turned that age and ending immediately before one year later.
    If the input is a DateTime Interval, the result is the input.
    If the input is a Quantity Interval, the quantities are expected to be calendar-durations interpreted as an Age, and the result
    is a DateTime Interval beginning on the date the patient turned the age given as the start of the quantity interval, and ending
    immediately before one year later than the date the patient turned the age given as the end of the quantity interval.
    Any other input will reslt in a null DateTime Interval
    */
    define fluent function toInterval(choice Choice<DateTime, Quantity, Interval<DateTime>, Interval<Quantity>>):
      case
    	  when choice is DateTime then
        	Interval[choice as DateTime, choice as DateTime]
    		when choice is Interval<DateTime> then
      		choice as Interval<DateTime>
    		when choice is Quantity then
    		  Interval[Patient.birthDate + (choice as Quantity),
    			  Patient.birthDate + (choice as Quantity) + 1 year)
    		when choice is Interval<Quantity> then
    		  Interval[Patient.birthDate + (choice.low as Quantity),
    			  Patient.birthDate + (choice.high as Quantity) + 1 year)
    		else
    			null as Interval<DateTime>
    	end
    Library Name Name
    Status isAssessmentPerformed
    //Similar but different from QICoreCommon.isSurvey, which does not have status constraints
    define fluent function isAssessmentPerformed(Obs List<Observation>):
      Obs O
        where O.status in { 'final', 'amended', 'corrected' }
              and exists ( O.category ObservationCategory
              where ( ObservationCategory ) ~ "survey"
          )
    Library Name Name
    Status isInterventionOrder
    define fluent function isInterventionOrder(ServiceRequest List<ServiceRequest>):
      ServiceRequest S
        where S.status in { 'active', 'completed' }
          and S.intent = 'order'
    Library Name Name
    Status isInterventionPerformed
    define fluent function isInterventionPerformed(Proc List<Procedure>):
      Proc P
        where P.status ~ 'completed'
    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, the resulting interval will have
    a closed ending boundary. If the condition is not active, 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
      Interval[start of condition.onset.toInterval(), end of condition.abatementInterval())