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: Chlamydia Screening in WomenFHIR

Official URL: https://madie.cms.gov/Measure/ChlamydiaScreeninginWomenFHIR Version: 0.1.000
Draft as of 2024-12-18 Responsible: National Committee for Quality Assurance Computable Name: ChlamydiaScreeninginWomenFHIR
Other Identifiers: Short Name (use: usual, ), UUID:3443b43b-a2a3-4b91-84aa-6080479d4d9a (use: official, ), UUID:b908fbc3-7514-4196-baf1-f04d49393cc9 (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 women 16-24 years of age who were identified as sexually active at any time during the measurement period and who had at least one test for chlamydia during the measurement period

UNKNOWN

Title: Chlamydia Screening in WomenFHIR
Id: ChlamydiaScreeninginWomenFHIR
Version: 0.1.000
Url: Chlamydia Screening in WomenFHIR
short-name identifier:

CMS153FHIR

version-independent identifier:

urn:uuid:3443b43b-a2a3-4b91-84aa-6080479d4d9a

version-specific identifier:

urn:uuid:b908fbc3-7514-4196-baf1-f04d49393cc9

publisher (CMS) identifier:

153FHIR

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 women 16-24 years of age who were identified as sexually active at any time during the measurement period and who had at least one test for chlamydia during the measurement period

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

Scoring:

Proportion

Rationale:

Chlamydia trachomatis is the most common sexually transmitted bacterial infection in the U.S., resulting in roughly 1.7 million cases (Centers for Disease Control and Prevention, 2019). Chlamydia infections are often asymptomatic, but, if left untreated, can lead to serious and irreversible complications (U.S. Preventive Services Task Force, 2021; Centers for Disease Control and Prevention, 2019). Women are particularly vulnerable when infected with chlamydia. Left untreated, chlamydia can cause pelvic inflammatory disease (PID), which can lead to chronic pelvic pain or infertility. Pregnant women may also transmit the infection to their infant, potentially resulting in neonatal pneumonia (Centers for Disease Control and Prevention, 2019).

Clinical recommendation statement:

U.S. Preventive Services Task Force (2021) recommends screening for chlamydia in all sexually active women aged 24 years or younger and in women 25 years or older who are at increased risk for infection (B recommendation)

Guidance (Usage): Codes to identify sexually active women include codes for: pregnancy, sexually transmitted infections, contraceptives or contraceptive devices, and infertility treatments. The denominator exclusion does not apply to patients who qualify for the initial population (IP) based on services other than the pregnancy test alone. These other services include services for sexually transmitted infections, contraceptives or contraceptive devices and infertility treatments. For example, a patient who has both a pregnancy test and a chlamydia diagnosis, either of which would qualify them for the IP, would not be eligible for this denominator exclusion. This eCQM is a patient-based measure. This FHIR-based measure has been derived from the QDM-based measure:  CMS153v13. 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: Stratifier Criteria:
654a55d378418140875e358d
Initial Population: Women 16 to 24 years of age by the end of the measurement period who are sexually active and who had a visit in the measurement period
Denominator: Equals Initial Population
Denominator Exclusion: Exclude patients who are in hospice care for any part of the measurement period. Women who are only eligible for the initial population due to a pregnancy test during the measurement period, and who had an order for an x-ray or for a specified medication on the date of the pregnancy test or the six days after the pregnancy test.
Numerator: Women with at least one chlamydia test during the measurement period
Stratum: Report a total score, and each of the following strata: Stratum 1: Patients age 16-20 by the end of the measurement period.
Stratum: Stratum 2: Patients age 21-24 by the end of the measurement period.
Libraries:
ChlamydiaScreeninginWomenFHIR
Terminology and Other Dependencies:
  • Library/Status|1.8.000
  • Library/FHIRHelpers|4.4.000
  • Library/QICoreCommon|2.1.000
  • Library/CumulativeMedicationDuration|4.1.000
  • Library/Hospice|6.12.000
  • Observation Category Codes
  • Logical Observation Identifiers, Names and Codes (LOINC)
  • SNOMED CT (all versions)
  • Chlamydia Screening
  • Office Visit
  • Preventive Care Services - Established Office Visit, 18 and Up
  • Preventive Care Services-Initial Office Visit, 18 and Up
  • Preventive Care Services, Initial Office Visit, 0 to 17
  • Preventive Care, Established Office Visit, 0 to 17
  • Home Healthcare Services
  • 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.111.12.1018
  • HIV
  • Complications of Pregnancy, Childbirth and the Puerperium
  • Contraceptive Medications
  • Pregnancy Test
  • Pap Test
  • Lab Tests During Pregnancy
  • Lab Tests for Sexually Transmitted Infections
  • Diagnostic Studies During Pregnancy
  • http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1017
  • Encounter Inpatient
  • 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
  • X-Ray Study (all inclusive)
  • Isotretinoin
  • Parameters:
    name use min max type
    Measurement Period In 0 1 Period
    ErrorLevel In 0 1 string
    Numerator Out 0 1 boolean
    Stratification 2 Out 0 1 boolean
    Stratification 1 Out 0 1 boolean
    Denominator Out 0 1 boolean
    Initial Population Out 0 1 boolean
    Denominator Exclusions Out 0 1 boolean
    DataRequirements:
    Resource Type Resource Elements Valueset Name Valueset
    Observation(QICoreObservation) code effective value status status.value category Chlamydia Screening Chlamydia Screening
    Observation(QICoreObservation) code value effective status status.value category
    Observation(QICoreObservation) code value effective status status.value category
    Patient(QICorePatient)
    Encounter(QICoreEncounter) type status status.value period Office Visit Office Visit
    Encounter(QICoreEncounter) type status status.value period Preventive Care Services Established Office Visit, 18 and Up Preventive Care Services - Established Office Visit, 18 and Up
    Encounter(QICoreEncounter) type status status.value period Preventive Care Services Initial Office Visit, 18 and Up Preventive Care Services-Initial Office Visit, 18 and Up
    Encounter(QICoreEncounter) type status status.value period 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 Preventive Care, Established Office Visit, 0 to 17 Preventive Care, Established Office Visit, 0 to 17
    Encounter(QICoreEncounter) type status status.value period Home Healthcare Services Home Healthcare Services
    Encounter(QICoreEncounter) type status status.value period Telephone Visits Telephone Visits
    Encounter(QICoreEncounter) type status status.value period Virtual Encounter http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089
    Encounter(QICoreEncounter) type hospitalization hospitalization.dischargeDisposition period status status.value Encounter Inpatient Encounter Inpatient
    Encounter(QICoreEncounter) type period status status.value Hospice Encounter http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003
    Condition(QICoreCondition) code Diagnoses Used to Indicate Sexual Activity http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1018
    Condition(QICoreCondition) code HIV HIV
    Condition(QICoreCondition) code Complications of Pregnancy, Childbirth and the Puerperium Complications of Pregnancy, Childbirth and the Puerperium
    Condition(QICoreCondition) code Hospice Diagnosis http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165
    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 Contraceptive Medications Contraceptive 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 Isotretinoin Isotretinoin
    ServiceRequest(QICoreServiceRequest) code status status.value intent intent.value authoredOn authoredOn.value Pap Test Pap Test
    ServiceRequest(QICoreServiceRequest) code status status.value intent intent.value authoredOn authoredOn.value Lab Tests During Pregnancy Lab Tests During Pregnancy
    ServiceRequest(QICoreServiceRequest) code status status.value intent intent.value authoredOn authoredOn.value Lab Tests for Sexually Transmitted Infections Lab Tests for Sexually Transmitted Infections
    ServiceRequest(QICoreServiceRequest) code authoredOn authoredOn.value status status.value intent intent.value Diagnostic Studies During Pregnancy Diagnostic Studies During Pregnancy
    ServiceRequest(QICoreServiceRequest) code authoredOn authoredOn.value status status.value intent intent.value Hospice Care Ambulatory Hospice Care Ambulatory
    ServiceRequest(QICoreServiceRequest) code authoredOn authoredOn.value status status.value intent intent.value XRay Study X-Ray Study (all inclusive)
    ServiceRequest(QICoreServiceRequest) code authoredOn authoredOn.value status status.value intent intent.value Pregnancy Test Pregnancy Test
    Procedure(QICoreProcedure) code performed status status.value Procedures Used to Indicate Sexual Activity http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1017
    Procedure(QICoreProcedure) code performed status status.value Hospice Care Ambulatory Hospice Care Ambulatory
    Direct Reference Codes:
    display code system
    laboratory laboratory http://terminology.hl7.org/CodeSystem/observation-category
    survey survey http://terminology.hl7.org/CodeSystem/observation-category
    Have you ever had vaginal intercourse [PhenX] 64728-9 http://loinc.org
    Yes (qualifier value) 373066001 http://snomed.info/sct
    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
    Hospice care [Minimum Data Set] 45755-6 http://loinc.org
    Logic Definitions:
    Group Scoring Population Criteria Expression
    654a55d378418140875e358d Group scoring: proportion Measure scoring:

    Proportion

    Type:

    Process

    Rate Aggregation: None
    Improvement Notation:

    increase

    Initial Population
    define "Initial Population":
      AgeInYearsAt(date from 
        end of "Measurement Period"
      ) in Interval[16, 24]
        and Patient.gender = 'female'
        and exists ( "Qualifying Encounters" )
        and ( ( "Has Assessments Identifying Sexual Activity" )
            or ( "Has Diagnoses Identifying Sexual Activity" )
            or ( "Has Active Contraceptive Medications" )
            or ( "Has Ordered Contraceptive Medications" )
            or ( "Has Laboratory Tests Identifying Sexual Activity" )
            or ( "Has Diagnostic Studies Identifying Sexual Activity" )
            or ( "Has Procedures Identifying Sexual Activity" )
        )
    Denominator
    define "Denominator":
      "Initial Population"
    Denominator Exclusion
    define "Denominator Exclusions":
      Hospice."Has Hospice Services"
        or ( ( "Has Pregnancy Test Exclusion" )
            and not ( "Has Assessments Identifying Sexual Activity" )
            and not ( "Has Diagnoses Identifying Sexual Activity" )
            and not ( "Has Active Contraceptive Medications" )
            and not ( "Has Ordered Contraceptive Medications" )
            and not ( "Has Laboratory Tests Identifying Sexual Activity But Not Pregnancy" )
            and not ( "Has Diagnostic Studies Identifying Sexual Activity" )
            and not ( "Has Procedures Identifying Sexual Activity" )
        )
    Numerator
    define "Numerator":
      exists ( ( ( [Observation: "Chlamydia Screening"] ).isLaboratoryTestPerformed ( ) ) ChlamydiaTest
          where ChlamydiaTest.effective.latest ( ) during day of "Measurement Period"
            and ChlamydiaTest.value is not null
      )
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Numerator
    define "Numerator":
      exists ( ( ( [Observation: "Chlamydia Screening"] ).isLaboratoryTestPerformed ( ) ) ChlamydiaTest
          where ChlamydiaTest.effective.latest ( ) during day of "Measurement Period"
            and ChlamydiaTest.value is not null
      )
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Stratification 2
    define "Stratification 2":
      AgeInYearsAt(date from 
        end of "Measurement Period"
      ) in Interval[21, 24]
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Stratification 1
    define "Stratification 1":
      AgeInYearsAt(date from 
        end of "Measurement Period"
      ) in Interval[16, 20]
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Qualifying Encounters
    define "Qualifying Encounters":
      ( ( [Encounter: "Office Visit"]
          union [Encounter: "Preventive Care Services Established Office Visit, 18 and Up"]
          union [Encounter: "Preventive Care Services Initial Office Visit, 18 and Up"]
          union [Encounter: "Preventive Care Services, Initial Office Visit, 0 to 17"]
          union [Encounter: "Preventive Care, Established Office Visit, 0 to 17"]
          union [Encounter: "Home Healthcare Services"]
          union [Encounter: "Telephone Visits"]
          union [Encounter: "Virtual Encounter"]
      ).isEncounterPerformed ( ) ) ValidEncounters
        where ValidEncounters.period.toInterval ( ) during day of "Measurement Period"
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Has Assessments Identifying Sexual Activity
    define "Has Assessments Identifying Sexual Activity":
      exists ( ( ( [Observation: "Have you ever had vaginal intercourse [PhenX]"] ).isAssessmentPerformed ( ) ) SexualActivityAssessment
          where SexualActivityAssessment.value ~ "Yes (qualifier value)"
            and SexualActivityAssessment.effective.toInterval ( ) on or before end of "Measurement Period"
      )
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Has Diagnoses Identifying Sexual Activity
    define "Has Diagnoses Identifying Sexual Activity":
      exists ( ( [Condition: "Diagnoses Used to Indicate Sexual Activity"]
          union [Condition: "HIV"]
          union [Condition: "Complications of Pregnancy, Childbirth and the Puerperium"] ) SexualActivityDiagnosis
          where SexualActivityDiagnosis.prevalenceInterval ( ) overlaps "Measurement Period"
      )
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Has Active Contraceptive Medications
    define "Has Active Contraceptive Medications":
      exists ( ( [MedicationRequest: "Contraceptive Medications"] ).isMedicationActive ( ) ) ActiveContraceptives
        where ActiveContraceptives.medicationRequestPeriod ( ) overlaps "Measurement Period"
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Has Ordered Contraceptive Medications
    define "Has Ordered Contraceptive Medications":
      exists ( ( [MedicationRequest: "Contraceptive Medications"] ).isMedicationOrder ( ) ) OrderedContraceptives
        where OrderedContraceptives.authoredOn.toInterval ( ) during day of "Measurement Period"
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Has Laboratory Tests Identifying Sexual Activity But Not Pregnancy
    define "Has Laboratory Tests Identifying Sexual Activity But Not Pregnancy":
      exists ( ( [ServiceRequest: "Pap Test"]
          union [ServiceRequest: "Lab Tests During Pregnancy"]
          union [ServiceRequest: "Lab Tests for Sexually Transmitted Infections"]
      ).isLaboratoryTestOrder ( ) ) LabOrders
        where LabOrders.authoredOn.toInterval ( ) during day of "Measurement Period"
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Has Laboratory Tests Identifying Sexual Activity
    //   and LabOrders.doNotPerform is not true
                //   https://oncprojectracking.healthit.gov/support/browse/CQLIT-447
    
    
    
    define "Has Laboratory Tests Identifying Sexual Activity":
      exists ( ( ( [ServiceRequest: "Pregnancy Test"] ).isLaboratoryTestOrder ( ) ) PregnancyTest
          where PregnancyTest.authoredOn.toInterval ( ) during day of "Measurement Period"
        //   and PregnancyTest.doNotPerform is not true
        //   https://oncprojectracking.healthit.gov/support/browse/CQLIT-447
      
      
      )
        or "Has Laboratory Tests Identifying Sexual Activity But Not Pregnancy"
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Has Diagnostic Studies Identifying Sexual Activity
    define "Has Diagnostic Studies Identifying Sexual Activity":
      exists ( ( [ServiceRequest: "Diagnostic Studies During Pregnancy"] ).isDiagnosticStudyOrder ( ) ) SexualActivityDiagnostics
        where SexualActivityDiagnostics.authoredOn.toInterval ( ) during day of "Measurement Period"
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Has Procedures Identifying Sexual Activity
    //   and SexualActivityDiagnostics.doNotPerform is not true
                //   https://oncprojectracking.healthit.gov/support/browse/CQLIT-447   
    
    
    
    define "Has Procedures Identifying Sexual Activity":
      exists ( ( [Procedure: "Procedures Used to Indicate Sexual Activity"] ).isProcedurePerformed ( ) ) ProceduresForSexualActivity
        where ProceduresForSexualActivity.performed.toInterval ( ) during day of "Measurement Period"
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Initial Population
    define "Initial Population":
      AgeInYearsAt(date from 
        end of "Measurement Period"
      ) in Interval[16, 24]
        and Patient.gender = 'female'
        and exists ( "Qualifying Encounters" )
        and ( ( "Has Assessments Identifying Sexual Activity" )
            or ( "Has Diagnoses Identifying Sexual Activity" )
            or ( "Has Active Contraceptive Medications" )
            or ( "Has Ordered Contraceptive Medications" )
            or ( "Has Laboratory Tests Identifying Sexual Activity" )
            or ( "Has Diagnostic Studies Identifying Sexual Activity" )
            or ( "Has Procedures Identifying Sexual Activity" )
        )
    Library Name Name
    ChlamydiaScreeninginWomenFHIR 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"
            // 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
    ChlamydiaScreeninginWomenFHIR Has Pregnancy Test Exclusion
    define "Has Pregnancy Test Exclusion":
      exists ( ( ( ( [ServiceRequest: "Pregnancy Test"] ).isLaboratoryTestOrder ( ) ) PregnancyTest
            with ( ( [ServiceRequest: "XRay Study"] ).isDiagnosticStudyOrder ( ) ) XrayOrder
              such that XrayOrder.authoredOn.toInterval ( ) occurs 6 days or less on or after day of PregnancyTest.authoredOn.toInterval ( )
            where PregnancyTest.authoredOn.toInterval ( ) during "Measurement Period"
            //   and PregnancyTest.doNotPerform is not true
            //   https://oncprojectracking.healthit.gov/support/browse/CQLIT-447
        
        
        )
          union ( ( ( [ServiceRequest: "Pregnancy Test"] ).isLaboratoryTestOrder ( ) ) PregnancyTestOrder
              with ( ( [MedicationRequest: "Isotretinoin"] ).isMedicationOrder ( ) ) AccutaneOrder
                such that AccutaneOrder.authoredOn.toInterval ( ) occurs 6 days or less on or after day of PregnancyTestOrder.authoredOn.toInterval ( )
              where PregnancyTestOrder.authoredOn.toInterval ( ) during "Measurement Period"
                //   and PregnancyTestOrder.doNotPerform is not true
                //   https://oncprojectracking.healthit.gov/support/browse/CQLIT-447 
          
          
          )
      )
    Library Name Name
    ChlamydiaScreeninginWomenFHIR Denominator Exclusions
    define "Denominator Exclusions":
      Hospice."Has Hospice Services"
        or ( ( "Has Pregnancy Test Exclusion" )
            and not ( "Has Assessments Identifying Sexual Activity" )
            and not ( "Has Diagnoses Identifying Sexual Activity" )
            and not ( "Has Active Contraceptive Medications" )
            and not ( "Has Ordered Contraceptive Medications" )
            and not ( "Has Laboratory Tests Identifying Sexual Activity But Not Pregnancy" )
            and not ( "Has Diagnostic Studies Identifying Sexual Activity" )
            and not ( "Has Procedures Identifying Sexual Activity" )
        )
    Library Name Name
    Status isLaboratoryTestPerformed
    //Laboratory Test, Performed
    define fluent function isLaboratoryTestPerformed(Obs List<Observation>):
      Obs O
        where O.status in { 'final', 'amended', 'corrected' }
          and exists ( O.category ObservationCategory
              where ( ObservationCategory ) ~ "laboratory"
          )
    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
    QICoreCommon latest
    /*
    @description: Given an interval, returns the ending point if the interval has an ending boundary specified,
    otherwise, returns the starting point
    */
    define fluent function latest(choice Choice<DateTime, Quantity, Interval<DateTime>, Interval<Quantity>> ):
      (choice.toInterval()) period
        return
          if (period."hasEnd"()) then end of period
          else start of period
    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
    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 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
    QICoreCommon prevalenceInterval
    /*
    @description: Returns an interval representing the normalized prevalence period of a given Condition.
    @comment: Uses the ToInterval and ToAbatementInterval functions to determine the widest potential interval from
    onset to abatement as specified in the given Condition. If the condition is active, or has an abatement date the resulting 
    interval will have a closed ending boundary. Otherwise, the resulting interval will have an open ending boundary.
    */
    define fluent function prevalenceInterval(condition Condition):
    if condition.clinicalStatus ~ "active"
      or condition.clinicalStatus ~ "recurrence"
      or condition.clinicalStatus ~ "relapse" then
      Interval[start of condition.onset.toInterval(), end of condition.abatementInterval()]
    else
        (end of condition.abatementInterval()) abatementDate
        return if abatementDate is null then
          Interval[start of condition.onset.toInterval(), abatementDate)
        else
          Interval[start of condition.onset.toInterval(), abatementDate]
    Library Name Name
    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 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 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
    Status isLaboratoryTestOrder
    //Laboratory Test, Order: active and completed only
    define fluent function isLaboratoryTestOrder(ServiceRequest List<ServiceRequest>):
      ServiceRequest S
        where S.status in { 'active', 'completed' }
          and S.intent = 'order'
    Library Name Name
    Status isDiagnosticStudyOrder
    //Diagnostic Study, Order: active and completed only
    define fluent function isDiagnosticStudyOrder(ServiceRequest List<ServiceRequest>):
      ServiceRequest S
        where S.status in { 'active', 'completed' }
          and S.intent = 'order'
    Library Name Name
    Status isProcedurePerformed
    //Procedure, Performed
    define fluent function isProcedurePerformed(Proc List<Procedure>):
      Proc P
        where P.status ~ 'completed'
    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'