| Group |
Scoring |
Population Criteria |
Expression |
| 64ef76a356d636294b157b96 |
Group scoring:
proportion
Measure scoring:
Proportion
|
| Type: |
Process
|
| Rate Aggregation: |
This measure is intended to have one reporting rate, which aggregates the following populations into a single performance rate for reporting purposes: Population 1: All patients who were previously diagnosed with or currently have a diagnosis of clinical ASCVD, including an ASCVD procedure. Population 2: Patients aged 20 to 75 years at the beginning of the measurement period who have ever had a laboratory result of LDL-C >= 190 mg/dL or were previously diagnosed with or currently have an active diagnosis of familial hypercholesterolemia. Population 3: Patients aged 40 to 75 years at the beginning of the measurement period with an active diagnosis of Type 1 or Type 2 diabetes at any time during the measurement period. Population 4: Patients aged 40 to 75 at the beginning of the measurement period with a 10-year ASCVD risk score of > = 20 percent during the measurement period. For the purposes of this measure, a single performance rate can be calculated as follows: Performance Rate = (Numerator 1 + Numerator 2 + Numerator 3 + Numerator 4)/ [(Denominator 1 - Denominator Exclusions 1- Denominator Exceptions 1) + (Denominator 2 - Denominator Exclusions 2 - Denominator Exceptions 2) + (Denominator 3 - Denominator Exclusions 3 - Denominator Exceptions 3) + (Denominator 4 - Denominator Exclusions 4 - Denominator Exceptions 4)] |
| Improvement Notation: |
increase
|
|
|
Initial Population |
define "Initial Population 1":
exists ( "ASVCD Diagnosis or Procedure before End of Measurement Period"
union "Myocardial Infarction before End of Measurement Period"
)
and exists "Qualifying Encounter during day of Measurement Period"
|
|
|
Denominator |
define "Denominator 1":
"Initial Population 1"
|
|
|
Denominator Exclusion |
define "Denominator Exclusions":
exists ( ( [Condition: "Breastfeeding"]
union [Condition: "Rhabdomyolysis"] ) ExclusionDiagnosis
where ( ExclusionDiagnosis.isProblemListItem ( )
or ExclusionDiagnosis.isHealthConcern ( )
)
and ExclusionDiagnosis.prevalenceInterval ( ) overlaps day of "Measurement Period"
)
|
|
|
Numerator |
define "Numerator":
exists "Statin Therapy Prescribed Anytime during day of Measurement Period"
|
|
|
Denominator Exception |
define "Denominator Exceptions":
"Has Allergy to Statin"
or Hospice."Has Hospice Services"
or PalliativeCare."Has Palliative Care in the Measurement Period"
or "Has Hepatitis or Liver Disease Diagnosis"
or "Has Statin Associated Muscle Symptoms"
or "Has ESRD Diagnosis"
or "Has Adverse Reaction to Statin"
or "Has Medical Reason for Not Ordering Statin Therapy"
|
64ef76a356d636294b157b97 |
Group scoring:
proportion
Measure scoring:
Proportion
|
| Type: |
Process
|
| Rate Aggregation: |
This measure is intended to have one reporting rate, which aggregates the following populations into a single performance rate for reporting purposes:
Population 1: All patients who have an active diagnosis of clinical ASCVD or ever had an ASCVD procedure.
Population 2: Patients aged >= 20 years at the beginning of the measurement period who have ever had a laboratory result of LDL-C >= 190 mg/dL or were previously diagnosed with or currently have an active diagnosis of familial hypercholesterolemia.
Population 3: Patients aged 40 to 75 years at the beginning of the measurement period with an active diagnosis of Type 1 or Type 2 diabetes at any time during the measurement period.
For the purposes of this measure, a single performance rate can be calculated as follows:
Performance Rate = (Numerator 1 + Numerator 2 +Numerator 3)/ [(Denominator 1 - Denominator Exclusions 1- Denominator Exceptions 1) + (Denominator 2 - Denominator Exclusions 2 - Denominator Exceptions 2) +(Denominator 3 - Denominator Exclusions 3 - Denominator Exceptions 3)] |
| Improvement Notation: |
increase
|
|
|
Initial Population |
define "Initial Population 2":
"Patients Aged 20 to 75 with LDL Cholesterol Result Greater than or Equal to 190 or Hypercholesterolemia without ASCVD"
and exists "Qualifying Encounter during day of Measurement Period"
|
|
|
Denominator |
define "Denominator 2":
"Initial Population 2"
|
|
|
Denominator Exclusion |
define "Denominator Exclusions":
exists ( ( [Condition: "Breastfeeding"]
union [Condition: "Rhabdomyolysis"] ) ExclusionDiagnosis
where ( ExclusionDiagnosis.isProblemListItem ( )
or ExclusionDiagnosis.isHealthConcern ( )
)
and ExclusionDiagnosis.prevalenceInterval ( ) overlaps day of "Measurement Period"
)
|
|
|
Numerator |
define "Numerator":
exists "Statin Therapy Prescribed Anytime during day of Measurement Period"
|
|
|
Denominator Exception |
define "Denominator Exceptions":
"Has Allergy to Statin"
or Hospice."Has Hospice Services"
or PalliativeCare."Has Palliative Care in the Measurement Period"
or "Has Hepatitis or Liver Disease Diagnosis"
or "Has Statin Associated Muscle Symptoms"
or "Has ESRD Diagnosis"
or "Has Adverse Reaction to Statin"
or "Has Medical Reason for Not Ordering Statin Therapy"
|
64ef76a356d636294b157b98 |
Group scoring:
proportion
Measure scoring:
Proportion
|
| Type: |
Process
|
| Rate Aggregation: |
This measure is intended to have one reporting rate, which aggregates the following populations into a single performance rate for reporting purposes:
Population 1: All patients who have an active diagnosis of clinical ASCVD or ever had an ASCVD procedure.
Population 2: Patients aged >= 20 years at the beginning of the measurement period who have ever had a laboratory result of LDL-C >= 190 mg/dL or were previously diagnosed with or currently have an active diagnosis of familial hypercholesterolemia.
Population 3: Patients aged 40 to 75 years at the beginning of the measurement period with an active diagnosis of Type 1 or Type 2 diabetes at any time during the measurement period.
For the purposes of this measure, a single performance rate can be calculated as follows:
Performance Rate = (Numerator 1 + Numerator 2 +Numerator 3)/ [(Denominator 1 - Denominator Exclusions 1- Denominator Exceptions 1) + (Denominator 2 - Denominator Exclusions 2 - Denominator Exceptions 2) +(Denominator 3 - Denominator Exclusions 3 - Denominator Exceptions 3)] |
| Improvement Notation: |
increase
|
|
|
Initial Population |
define "Initial Population 3":
"Patients Aged 40 to 75 Years with Diabetes without ASCVD or LDL Greater than 190 or Hypercholesterolemia"
and exists "Qualifying Encounter during day of Measurement Period"
|
|
|
Denominator |
define "Denominator 3":
"Initial Population 3"
|
|
|
Denominator Exclusion |
define "Denominator Exclusions":
exists ( ( [Condition: "Breastfeeding"]
union [Condition: "Rhabdomyolysis"] ) ExclusionDiagnosis
where ( ExclusionDiagnosis.isProblemListItem ( )
or ExclusionDiagnosis.isHealthConcern ( )
)
and ExclusionDiagnosis.prevalenceInterval ( ) overlaps day of "Measurement Period"
)
|
|
|
Numerator |
define "Numerator":
exists "Statin Therapy Prescribed Anytime during day of Measurement Period"
|
|
|
Denominator Exception |
define "Denominator Exceptions":
"Has Allergy to Statin"
or Hospice."Has Hospice Services"
or PalliativeCare."Has Palliative Care in the Measurement Period"
or "Has Hepatitis or Liver Disease Diagnosis"
or "Has Statin Associated Muscle Symptoms"
or "Has ESRD Diagnosis"
or "Has Adverse Reaction to Statin"
or "Has Medical Reason for Not Ordering Statin Therapy"
|
64ef76a356d636294b157b99 |
Group scoring:
proportion
Measure scoring:
Proportion
|
| Type: |
Process
|
|
|
Initial Population |
define "Initial Population 4":
"Patients Age 40 to 75 Years and have a 10 Year CVD Risk of High without ASCVD and High LDL and Diabetes"
and exists "Qualifying Encounter during day of Measurement Period"
|
|
|
Denominator |
define "Denominator 4":
"Initial Population 4"
|
|
|
Denominator Exclusion |
define "Denominator Exclusions":
exists ( ( [Condition: "Breastfeeding"]
union [Condition: "Rhabdomyolysis"] ) ExclusionDiagnosis
where ( ExclusionDiagnosis.isProblemListItem ( )
or ExclusionDiagnosis.isHealthConcern ( )
)
and ExclusionDiagnosis.prevalenceInterval ( ) overlaps day of "Measurement Period"
)
|
|
|
Numerator |
define "Numerator":
exists "Statin Therapy Prescribed Anytime during day of Measurement Period"
|
|
|
Denominator Exception |
define "Denominator Exceptions":
"Has Allergy to Statin"
or Hospice."Has Hospice Services"
or PalliativeCare."Has Palliative Care in the Measurement Period"
or "Has Hepatitis or Liver Disease Diagnosis"
or "Has Statin Associated Muscle Symptoms"
or "Has ESRD Diagnosis"
or "Has Adverse Reaction to Statin"
or "Has Medical Reason for Not Ordering Statin Therapy"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
ASVCD Diagnosis or Procedure before End of Measurement Period |
|
define "ASVCD Diagnosis or Procedure before End of Measurement Period":
( ( [Condition: "Myocardial Infarction"]
union [Condition: "Cerebrovascular Disease Stroke or TIA"]
union [Condition: "Atherosclerosis and Peripheral Arterial Disease"]
union [Condition: "Ischemic Heart Disease or Other Related Diagnoses"]
union [Condition: "Stable and Unstable Angina"] ) ASCVDDiagnosis
where ( ASCVDDiagnosis.isProblemListItem ( )
or ASCVDDiagnosis.isHealthConcern ( )
)
and ASCVDDiagnosis.prevalenceInterval ( ) starts on or before day of end of "Measurement Period"
)
union ( ( [Procedure: "PCI"]
union [Procedure: "CABG Surgeries"]
union [Procedure: "Carotid Intervention"]
union [Procedure: "CABG or PCI Procedure"] ) ASCVDProcedure
where ASCVDProcedure.performed.toInterval ( ) starts on or before day of end of "Measurement Period"
and ASCVDProcedure.status = 'completed'
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Myocardial Infarction before End of Measurement Period |
|
define "Myocardial Infarction before End of Measurement Period":
[Condition: "Subsequent non-ST elevation (NSTEMI) myocardial infarction"] SubsequentMI
where ( SubsequentMI.isProblemListItem ( )
or SubsequentMI.isHealthConcern ( )
)
and SubsequentMI.prevalenceInterval ( ) starts on or before day of end of "Measurement Period"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Qualifying Encounter during day of Measurement Period |
|
define "Qualifying Encounter during day of Measurement Period":
( [Encounter: "Annual Wellness Visit"]
union [Encounter: "Office Visit"]
union [Encounter: "Outpatient Consultation"]
union [Encounter: "Outpatient Encounters for Preventive Care"]
union [Encounter: "Preventive Care Services Established Office Visit, 18 and Up"]
union [Encounter: "Preventive Care Services Individual Counseling"]
union [Encounter: "Preventive Care Services Initial Office Visit, 18 and Up"]
union [Encounter: "Preventive Care Services Other"] ) QualifyingEncounter
where QualifyingEncounter.period during day of "Measurement Period"
and QualifyingEncounter.status = 'finished'
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Initial Population 1 |
|
define "Initial Population 1":
exists ( "ASVCD Diagnosis or Procedure before End of Measurement Period"
union "Myocardial Infarction before End of Measurement Period"
)
and exists "Qualifying Encounter during day of Measurement Period"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Patients Aged 20 to 75 at Start of Measurement Period |
|
define "Patients Aged 20 to 75 at Start of Measurement Period":
AgeInYearsAt(date from start of "Measurement Period") in Interval[20, 75]
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
LDL Result Greater Than or Equal To 190 |
|
define "LDL Result Greater Than or Equal To 190":
[Observation: "LDL Cholesterol"] LDL190
where LDL190.value as Quantity >= 190 'mg/dL'
and LDL190.effective.toInterval ( ) starts on or before day of end of "Measurement Period"
and LDL190.status in { 'final', 'amended', 'corrected', 'appended' }
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Hypercholesterolemia Diagnosis |
|
define "Hypercholesterolemia Diagnosis":
( [Condition: "Familial Hypercholesterolemia"] Hypercholesterolemia
where ( Hypercholesterolemia.isProblemListItem ( )
or Hypercholesterolemia.isHealthConcern ( )
)
and Hypercholesterolemia.prevalenceInterval ( ) starts on or before day of end of "Measurement Period"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Patients Aged 20 to 75 with LDL Cholesterol Result Greater than or Equal to 190 or Hypercholesterolemia without ASCVD |
|
define "Patients Aged 20 to 75 with LDL Cholesterol Result Greater than or Equal to 190 or Hypercholesterolemia without ASCVD":
"Patients Aged 20 to 75 at Start of Measurement Period"
and exists ( "LDL Result Greater Than or Equal To 190"
union "Hypercholesterolemia Diagnosis"
)
and not exists ( "ASVCD Diagnosis or Procedure before End of Measurement Period" )
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Initial Population 2 |
|
define "Initial Population 2":
"Patients Aged 20 to 75 with LDL Cholesterol Result Greater than or Equal to 190 or Hypercholesterolemia without ASCVD"
and exists "Qualifying Encounter during day of Measurement Period"
|
| Library Name |
Name |
| SupplementalDataElements |
SDE Race |
|
define "SDE Race":
Patient.race R
return Tuple {
codes: R.ombCategory union R.detailed,
display: R.text
}
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
SDE Race |
|
define "SDE Race":
SDE."SDE Race"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Has Diabetes Diagnosis |
|
define "Has Diabetes Diagnosis":
exists ( [Condition: "Diabetes"] Diabetes
where ( Diabetes.isProblemListItem ( )
or Diabetes.isHealthConcern ( )
)
and Diabetes.prevalenceInterval ( ) overlaps day of "Measurement Period"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Patients Aged 40 to 75 Years with Diabetes without ASCVD or LDL Greater than 190 or Hypercholesterolemia |
|
define "Patients Aged 40 to 75 Years with Diabetes without ASCVD or LDL Greater than 190 or Hypercholesterolemia":
AgeInYearsAt(date from start of "Measurement Period") >= 40
and AgeInYearsAt(date from start of "Measurement Period") <= 75
and "Has Diabetes Diagnosis"
and ( not exists "ASVCD Diagnosis or Procedure before End of Measurement Period"
and not exists "LDL Result Greater Than or Equal To 190"
and not exists "Hypercholesterolemia Diagnosis"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Initial Population 3 |
|
define "Initial Population 3":
"Patients Aged 40 to 75 Years with Diabetes without ASCVD or LDL Greater than 190 or Hypercholesterolemia"
and exists "Qualifying Encounter during day of Measurement Period"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Ten Year CVD Risk is High |
|
define "Ten Year CVD Risk is High":
( exists ( [Observation: "Cardiovascular disease 10Y risk [Likelihood]"]
union [Observation: "Cardiovascular disease 10Y risk [Likelihood] ACC-AHA Pooled Cohort by Goff 2013"] ) AtRiskCVD
where AtRiskCVD.value as Quantity >= 20 '%'
and AtRiskCVD.effective.toInterval ( ) during day of "Measurement Period"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Patients Age 40 to 75 Years and have a 10 Year CVD Risk of High without ASCVD and High LDL and Diabetes |
|
define "Patients Age 40 to 75 Years and have a 10 Year CVD Risk of High without ASCVD and High LDL and Diabetes":
AgeInYearsAt(date from start of "Measurement Period") in Interval[40, 75]
and "Ten Year CVD Risk is High"
and not ( exists "ASVCD Diagnosis or Procedure before End of Measurement Period"
or exists "Hypercholesterolemia Diagnosis"
or exists "LDL Result Greater Than or Equal To 190"
or "Has Diabetes Diagnosis"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Initial Population 4 |
|
define "Initial Population 4":
"Patients Age 40 to 75 Years and have a 10 Year CVD Risk of High without ASCVD and High LDL and Diabetes"
and exists "Qualifying Encounter during day of Measurement Period"
|
| Library Name |
Name |
| SupplementalDataElements |
SDE Sex |
|
define "SDE Sex":
case
when Patient.gender = 'male' then "M"
when Patient.gender = 'female' then "F"
else null
end
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
SDE Sex |
|
define "SDE Sex":
SDE."SDE Sex"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Denominator 3 |
|
define "Denominator 3":
"Initial Population 3"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Statin Therapy Prescribed Anytime during day of Measurement Period |
|
define "Statin Therapy Prescribed Anytime during day of Measurement Period":
( [MedicationRequest: "Low Intensity Statin Therapy"]
union [MedicationRequest: "Moderate Intensity Statin Therapy"]
union [MedicationRequest: "High Intensity Statin Therapy"] ) StatinPrescribed
where StatinPrescribed.status in { 'active', 'completed' }
and StatinPrescribed.intent ~ 'order'
and ( StatinPrescribed.authoredOn during day of "Measurement Period"
or exists ( StatinPrescribed.dosageInstruction.timing T
where T.repeat.bounds.toInterval ( ) overlaps day of "Measurement Period"
)
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Numerator |
|
define "Numerator":
exists "Statin Therapy Prescribed Anytime during day of Measurement Period"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Denominator 2 |
|
define "Denominator 2":
"Initial Population 2"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Denominator 4 |
|
define "Denominator 4":
"Initial Population 4"
|
| Library Name |
Name |
| SupplementalDataElements |
SDE Payer |
|
define "SDE Payer":
[Coverage: type in "Payer Type"] Payer
return {
code: Payer.type,
period: Payer.period
}
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
SDE Payer |
|
define "SDE Payer":
SDE."SDE Payer"
|
| Library Name |
Name |
| SupplementalDataElements |
SDE Ethnicity |
|
define "SDE Ethnicity":
Patient.ethnicity E
return Tuple {
codes: { E.ombCategory } union E.detailed,
display: E.text
}
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
SDE Ethnicity |
|
define "SDE Ethnicity":
SDE."SDE Ethnicity"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Denominator Exclusions |
|
define "Denominator Exclusions":
exists ( ( [Condition: "Breastfeeding"]
union [Condition: "Rhabdomyolysis"] ) ExclusionDiagnosis
where ( ExclusionDiagnosis.isProblemListItem ( )
or ExclusionDiagnosis.isHealthConcern ( )
)
and ExclusionDiagnosis.prevalenceInterval ( ) overlaps day of "Measurement Period"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Denominator 1 |
|
define "Denominator 1":
"Initial Population 1"
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Has Allergy to Statin |
|
define "Has Allergy to Statin":
exists ( [AllergyIntolerance: "Statin Allergen"] StatinAllergy
where StatinAllergy.onset.toInterval ( ) overlaps day of "Measurement Period"
and StatinAllergy.clinicalStatus ~ QICoreCommon."allergy-active"
)
|
| 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 |
| PalliativeCare |
Has Palliative Care in the Measurement Period |
|
define "Has Palliative Care in the Measurement Period":
exists ((([Observation: "Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)"]).isAssessmentPerformed()) PalliativeAssessment
where PalliativeAssessment.effective.toInterval() overlaps day of "Measurement Period"
)
or exists ([Condition: "Palliative Care Diagnosis"] PalliativeDiagnosis
where PalliativeDiagnosis.prevalenceInterval() overlaps day of "Measurement Period"
)
or exists ((([Encounter: "Palliative Care Encounter"]).isEncounterPerformed()) PalliativeEncounter
where PalliativeEncounter.period.toInterval() overlaps day of "Measurement Period"
)
or exists ((([Procedure: "Palliative Care Intervention"]).isInterventionPerformed()) PalliativeIntervention
where PalliativeIntervention.performed.toInterval() overlaps day of "Measurement Period"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Has Hepatitis or Liver Disease Diagnosis |
|
define "Has Hepatitis or Liver Disease Diagnosis":
exists ( ( [Condition: "Hepatitis A"]
union [Condition: "Hepatitis B"]
union [Condition: "Liver Disease"] ) HepatitisLiverDisease
where ( HepatitisLiverDisease.isProblemListItem ( )
or HepatitisLiverDisease.isHealthConcern ( )
)
and HepatitisLiverDisease.prevalenceInterval ( ) overlaps day of "Measurement Period"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Has Statin Associated Muscle Symptoms |
|
define "Has Statin Associated Muscle Symptoms":
exists ( [Condition: "Statin Associated Muscle Symptoms"] StatinMuscleSymptom
where ( StatinMuscleSymptom.isProblemListItem ( )
or StatinMuscleSymptom.isHealthConcern ( )
)
and StatinMuscleSymptom.prevalenceInterval ( ) overlaps day of "Measurement Period"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Has ESRD Diagnosis |
|
define "Has ESRD Diagnosis":
exists ( [Condition: "End Stage Renal Disease"] ESRD
where ( ESRD.isProblemListItem ( )
or ESRD.isHealthConcern ( )
)
and ESRD.prevalenceInterval ( ) overlaps day of "Measurement Period"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Has Adverse Reaction to Statin |
|
define "Has Adverse Reaction to Statin":
exists ( [AdverseEvent: event in "Statin Allergen"] StatinReaction
where StatinReaction.recordedDate during day of "Measurement Period"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Has Medical Reason for Not Ordering Statin Therapy |
|
define "Has Medical Reason for Not Ordering Statin Therapy":
exists ( ( [MedicationNotRequested: "Low Intensity Statin Therapy"]
union [MedicationNotRequested: "Moderate Intensity Statin Therapy"]
union [MedicationNotRequested: "High Intensity Statin Therapy"] ) NoStatinTherapyOrdered
with "Qualifying Encounter during day of Measurement Period" QualifyingEncounter
such that NoStatinTherapyOrdered.authoredOn during QualifyingEncounter.period
and NoStatinTherapyOrdered.status = 'completed'
and NoStatinTherapyOrdered.reasonCode in "Medical Reason"
)
|
| Library Name |
Name |
| StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR |
Denominator Exceptions |
|
define "Denominator Exceptions":
"Has Allergy to Statin"
or Hospice."Has Hospice Services"
or PalliativeCare."Has Palliative Care in the Measurement Period"
or "Has Hepatitis or Liver Disease Diagnosis"
or "Has Statin Associated Muscle Symptoms"
or "Has ESRD Diagnosis"
or "Has Adverse Reaction to Statin"
or "Has Medical Reason for Not Ordering Statin Therapy"
|
| Library Name |
Name |
| QICoreCommon |
isProblemListItem |
|
/*
@description: Returns true if the given condition is a problem list item.
*/
define fluent function isProblemListItem(condition Condition):
exists (condition.category C
where C ~ "problem-list-item"
)
|
| 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 |
| FHIRHelpers |
ToCode |
|
/*
@description: Converts the given FHIR [Coding](https://hl7.org/fhir/datatypes.html#Coding) value to a CQL Code.
*/
define function ToCode(coding FHIR.Coding):
if coding is null then
null
else
System.Code {
code: coding.code.value,
system: coding.system.value,
version: coding.version.value,
display: coding.display.value
}
|
| Library Name |
Name |
| QICoreCommon |
isHealthConcern |
|
/*
@description: Returns true if the given condition is a health concern
*/
define fluent function isHealthConcern(condition Condition):
exists (condition.category C
where C ~ "health-concern"
)
|
| 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 |
| QICoreCommon |
abatementInterval |
|
/*
@description: Returns an interval representing the normalized abatement of a given Condition.
@comment: If the abatement element of the Condition is represented as a DateTime, the result
is an interval beginning and ending on that DateTime.
If the abatement is represented as a Quantity, the quantity is expected to be a calendar-duration and is interpreted as the age of the patient. The
result is an interval from the date the patient turned that age to immediately before one year later.
If the abatement is represented as a Quantity Interval, the quantities are expected to be calendar-durations and are interpreted as an age range during
which the abatement occurred. The result is an interval from the date the patient turned the starting age of the quantity interval, and ending immediately
before one year later than the date the patient turned the ending age of the quantity interval.
*/
define fluent function abatementInterval(condition Condition):
if condition.abatement is DateTime then
Interval[condition.abatement as DateTime, condition.abatement as DateTime]
else if condition.abatement is Quantity then
Interval[Patient.birthDate + (condition.abatement as Quantity),
Patient.birthDate + (condition.abatement as Quantity) + 1 year)
else if condition.abatement is Interval<Quantity> then
Interval[Patient.birthDate + (condition.abatement.low as Quantity),
Patient.birthDate + (condition.abatement.high as Quantity) + 1 year)
else if condition.abatement is Interval<DateTime> then
Interval[condition.abatement.low, condition.abatement.high)
else null as Interval<DateTime>
|
| Library Name |
Name |
| FHIRHelpers |
ToInterval |
|
/*
@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]
|
| Library Name |
Name |
| FHIRHelpers |
ToString |
|
define function ToString(value uri): value.value
|
| 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 |
| 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'
|