Metadata Title Cervical Cancer Screening Version 0.0.001 Short Name Colorectal Cancer Screening GUID (Version Independent) http://example.org/fhir/us/cqm/Measure/CCSComponent GUID (Version Specific) http://example.org/fhir/us/cqm/Measure/130v10 Identifier urn:oid:2.16.840.1.113883.4.642.40.61.29.2 Effective Period 2022-01-01 through 2022-12-31 Experimental true Use Context Clinical Venue = EC Jurisdiction 001 from http://unstats.un.org/unsd/methods/m49/m49.htm Steward (Publisher) HL7 International / Clinical Quality Information Description This is only an example. Measure Basis boolean Measure Scoring Proportion Improvement Notation increase from http://terminology.hl7.org/CodeSystem/measure-improvement-notation Measure Type process from http://terminology.hl7.org/CodeSystem/measure-type Measure Group (Rate) (ID: primary) Supplemental Data Elements Supplemental Data Element ID: 4d3fff25-29d7-4e61-9fdd-a02a85c1472f Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Ethnicity Supplemental Data Element ID: 4732f9d3-e4c9-4a24-ab3c-9247a55d73ef Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Payer Supplemental Data Element ID: 523c2619-71c6-4e60-83f8-3d8eeef75398 Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Race Supplemental Data Element ID: 336d1356-61a7-4220-9635-ffc50b90af2f Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Sex Measure Logic Primary Library CCS Component Library Contents Population Criteria Logic Definitions Terminology Dependencies Data Requirements Parameters Population Criteria Measure Group (Rate) (ID: primary) Logic Definitions Logic Definition Library Name: AdultOutpatientEncounters define "Qualifying Encounters": ([Encounter: "Office Visit"] union [Encounter: "Annual Wellness 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: "Home Healthcare Services"] ) ValidEncounter where ValidEncounter.period during "Measurement Period" and ValidEncounter.status = 'finished' Logic Definition Library Name: Hospice define "Has Hospice": exists ( [Encounter: "Encounter Inpatient"] DischargeHospice where DischargeHospice.status = 'finished' and ( DischargeHospice.hospitalization.dischargeDisposition ~ "Discharge to home for hospice care (procedure)" or DischargeHospice.hospitalization.dischargeDisposition ~ "Discharge to healthcare facility for hospice care (procedure)" ) and DischargeHospice.period ends during "Measurement Period" ) or exists ( [ServiceRequest: "Hospice care ambulatory"] HospiceOrder where HospiceOrder.intent = 'order' and HospiceOrder.authoredOn in "Measurement Period" ) or exists ( [Procedure: "Hospice care ambulatory"] HospicePerformed where HospicePerformed.status = 'completed' and Global."Normalize Interval"(HospicePerformed.performed) overlaps "Measurement Period" ) Logic Definition Library Name: AdvancedIllnessandFrailtyExclusion define "Has Criteria Indicating Frailty": //Ask Bryn about devices exists ( [DeviceRequest: "Frailty Device"] FrailtyDeviceOrder where FrailtyDeviceOrder.authoredOn during "Measurement Period" ) // DeviceUseStatement has a known issue with the publication tooling // so it is removed to allow this IG to publish until that is fixed //or exists ( [DeviceUseStatement: "Frailty Device"] FrailtyDeviceUse // where Global."Normalize Interval"(FrailtyDeviceUse.timing) overlaps "Measurement Period" //) or exists ( [Condition: "Frailty Diagnosis"] FrailtyDiagnosis where Global."Prevalence Period"(FrailtyDiagnosis) overlaps "Measurement Period" ) or exists ( [Encounter: "Frailty Encounter"] FrailtyEncounter where FrailtyEncounter.period overlaps "Measurement Period" ) or exists ( [Observation: "Frailty Symptom"] FrailtySymptomObservation where Global."Normalize Interval"(FrailtySymptomObservation.effective) overlaps "Measurement Period" ) Logic Definition Library Name: AdvancedIllnessandFrailtyExclusion define "Outpatient Encounters with Advanced Illness": ( [Encounter: "Outpatient"] union [Encounter: "Observation"] union [Encounter: "ED"] union [Encounter: "Nonacute Inpatient"] ) OutpatientEncounter with [Condition: "Advanced Illness"] AdvancedIllnessDiagnosis such that exists ( OutpatientEncounter.diagnosis.condition EncounterDiagnosis where EndsWith(EncounterDiagnosis.reference, AdvancedIllnessDiagnosis.id) ) and OutpatientEncounter.period starts 2 years or less on or before end of "Measurement Period" Logic Definition Library Name: AdvancedIllnessandFrailtyExclusion define "Inpatient Encounter with Advanced Illness": [Encounter: "Acute Inpatient"] InpatientEncounter with [Condition: "Advanced Illness"] AdvancedIllnessDiagnosis such that exists ( InpatientEncounter.diagnosis.condition EncounterDiagnosis where EndsWith(EncounterDiagnosis.reference, AdvancedIllnessDiagnosis.id) ) and InpatientEncounter.period starts 2 years or less on or before end of "Measurement Period" Logic Definition Library Name: AdvancedIllnessandFrailtyExclusion define "Dementia Medications In Year Before or During Measurement Period": ["MedicationDispense": "Dementia Medications"] DementiaMed where DementiaMed.whenHandedOver during Interval[ ( start of "Measurement Period" - 1 year ), end of "Measurement Period" ] Logic Definition Library Name: AdvancedIllnessandFrailtyExclusion define "Advanced Illness and Frailty Exclusion Not Including Over Age 80": //If the measure does NOT include populations age 80 and older, then use this logic: Global."CalendarAgeInYearsAt"(FHIRHelpers.ToDate(Patient.birthDate), start of "Measurement Period")>= 65 and "Has Criteria Indicating Frailty" and ( Count("Outpatient Encounters with Advanced Illness")>= 2 or exists ( "Inpatient Encounter with Advanced Illness" ) or exists "Dementia Medications In Year Before or During Measurement Period" ) Logic Definition Library Name: AdvancedIllnessandFrailtyExclusion // start here define "Long Term Care Periods During Measurement Period": ( [Encounter: "Care Services in Long-Term Residential Facility"] union [Encounter: "Nursing Facility Visit"] ) LongTermFacilityEncounter where LongTermFacilityEncounter.period overlaps "Measurement Period" return LongTermFacilityEncounter.period intersect "Measurement Period" Logic Definition Library Name: AdvancedIllnessandFrailtyExclusion define "Long Term Care Periods Longer Than 90 Consecutive Days": exists ( "Long Term Care Periods During Measurement Period" LongTermCareDuringMP where duration in days of LongTermCareDuringMP > 90 ) Logic Definition Library Name: SupplementalDataElements define "SDE Sex": case when Patient.gender = 'male' then Code { code: 'M', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Male' } when Patient.gender = 'female' then Code { code: 'F', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Female' } else null end Logic Definition Library Name: SupplementalDataElements define "SDE Payer": [Coverage: type in "Payer"] Payer return { code: Payer.type, period: Payer.period } Logic Definition Library Name: SupplementalDataElements define "SDE Ethnicity": (flatten ( Patient.extension Extension where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity' return Extension.extension )) E where E.url = 'ombCategory' or E.url = 'detailed' return E.value as Coding Logic Definition Library Name: SupplementalDataElements define "SDE Race": (flatten ( Patient.extension Extension where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race' return Extension.extension )) E where E.url = 'ombCategory' or E.url = 'detailed' return E.value as Coding Logic Definition Library Name: CCSComponent define "SDE Sex": SDE."SDE Sex" Logic Definition Library Name: CCSComponent define "Colonoscopy Performed": [Procedure: "Colonoscopy"] Colonoscopy where Colonoscopy.status = 'completed' and Global."Normalize Interval" ( Colonoscopy.performed ) ends 10 years or less on or before end of "Measurement Period" Logic Definition Library Name: CCSComponent define "Fecal Occult Blood Test Performed": [Observation: "Fecal Occult Blood Test (FOBT)"] FecalOccultResult where FecalOccultResult.status in { 'final', 'amended', 'corrected', 'preliminary' } and FecalOccultResult.value is not null and Global."Normalize Interval" ( FecalOccultResult.effective ) during day of "Measurement Period" Logic Definition Library Name: CCSComponent define "Flexible Sigmoidoscopy Performed": [Procedure: "Flexible Sigmoidoscopy"] FlexibleSigmoidoscopy where FlexibleSigmoidoscopy.status = 'completed' and Global."Normalize Interval" ( FlexibleSigmoidoscopy.performed ) ends 5 years or less on or before end of "Measurement Period" Logic Definition Library Name: CCSComponent define "Fecal Immunochemical Test DNA": [Observation: "FIT DNA"] FitDNA where FitDNA.status in { 'final', 'amended', 'corrected', 'preliminary' } and FitDNA.value is not null and Global."Normalize Interval" ( FitDNA.effective ) occurs 3 years or less on or before day of end of "Measurement Period" Logic Definition Library Name: CCSComponent define "CT Colonography Performed": [Procedure: "CT Colonography"] Colonography where Colonography.status = 'completed' and Global."Normalize Interval" ( Colonography.performed ) ends 5 years or less on or before end of "Measurement Period" Logic Definition Library Name: CCSComponent define "Numerator": exists "Colonoscopy Performed" or exists "Fecal Occult Blood Test Performed" or exists "Flexible Sigmoidoscopy Performed" or exists "Fecal Immunochemical Test DNA" or exists "CT Colonography Performed" Logic Definition Library Name: CCSComponent define "Initial Population": Global."CalendarAgeInYearsAt" ( FHIRHelpers.ToDate ( Patient.birthDate ), start of "Measurement Period" ) in Interval[50, 75] and exists AdultOutpatientEncounters."Qualifying Encounters" Logic Definition Library Name: CCSComponent define "Denominator": "Initial Population" Logic Definition Library Name: CCSComponent define "SDE Payer": SDE."SDE Payer" Logic Definition Library Name: CCSComponent define "SDE Ethnicity": SDE."SDE Ethnicity" Logic Definition Library Name: CCSComponent define "Malignant Neoplasm": [Condition: "Malignant Neoplasm of Colon"] ColorectalCancer where Global."Prevalence Period" ( ColorectalCancer ) starts on or before end of "Measurement Period" Logic Definition Library Name: CCSComponent define "Total Colectomy Performed": [Procedure: "Total Colectomy"] Colectomy where Colectomy.status = 'completed' and Global."Normalize Interval" ( Colectomy.performed ) starts on or before end of "Measurement Period" Logic Definition Library Name: CCSComponent define "Denominator Exclusion": Hospice."Has Hospice" or exists "Malignant Neoplasm" or exists "Total Colectomy Performed" or Frailty."Advanced Illness and Frailty Exclusion Not Including Over Age 80" and Frailty."Long Term Care Periods Longer Than 90 Consecutive Days" Logic Definition Library Name: CCSComponent define "SDE Race": SDE."SDE Race" Logic Definition Library Name: MATGlobalCommonFunctions /* * * CQFMeasures Common Logic * */ define function "Normalize Interval"(choice Choice<FHIR.dateTime, FHIR.Period, FHIR.Timing, FHIR.instant, FHIR.string, FHIR.Age, FHIR.Range>): case when choice is FHIR.dateTime then Interval[FHIRHelpers.ToDateTime(choice as FHIR.dateTime), FHIRHelpers.ToDateTime(choice as FHIR.dateTime)] when choice is FHIR.Period then FHIRHelpers.ToInterval(choice as FHIR.Period) when choice is FHIR.instant then Interval[FHIRHelpers.ToDateTime(choice as FHIR.instant), FHIRHelpers.ToDateTime(choice as FHIR.instant)] when choice is FHIR.Age then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(choice as FHIR.Age), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(choice as FHIR.Age) + 1 year) when choice is FHIR.Range then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((choice as FHIR.Range).low), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((choice as FHIR.Range).high) + 1 year) when choice is FHIR.Timing then Message(null as Interval<DateTime>, true, '1', 'Error', 'Cannot compute a single interval from a Timing type') when choice is FHIR.string then Message(null as Interval<DateTime>, true, '1', 'Error', 'Cannot compute an interval from a String value') else null as Interval<DateTime> end Logic Definition Library Name: MATGlobalCommonFunctions define function "CalendarAgeInYearsAt"(BirthDateTime DateTime, AsOf DateTime): years between ToDate(BirthDateTime)and ToDate(AsOf) Logic Definition Library Name: MATGlobalCommonFunctions define function "ToDate"(Value DateTime): DateTime(year from Value, month from Value, day from Value, 0, 0, 0, 0, timezoneoffset from Value) Logic Definition Library Name: MATGlobalCommonFunctions define function "Prevalence Period"(condition Condition): Interval[start of "Normalize Interval"(condition.onset), end of "Normalize Abatement"(condition)) Logic Definition Library Name: MATGlobalCommonFunctions define function "Normalize Abatement"(condition Condition): if condition.abatement is FHIR.dateTime then Interval[FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime), FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime)] else if condition.abatement is FHIR.Period then FHIRHelpers.ToInterval(condition.abatement as FHIR.Period) else if condition.abatement is FHIR.string then Message(null as Interval<DateTime>, true, '1', 'Error', 'Cannot compute an interval from a String value') else if condition.abatement is FHIR.Age then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age) + 1 year) else if condition.abatement is FHIR.Range then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).low), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).high) + 1 year) else if condition.abatement is FHIR.boolean then Interval[end of "Normalize Interval"(condition.onset), condition.recordedDate) else null Logic Definition Library Name: FHIRHelpers define function ToString(value AdministrativeGender): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value ProcedureStatus): value.value Logic Definition Library Name: FHIRHelpers define function ToDateTime(value dateTime): value.value Logic Definition Library Name: FHIRHelpers /* @description: Converts the given [Period](https://hl7.org/fhir/datatypes.html#Period) value to a CQL DateTime Interval @comment: If the start value of the given period is unspecified, the starting boundary of the resulting interval will be open (meaning the start of the interval is unknown, as opposed to interpreted as the beginning of time). */ define function ToInterval(period FHIR.Period): if period is null then null else if period."start" is null then Interval(period."start".value, period."end".value] else Interval[period."start".value, period."end".value] Logic Definition Library Name: FHIRHelpers define function ToDateTime(value instant): value.value Logic Definition Library Name: FHIRHelpers define function ToDate(value date): value.value Logic Definition Library Name: FHIRHelpers /* @description: Converts the given FHIR [Quantity](https://hl7.org/fhir/datatypes.html#Quantity) value to a CQL Quantity @comment: If the given quantity has a comparator specified, a runtime error is raised. If the given quantity has a system other than UCUM (i.e. `http://unitsofmeasure.org`) or CQL calendar units (i.e. `http://hl7.org/fhirpath/CodeSystem/calendar-units`) an error is raised. For UCUM to calendar units, the `ToCalendarUnit` function is used. @seealso: ToCalendarUnit */ define function ToQuantity(quantity FHIR.Quantity): case when quantity is null then null when quantity.value is null then null when quantity.comparator is not null then Message(null, true, 'FHIRHelpers.ToQuantity.ComparatorQuantityNotSupported', 'Error', 'FHIR Quantity value has a comparator and cannot be converted to a System.Quantity value.') when quantity.system is null or quantity.system.value = 'http://unitsofmeasure.org' or quantity.system.value = 'http://hl7.org/fhirpath/CodeSystem/calendar-units' then System.Quantity { value: quantity.value.value, unit: ToCalendarUnit(Coalesce(quantity.code.value, quantity.unit.value, '1')) } else Message(null, true, 'FHIRHelpers.ToQuantity.InvalidFHIRQuantity', 'Error', 'Invalid FHIR Quantity code: ' & quantity.unit.value & ' (' & quantity.system.value & '|' & quantity.code.value & ')') end Logic Definition Library Name: FHIRHelpers /* @description: Converts a UCUM definite duration unit to a CQL calendar duration unit using conversions specified in the [quantities](https://cql.hl7.org/02-authorsguide.html#quantities) topic of the CQL specification. @comment: Note that for durations above days (or weeks), the conversion is understood to be approximate */ define function ToCalendarUnit(unit System.String): case unit when 'ms' then 'millisecond' when 's' then 'second' when 'min' then 'minute' when 'h' then 'hour' when 'd' then 'day' when 'wk' then 'week' when 'mo' then 'month' when 'a' then 'year' else unit end Logic Definition Library Name: FHIRHelpers define function ToString(value ObservationStatus): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value EncounterStatus): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value uri): value.value Logic Definition Library Name: FHIRHelpers /* @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 } Logic Definition Library Name: FHIRHelpers /* @description: Converts the given FHIR [Coding](https://hl7.org/fhir/datatypes.html#Coding) value to a CQL Code. */ define function ToCode(coding FHIR.Coding): if coding is null then null else System.Code { code: coding.code.value, system: coding.system.value, version: coding.version.value, display: coding.display.value } Logic Definition Library Name: FHIRHelpers define function ToString(value ServiceRequestIntent): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value string): value.value Terminology Code System Description: Code system SNOMEDCT:2017-09 Resource: http://snomed.info/sct|http://snomed.info/sct/731000124108/version/201709 Canonical URL: http://snomed.info/sct|http://snomed.info/sct/731000124108/version/201709 Value Set Description: Value set Colonoscopy Resource: Colonoscopy Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1020 Value Set Description: Value set Fecal Occult Blood Test (FOBT) Resource: Fecal Occult Blood Test (FOBT) Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1011 Value Set Description: Value set Flexible Sigmoidoscopy Resource: Flexible Sigmoidoscopy Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1010 Value Set Description: Value set FIT DNA Resource: sDNA FIT Test Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1039 Value Set Description: Value set CT Colonography Resource: CT Colonography Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1038 Value Set Description: Value set Office Visit Resource: Office Visit Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001 Value Set Description: Value set Annual Wellness Visit Resource: Annual Wellness Visit Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240 Value Set Description: Value set Preventive Care Services - Established Office Visit, 18 and Up Resource: Preventive Care Services Established Office Visit, 18 and Up Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025 Value Set Description: Value set Preventive Care Services-Initial Office Visit, 18 and Up Resource: Preventive Care Services Initial Office Visit, 18 and Up Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023 Value Set Description: Value set Home Healthcare Services Resource: Home Healthcare Services Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016 Value Set Description: Value set Payer Resource: Payer Type Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591 Value Set Description: Value set Encounter Inpatient Resource: Encounter Inpatient Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307 Value Set Description: Value set Hospice care ambulatory Resource: Hospice Care Ambulatory Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.15 Value Set Description: Value set Malignant Neoplasm of Colon Resource: Malignant Neoplasm of Colon Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1001 Value Set Description: Value set Total Colectomy Resource: Total Colectomy Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1019 Value Set Description: Value set Frailty Device Resource: Frailty Device Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.118.12.1300 Value Set Description: Value set Frailty Diagnosis Resource: Frailty Diagnosis Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1074 Value Set Description: Value set Frailty Encounter Resource: Frailty Encounter Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1088 Value Set Description: Value set Frailty Symptom Resource: Frailty Symptom Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1075 Value Set Description: Value set Outpatient Resource: Outpatient Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1087 Value Set Description: Value set Observation Resource: Observation Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1086 Value Set Description: Value set ED Resource: ED Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1085 Value Set Description: Value set Nonacute Inpatient Resource: Nonacute Inpatient Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1084 Value Set Description: Value set Advanced Illness Resource: Advanced Illness Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1082 Value Set Description: Value set Acute Inpatient Resource: Acute Inpatient Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1083 Value Set Description: Value set Dementia Medications Resource: Dementia Medications Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1510 Value Set Description: Value set Care Services in Long-Term Residential Facility Resource: Care Services in Long Term Residential Facility Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1014 Value Set Description: Value set Nursing Facility Visit Resource: Nursing Facility Visit Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012 Direct Reference Code Display: Discharge to home for hospice care (procedure) Code: 428361000124107 System: http://snomed.info/sct Direct Reference Code Display: Discharge to healthcare facility for hospice care (procedure) Code: 428371000124100 System: http://snomed.info/sct Dependencies Dependency Description: FHIR model information Resource: http://hl7.org/fhir/uv/cql/Library/FHIR-ModelInfo|4.0.1 Canonical URL: http://hl7.org/fhir/uv/cql/Library/FHIR-ModelInfo|4.0.1 Dependency Description: Library SDE Resource: Supplemental Data Elements version: 2.0.000 Canonical URL: http://hl7.org/fhir/uv/cqm/Library/SupplementalDataElements|2.0.000 Dependency Description: Library FHIRHelpers Resource: http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.1 Canonical URL: http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.1 Dependency Description: Library Global Resource: MAT Global Common Functions FHIR Library version: 5.0.000 Canonical URL: http://hl7.org/fhir/uv/cqm/Library/MATGlobalCommonFunctions|5.0.000 Dependency Description: Library AdultOutpatientEncounters Resource: Adult Outpatient Encounters Common Library version: 2.0.000 Canonical URL: http://hl7.org/fhir/uv/cqm/Library/AdultOutpatientEncounters|2.0.000 Dependency Description: Library Hospice Resource: Hospice FHIR Library version: 2.0.000 Canonical URL: http://hl7.org/fhir/uv/cqm/Library/Hospice|2.0.000 Dependency Description: Library Frailty Resource: Advanced Illness and Frailty Exclusion Library version: 5.12.000 Canonical URL: http://hl7.org/fhir/uv/cqm/Library/AdvancedIllnessandFrailtyExclusion|5.12.000 Data Requirements Data Requirement Type: Patient Profile(s): Patient Must Support Elements: url, extension, value Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed Code Filter(s): Path: code ValueSet: Colonoscopy Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed Code Filter(s): Path: code ValueSet: Flexible Sigmoidoscopy Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed Code Filter(s): Path: code ValueSet: CT Colonography Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed Code Filter(s): Path: code ValueSet: Hospice Care Ambulatory Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed Code Filter(s): Path: code ValueSet: Total Colectomy Data Requirement Type: Observation Profile(s): Observation Must Support Elements: code, status, value, effective Code Filter(s): Path: code ValueSet: Fecal Occult Blood Test (FOBT) Data Requirement Type: Observation Profile(s): Observation Must Support Elements: code, status, value, effective Code Filter(s): Path: code ValueSet: sDNA FIT Test Data Requirement Type: Observation Profile(s): Observation Must Support Elements: code, effective Code Filter(s): Path: code ValueSet: Frailty Symptom Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Office Visit Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Annual Wellness Visit Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Preventive Care Services Established Office Visit, 18 and Up Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Preventive Care Services Initial Office Visit, 18 and Up Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Home Healthcare Services Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, status, hospitalization, hospitalization.dischargeDisposition, period, diagnosis Code Filter(s): Path: type ValueSet: Encounter Inpatient Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Frailty Encounter Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Outpatient Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Observation Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: ED Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Nonacute Inpatient Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, diagnosis, period, status Code Filter(s): Path: type ValueSet: Acute Inpatient Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Care Services in Long Term Residential Facility Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, status, diagnosis Code Filter(s): Path: type ValueSet: Nursing Facility Visit Data Requirement Type: Coverage Profile(s): Coverage Must Support Elements: type, period Code Filter(s): Path: type ValueSet: Payer Type Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, intent, authoredOn Code Filter(s): Path: code ValueSet: Hospice Care Ambulatory Data Requirement Type: Condition Profile(s): Condition Must Support Elements: code Code Filter(s): Path: code ValueSet: Malignant Neoplasm of Colon Data Requirement Type: Condition Profile(s): Condition Must Support Elements: code Code Filter(s): Path: code ValueSet: Frailty Diagnosis Data Requirement Type: Condition Profile(s): Condition Must Support Elements: code, id Code Filter(s): Path: code ValueSet: Advanced Illness Data Requirement Type: DeviceRequest Profile(s): DeviceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code ValueSet: Frailty Device Data Requirement Type: MedicationDispense Profile(s): MedicationDispense Must Support Elements: medication, whenHandedOver Code Filter(s): Path: medication ValueSet: Dementia Medications Data Requirement Type: MedicationDispense Profile(s): MedicationDispense Must Support Elements: medication.reference, whenHandedOver Data Requirement Type: Medication Profile(s): Medication Must Support Elements: id, code Parameters Name Use Card. Type Documentation Measurement Period In 0..1 Period SDE Sex Out 0..1 Coding Numerator Out 0..1 boolean Denominator Out 0..1 boolean SDE Payer Out 0..* Resource Initial Population Out 0..1 boolean SDE Ethnicity Out 0..* Coding Denominator Exclusion Out 0..1 boolean SDE Race Out 0..* Coding Generated using version 0.5.4 of the sample-content-ig Liquid templates
Discharge to home for hospice care (procedure)
Discharge to healthcare facility for hospice care (procedure)
define "SDE Sex": case when Patient.gender = 'male' then Code { code: 'M', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Male' } when Patient.gender = 'female' then Code { code: 'F', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Female' } else null end
define "Colonoscopy Performed": [Procedure: "Colonoscopy"] Colonoscopy where Colonoscopy.status = 'completed' and Global."Normalize Interval" ( Colonoscopy.performed ) ends 10 years or less on or before end of "Measurement Period"
define "Fecal Occult Blood Test Performed": [Observation: "Fecal Occult Blood Test (FOBT)"] FecalOccultResult where FecalOccultResult.status in { 'final', 'amended', 'corrected', 'preliminary' } and FecalOccultResult.value is not null and Global."Normalize Interval" ( FecalOccultResult.effective ) during day of "Measurement Period"
define "Flexible Sigmoidoscopy Performed": [Procedure: "Flexible Sigmoidoscopy"] FlexibleSigmoidoscopy where FlexibleSigmoidoscopy.status = 'completed' and Global."Normalize Interval" ( FlexibleSigmoidoscopy.performed ) ends 5 years or less on or before end of "Measurement Period"
define "Fecal Immunochemical Test DNA": [Observation: "FIT DNA"] FitDNA where FitDNA.status in { 'final', 'amended', 'corrected', 'preliminary' } and FitDNA.value is not null and Global."Normalize Interval" ( FitDNA.effective ) occurs 3 years or less on or before day of end of "Measurement Period"
define "CT Colonography Performed": [Procedure: "CT Colonography"] Colonography where Colonography.status = 'completed' and Global."Normalize Interval" ( Colonography.performed ) ends 5 years or less on or before end of "Measurement Period"
define "Numerator": exists "Colonoscopy Performed" or exists "Fecal Occult Blood Test Performed" or exists "Flexible Sigmoidoscopy Performed" or exists "Fecal Immunochemical Test DNA" or exists "CT Colonography Performed"
define "Qualifying Encounters": ([Encounter: "Office Visit"] union [Encounter: "Annual Wellness 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: "Home Healthcare Services"] ) ValidEncounter where ValidEncounter.period during "Measurement Period" and ValidEncounter.status = 'finished'
define "Initial Population": Global."CalendarAgeInYearsAt" ( FHIRHelpers.ToDate ( Patient.birthDate ), start of "Measurement Period" ) in Interval[50, 75] and exists AdultOutpatientEncounters."Qualifying Encounters"
define "Denominator": "Initial Population"
define "SDE Payer": [Coverage: type in "Payer"] Payer return { code: Payer.type, period: Payer.period }
define "SDE Ethnicity": (flatten ( Patient.extension Extension where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity' return Extension.extension )) E where E.url = 'ombCategory' or E.url = 'detailed' return E.value as Coding
define "SDE Ethnicity": SDE."SDE Ethnicity"
define "Has Hospice": exists ( [Encounter: "Encounter Inpatient"] DischargeHospice where DischargeHospice.status = 'finished' and ( DischargeHospice.hospitalization.dischargeDisposition ~ "Discharge to home for hospice care (procedure)" or DischargeHospice.hospitalization.dischargeDisposition ~ "Discharge to healthcare facility for hospice care (procedure)" ) and DischargeHospice.period ends during "Measurement Period" ) or exists ( [ServiceRequest: "Hospice care ambulatory"] HospiceOrder where HospiceOrder.intent = 'order' and HospiceOrder.authoredOn in "Measurement Period" ) or exists ( [Procedure: "Hospice care ambulatory"] HospicePerformed where HospicePerformed.status = 'completed' and Global."Normalize Interval"(HospicePerformed.performed) overlaps "Measurement Period" )
define "Malignant Neoplasm": [Condition: "Malignant Neoplasm of Colon"] ColorectalCancer where Global."Prevalence Period" ( ColorectalCancer ) starts on or before end of "Measurement Period"
define "Total Colectomy Performed": [Procedure: "Total Colectomy"] Colectomy where Colectomy.status = 'completed' and Global."Normalize Interval" ( Colectomy.performed ) starts on or before end of "Measurement Period"
define "Has Criteria Indicating Frailty": //Ask Bryn about devices exists ( [DeviceRequest: "Frailty Device"] FrailtyDeviceOrder where FrailtyDeviceOrder.authoredOn during "Measurement Period" ) // DeviceUseStatement has a known issue with the publication tooling // so it is removed to allow this IG to publish until that is fixed //or exists ( [DeviceUseStatement: "Frailty Device"] FrailtyDeviceUse // where Global."Normalize Interval"(FrailtyDeviceUse.timing) overlaps "Measurement Period" //) or exists ( [Condition: "Frailty Diagnosis"] FrailtyDiagnosis where Global."Prevalence Period"(FrailtyDiagnosis) overlaps "Measurement Period" ) or exists ( [Encounter: "Frailty Encounter"] FrailtyEncounter where FrailtyEncounter.period overlaps "Measurement Period" ) or exists ( [Observation: "Frailty Symptom"] FrailtySymptomObservation where Global."Normalize Interval"(FrailtySymptomObservation.effective) overlaps "Measurement Period" )
Outpatient Encounters with Advanced Illness
define "Outpatient Encounters with Advanced Illness": ( [Encounter: "Outpatient"] union [Encounter: "Observation"] union [Encounter: "ED"] union [Encounter: "Nonacute Inpatient"] ) OutpatientEncounter with [Condition: "Advanced Illness"] AdvancedIllnessDiagnosis such that exists ( OutpatientEncounter.diagnosis.condition EncounterDiagnosis where EndsWith(EncounterDiagnosis.reference, AdvancedIllnessDiagnosis.id) ) and OutpatientEncounter.period starts 2 years or less on or before end of "Measurement Period"
Inpatient Encounter with Advanced Illness
define "Inpatient Encounter with Advanced Illness": [Encounter: "Acute Inpatient"] InpatientEncounter with [Condition: "Advanced Illness"] AdvancedIllnessDiagnosis such that exists ( InpatientEncounter.diagnosis.condition EncounterDiagnosis where EndsWith(EncounterDiagnosis.reference, AdvancedIllnessDiagnosis.id) ) and InpatientEncounter.period starts 2 years or less on or before end of "Measurement Period"
Dementia Medications In Year Before or During Measurement Period
define "Dementia Medications In Year Before or During Measurement Period": ["MedicationDispense": "Dementia Medications"] DementiaMed where DementiaMed.whenHandedOver during Interval[ ( start of "Measurement Period" - 1 year ), end of "Measurement Period" ]
Advanced Illness and Frailty Exclusion Not Including Over Age 80
define "Advanced Illness and Frailty Exclusion Not Including Over Age 80": //If the measure does NOT include populations age 80 and older, then use this logic: Global."CalendarAgeInYearsAt"(FHIRHelpers.ToDate(Patient.birthDate), start of "Measurement Period")>= 65 and "Has Criteria Indicating Frailty" and ( Count("Outpatient Encounters with Advanced Illness")>= 2 or exists ( "Inpatient Encounter with Advanced Illness" ) or exists "Dementia Medications In Year Before or During Measurement Period" )
Long Term Care Periods During Measurement Period
// start here define "Long Term Care Periods During Measurement Period": ( [Encounter: "Care Services in Long-Term Residential Facility"] union [Encounter: "Nursing Facility Visit"] ) LongTermFacilityEncounter where LongTermFacilityEncounter.period overlaps "Measurement Period" return LongTermFacilityEncounter.period intersect "Measurement Period"
Long Term Care Periods Longer Than 90 Consecutive Days
define "Long Term Care Periods Longer Than 90 Consecutive Days": exists ( "Long Term Care Periods During Measurement Period" LongTermCareDuringMP where duration in days of LongTermCareDuringMP > 90 )
define "Denominator Exclusion": Hospice."Has Hospice" or exists "Malignant Neoplasm" or exists "Total Colectomy Performed" or Frailty."Advanced Illness and Frailty Exclusion Not Including Over Age 80" and Frailty."Long Term Care Periods Longer Than 90 Consecutive Days"
define "SDE Race": (flatten ( Patient.extension Extension where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race' return Extension.extension )) E where E.url = 'ombCategory' or E.url = 'detailed' return E.value as Coding
define function ToString(value AdministrativeGender): value.value
define function ToString(value ProcedureStatus): value.value
/* * * CQFMeasures Common Logic * */ define function "Normalize Interval"(choice Choice<FHIR.dateTime, FHIR.Period, FHIR.Timing, FHIR.instant, FHIR.string, FHIR.Age, FHIR.Range>): case when choice is FHIR.dateTime then Interval[FHIRHelpers.ToDateTime(choice as FHIR.dateTime), FHIRHelpers.ToDateTime(choice as FHIR.dateTime)] when choice is FHIR.Period then FHIRHelpers.ToInterval(choice as FHIR.Period) when choice is FHIR.instant then Interval[FHIRHelpers.ToDateTime(choice as FHIR.instant), FHIRHelpers.ToDateTime(choice as FHIR.instant)] when choice is FHIR.Age then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(choice as FHIR.Age), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(choice as FHIR.Age) + 1 year) when choice is FHIR.Range then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((choice as FHIR.Range).low), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((choice as FHIR.Range).high) + 1 year) when choice is FHIR.Timing then Message(null as Interval<DateTime>, true, '1', 'Error', 'Cannot compute a single interval from a Timing type') when choice is FHIR.string then Message(null as Interval<DateTime>, true, '1', 'Error', 'Cannot compute an interval from a String value') else null as Interval<DateTime> end
define function ToDateTime(value dateTime): value.value
/* @description: Converts the given [Period](https://hl7.org/fhir/datatypes.html#Period) value to a CQL DateTime Interval @comment: If the start value of the given period is unspecified, the starting boundary of the resulting interval will be open (meaning the start of the interval is unknown, as opposed to interpreted as the beginning of time). */ define function ToInterval(period FHIR.Period): if period is null then null else if period."start" is null then Interval(period."start".value, period."end".value] else Interval[period."start".value, period."end".value]
define function ToDateTime(value instant): value.value
define function ToDate(value date): value.value
/* @description: Converts the given FHIR [Quantity](https://hl7.org/fhir/datatypes.html#Quantity) value to a CQL Quantity @comment: If the given quantity has a comparator specified, a runtime error is raised. If the given quantity has a system other than UCUM (i.e. `http://unitsofmeasure.org`) or CQL calendar units (i.e. `http://hl7.org/fhirpath/CodeSystem/calendar-units`) an error is raised. For UCUM to calendar units, the `ToCalendarUnit` function is used. @seealso: ToCalendarUnit */ define function ToQuantity(quantity FHIR.Quantity): case when quantity is null then null when quantity.value is null then null when quantity.comparator is not null then Message(null, true, 'FHIRHelpers.ToQuantity.ComparatorQuantityNotSupported', 'Error', 'FHIR Quantity value has a comparator and cannot be converted to a System.Quantity value.') when quantity.system is null or quantity.system.value = 'http://unitsofmeasure.org' or quantity.system.value = 'http://hl7.org/fhirpath/CodeSystem/calendar-units' then System.Quantity { value: quantity.value.value, unit: ToCalendarUnit(Coalesce(quantity.code.value, quantity.unit.value, '1')) } else Message(null, true, 'FHIRHelpers.ToQuantity.InvalidFHIRQuantity', 'Error', 'Invalid FHIR Quantity code: ' & quantity.unit.value & ' (' & quantity.system.value & '|' & quantity.code.value & ')') end
/* @description: Converts a UCUM definite duration unit to a CQL calendar duration unit using conversions specified in the [quantities](https://cql.hl7.org/02-authorsguide.html#quantities) topic of the CQL specification. @comment: Note that for durations above days (or weeks), the conversion is understood to be approximate */ define function ToCalendarUnit(unit System.String): case unit when 'ms' then 'millisecond' when 's' then 'second' when 'min' then 'minute' when 'h' then 'hour' when 'd' then 'day' when 'wk' then 'week' when 'mo' then 'month' when 'a' then 'year' else unit end
define function ToString(value ObservationStatus): value.value
define function "CalendarAgeInYearsAt"(BirthDateTime DateTime, AsOf DateTime): years between ToDate(BirthDateTime)and ToDate(AsOf)
define function "ToDate"(Value DateTime): DateTime(year from Value, month from Value, day from Value, 0, 0, 0, 0, timezoneoffset from Value)
define function ToString(value EncounterStatus): value.value
define function ToString(value uri): value.value
/* @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 }
/* @description: Converts the given FHIR [Coding](https://hl7.org/fhir/datatypes.html#Coding) value to a CQL Code. */ define function ToCode(coding FHIR.Coding): if coding is null then null else System.Code { code: coding.code.value, system: coding.system.value, version: coding.version.value, display: coding.display.value }
define function ToString(value ServiceRequestIntent): value.value
define function "Prevalence Period"(condition Condition): Interval[start of "Normalize Interval"(condition.onset), end of "Normalize Abatement"(condition))
define function "Normalize Abatement"(condition Condition): if condition.abatement is FHIR.dateTime then Interval[FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime), FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime)] else if condition.abatement is FHIR.Period then FHIRHelpers.ToInterval(condition.abatement as FHIR.Period) else if condition.abatement is FHIR.string then Message(null as Interval<DateTime>, true, '1', 'Error', 'Cannot compute an interval from a String value') else if condition.abatement is FHIR.Age then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age) + 1 year) else if condition.abatement is FHIR.Range then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).low), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).high) + 1 year) else if condition.abatement is FHIR.boolean then Interval[end of "Normalize Interval"(condition.onset), condition.recordedDate) else null
define function ToString(value string): value.value
Value set Fecal Occult Blood Test (FOBT)
Value set Preventive Care Services - Established Office Visit, 18 and Up
Value set Preventive Care Services-Initial Office Visit, 18 and Up
Value set Care Services in Long-Term Residential Facility
HL7 International / Clinical Quality Information