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: Follow-Up Care for Children Prescribed ADHD Medication (ADD)FHIR

Official URL: https://madie.cms.gov/Measure/FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Version: 0.1.001
Draft as of 2024-07-09 Responsible: National Committee for Quality Assurance Computable Name: FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR
Other Identifiers: Short Name (use: usual, ), UUID:fd12596b-b29b-4584-b592-defc57f1acd6 (use: official, ), UUID:411373e0-d3b8-4b47-b908-ccbd2d76566a (use: official, ), Publisher (use: official, )

Copyright/Legal: This Physician Performance Measure (Measure) and related data specifications are owned and were developed by the National Committee for Quality Assurance (NCQA). 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. NCQA holds a copyright in the Measure. The Measure can be reproduced and distributed, without modification, for noncommercial purposes (e.g., use by healthcare providers in connection with their practices) without obtaining approval from NCQA. Commercial use is defined as the sale, licensing, or distribution of the Measure for commercial gain, or incorporation of the Measure into a product or service that is sold, licensed or distributed for commercial gain. All commercial uses or requests for modification must be approved by NCQA and are subject to a license at the discretion of NCQA. (C) 2012-2024 National Committee for Quality Assurance. All Rights Reserved. Limited proprietary coding is contained in the Measure specifications for user convenience. Users of proprietary code sets should obtain all necessary licenses from the owners of the code sets. NCQA disclaims all liability for use or accuracy of any third-party codes contained in the specifications. CPT(R) codes, descriptions and other data are copyright 2024. American Medical Association. All rights reserved. CPT is a trademark of the American Medical Association. Fee schedules, relative value units, conversion factors and/or related components are not assigned by the AMA, are not part of CPT, and the AMA is not recommending their use. The AMA does not directly or indirectly practice medicine or dispense medical services. The AMA assumes no liability for data contained or not contained herein. Applicable FARS/DFARS restrictions apply to government use. Some measure specifications contain coding from LOINC(R) (http://loinc.org). The LOINC table, LOINC codes, LOINC panels and form file, LOINC linguistic variants file, LOINC/RSNA Radiology Playbook, and LOINC/IEEE Medical Device Code Mapping Table are copyright 2004-2024 Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee, and are available at no cost under the license at http://loinc.org/terms-of-use. This material contains SNOMED Clinical Terms(R) (SNOMED CT[R]) copyright 2004-2023 International Health Terminology Standards Development Organisation. ICD-10 copyright 2024 World Health Organization. All Rights Reserved. Some measures use RxNorm, a standardized nomenclature and coding for clinical drugs and drug delivery devices, which is made publicly available courtesy of the U.S. National Library of Medicine (NLM), National Institutes of Health, Department of Health and Human Services. NLM is not responsible for the measures and does not endorse or recommend this or any other product. “HL7” is the registered trademark of Health Level Seven International.

Percentage of children 6-12 years of age and newly prescribed a medication for attention-deficit/hyperactivity disorder (ADHD) who had appropriate follow-up care. Two rates are reported. a. Percentage of children who had one follow-up visit with a practitioner with prescribing authority during the 30-Day Initiation Phase. b. Percentage of children who remained on ADHD medication for at least 210 treatment days and who, in addition to the visit in the Initiation Phase, had at least two additional follow-up visits with a practitioner within 270 days (9 months) after the Initiation Phase ended.

UNKNOWN

Title: Follow-Up Care for Children Prescribed ADHD Medication (ADD)FHIR
Id: FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR
Version: 0.1.001
Url: Follow-Up Care for Children Prescribed ADHD Medication (ADD)FHIR
short-name identifier:

CMS136FHIR

version-independent identifier:

urn:uuid:fd12596b-b29b-4584-b592-defc57f1acd6

version-specific identifier:

urn:uuid:411373e0-d3b8-4b47-b908-ccbd2d76566a

publisher (CMS) identifier:

136FHIR

Effective Period: 2025-01-01..2025-12-31
Status: draft
Publisher: National Committee for Quality Assurance
Author: National Committee for Quality Assurance
Description:

Percentage of children 6-12 years of age and newly prescribed a medication for attention-deficit/hyperactivity disorder (ADHD) who had appropriate follow-up care. Two rates are reported. a. Percentage of children who had one follow-up visit with a practitioner with prescribing authority during the 30-Day Initiation Phase. b. Percentage of children who remained on ADHD medication for at least 210 treatment days and who, in addition to the visit in the Initiation Phase, had at least two additional follow-up visits with a practitioner within 270 days (9 months) after the Initiation Phase ended.

Purpose:

UNKNOWN

Copyright:

This Physician Performance Measure (Measure) and related data specifications are owned and were developed by the National Committee for Quality Assurance (NCQA). 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. NCQA holds a copyright in the Measure. The Measure can be reproduced and distributed, without modification, for noncommercial purposes (e.g., use by healthcare providers in connection with their practices) without obtaining approval from NCQA. Commercial use is defined as the sale, licensing, or distribution of the Measure for commercial gain, or incorporation of the Measure into a product or service that is sold, licensed or distributed for commercial gain. All commercial uses or requests for modification must be approved by NCQA and are subject to a license at the discretion of NCQA. (C) 2012-2024 National Committee for Quality Assurance. All Rights Reserved. Limited proprietary coding is contained in the Measure specifications for user convenience. Users of proprietary code sets should obtain all necessary licenses from the owners of the code sets. NCQA disclaims all liability for use or accuracy of any third-party codes contained in the specifications. CPT(R) codes, descriptions and other data are copyright 2024. American Medical Association. All rights reserved. CPT is a trademark of the American Medical Association. Fee schedules, relative value units, conversion factors and/or related components are not assigned by the AMA, are not part of CPT, and the AMA is not recommending their use. The AMA does not directly or indirectly practice medicine or dispense medical services. The AMA assumes no liability for data contained or not contained herein. Applicable FARS/DFARS restrictions apply to government use. Some measure specifications contain coding from LOINC(R) (http://loinc.org). The LOINC table, LOINC codes, LOINC panels and form file, LOINC linguistic variants file, LOINC/RSNA Radiology Playbook, and LOINC/IEEE Medical Device Code Mapping Table are copyright 2004-2024 Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee, and are available at no cost under the license at http://loinc.org/terms-of-use. This material contains SNOMED Clinical Terms(R) (SNOMED CT[R]) copyright 2004-2023 International Health Terminology Standards Development Organisation. ICD-10 copyright 2024 World Health Organization. All Rights Reserved. Some measures use RxNorm, a standardized nomenclature and coding for clinical drugs and drug delivery devices, which is made publicly available courtesy of the U.S. National Library of Medicine (NLM), National Institutes of Health, Department of Health and Human Services. NLM is not responsible for the measures and does not endorse or recommend this or any other product. “HL7” is the registered trademark of Health Level Seven International.

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:

ADHD is one of the more common chronic conditions of childhood. Children with ADHD may experience significant functional problems, such as school difficulties; academic underachievement; troublesome relationships with family members and peers; and behavioral problems (AAP, 2019). Given the high prevalence of ADHD among school-aged children (11 percent), primary care clinicians will regularly encounter children with ADHD and should have a strategy for diagnosing and long-term management of this condition (Visser et al., 2014). Reports indicate that the use of ADHD medication among children rose 28 percent between 2007 and 2011 (Visser et al., 2014). Practitioners can convey the efficacy of pharmacotherapy to their patients. American Academy of Pediatrics (AAP) guidelines recommend that once a child is stable, an office visit every three to six months allows assessment of learning and behavior (AAP, 2019). Follow-up appointments should be made at least monthly until the child’s symptoms have been stabilized (AACAP, 2007). Providers have an opportunity to track medication use in patients and provide the appropriate follow-up care to monitor clinical symptoms and potential adverse events.

Clinical recommendation statement:

American Academy of Pediatrics Clinical Practice Guideline for the Diagnosis, Evaluation and Treatment of ADHD in Children and Adolescents (2019) - Key Action Statement (KAS) 1: The pediatrician or other primary care clinicians (PCC) should initiate an evaluation for ADHD for any child or adolescent age 4 years to the 18th birthday who presents with academic or behavioral problems and symptoms of inattention, hyperactivity, or impulsivity. Grade B: Strong Recommendation - KAS 4: ADHD is a chronic condition; therefore, the PCC should manage children and adolescents with ADHD in the same manner that they would children and youth with special health care needs, following the principles of the chronic care model and the medical home. Grade B: Strong Recommendation - KAS 5b: For elementary and middle school-aged children (age 6 years to the 12th birthday) with ADHD, the PCC should prescribe FDA-approved medications for ADHD, along with parent training in behavior management (PTBM) and/or behavioral classroom intervention (preferably both PTBM and behavioral classroom interventions). Educational interventions and individualized instructional supports, including school environment, class placement, instructional placement, and behavioral supports, are a necessary part of any treatment plan and often include an Individualized Education Program (IEP) or a rehabilitation plan (504 plan). Grade A: Strong Recommendation - KAS 6. “The PCC should titrate doses of medication for ADHD to achieve maximum benefit with tolerable side effects”. Grade B, strong recommendation American Academy of Child and Adolescent Psychiatry (AACAP) Practice Parameter for the Assessment and Treatment of Children and Adolescents with ADHD (2007) - Overall Guideline: The key to effective long-term management of the patient with ADHD is continuity of care with a clinician experienced in the treatment of ADHD. The frequency and duration of follow-up sessions should be individualized for each family and patient, depending on the severity of ADHD symptoms; the degree of comorbidity of other psychiatric illness; the response to treatment; and the degree of impairment in home, school, work, or peer-related activities. The clinician should establish an effective mechanism for receiving feedback from the family and other important informants in the patient's environment to be sure symptoms are well controlled and side effects are minimal. Although this parameter does not seek to set a formula for the method of follow-up, significant contact with the clinician should typically occur two to four times per year in cases of uncomplicated ADHD and up to weekly sessions at times of severe dysfunction or complications of treatment. - Recommendation 6: A Well-Thought-Out and Comprehensive Treatment Plan Should Be Developed for the Patient With ADHD. The treatment plan should be reviewed regularly and modified if the patient's symptoms do not respond. Minimal Standard [MS] - Recommendation 9. During a Psychopharmacological Intervention for ADHD, the Patient Should Be Monitored for Treatment-Emergent Side Effects. Minimal Standard [MS] - Recommendation 12. Patients Should Be Assessed Periodically to Determine Whether There Is Continued Need for Treatment or If Symptoms Have Remitted. Treatment of ADHD Should Continue as Long as Symptoms Remain Present and Cause Impairment. Minimal Standard [MS]

Guidance (Usage): This eCQM is a patient-based measure. This FHIR-based measure has been derived from the QDM-based measure: CMS136v14. Please refer to the HL7 QI-Core Implementation Guide (http://hl7.org/fhir/us/qicore/STU4.1.1/) for more information on QI-Core and mapping recommendations from QDM to QI-Core 4.1.1 (http://hl7.org/fhir/us/qicore/STU4.1.1/qdm-to-qicore.html).
Population Criteria:
662125a30f0a9077c1d5b590
Initial Population: Initial Population 1: Children 6-12 years of age as of the Intake Period who had an IPSD and who had a visit within 6 months prior to the IPSD including the IPSD. Children are removed if they had an acute inpatient stay with a principal diagnosis of mental, behavioral or neurodevelopmental disorder during the Initiation Phase.
Denominator: Equals Initial Population
Denominator Exclusion: Exclude patients who are in hospice care for any part of the measurement period. Exclude patients diagnosed with narcolepsy at any point in their history or during the measurement period.
Numerator: Numerator 1: Patients who had at least one visit with a practitioner with prescribing authority during the Initiation Phase.
662125a30f0a9077c1d5b591
Initial Population: Initial Population 2: Children 6-12 years of age as of the Intake Period who had an IPSD and remained on the medication for at least 210 treatment days during the 301-day period, beginning on the IPSD through 300 days after the IPSD, and who had a visit within 6 months prior to the IPSD including the IPSD. Children are removed if they had an acute inpatient stay with a principal diagnosis of mental, behavioral or neurodevelopmental disorder during the Continuation and Maintenance Phase.
Denominator: Equals Initial Population
Denominator Exclusion: Exclude patients who are in hospice care for any part of the measurement period. Exclude patients diagnosed with narcolepsy at any point in their history or during the measurement period.
Numerator: Numerator 2: Patients who had at least one visit with a practitioner with prescribing authority during the Initiation Phase, and at least two follow-up visits on different dates of service during the 31-300 days after the IPSD.
Libraries:
FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR
Terminology and Other Dependencies:
  • Library/Status|1.8.000
  • Library/CQMCommon|2.2.000
  • Library/QICoreCommon|2.1.000
  • Library/FHIRHelpers|4.4.000
  • Library/CumulativeMedicationDuration|4.1.000
  • Library/Hospice|6.12.000
  • RxNorm
  • Diagnosis Role
  • SNOMED CT (all versions)
  • Observation Category Codes
  • Logical Observation Identifiers, Names and Codes (LOINC)
  • Office Visit
  • Home Healthcare Services
  • Preventive Care, Established Office Visit, 0 to 17
  • Preventive Care Services, Initial Office Visit, 0 to 17
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1170
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1171
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1172
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1173
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1174
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1176
  • Guanfacine
  • Encounter Inpatient
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1203
  • Preventive Care Services - Group Counseling
  • Behavioral Health Follow-up Visit
  • Preventive Care Services-Individual Counseling
  • Psychotherapy and Pharmacologic Management
  • Ambulatory
  • Outpatient Consultation
  • Psych Visit - Diagnostic Evaluation
  • Psych Visit - Psychotherapy
  • Telephone Visits
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003
  • Hospice Care Ambulatory
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165
  • Narcolepsy
  • Parameters:
    name use min max type
    Measurement Period In 0 1 Period
    ErrorLevel In 0 1 string
    Denominator 2 Out 0 1 boolean
    Numerator 1 Out 0 1 boolean
    Numerator 2 Out 0 1 boolean
    Initial Population 1 Out 0 1 boolean
    Initial Population 2 Out 0 1 boolean
    Denominator Exclusions Out 0 1 boolean
    Denominator 1 Out 0 1 boolean
    DataRequirements:
    Resource Type Resource Elements Valueset Name Valueset
    Patient(QICorePatient)
    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
    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 startDate period Atomoxetine http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1170
    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 startDate period Clonidine http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1171
    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 startDate period Dexmethylphenidate http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1172
    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 startDate period Dextroamphetamine http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1173
    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 startDate period Lisdexamfetamine http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1174
    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 startDate period Methylphenidate http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1176
    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 startDate period Guanfacine Medications Guanfacine
    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 startDate period
    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 startDate period
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Office Visit Office Visit
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Preventive Care Services Group Counseling Preventive Care Services - Group Counseling
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Behavioral Health Follow up Visit Behavioral Health Follow-up Visit
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Preventive Care Services Individual Counseling Preventive Care Services-Individual Counseling
    Encounter(QICoreEncounter) type location status status.value period rank rank.value use condition condition.reference condition.reference.value Psychotherapy and Pharmacologic Management Psychotherapy and Pharmacologic Management
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Outpatient Consultation Outpatient Consultation
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Home Healthcare Services Home Healthcare Services
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Preventive Care Services, Initial Office Visit, 0 to 17 Preventive Care Services, Initial Office Visit, 0 to 17
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Preventive Care, Established Office Visit, 0 to 17 Preventive Care, Established Office Visit, 0 to 17
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Psych Visit Diagnostic Evaluation Psych Visit - Diagnostic Evaluation
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Psych Visit Psychotherapy Psych Visit - Psychotherapy
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value Telephone Visits Telephone Visits
    Encounter(QICoreEncounter) type period status status.value rank rank.value use condition condition.reference condition.reference.value Virtual Encounter http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089
    Encounter(QICoreEncounter) type status status.value period rank rank.value use condition condition.reference condition.reference.value hospitalization hospitalization.dischargeDisposition Encounter Inpatient Encounter Inpatient
    Encounter(QICoreEncounter) type period status status.value rank rank.value use condition condition.reference condition.reference.value Hospice Encounter http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003
    Condition(QICoreCondition) id id.value
    Condition(QICoreCondition) code Hospice Diagnosis http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165
    Condition(QICoreCondition) code Narcolepsy Narcolepsy
    Location(QICoreLocation) id id.value
    Observation(QICoreObservation) code value 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
    Direct Reference Codes:
    display code system
    methamphetamine hydrochloride 5 MG Oral Tablet 977860 http://www.nlm.nih.gov/research/umls/rxnorm
    Billing billing http://terminology.hl7.org/CodeSystem/diagnosis-role
    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
    Yes (qualifier value) 373066001 http://snomed.info/sct
    Hospice care [Minimum Data Set] 45755-6 http://loinc.org
    Logic Definitions:
    Group Scoring Population Criteria Expression
    662125a30f0a9077c1d5b590 Group scoring: proportion
    Type:

    Process

    Rate Aggregation: None
    Improvement Notation:

    increase

    Initial Population
    define "Initial Population 1":
      AgeInYearsAt(date from start of "Intake Period") >= 6
        and AgeInYearsAt(date from 
          end of "Intake Period"
        ) <= 12
        and exists "Qualifying Encounter"
        and "First ADHD Medication Prescribed During Intake Period" is not null
        and not exists "Inpatient Stay with Qualifying Diagnosis During Initiation Phase"
    Denominator
    define "Denominator 1":
      "Initial Population 1"
    Denominator Exclusion
    define "Denominator Exclusions":
      Hospice."Has Hospice Services"
        or exists ( "Narcolepsy Exclusion" )
    Numerator
    define "Numerator 1":
      exists ( "Encounter During Initiation Phase" )
    662125a30f0a9077c1d5b591 Group scoring: proportion
    Type:

    Process

    Rate Aggregation: None
    Improvement Notation:

    increase

    Initial Population
    define "Initial Population 2":
      AgeInYearsAt(date from start of "Intake Period") >= 6
        and AgeInYearsAt(date from 
          end of "Intake Period"
        ) <= 12
        and exists "Qualifying Encounter"
        and "First ADHD Medication Prescribed During Intake Period" is not null
        and "Has ADHD Cumulative Medication Duration Greater Than or Equal to 210 Days"
        and not exists "Inpatient Stay with Qualifying Diagnosis During Continuation and Maintenance Phase"
    Denominator
    define "Denominator 2":
      "Initial Population 2"
    Denominator Exclusion
    define "Denominator Exclusions":
      Hospice."Has Hospice Services"
        or exists ( "Narcolepsy Exclusion" )
    Numerator
    define "Numerator 2":
      exists ( "Encounter During Initiation Phase" )
        and ( ( "Two or More Encounters 31 to 300 Days into Continuation and Maintenance Phase" )
            or ( exists ( "Encounter 31 to 300 Days into Continuation and Maintenance Phase" Encounter1
                  with "Virtual Encounter 31 to 300 Days into Continuation and Maintenance Phase" Encounter2
                    such that Encounter1 is not null
                      and Encounter2 is not null
                      and Encounter1 !~ Encounter2
              )
            )
        )
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR March 1 of Year Prior to Measurement Period
    define "March 1 of Year Prior to Measurement Period":
      DateTime((year from start of "Measurement Period" - 1), 3, 1, 0, 0, 0, 0, 0)
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Last Calendar Day of February of Measurement Period
    define "Last Calendar Day of February of Measurement Period":
      ( DateTime(year from start of "Measurement Period", 3, 1, 23, 59, 59, 0, 0) ) - 1 day
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Intake Period
    define "Intake Period":
      Interval["March 1 of Year Prior to Measurement Period", "Last Calendar Day of February of Measurement Period"]
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR ADHD Medication Prescribed During Intake Period and Not Previously on ADHD Medication
    define "ADHD Medication Prescribed During Intake Period and Not Previously on ADHD Medication":
      ( ( ( ( [MedicationRequest: "Atomoxetine"]
          union [MedicationRequest: "Clonidine"]
          union [MedicationRequest: "Dexmethylphenidate"]
          union [MedicationRequest: "Dextroamphetamine"]
          union [MedicationRequest: "Lisdexamfetamine"]
          union [MedicationRequest: "methamphetamine hydrochloride 5 MG Oral Tablet"]
          union [MedicationRequest: "Methylphenidate"]
          union [MedicationRequest: "Guanfacine Medications"]
      ).isMedicationOrder ( ) ) ADHDMedications
        where ADHDMedications.medicationRequestPeriod ( ) starts during "Intake Period" ) ADHDMedicationOrder
        without ( ( [MedicationRequest: "Atomoxetine"]
            union [MedicationRequest: "Clonidine"]
            union [MedicationRequest: "Dexmethylphenidate"]
            union [MedicationRequest: "Dextroamphetamine"]
            union [MedicationRequest: "Lisdexamfetamine"]
            union [MedicationRequest: "methamphetamine hydrochloride 5 MG Oral Tablet"]
            union [MedicationRequest: "Methylphenidate"]
            union [MedicationRequest: "Guanfacine Medications"]
        ).isMedicationActive ( ) ) ActiveADHDMedication
          such that ActiveADHDMedication.medicationRequestPeriod ( ) overlaps Interval[date from start of ADHDMedicationOrder.medicationRequestPeriod ( ) - 120 days, date from start of ADHDMedicationOrder.medicationRequestPeriod ( ) ) ) QualifyingMed
        return all {
          startDate: start of QualifyingMed.medicationRequestPeriod ( )
        }
        sort by startDate asc
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR First ADHD Medication Prescribed During Intake Period
    define "First ADHD Medication Prescribed During Intake Period":
      First("ADHD Medication Prescribed During Intake Period and Not Previously on ADHD Medication".startDate)
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR IPSD
    /*Index Prescription Start Date (IPSD)*/
    
    
    define "IPSD":
      "First ADHD Medication Prescribed During Intake Period"
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Qualifying Encounter
    define "Qualifying Encounter":
      ( ( [Encounter: "Office Visit"]
          union [Encounter: "Home Healthcare Services"]
          union [Encounter: "Preventive Care, Established Office Visit, 0 to 17"]
          union [Encounter: "Preventive Care Services, Initial Office Visit, 0 to 17"]
      ).isEncounterPerformed ( ) ) ValidEncounters
        where CQMCommon."ToDateInterval" ( ValidEncounters.period.toInterval ( ) ) during day of Interval["IPSD" - 6 months, "IPSD"]
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR ADHD Medications Taken on IPSD or During Continuation and Maintenance Phase
    define "ADHD Medications Taken on IPSD or During Continuation and Maintenance Phase":
      ( ( ( ( ( ( [MedicationRequest: "Atomoxetine"] ).isMedicationOrder ( ) ) AtomoxetineMed
              return all {
                period: AtomoxetineMed.medicationRequestPeriod ( ),
                periodStart: start of AtomoxetineMed.medicationRequestPeriod ( )
              }
              sort by periodStart
          ).period
        ).rolloutIntervals ( )
      )
        union ( ( ( ( ( [MedicationRequest: "Clonidine"] ).isMedicationOrder ( ) ) ClonidineMed
                return all {
                  period: ClonidineMed.medicationRequestPeriod ( ),
                  periodStart: start of ClonidineMed.medicationRequestPeriod ( )
                }
                sort by periodStart
            ).period
          ).rolloutIntervals ( )
        )
        union ( ( ( ( ( [MedicationRequest: "Dexmethylphenidate"] ).isMedicationOrder ( ) ) DexmethylphenidateMed
                return all {
                  period: DexmethylphenidateMed.medicationRequestPeriod ( ),
                  periodStart: start of DexmethylphenidateMed.medicationRequestPeriod ( )
                }
                sort by periodStart
            ).period
          ).rolloutIntervals ( )
        )
        union ( ( ( ( ( [MedicationRequest: "Dextroamphetamine"] ).isMedicationOrder ( ) ) DextroamphetamineMed
                return all {
                  period: DextroamphetamineMed.medicationRequestPeriod ( ),
                  periodStart: start of DextroamphetamineMed.medicationRequestPeriod ( )
                }
                sort by periodStart
            ).period
          ).rolloutIntervals ( )
        )
        union ( ( ( ( ( [MedicationRequest: "Lisdexamfetamine"] ).isMedicationOrder ( ) ) LisdexamfetamineMed
                return all {
                  period: LisdexamfetamineMed.medicationRequestPeriod ( ),
                  periodStart: start of LisdexamfetamineMed.medicationRequestPeriod ( )
                }
                sort by periodStart
            ).period
          ).rolloutIntervals ( )
        )
        union ( ( ( ( ( [MedicationRequest: "Methylphenidate"] ).isMedicationOrder ( ) ) MethylphenidateMed
                return all {
                  period: MethylphenidateMed.medicationRequestPeriod ( ),
                  periodStart: start of MethylphenidateMed.medicationRequestPeriod ( )
                }
                sort by periodStart
            ).period
          ).rolloutIntervals ( )
        )
        union ( ( ( ( ( [MedicationRequest: "Guanfacine Medications"] ).isMedicationOrder ( ) ) GuanfacineMed
                return all {
                  period: GuanfacineMed.medicationRequestPeriod ( ),
                  periodStart: start of GuanfacineMed.medicationRequestPeriod ( )
                }
                sort by periodStart
            ).period
          ).rolloutIntervals ( )
        )
        union ( ( ( ( ( [MedicationRequest: "methamphetamine hydrochloride 5 MG Oral Tablet"] ).isMedicationOrder ( ) ) MethamphetamineMed
                return all {
                  period: MethamphetamineMed.medicationRequestPeriod ( ),
                  periodStart: start of MethamphetamineMed.medicationRequestPeriod ( )
                }
                sort by periodStart
            ).period
          ).rolloutIntervals ( )
        ) ) ADHDMedication
        let IPSDAndContinuationMaintenancePhase: Interval["IPSD", "IPSD" + 300 days]
        return all ADHDMedication
          intersect IPSDAndContinuationMaintenancePhase
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR ADHD Cumulative Medication Duration
    define "ADHD Cumulative Medication Duration":
      ( "ADHD Medications Taken on IPSD or During Continuation and Maintenance Phase" ).cumulativeDuration ( )
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Has ADHD Cumulative Medication Duration Greater Than or Equal to 210 Days
    define "Has ADHD Cumulative Medication Duration Greater Than or Equal to 210 Days":
      "ADHD Cumulative Medication Duration" >= 210
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Inpatient Stay with Qualifying Diagnosis
    define "Inpatient Stay with Qualifying Diagnosis":
      ( ( [Encounter: "Encounter Inpatient"] ).isEncounterPerformed ( ) ) InpatientStay
        where InpatientStay.principalDiagnosis ( ).code in "Mental Behavioral and Neurodevelopmental Disorders"
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Inpatient Stay with Qualifying Diagnosis During Continuation and Maintenance Phase
    define "Inpatient Stay with Qualifying Diagnosis During Continuation and Maintenance Phase":
      "Inpatient Stay with Qualifying Diagnosis" InpatientStay
        where CQMCommon."ToDateInterval" ( InpatientStay.period.toInterval ( ) ) starts 300 days or less after day of "IPSD"
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Initial Population 2
    define "Initial Population 2":
      AgeInYearsAt(date from start of "Intake Period") >= 6
        and AgeInYearsAt(date from 
          end of "Intake Period"
        ) <= 12
        and exists "Qualifying Encounter"
        and "First ADHD Medication Prescribed During Intake Period" is not null
        and "Has ADHD Cumulative Medication Duration Greater Than or Equal to 210 Days"
        and not exists "Inpatient Stay with Qualifying Diagnosis During Continuation and Maintenance Phase"
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Denominator 2
    define "Denominator 2":
      "Initial Population 2"
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Qualifying Numerator Encounter
    define "Qualifying Numerator Encounter":
      ( [Encounter: "Office Visit"]
          union [Encounter: "Preventive Care Services Group Counseling"]
          union [Encounter: "Behavioral Health Follow up Visit"]
          union [Encounter: "Preventive Care Services Individual Counseling"]
          union ( [Encounter: "Psychotherapy and Pharmacologic Management"] PsychPharmManagement
              where exists ( PsychPharmManagement.location Location
                  where CQMCommon."GetLocation" ( Location.location ).type in "Ambulatory"
              )
          )
          union [Encounter: "Outpatient Consultation"]
          union [Encounter: "Home Healthcare Services"]
          union [Encounter: "Preventive Care Services, Initial Office Visit, 0 to 17"]
          union [Encounter: "Preventive Care, Established Office Visit, 0 to 17"]
          union [Encounter: "Psych Visit Diagnostic Evaluation"]
          union [Encounter: "Psych Visit Psychotherapy"]
          union [Encounter: "Telephone Visits"]
      )
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Encounter During Initiation Phase
    define "Encounter During Initiation Phase":
      ( "Qualifying Numerator Encounter".isEncounterPerformed ( ) ) ValidNumeratorEncounter
        where CQMCommon."ToDateInterval" ( ValidNumeratorEncounter.period.toInterval ( ) ) starts 30 days or less after day of "IPSD"
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Numerator 1
    define "Numerator 1":
      exists ( "Encounter During Initiation Phase" )
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Encounter 31 to 300 Days into Continuation and Maintenance Phase
    define "Encounter 31 to 300 Days into Continuation and Maintenance Phase":
      ( "Qualifying Numerator Encounter".isEncounterPerformed ( ) ) ValidNumeratorEncounter
        where CQMCommon."ToDateInterval" ( ValidNumeratorEncounter.period.toInterval ( ) ) starts during day of Interval["IPSD" + 31 days, "IPSD" + 300 days]
        return date from start of ValidNumeratorEncounter.period
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Two or More Encounters 31 to 300 Days into Continuation and Maintenance Phase
    define "Two or More Encounters 31 to 300 Days into Continuation and Maintenance Phase":
      Count("Encounter 31 to 300 Days into Continuation and Maintenance Phase") >= 2
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Virtual Encounter 31 to 300 Days into Continuation and Maintenance Phase
    define "Virtual Encounter 31 to 300 Days into Continuation and Maintenance Phase":
      ( ( [Encounter: "Virtual Encounter"] ).isEncounterPerformed ( ) ) VirtualEnc
        where CQMCommon."ToDateInterval" ( VirtualEnc.period.toInterval ( ) ) starts during day of Interval["IPSD" + 31 days, "IPSD" + 300 days]
        return date from start of VirtualEnc.period
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Numerator 2
    define "Numerator 2":
      exists ( "Encounter During Initiation Phase" )
        and ( ( "Two or More Encounters 31 to 300 Days into Continuation and Maintenance Phase" )
            or ( exists ( "Encounter 31 to 300 Days into Continuation and Maintenance Phase" Encounter1
                  with "Virtual Encounter 31 to 300 Days into Continuation and Maintenance Phase" Encounter2
                    such that Encounter1 is not null
                      and Encounter2 is not null
                      and Encounter1 !~ Encounter2
              )
            )
        )
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Inpatient Stay with Qualifying Diagnosis During Initiation Phase
    define "Inpatient Stay with Qualifying Diagnosis During Initiation Phase":
      "Inpatient Stay with Qualifying Diagnosis" InpatientStay
        where CQMCommon."ToDateInterval" ( InpatientStay.period.toInterval ( ) ) starts 30 days or less after day of "IPSD"
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Initial Population 1
    define "Initial Population 1":
      AgeInYearsAt(date from start of "Intake Period") >= 6
        and AgeInYearsAt(date from 
          end of "Intake Period"
        ) <= 12
        and exists "Qualifying Encounter"
        and "First ADHD Medication Prescribed During Intake Period" is not null
        and not exists "Inpatient Stay with Qualifying Diagnosis During Initiation Phase"
    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"
            // and HospiceOrder.doNotPerform is not true
            // https://oncprojectracking.healthit.gov/support/browse/CQLIT-447
        )
        or exists ((([Procedure: "Hospice Care Ambulatory"]).isInterventionPerformed()) HospicePerformed
            where HospicePerformed.performed.toInterval() overlaps day of "Measurement Period"
        )
        or exists (([Condition: "Hospice Diagnosis"]) HospiceCareDiagnosis
            where HospiceCareDiagnosis.prevalenceInterval() overlaps day of "Measurement Period"
        )
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Narcolepsy Exclusion
    define "Narcolepsy Exclusion":
      [Condition: "Narcolepsy"] Narcolepsy
        where Narcolepsy.prevalenceInterval ( ) starts on or before end of "Measurement Period"
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Denominator Exclusions
    define "Denominator Exclusions":
      Hospice."Has Hospice Services"
        or exists ( "Narcolepsy Exclusion" )
    Library Name Name
    FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR Denominator 1
    define "Denominator 1":
      "Initial Population 1"
    Library Name Name
    Status isEncounterPerformed
    //Encounter, Performed
    //General usage unless required otherwise by measure intent (e.g., follow-up encounters)
    define fluent function isEncounterPerformed(Enc List<Encounter>):
      Enc E
        where E.status in {'finished', 'arrived', 'triaged', 'in-progress', 'onleave'}
    Library Name Name
    CQMCommon ToDateInterval
    /*
    @description: Returns an interval of date values extracted from the input interval of date-time values
    @comment: This function returns an interval constructed using the `date from` extractor on the start
    and end values of the input date-time interval. Note that using a precision specifier such as `day of`
    as part of a timing phrase is preferred to communicate intent to perform day-level comparison, as well
    as for general readability.
    */
    define function "ToDateInterval"(period Interval<DateTime>):
      Interval[date from start of period, date from end of period]
    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.
    If the input is a Timing, an error will be thrown indicating that Timing calculations are not implemented. Any other input will reslt in a null DateTime Interval
    */
    define fluent function toInterval(choice Choice<DateTime, Quantity, Interval<DateTime>, Interval<Quantity>, Timing>):
      case
    	  when choice is DateTime then
        	Interval[choice as DateTime, choice as DateTime]
    		when choice is Interval<DateTime> then
      		choice as Interval<DateTime>
    		when choice is Quantity then
    		  Interval[Patient.birthDate + (choice as Quantity),
    			  Patient.birthDate + (choice as Quantity) + 1 year)
    		when choice is Interval<Quantity> then
    		  Interval[Patient.birthDate + (choice.low as Quantity),
    			  Patient.birthDate + (choice.high as Quantity) + 1 year)
    		when choice is Timing then
          Message(null, true, 'NOT_IMPLEMENTED', 'Error', 'Calculation of an interval from a Timing value is not supported') as Interval<DateTime>
    		else
    			null as Interval<DateTime>
    	end
    Library Name Name
    Status isMedicationOrder
    //Medication, Order: active and completed only
    define fluent function isMedicationOrder(MedicationRequest List<MedicationRequest>):
      MedicationRequest M
        where M.status in { 'active', 'completed' }
          and M.intent = 'order'
    Library Name Name
    CumulativeMedicationDuration medicationRequestPeriod
    define fluent 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
    Status isMedicationActive
    //Medication, Active
    define fluent function isMedicationActive(MedicationRequest List<MedicationRequest>):
      MedicationRequest M
        where M.status = 'active'
          and M.intent = 'order'
    Library Name Name
    CumulativeMedicationDuration cumulativeDuration
    /*
    Now that we have functions for determining the medication period for individual
    prescriptions, administrations, and dispenses, we can combine those using
    an overall cumulative medication duration calculation.
    There are two broad approaches to calculating cumulative duration, one that _collapses_
    overlapping intervals so that calculations are not duplicated, and one that _rolls out_
    overlapping intervals so that the durations are laid end-to-end.
    First, we define a function that simply calculates CumulativeDuration of a set of
    intervals:
    */
    define fluent function cumulativeDuration(Intervals List<Interval<Date>>):
       if Intervals is not null then ( Sum((collapse Intervals per day)X
            return all(difference in days between start of X and 
              end of X
            )+ 1
        )
      ) 
        else null
    Library Name Name
    CumulativeMedicationDuration rolloutIntervals
    /*
    Next, we define a function that rolls out intervals:
    */
    define fluent function rolloutIntervals(intervals List<Interval<Date>>):
     intervals I aggregate all R starting ( null as List<Interval<Date>>): R
        union ( { I X
            let S: Max({ 
              end of Last(R)+ 1 day, start of X }
            ),
            E: S + Quantity(Coalesce(duration in days of X, 0), 'day')
            return Interval[S, E]}
        )
    Library Name Name
    CQMCommon principalDiagnosis
    /*
    @description: Returns the condition that is specified as the principal diagnosis for the encounter
    */
    define fluent function principalDiagnosis(Encounter Encounter ):
    	singleton from ((Encounter.diagnosis D where D.rank = 1 and D.use ~ "Billing") PD
          return singleton from ([Condition] C where C.id = PD.condition.reference.getId())
    	)
    Library Name Name
    QICoreCommon getId
    /*
    @description: Returns the tail of the given uri (i.e. everything after the last slash in the URI).
    @comment: This function can be used to determine the logical id of a given resource. It can be used in
    a single-server environment to trace references. However, this function does not attempt to resolve
    or distinguish the base of the given url, and so cannot be used safely in multi-server environments.
    */
    define fluent function getId(uri String):
      Last(Split(uri, '/'))
    Library Name Name
    CQMCommon GetLocation
    /*
    @description: Returns the Location resource specified by the given reference
    @deprecated: This function is deprecated. Use the fluent function `getLocation()` instead.
    */
    define function "GetLocation"(reference Reference ):
      singleton from (
        [Location] L where L.id = reference.reference.getId()
      )
    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 isAssessmentPerformed
    //This library contains functions that are based on QDM 5.6 to QICore 4.1.1 March 2023 (https://github.com/cqframework/CQL-Formatting-and-Usage-Wiki/wiki/Authoring-Patterns---QICore-v4.1.1). The functions may appear similar to some QICoreCommon functions but different in that they have constraints that are relevant for measures authored by NCQA.
    
    //Assessment, Performed
    define fluent function isAssessmentPerformed(Obs List<Observation>):
      Obs O
        where O.status in { 'final', 'amended', 'corrected' }
              and exists ( O.category ObservationCategory
              where ( ObservationCategory ) ~ "survey"
          )
    Library Name Name
    Status isInterventionOrder
    //Intervention, Order: active and completed only    
    define fluent function isInterventionOrder(ServiceRequest List<ServiceRequest>):
      ServiceRequest S
        where S.status in { 'active', 'completed' }
          and S.intent = 'order'
    Library Name Name
    Status isInterventionPerformed
    //Intervention, Performed
    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, 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]