Metadata Title EXM108 - Venous Thromboembolism Prophylaxis Version 8.2.000 Identifier 108 Identifier urn:oid:2.16.840.1.113883.4.642.40.61.29.3 Effective Period 2018-01-01 through 2018-12-31 Approval Date 2019-03-08 Last Review Date 2019-03-08 Experimental true Use Context Clinical Venue = EH Jurisdiction 001 from http://unstats.un.org/unsd/methods/m49/m49.htm Topic Health Quality Measure Document Steward (Publisher) HL7 International / Clinical Quality Information Description This measure assesses the number of patients who received VTE prophylaxis or have documentation why no VTE prophylaxis was given the day of or the day after hospital admission or surgery end date for surgeries that start the day of or the day after hospital admission Copyright Measure specifications are in the Public Domain. LOINC(R) is a registered trademark of the Regenstrief Institute. This material contains SNOMED Clinical Terms(R) (SNOMED CT(C)) copyright 2004-2017 International Health Terminology Standards Development Organization. All rights reserved. Disclaimer These performance measures are not clinical guidelines and do not establish a standard of medical care, and have not been tested for all potential applications. The measures and specifications are provided without warranty Measure Basis Encounter Measure Scoring Proportion Improvement Notation Increased score indicates improvement Measure Type process from http://terminology.hl7.org/CodeSystem/measure-type Rationale Hospitalized patients at high-risk for VTE may develop an asymptomatic deep vein thrombosis (DVT), and die from pulmonary embolism (PE) even before the diagnosis is suspected. The majority of fatal events occur as sudden or abrupt death, underscoring the importance of prevention as the most critical action step for reducing death from PE (Geerts, et al, 2008). The estimated annual incidence of deep-vein thrombosis (DVT) and pulmonary embolism (PE), known collectively as venous thromboembolism (VTE), is approximately 900,000 (Geerts, et al, 2008). Approximately two-thirds of cases of DVT or PE are associated with recent hospitalization. This is consistent with the 2001 report by The Agency for Healthcare Research and Quality (AHRQ). AHRQ indicates that "the appropriate application of effective preventive measures in hospitals has major potential for improving patient safety by reducing the incidence of venous thromboembolism" (Shojania, 2001). Despite its proven effectiveness, rates of appropriate thromboprophylaxis remain low in both medical and surgical patients. A recent analysis from the ENDORSE survey, which evaluated prophylaxis rates in 17,084 major surgery patients, found that more than one third of patients at risk for VTE (38%) did not receive prophylaxis and that rates varied by surgery type (Cohen, et al., 2008). In a review of evidence-based patient safety practices, the Agency for Healthcare Research and Quality defined thromboprophylaxis against VTE as the "number one patient safety practice" for hospitalized patients (Shojania, 2001). Updated "safe practices" published by the National Quality Forum (NQF) recommend routine evaluation of hospitalized patients for risk of VTE and use of appropriate prophylaxis (National Quality Forum. National Voluntary Consensus Standards for Prevention and Care of Venous Thromboembolism, 2006). As noted by the ACCP, a vast number of randomized clinical trials provide irrefutable evidence that thromboprophylaxis reduces VTE events, and there are studies that have also shown that fatal PE is prevented by thromboprophylaxis (Geerts, et al. 2008). Some select surgeries have previously been monitored in the Surgical Care Improvement Project; since performance on these surgeries has achieved very high levels, they are not included in this measure. Clinical Recommendation Statement Failure to recognize and protect patients at risk for venous thromboembolism (VTE) increases the chances for acutely ill hospitalized patients at high risk for developing a deep vein thrombosis or dying from a pulmonary emboli. Screening all patients is the only evidence based practice in reducing incidence of disease. All hospitalized patients should be evaluated for primary VTE prophylaxis, and given appropriate prophylaxis when indicated. Measure Group (Rate) (ID: primary) Supplemental Data Elements Supplemental Data Element Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Ethnicity Supplemental Data Element Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Payer Supplemental Data Element Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Race Supplemental Data Element Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Sex Measure Logic Primary Library EXM108 - Venous Thromboembolism Prophylaxis Library Contents Population Criteria Logic Definitions Terminology Dependencies Data Requirements Parameters Population Criteria Measure Group (Rate) (ID: primary) Logic Definitions 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: TJCOverall define function "CalendarDayOfOrDayAfter"(StartValue DateTime ): Interval(Global."ToDate"(StartValue), Global."ToDate"(StartValue + 2 days)) Logic Definition Library Name: VTEICU define function "FromDayOfStartOfHospitalizationToDayAfterAdmission"(Encounter FHIR.Encounter ): Interval[Global."ToDate"(start of Global."HospitalizationWithObservation"(Encounter)), Global."ToDate"(start of Encounter.period + 2 days)) Logic Definition Library Name: EXM108 define "SDE Sex": SDE."SDE Sex" Logic Definition Library Name: EXM108 define "Admission Without VTE or Obstetrical Conditions": Global."Inpatient Encounter" InpatientEncounter where not exists ( (Global.EncounterDiagnosis(InpatientEncounter)) EncounterDiagnosis where EncounterDiagnosis.code in "Obstetrics" or EncounterDiagnosis.code in "Venous Thromboembolism" or EncounterDiagnosis.code in "Obstetrics VTE" ) Logic Definition Library Name: EXM108 // Note: added FHIRHelpers.ToDate() in R4 define "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions": ( Global."Inpatient Encounter" InpatientEncounter where Global."CalendarAgeInYearsAt"(FHIRHelpers.ToDate(Patient.birthDate), start of InpatientEncounter.period) >= 18 ) intersect "Admission Without VTE or Obstetrical Conditions" Logic Definition Library Name: EXM108 // 10/29: Replaced DeviceUseStatement with Procedure with a new value set and procedure.usdCode for specifying devices define "VTE Prophylaxis by Medication Administered or Device Applied": ( ["MedicationAdministration": medication in "Low Dose Unfractionated Heparin for VTE Prophylaxis"] VTEMedication where VTEMedication.status ='completed' and VTEMedication.dosage.route in "Subcutaneous route" ) union (["MedicationAdministration": medication in "Low Molecular Weight Heparin for VTE Prophylaxis"] LMWH where LMWH.status = 'completed') union (["MedicationAdministration": medication in "Injectable Factor Xa Inhibitor for VTE Prophylaxis"] FactorXa where FactorXa.status = 'completed') union (["MedicationAdministration": medication in "Warfarin"] Warfarin where Warfarin.status = 'completed') union ( ["Procedure": "Device Application"] DeviceApplied where DeviceApplied.status = 'complete' and (DeviceApplied.usedCode in "Intermittent pneumatic compression devices (IPC)" or DeviceApplied.usedCode in"Venous foot pumps (VFP)" or DeviceApplied.usedCode in "Graduated compression stockings (GCS)" ) ) Logic Definition Library Name: EXM108 define "Encounter With VTE Prophylaxis Received on Day of or Day After Admission or Procedure": ( from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, "VTE Prophylaxis by Medication Administered or Device Applied" VTEProphylaxis where Coalesce(Global."Normalize Interval"(VTEProphylaxis.effective), Global."Normalize Interval"(VTEProphylaxis.performed)) starts during TJC."CalendarDayOfOrDayAfter"(start of QualifyingEncounter.period) return QualifyingEncounter ) union ( from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "VTE Prophylaxis by Medication Administered or Device Applied" VTEProphylaxis where Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Coalesce(Global."Normalize Interval"(VTEProphylaxis.effective), Global."Normalize Interval"(VTEProphylaxis.performed)) starts during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter ) Logic Definition Library Name: EXM108 define "Encounter With Medication Oral Factor Xa Inhibitor Administered on Day of or Day After Admission or Procedure": ( from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["MedicationAdministration": medication in "Oral Factor Xa Inhibitor for VTE Prophylaxis or VTE Treatment"] FactorXaMedication where FactorXaMedication.status = 'completed' and Global."Normalize Interval"(FactorXaMedication.effective) starts during TJC."CalendarDayOfOrDayAfter"(start of QualifyingEncounter.period) return QualifyingEncounter ) union ( from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, ["MedicationAdministration": medication in "Oral Factor Xa Inhibitor for VTE Prophylaxis or VTE Treatment"] FactorXaMedication where FactorXaMedication.status = 'completed' and AnesthesiaProcedure.status = 'completed' and Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Global."Normalize Interval"(FactorXaMedication.effective) starts during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter ) Logic Definition Library Name: EXM108 define "Encounter With Prior or Present Diagnosis of Atrial Fibrillation or VTE": ( "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with ["Condition": code in "Atrial Fibrillation/Flutter"] AtrialFibrillation such that FHIRHelpers.ToConcept(AtrialFibrillation.clinicalStatus) in { Global."active", Global."recurrence", Global."relapse" } and Global."Normalize Interval"(AtrialFibrillation.onset) starts on or before end of QualifyingEncounter.period ) union ( "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter where Global.EncounterDiagnosis(QualifyingEncounter).code in "Atrial Fibrillation/Flutter" ) union ( "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with ["Condition": code in "Venous Thromboembolism"] VTEDiagnosis such that FHIRHelpers.ToConcept(VTEDiagnosis.clinicalStatus) in { Global."inactive", Global."remission", Global."resolved" } //and VTEDiagnosis.verificationStatus = 'confirmed' and Global."Normalize Interval"(VTEDiagnosis.onset) before start of QualifyingEncounter.period ) Logic Definition Library Name: EXM108 define "Encounter With Prior or Present Procedure of Hip or Knee Replacement Surgery": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with ( ["Procedure": "Hip Replacement Surgery"] union ["Procedure": "Knee Replacement Surgery"] ) HipKneeProcedure such that HipKneeProcedure.status = 'completed' and Global."Normalize Interval"(HipKneeProcedure.performed) starts on or before end of QualifyingEncounter.period Logic Definition Library Name: EXM108 define "Is In Low Risk for VTE or On Anticoagulant": ( ["Observation": "Risk for venous thromboembolism"] VTERiskAssessment where VTERiskAssessment.value in "Low Risk" and VTERiskAssessment.status in {'final','amended', 'corrected'} ) union ( ["Observation": "INR"] INRLabTest where INRLabTest.value as Quantity > 3.0 and INRLabTest.status in {'final','amended', 'corrected'} return "Observation" { id: INRLabTest.id, effective: INRLabTest.issued } ) union ((( ["MedicationAdministration": "Unfractionated Heparin"] UnfractionatedHeparin where UnfractionatedHeparin.dosage.route in "Intravenous route" ) union ["MedicationAdministration": "Direct Thrombin Inhibitor"] union ["MedicationAdministration": "Glycoprotein IIb/IIIa Inhibitors"] ) AnticoagulantMedication where AnticoagulantMedication.status = 'complete' return "Observation" { id: AnticoagulantMedication.id, effective: AnticoagulantMedication.effective } ) Logic Definition Library Name: EXM108 define "Low Risk for VTE or Anticoagulant Administered From Day of Start of Hospitalization To Day After Admission": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with "Is In Low Risk for VTE or On Anticoagulant" VTERiskAssessment such that Global."Normalize Interval"(VTERiskAssessment.effective) starts during VTEICU."FromDayOfStartOfHospitalizationToDayAfterAdmission"(QualifyingEncounter) Logic Definition Library Name: EXM108 define "Low Risk for VTE or Anticoagulant Administered on Day of or Day After Procedure": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "Is In Low Risk for VTE or On Anticoagulant" VTERiskAssessment where Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Global."Normalize Interval"(VTERiskAssessment.effective) starts during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter Logic Definition Library Name: EXM108 define "Encounter With Low Risk for VTE or Anticoagulant Administered": "Low Risk for VTE or Anticoagulant Administered From Day of Start of Hospitalization To Day After Admission" union "Low Risk for VTE or Anticoagulant Administered on Day of or Day After Procedure" Logic Definition Library Name: EXM108 define "No VTE Prophylaxis Medication Administered or Ordered": (( ["MedicationAdministration": medication in "Low Dose Unfractionated Heparin for VTE Prophylaxis"] union ["MedicationAdministration": medication in "Low Molecular Weight Heparin for VTE Prophylaxis"] union ["MedicationAdministration": medication in "Injectable Factor Xa Inhibitor for VTE Prophylaxis"] union ["MedicationAdministration": medication in "Warfarin"] ) MedicationAdm where MedicationAdm.status = 'not-done' ) union (( ["MedicationRequest": medication in "Low Dose Unfractionated Heparin for VTE Prophylaxis"] union ["MedicationRequest": medication in "Low Molecular Weight Heparin for VTE Prophylaxis"] union ["MedicationRequest": medication in "Injectable Factor Xa Inhibitor for VTE Prophylaxis"] union ["MedicationRequest": medication in "Warfarin"] ) MedicationOrder where MedicationOrder.doNotPerform is true and MedicationOrder.status in {'completed', 'cancelled'} //11/5 discussion: all expressions for QI-Core must include a status. //Therefore, we need ServiceRequest.status = completed; and MedicationRequest.status = cancelled (or completed, since cancelled indicates it was once ordered but intentionally never filled). //So the not done issue is handled by ServiceRequest.doNotPerform = True Or MedicationRequest.doNotPerform = True ) Logic Definition Library Name: EXM108 define "No VTE Prophylaxis Medication Due to Medical Reason From Day of Start of Hospitalization To Day After Admission": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with "No VTE Prophylaxis Medication Administered or Ordered" NoVTEMedication such that Coalesce(NoVTEMedication.statusReason,NoVTEMedication.reasonCode) in "Medical Reason" and Coalesce(NoVTEMedication.authoredOn, start of Global."Normalize Interval"(NoVTEMedication.effective)) during VTEICU."FromDayOfStartOfHospitalizationToDayAfterAdmission"(QualifyingEncounter) Logic Definition Library Name: EXM108 define "No VTE Prophylaxis Device Applied or Ordered": (( ["ServiceRequest": "Venous foot pumps (VFP)"] union ["ServiceRequest": "Intermittent pneumatic compression devices (IPC)"] union ["ServiceRequest": "Graduated compression stockings (GCS)"] ) DeviceOrder where DeviceOrder.status = 'completed' and DeviceOrder.doNotPerform is true return {id: DeviceOrder.id, requestStatusReason: GetStatusReason(DeviceOrder), authoredOn: DeviceOrder.authoredOn} ) union ( ["Procedure": "Device Application"] DeviceApplied let DeviceNotDoneTiming: Global.GetExtension(DeviceApplied, 'qicore-recorded').value where (DeviceApplied.usedCode in "Intermittent pneumatic compression devices (IPC)" or DeviceApplied.usedCode in "Venous foot pumps (VFP)" or DeviceApplied.usedCode in "Graduated compression stockings (GCS)" ) and DeviceApplied.status = 'not-done' return {id: DeviceApplied.id, requestStatusReason: DeviceApplied.statusReason, authoredOn: DeviceNotDoneTiming} ) Logic Definition Library Name: EXM108 define "No VTE Prophylaxis Device Due to Medical Reason From Day of Start of Hospitalization To Day After Admission": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with "No VTE Prophylaxis Device Applied or Ordered" NoVTEDevice such that NoVTEDevice.requestStatusReason in "Medical Reason" and NoVTEDevice.authoredOn during VTEICU."FromDayOfStartOfHospitalizationToDayAfterAdmission"(QualifyingEncounter) Logic Definition Library Name: EXM108 define "No VTE Prophylaxis Medication Due to Medical Reason on Day of or Day After Procedure": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "No VTE Prophylaxis Medication Administered or Ordered" NoVTEMedication where Coalesce(NoVTEMedication.statusReason,NoVTEMedication.reasonCode) in "Medical Reason" and AnesthesiaProcedure.status = 'completed' and Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Coalesce(NoVTEMedication.authoredOn, start of Global."Normalize Interval"(NoVTEMedication.effective)) during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter Logic Definition Library Name: EXM108 define "No VTE Prophylaxis Device Due to Medical Reason on Day of or Day After Procedure": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "No VTE Prophylaxis Device Applied or Ordered" NoVTEDevice where NoVTEDevice.requestStatusReason in "Medical Reason" and AnesthesiaProcedure.status = 'completed' and Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and NoVTEDevice.authoredOn during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter Logic Definition Library Name: EXM108 define "Encounter With No VTE Prophylaxis Due to Medical Reason": ( "No VTE Prophylaxis Medication Due to Medical Reason From Day of Start of Hospitalization To Day After Admission" intersect "No VTE Prophylaxis Device Due to Medical Reason From Day of Start of Hospitalization To Day After Admission" ) union ( "No VTE Prophylaxis Medication Due to Medical Reason on Day of or Day After Procedure" intersect "No VTE Prophylaxis Device Due to Medical Reason on Day of or Day After Procedure" ) Logic Definition Library Name: EXM108 define "No VTE Prophylaxis Medication or Device Due to Patient Refusal": ( "No VTE Prophylaxis Medication Administered or Ordered" NoVTEMedication where Coalesce(NoVTEMedication.statusReason,NoVTEMedication.reasonCode) in "Patient Refusal" ) union ("No VTE Prophylaxis Device Applied or Ordered" NoVTEDevice where NoVTEDevice.requestStatusReason in "Patient Refusal" ) Logic Definition Library Name: EXM108 define "No VTE Prophylaxis Due to Patient Refusal From Day of Start of Hospitalization To Day After Admission": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with "No VTE Prophylaxis Medication or Device Due to Patient Refusal" PatientRefusal such that Coalesce(start of Global."Normalize Interval"(PatientRefusal.effective), PatientRefusal.authoredOn) during VTEICU."FromDayOfStartOfHospitalizationToDayAfterAdmission"(QualifyingEncounter) Logic Definition Library Name: EXM108 define "No VTE Prophylaxis Due to Patient Refusal on Day of or Day After Procedure": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "No VTE Prophylaxis Medication or Device Due to Patient Refusal" PatientRefusal where Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Coalesce(start of Global."Normalize Interval"(PatientRefusal.effective), PatientRefusal.authoredOn) during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter Logic Definition Library Name: EXM108 define "Encounter With No VTE Prophylaxis Due to Patient Refusal": "No VTE Prophylaxis Due to Patient Refusal From Day of Start of Hospitalization To Day After Admission" union "No VTE Prophylaxis Due to Patient Refusal on Day of or Day After Procedure" Logic Definition Library Name: EXM108 define "Numerator": "Encounter With VTE Prophylaxis Received on Day of or Day After Admission or Procedure" union ( "Encounter With Medication Oral Factor Xa Inhibitor Administered on Day of or Day After Admission or Procedure" intersect ( "Encounter With Prior or Present Diagnosis of Atrial Fibrillation or VTE" union "Encounter With Prior or Present Procedure of Hip or Knee Replacement Surgery" ) ) union "Encounter With Low Risk for VTE or Anticoagulant Administered" union "Encounter With No VTE Prophylaxis Due to Medical Reason" union "Encounter With No VTE Prophylaxis Due to Patient Refusal" Logic Definition Library Name: EXM108 define "Initial Population": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" Logic Definition Library Name: EXM108 define "Denominator": "Initial Population" Logic Definition Library Name: EXM108 define "SDE Payer": SDE."SDE Payer" Logic Definition Library Name: EXM108 define "SDE Ethnicity": SDE."SDE Ethnicity" Logic Definition Library Name: EXM108 define "Encounter Less Than 2 Days": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter where Global."LengthInDays"(QualifyingEncounter.period)< 2 Logic Definition Library Name: EXM108 define "Encounter With ICU Location Stay 1 Day or More": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter where exists ( QualifyingEncounter.location Location where Global.GetLocation(Location.location).type in "Intensive Care Unit" and Global."LengthInDays"(Location.period)>= 1 and Location.period starts during TJC."CalendarDayOfOrDayAfter"(start of QualifyingEncounter.period) ) Logic Definition Library Name: EXM108 define "Encounter With Principal Diagnosis of Mental Disorder or Stroke": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter where Global."PrincipalDiagnosis"(QualifyingEncounter).code in "Mental Health Diagnoses" or Global."PrincipalDiagnosis"(QualifyingEncounter).code in "Hemorrhagic Stroke" or Global."PrincipalDiagnosis"(QualifyingEncounter).code in "Ischemic Stroke" Logic Definition Library Name: EXM108 define "SCIP VTE Selected Surgery": ( ["Procedure": "General Surgery"] union ["Procedure": "Gynecological Surgery"] union ["Procedure": "Hip Fracture Surgery"] union ["Procedure": "Hip Replacement Surgery"] union ["Procedure": "Intracranial Neurosurgery"] union ["Procedure": "Knee Replacement Surgery"] union ["Procedure": "Urological Surgery"] ) Procedure where Procedure.status = 'completed' Logic Definition Library Name: EXM108 define "Encounter With Principal Procedure of SCIP VTE Selected Surgery": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, "SCIP VTE Selected Surgery" SelectedProcedure let EncounterProcedure: Global.GetExtension(QualifyingEncounter, 'qicore-encounter-procedure') where FHIRHelpers.ToInteger(Global.GetExtension(EncounterProcedure, 'rank').value as FHIR.positiveInt) = 1 and Global.GetId(FHIRHelpers.ToString((Global.GetExtension(EncounterProcedure, 'procedure').value as FHIR.Reference).reference)) = SelectedProcedure.id and Global."Normalize Interval"(SelectedProcedure.performed) during QualifyingEncounter.period Logic Definition Library Name: EXM108 define "Intervention Comfort Measures": (["ServiceRequest": "Comfort Measures"] P where P.intent = 'order' ) union (["Procedure": "Comfort Measures"] InterventionPerformed where InterventionPerformed.status in {'completed', 'in-progress'}) Logic Definition Library Name: EXM108 define "Encounter With Intervention Comfort Measures From Day of Start of Hospitalization To Day After Admission": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with "Intervention Comfort Measures" ComfortMeasure such that Coalesce(start of Global."Normalize Interval"(ComfortMeasure.performed), ComfortMeasure.authoredOn) during VTEICU."FromDayOfStartOfHospitalizationToDayAfterAdmission"(QualifyingEncounter) Logic Definition Library Name: EXM108 define "Encounter With Intervention Comfort Measures on Day of or Day After Procedure": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "Intervention Comfort Measures" ComfortMeasure where AnesthesiaProcedure.status = 'completed' and Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Coalesce(start of Global."Normalize Interval"(ComfortMeasure.performed), ComfortMeasure.authoredOn) during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter Logic Definition Library Name: EXM108 define "Denominator Exclusion": "Encounter Less Than 2 Days" union "Encounter With ICU Location Stay 1 Day or More" union "Encounter With Principal Diagnosis of Mental Disorder or Stroke" union "Encounter With Principal Procedure of SCIP VTE Selected Surgery" union "Encounter With Intervention Comfort Measures From Day of Start of Hospitalization To Day After Admission" union "Encounter With Intervention Comfort Measures on Day of or Day After Procedure" Logic Definition Library Name: EXM108 define "SDE Race": SDE."SDE Race" Logic Definition Library Name: EXM108 //11/5: ServiceRequest not done reason is an extension in QI-Core R4 as ServiceRequest.extension:statusReason define function GetStatusReason(requestReason ServiceRequest): Global.GetBaseExtension(requestReason, 'request-statusReason') Logic Definition Library Name: MATGlobalCommonFunctions define "Inpatient Encounter": [Encounter: "Encounter Inpatient"] EncounterInpatient where EncounterInpatient.status = 'finished' and "LengthInDays"(EncounterInpatient.period) <= 120 and EncounterInpatient.period ends during "Measurement Period" Logic Definition Library Name: MATGlobalCommonFunctions define function "LengthInDays"(Value Interval<DateTime>): difference in days between start of Value and end of Value 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 "EncounterDiagnosis"(Encounter Encounter): Encounter.diagnosis D return singleton from ([Condition] C where C.id = "GetId"(D.condition.reference)) Logic Definition Library Name: MATGlobalCommonFunctions define function "GetId"(uri String): Last(Split(uri, '/')) 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 "HospitalizationWithObservation"(TheEncounter FHIR.Encounter): TheEncounter Visit let ObsVisit: Last([Encounter: "Observation Services"] LastObs where LastObs.period ends 1 hour or less on or before start of Visit.period sort by end of period ), VisitStart: Coalesce(start of ObsVisit.period, start of Visit.period), EDVisit: Last([Encounter: "Emergency Department Visit"] LastED where LastED.period ends 1 hour or less on or before VisitStart sort by end of period ) return Interval[Coalesce(start of EDVisit.period, VisitStart), end of Visit.period] Logic Definition Library Name: MATGlobalCommonFunctions define function "GetBaseExtension"(domainResource DomainResource, url String): singleton from "GetBaseExtensions"(domainResource, url) Logic Definition Library Name: MATGlobalCommonFunctions /* NOTE: Extensions are not the preferred approach, but are used as a way to access content that is defined by extensions but not yet surfaced in the CQL model info. */ define function "GetBaseExtensions"(domainResource DomainResource, url String): domainResource.extension E where E.url = ('http://hl7.org/fhir/StructureDefinition/' + url) return E Logic Definition Library Name: MATGlobalCommonFunctions define function "GetExtension"(domainResource DomainResource, url String): singleton from "GetExtensions"(domainResource, url) Logic Definition Library Name: MATGlobalCommonFunctions /* NOTE: Extensions are not the preferred approach, but are used as a way to access content that is defined by extensions but not yet surfaced in the CQL model info. */ define function "GetExtensions"(domainResource DomainResource, url String): domainResource.extension E where E.url = ('http://hl7.org/fhir/us/qicore/StructureDefinition/' + url) return E Logic Definition Library Name: MATGlobalCommonFunctions // Returns the location for the given location reference define function GetLocation(reference Reference): singleton from ( [Location] L where L.id = GetId(reference.reference) ) Logic Definition Library Name: MATGlobalCommonFunctions // Returns the condition that is specified as the principal diagnosis for the encounter // TODO: BTR 2019-07-30: Shouldn't need the FHIRHelpers reference here, investigate define function "PrincipalDiagnosis"(Encounter Encounter): (singleton from (Encounter.diagnosis D where FHIRHelpers.ToInteger(D.rank) = 1)) PD return singleton from ([Condition] C where C.id = "GetId"(PD.condition.reference)) Logic Definition Library Name: MATGlobalCommonFunctions define function "GetExtension"(element Element, url String): singleton from "GetExtensions"(element, url) Logic Definition Library Name: MATGlobalCommonFunctions /* NOTE: Extensions are not the preferred approach, but are used as a way to access content that is defined by extensions but not yet surfaced in the CQL model info. */ define function "GetExtensions"(element Element, url String): element.extension E where E.url = (url) return E Logic Definition Library Name: FHIRHelpers define function ToString(value AdministrativeGender): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value EncounterStatus): 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 ToDate(value date): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value string): 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 MedicationAdministrationStatus): 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 define function ToDateTime(value instant): 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 ToBoolean(value boolean): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value MedicationRequestStatus): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value ServiceRequestStatus): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value uri): value.value Logic Definition Library Name: FHIRHelpers define function ToInteger(value integer): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value ServiceRequestIntent): value.value Terminology Code System Description: Code system ConditionClinicalStatusCodes Resource: Condition Clinical Status Codes Canonical URL: http://terminology.hl7.org/CodeSystem/condition-clinical Code System Description: Code system LOINC Resource: Logical Observation Identifiers, Names and Codes (LOINC) Canonical URL: http://loinc.org 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 Obstetrics Resource: Obstetrical or Pregnancy Related Conditions Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.263 Value Set Description: Value set Venous Thromboembolism Resource: Venous Thromboembolism Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.279 Value Set Description: Value set Obstetrics VTE Resource: Obstetrics VTE Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.264 Value Set Description: Value set Low Dose Unfractionated Heparin for VTE Prophylaxis Resource: Low Dose Unfractionated Heparin for VTE Prophylaxis Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.39 Value Set Description: Value set Subcutaneous route Resource: Subcutaneous route Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.223 Value Set Description: Value set Low Molecular Weight Heparin for VTE Prophylaxis Resource: Low Molecular Weight Heparin for VTE Prophylaxis Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.219 Value Set Description: Value set Injectable Factor Xa Inhibitor for VTE Prophylaxis Resource: Injectable Factor Xa Inhibitor for VTE Prophylaxis Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.211 Value Set Description: Value set Warfarin Resource: Warfarin Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.232 Value Set Description: Value set Device Application Resource: Device Application Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.48 Value Set Description: Value set Intermittent pneumatic compression devices (IPC) Resource: Intermittent pneumatic compression devices Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.214 Value Set Description: Value set Venous foot pumps (VFP) Resource: Venous foot pumps Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.230 Value Set Description: Value set Graduated compression stockings (GCS) Resource: Graduated compression stockings Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.256 Value Set Description: Value set General or Neuraxial Anesthesia Resource: General or Neuraxial Anesthesia Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.1743 Value Set Description: Value set Oral Factor Xa Inhibitor for VTE Prophylaxis or VTE Treatment Resource: Oral Factor Xa Inhibitor for VTE Prophylaxis or VTE Treatment Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.134 Value Set Description: Value set Atrial Fibrillation/Flutter Resource: Atrial Fibrillation or Flutter Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.202 Value Set Description: Value set Hip Replacement Surgery Resource: Hip Replacement Surgery Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.259 Value Set Description: Value set Knee Replacement Surgery Resource: Knee Replacement Surgery Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.261 Value Set Description: Value set Low Risk Resource: Low Risk Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.400 Value Set Description: Value set INR Resource: INR Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.213 Value Set Description: Value set Unfractionated Heparin Resource: Unfractionated Heparin Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.218 Value Set Description: Value set Intravenous route Resource: Intravenous route Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.222 Value Set Description: Value set Direct Thrombin Inhibitor Resource: Direct Thrombin Inhibitor Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.205 Value Set Description: Value set Glycoprotein IIb/IIIa Inhibitors Resource: Glycoprotein IIb IIIa Inhibitors Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.41 Value Set Description: Value set Observation Services Resource: Observation Services Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143 Value Set Description: Value set Emergency Department Visit Resource: Emergency Department Visit Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292 Value Set Description: Value set Medical Reason Resource: Medical Reason For Not Providing Treatment Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.473 Value Set Description: Value set Patient Refusal Resource: Patient Refusal Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.93 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 Intensive Care Unit Resource: Intensive Care Unit Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.23 Value Set Description: Value set Mental Health Diagnoses Resource: Mental Health Diagnoses Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1004 Value Set Description: Value set Hemorrhagic Stroke Resource: Hemorrhagic Stroke Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.212 Value Set Description: Value set Ischemic Stroke Resource: Ischemic Stroke Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.247 Value Set Description: Value set General Surgery Resource: General Surgery Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.255 Value Set Description: Value set Gynecological Surgery Resource: Gynecological Surgery Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.257 Value Set Description: Value set Hip Fracture Surgery Resource: Hip Fracture Surgery Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.258 Value Set Description: Value set Intracranial Neurosurgery Resource: Intracranial Neurosurgery Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.260 Value Set Description: Value set Urological Surgery Resource: Urological Surgery Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.272 Value Set Description: Value set Comfort Measures Resource: Comfort Measures Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/1.3.6.1.4.1.33895.1.3.0.45 Direct Reference Code Code: active System: http://terminology.hl7.org/CodeSystem/condition-clinical Direct Reference Code Code: recurrence System: http://terminology.hl7.org/CodeSystem/condition-clinical Direct Reference Code Code: relapse System: http://terminology.hl7.org/CodeSystem/condition-clinical Direct Reference Code Code: inactive System: http://terminology.hl7.org/CodeSystem/condition-clinical Direct Reference Code Code: remission System: http://terminology.hl7.org/CodeSystem/condition-clinical Direct Reference Code Code: resolved System: http://terminology.hl7.org/CodeSystem/condition-clinical Direct Reference Code Display: Risk for venous thromboembolism Code: 72136-5 System: http://loinc.org 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 TJC Resource: TJC Overall Library version: 4.0.000 Canonical URL: http://hl7.org/fhir/uv/cqm/Library/TJCOverall|4.0.000 Dependency Description: Library VTEICU Resource: VTE ICU Library version: 5.0.000 Canonical URL: http://hl7.org/fhir/uv/cqm/Library/VTEICU|5.0.000 Data Requirements Data Requirement Type: Patient Profile(s): Patient Must Support Elements: url, extension, value Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, status, period, condition, condition.reference, location, rank Code Filter(s): Path: type ValueSet: Encounter Inpatient Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, condition, condition.reference, location, rank Code Filter(s): Path: type ValueSet: Observation Services Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period, condition, condition.reference, location, rank Code Filter(s): Path: type ValueSet: Emergency Department Visit Data Requirement Type: Condition Profile(s): Condition Must Support Elements: code, clinicalStatus, onset Code Filter(s): Path: code ValueSet: Atrial Fibrillation or Flutter Data Requirement Type: Condition Profile(s): Condition Must Support Elements: code, clinicalStatus, onset Code Filter(s): Path: code ValueSet: Venous Thromboembolism Data Requirement Type: Condition Profile(s): Condition Must Support Elements: id, code Data Requirement Type: MedicationAdministration Profile(s): MedicationAdministration Must Support Elements: medication, status, effective, dosage, dosage.route, id Code Filter(s): Path: medication ValueSet: Oral Factor Xa Inhibitor for VTE Prophylaxis or VTE Treatment Data Requirement Type: MedicationAdministration Profile(s): MedicationAdministration Must Support Elements: medication, dosage, dosage.route, status, id, effective Code Filter(s): Path: medication ValueSet: Unfractionated Heparin Data Requirement Type: MedicationAdministration Profile(s): MedicationAdministration Must Support Elements: medication, dosage, dosage.route, status, id, effective Code Filter(s): Path: medication ValueSet: Direct Thrombin Inhibitor Data Requirement Type: MedicationAdministration Profile(s): MedicationAdministration Must Support Elements: medication, dosage, dosage.route, status, id, effective Code Filter(s): Path: medication ValueSet: Glycoprotein IIb IIIa Inhibitors Data Requirement Type: MedicationAdministration Profile(s): MedicationAdministration Must Support Elements: medication.reference, dosage, dosage.route, status, id, effective Data Requirement Type: MedicationAdministration Profile(s): MedicationAdministration Must Support Elements: medication, status, dosage, dosage.route, id, effective Code Filter(s): Path: medication ValueSet: Low Dose Unfractionated Heparin for VTE Prophylaxis Data Requirement Type: MedicationAdministration Profile(s): MedicationAdministration Must Support Elements: medication, status, dosage, dosage.route, id, effective Code Filter(s): Path: medication ValueSet: Low Molecular Weight Heparin for VTE Prophylaxis Data Requirement Type: MedicationAdministration Profile(s): MedicationAdministration Must Support Elements: medication, status, dosage, dosage.route, id, effective Code Filter(s): Path: medication ValueSet: Injectable Factor Xa Inhibitor for VTE Prophylaxis Data Requirement Type: MedicationAdministration Profile(s): MedicationAdministration Must Support Elements: medication, status, dosage, dosage.route, id, effective Code Filter(s): Path: medication ValueSet: Warfarin Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, usedCode, performed, id, statusReason Code Filter(s): Path: code ValueSet: Device Application Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed, id Code Filter(s): Path: code ValueSet: General Surgery Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed, id Code Filter(s): Path: code ValueSet: Gynecological Surgery Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed, id Code Filter(s): Path: code ValueSet: Hip Fracture Surgery Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed, id Code Filter(s): Path: code ValueSet: Hip Replacement Surgery Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed, id Code Filter(s): Path: code ValueSet: Intracranial Neurosurgery Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed, id Code Filter(s): Path: code ValueSet: Knee Replacement Surgery Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed, id Code Filter(s): Path: code ValueSet: Urological Surgery Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, status, performed, id Code Filter(s): Path: code ValueSet: Comfort Measures Data Requirement Type: Procedure Profile(s): Procedure Must Support Elements: code, performed, status, id Code Filter(s): Path: code ValueSet: General or Neuraxial Anesthesia Data Requirement Type: Observation Profile(s): Observation Must Support Elements: code, value, status, effective Code Filter(s): Path: code Code(s): LOINC: 72136-5 (Risk for venous thromboembolism) Data Requirement Type: Observation Profile(s): Observation Must Support Elements: code, value, status, id, issued, effective Code Filter(s): Path: code ValueSet: INR Data Requirement Type: Medication Profile(s): Medication Must Support Elements: id, code Data Requirement Type: MedicationRequest Profile(s): MedicationRequest Must Support Elements: medication, doNotPerform, status Code Filter(s): Path: medication ValueSet: Low Dose Unfractionated Heparin for VTE Prophylaxis Data Requirement Type: MedicationRequest Profile(s): MedicationRequest Must Support Elements: medication, doNotPerform, status Code Filter(s): Path: medication ValueSet: Low Molecular Weight Heparin for VTE Prophylaxis Data Requirement Type: MedicationRequest Profile(s): MedicationRequest Must Support Elements: medication, doNotPerform, status Code Filter(s): Path: medication ValueSet: Injectable Factor Xa Inhibitor for VTE Prophylaxis Data Requirement Type: MedicationRequest Profile(s): MedicationRequest Must Support Elements: medication, doNotPerform, status Code Filter(s): Path: medication ValueSet: Warfarin Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, status, doNotPerform, id, authoredOn Code Filter(s): Path: code ValueSet: Venous foot pumps Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, status, doNotPerform, id, authoredOn Code Filter(s): Path: code ValueSet: Intermittent pneumatic compression devices Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, status, doNotPerform, id, authoredOn Code Filter(s): Path: code ValueSet: Graduated compression stockings Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, intent, status, doNotPerform, id, authoredOn Code Filter(s): Path: code ValueSet: Comfort Measures Data Requirement Type: Coverage Profile(s): Coverage Must Support Elements: type, period Code Filter(s): Path: type ValueSet: Payer Type Data Requirement Type: Location Profile(s): Location Must Support Elements: id Parameters Name Use Card. Type Documentation Measurement Period In 0..1 Period SDE Sex Out 0..1 Coding Numerator Out 0..* Encounter Denominator Out 0..* Encounter SDE Payer Out 0..* Resource Initial Population Out 0..* Encounter SDE Ethnicity Out 0..* Coding Denominator Exclusion Out 0..* Resource SDE Race Out 0..* Coding Generated using version 0.5.4 of the sample-content-ig Liquid templates
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 "Inpatient Encounter": [Encounter: "Encounter Inpatient"] EncounterInpatient where EncounterInpatient.status = 'finished' and "LengthInDays"(EncounterInpatient.period) <= 120 and EncounterInpatient.period ends during "Measurement Period"
Admission Without VTE or Obstetrical Conditions
define "Admission Without VTE or Obstetrical Conditions": Global."Inpatient Encounter" InpatientEncounter where not exists ( (Global.EncounterDiagnosis(InpatientEncounter)) EncounterDiagnosis where EncounterDiagnosis.code in "Obstetrics" or EncounterDiagnosis.code in "Venous Thromboembolism" or EncounterDiagnosis.code in "Obstetrics VTE" )
Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions
// Note: added FHIRHelpers.ToDate() in R4 define "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions": ( Global."Inpatient Encounter" InpatientEncounter where Global."CalendarAgeInYearsAt"(FHIRHelpers.ToDate(Patient.birthDate), start of InpatientEncounter.period) >= 18 ) intersect "Admission Without VTE or Obstetrical Conditions"
VTE Prophylaxis by Medication Administered or Device Applied
// 10/29: Replaced DeviceUseStatement with Procedure with a new value set and procedure.usdCode for specifying devices define "VTE Prophylaxis by Medication Administered or Device Applied": ( ["MedicationAdministration": medication in "Low Dose Unfractionated Heparin for VTE Prophylaxis"] VTEMedication where VTEMedication.status ='completed' and VTEMedication.dosage.route in "Subcutaneous route" ) union (["MedicationAdministration": medication in "Low Molecular Weight Heparin for VTE Prophylaxis"] LMWH where LMWH.status = 'completed') union (["MedicationAdministration": medication in "Injectable Factor Xa Inhibitor for VTE Prophylaxis"] FactorXa where FactorXa.status = 'completed') union (["MedicationAdministration": medication in "Warfarin"] Warfarin where Warfarin.status = 'completed') union ( ["Procedure": "Device Application"] DeviceApplied where DeviceApplied.status = 'complete' and (DeviceApplied.usedCode in "Intermittent pneumatic compression devices (IPC)" or DeviceApplied.usedCode in"Venous foot pumps (VFP)" or DeviceApplied.usedCode in "Graduated compression stockings (GCS)" ) )
Encounter With VTE Prophylaxis Received on Day of or Day After Admission or Procedure
define "Encounter With VTE Prophylaxis Received on Day of or Day After Admission or Procedure": ( from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, "VTE Prophylaxis by Medication Administered or Device Applied" VTEProphylaxis where Coalesce(Global."Normalize Interval"(VTEProphylaxis.effective), Global."Normalize Interval"(VTEProphylaxis.performed)) starts during TJC."CalendarDayOfOrDayAfter"(start of QualifyingEncounter.period) return QualifyingEncounter ) union ( from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "VTE Prophylaxis by Medication Administered or Device Applied" VTEProphylaxis where Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Coalesce(Global."Normalize Interval"(VTEProphylaxis.effective), Global."Normalize Interval"(VTEProphylaxis.performed)) starts during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter )
Encounter With Medication Oral Factor Xa Inhibitor Administered on Day of or Day After Admission or Procedure
define "Encounter With Medication Oral Factor Xa Inhibitor Administered on Day of or Day After Admission or Procedure": ( from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["MedicationAdministration": medication in "Oral Factor Xa Inhibitor for VTE Prophylaxis or VTE Treatment"] FactorXaMedication where FactorXaMedication.status = 'completed' and Global."Normalize Interval"(FactorXaMedication.effective) starts during TJC."CalendarDayOfOrDayAfter"(start of QualifyingEncounter.period) return QualifyingEncounter ) union ( from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, ["MedicationAdministration": medication in "Oral Factor Xa Inhibitor for VTE Prophylaxis or VTE Treatment"] FactorXaMedication where FactorXaMedication.status = 'completed' and AnesthesiaProcedure.status = 'completed' and Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Global."Normalize Interval"(FactorXaMedication.effective) starts during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter )
Encounter With Prior or Present Diagnosis of Atrial Fibrillation or VTE
define "Encounter With Prior or Present Diagnosis of Atrial Fibrillation or VTE": ( "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with ["Condition": code in "Atrial Fibrillation/Flutter"] AtrialFibrillation such that FHIRHelpers.ToConcept(AtrialFibrillation.clinicalStatus) in { Global."active", Global."recurrence", Global."relapse" } and Global."Normalize Interval"(AtrialFibrillation.onset) starts on or before end of QualifyingEncounter.period ) union ( "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter where Global.EncounterDiagnosis(QualifyingEncounter).code in "Atrial Fibrillation/Flutter" ) union ( "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with ["Condition": code in "Venous Thromboembolism"] VTEDiagnosis such that FHIRHelpers.ToConcept(VTEDiagnosis.clinicalStatus) in { Global."inactive", Global."remission", Global."resolved" } //and VTEDiagnosis.verificationStatus = 'confirmed' and Global."Normalize Interval"(VTEDiagnosis.onset) before start of QualifyingEncounter.period )
Encounter With Prior or Present Procedure of Hip or Knee Replacement Surgery
define "Encounter With Prior or Present Procedure of Hip or Knee Replacement Surgery": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with ( ["Procedure": "Hip Replacement Surgery"] union ["Procedure": "Knee Replacement Surgery"] ) HipKneeProcedure such that HipKneeProcedure.status = 'completed' and Global."Normalize Interval"(HipKneeProcedure.performed) starts on or before end of QualifyingEncounter.period
Is In Low Risk for VTE or On Anticoagulant
define "Is In Low Risk for VTE or On Anticoagulant": ( ["Observation": "Risk for venous thromboembolism"] VTERiskAssessment where VTERiskAssessment.value in "Low Risk" and VTERiskAssessment.status in {'final','amended', 'corrected'} ) union ( ["Observation": "INR"] INRLabTest where INRLabTest.value as Quantity > 3.0 and INRLabTest.status in {'final','amended', 'corrected'} return "Observation" { id: INRLabTest.id, effective: INRLabTest.issued } ) union ((( ["MedicationAdministration": "Unfractionated Heparin"] UnfractionatedHeparin where UnfractionatedHeparin.dosage.route in "Intravenous route" ) union ["MedicationAdministration": "Direct Thrombin Inhibitor"] union ["MedicationAdministration": "Glycoprotein IIb/IIIa Inhibitors"] ) AnticoagulantMedication where AnticoagulantMedication.status = 'complete' return "Observation" { id: AnticoagulantMedication.id, effective: AnticoagulantMedication.effective } )
Low Risk for VTE or Anticoagulant Administered From Day of Start of Hospitalization To Day After Admission
define "Low Risk for VTE or Anticoagulant Administered From Day of Start of Hospitalization To Day After Admission": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with "Is In Low Risk for VTE or On Anticoagulant" VTERiskAssessment such that Global."Normalize Interval"(VTERiskAssessment.effective) starts during VTEICU."FromDayOfStartOfHospitalizationToDayAfterAdmission"(QualifyingEncounter)
Low Risk for VTE or Anticoagulant Administered on Day of or Day After Procedure
define "Low Risk for VTE or Anticoagulant Administered on Day of or Day After Procedure": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "Is In Low Risk for VTE or On Anticoagulant" VTERiskAssessment where Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Global."Normalize Interval"(VTERiskAssessment.effective) starts during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter
Encounter With Low Risk for VTE or Anticoagulant Administered
define "Encounter With Low Risk for VTE or Anticoagulant Administered": "Low Risk for VTE or Anticoagulant Administered From Day of Start of Hospitalization To Day After Admission" union "Low Risk for VTE or Anticoagulant Administered on Day of or Day After Procedure"
No VTE Prophylaxis Medication Administered or Ordered
define "No VTE Prophylaxis Medication Administered or Ordered": (( ["MedicationAdministration": medication in "Low Dose Unfractionated Heparin for VTE Prophylaxis"] union ["MedicationAdministration": medication in "Low Molecular Weight Heparin for VTE Prophylaxis"] union ["MedicationAdministration": medication in "Injectable Factor Xa Inhibitor for VTE Prophylaxis"] union ["MedicationAdministration": medication in "Warfarin"] ) MedicationAdm where MedicationAdm.status = 'not-done' ) union (( ["MedicationRequest": medication in "Low Dose Unfractionated Heparin for VTE Prophylaxis"] union ["MedicationRequest": medication in "Low Molecular Weight Heparin for VTE Prophylaxis"] union ["MedicationRequest": medication in "Injectable Factor Xa Inhibitor for VTE Prophylaxis"] union ["MedicationRequest": medication in "Warfarin"] ) MedicationOrder where MedicationOrder.doNotPerform is true and MedicationOrder.status in {'completed', 'cancelled'} //11/5 discussion: all expressions for QI-Core must include a status. //Therefore, we need ServiceRequest.status = completed; and MedicationRequest.status = cancelled (or completed, since cancelled indicates it was once ordered but intentionally never filled). //So the not done issue is handled by ServiceRequest.doNotPerform = True Or MedicationRequest.doNotPerform = True )
No VTE Prophylaxis Medication Due to Medical Reason From Day of Start of Hospitalization To Day After Admission
define "No VTE Prophylaxis Medication Due to Medical Reason From Day of Start of Hospitalization To Day After Admission": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with "No VTE Prophylaxis Medication Administered or Ordered" NoVTEMedication such that Coalesce(NoVTEMedication.statusReason,NoVTEMedication.reasonCode) in "Medical Reason" and Coalesce(NoVTEMedication.authoredOn, start of Global."Normalize Interval"(NoVTEMedication.effective)) during VTEICU."FromDayOfStartOfHospitalizationToDayAfterAdmission"(QualifyingEncounter)
No VTE Prophylaxis Device Applied or Ordered
define "No VTE Prophylaxis Device Applied or Ordered": (( ["ServiceRequest": "Venous foot pumps (VFP)"] union ["ServiceRequest": "Intermittent pneumatic compression devices (IPC)"] union ["ServiceRequest": "Graduated compression stockings (GCS)"] ) DeviceOrder where DeviceOrder.status = 'completed' and DeviceOrder.doNotPerform is true return {id: DeviceOrder.id, requestStatusReason: GetStatusReason(DeviceOrder), authoredOn: DeviceOrder.authoredOn} ) union ( ["Procedure": "Device Application"] DeviceApplied let DeviceNotDoneTiming: Global.GetExtension(DeviceApplied, 'qicore-recorded').value where (DeviceApplied.usedCode in "Intermittent pneumatic compression devices (IPC)" or DeviceApplied.usedCode in "Venous foot pumps (VFP)" or DeviceApplied.usedCode in "Graduated compression stockings (GCS)" ) and DeviceApplied.status = 'not-done' return {id: DeviceApplied.id, requestStatusReason: DeviceApplied.statusReason, authoredOn: DeviceNotDoneTiming} )
No VTE Prophylaxis Device Due to Medical Reason From Day of Start of Hospitalization To Day After Admission
define "No VTE Prophylaxis Device Due to Medical Reason From Day of Start of Hospitalization To Day After Admission": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with "No VTE Prophylaxis Device Applied or Ordered" NoVTEDevice such that NoVTEDevice.requestStatusReason in "Medical Reason" and NoVTEDevice.authoredOn during VTEICU."FromDayOfStartOfHospitalizationToDayAfterAdmission"(QualifyingEncounter)
No VTE Prophylaxis Medication Due to Medical Reason on Day of or Day After Procedure
define "No VTE Prophylaxis Medication Due to Medical Reason on Day of or Day After Procedure": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "No VTE Prophylaxis Medication Administered or Ordered" NoVTEMedication where Coalesce(NoVTEMedication.statusReason,NoVTEMedication.reasonCode) in "Medical Reason" and AnesthesiaProcedure.status = 'completed' and Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Coalesce(NoVTEMedication.authoredOn, start of Global."Normalize Interval"(NoVTEMedication.effective)) during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter
No VTE Prophylaxis Device Due to Medical Reason on Day of or Day After Procedure
define "No VTE Prophylaxis Device Due to Medical Reason on Day of or Day After Procedure": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "No VTE Prophylaxis Device Applied or Ordered" NoVTEDevice where NoVTEDevice.requestStatusReason in "Medical Reason" and AnesthesiaProcedure.status = 'completed' and Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and NoVTEDevice.authoredOn during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter
Encounter With No VTE Prophylaxis Due to Medical Reason
define "Encounter With No VTE Prophylaxis Due to Medical Reason": ( "No VTE Prophylaxis Medication Due to Medical Reason From Day of Start of Hospitalization To Day After Admission" intersect "No VTE Prophylaxis Device Due to Medical Reason From Day of Start of Hospitalization To Day After Admission" ) union ( "No VTE Prophylaxis Medication Due to Medical Reason on Day of or Day After Procedure" intersect "No VTE Prophylaxis Device Due to Medical Reason on Day of or Day After Procedure" )
No VTE Prophylaxis Medication or Device Due to Patient Refusal
define "No VTE Prophylaxis Medication or Device Due to Patient Refusal": ( "No VTE Prophylaxis Medication Administered or Ordered" NoVTEMedication where Coalesce(NoVTEMedication.statusReason,NoVTEMedication.reasonCode) in "Patient Refusal" ) union ("No VTE Prophylaxis Device Applied or Ordered" NoVTEDevice where NoVTEDevice.requestStatusReason in "Patient Refusal" )
No VTE Prophylaxis Due to Patient Refusal From Day of Start of Hospitalization To Day After Admission
define "No VTE Prophylaxis Due to Patient Refusal From Day of Start of Hospitalization To Day After Admission": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with "No VTE Prophylaxis Medication or Device Due to Patient Refusal" PatientRefusal such that Coalesce(start of Global."Normalize Interval"(PatientRefusal.effective), PatientRefusal.authoredOn) during VTEICU."FromDayOfStartOfHospitalizationToDayAfterAdmission"(QualifyingEncounter)
No VTE Prophylaxis Due to Patient Refusal on Day of or Day After Procedure
define "No VTE Prophylaxis Due to Patient Refusal on Day of or Day After Procedure": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "No VTE Prophylaxis Medication or Device Due to Patient Refusal" PatientRefusal where Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Coalesce(start of Global."Normalize Interval"(PatientRefusal.effective), PatientRefusal.authoredOn) during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter
Encounter With No VTE Prophylaxis Due to Patient Refusal
define "Encounter With No VTE Prophylaxis Due to Patient Refusal": "No VTE Prophylaxis Due to Patient Refusal From Day of Start of Hospitalization To Day After Admission" union "No VTE Prophylaxis Due to Patient Refusal on Day of or Day After Procedure"
define "Numerator": "Encounter With VTE Prophylaxis Received on Day of or Day After Admission or Procedure" union ( "Encounter With Medication Oral Factor Xa Inhibitor Administered on Day of or Day After Admission or Procedure" intersect ( "Encounter With Prior or Present Diagnosis of Atrial Fibrillation or VTE" union "Encounter With Prior or Present Procedure of Hip or Knee Replacement Surgery" ) ) union "Encounter With Low Risk for VTE or Anticoagulant Administered" union "Encounter With No VTE Prophylaxis Due to Medical Reason" union "Encounter With No VTE Prophylaxis Due to Patient Refusal"
define "Initial Population": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions"
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 "Encounter Less Than 2 Days": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter where Global."LengthInDays"(QualifyingEncounter.period)< 2
Encounter With ICU Location Stay 1 Day or More
define "Encounter With ICU Location Stay 1 Day or More": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter where exists ( QualifyingEncounter.location Location where Global.GetLocation(Location.location).type in "Intensive Care Unit" and Global."LengthInDays"(Location.period)>= 1 and Location.period starts during TJC."CalendarDayOfOrDayAfter"(start of QualifyingEncounter.period) )
Encounter With Principal Diagnosis of Mental Disorder or Stroke
define "Encounter With Principal Diagnosis of Mental Disorder or Stroke": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter where Global."PrincipalDiagnosis"(QualifyingEncounter).code in "Mental Health Diagnoses" or Global."PrincipalDiagnosis"(QualifyingEncounter).code in "Hemorrhagic Stroke" or Global."PrincipalDiagnosis"(QualifyingEncounter).code in "Ischemic Stroke"
define "SCIP VTE Selected Surgery": ( ["Procedure": "General Surgery"] union ["Procedure": "Gynecological Surgery"] union ["Procedure": "Hip Fracture Surgery"] union ["Procedure": "Hip Replacement Surgery"] union ["Procedure": "Intracranial Neurosurgery"] union ["Procedure": "Knee Replacement Surgery"] union ["Procedure": "Urological Surgery"] ) Procedure where Procedure.status = 'completed'
Encounter With Principal Procedure of SCIP VTE Selected Surgery
define "Encounter With Principal Procedure of SCIP VTE Selected Surgery": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, "SCIP VTE Selected Surgery" SelectedProcedure let EncounterProcedure: Global.GetExtension(QualifyingEncounter, 'qicore-encounter-procedure') where FHIRHelpers.ToInteger(Global.GetExtension(EncounterProcedure, 'rank').value as FHIR.positiveInt) = 1 and Global.GetId(FHIRHelpers.ToString((Global.GetExtension(EncounterProcedure, 'procedure').value as FHIR.Reference).reference)) = SelectedProcedure.id and Global."Normalize Interval"(SelectedProcedure.performed) during QualifyingEncounter.period
define "Intervention Comfort Measures": (["ServiceRequest": "Comfort Measures"] P where P.intent = 'order' ) union (["Procedure": "Comfort Measures"] InterventionPerformed where InterventionPerformed.status in {'completed', 'in-progress'})
Encounter With Intervention Comfort Measures From Day of Start of Hospitalization To Day After Admission
define "Encounter With Intervention Comfort Measures From Day of Start of Hospitalization To Day After Admission": "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter with "Intervention Comfort Measures" ComfortMeasure such that Coalesce(start of Global."Normalize Interval"(ComfortMeasure.performed), ComfortMeasure.authoredOn) during VTEICU."FromDayOfStartOfHospitalizationToDayAfterAdmission"(QualifyingEncounter)
Encounter With Intervention Comfort Measures on Day of or Day After Procedure
define "Encounter With Intervention Comfort Measures on Day of or Day After Procedure": from "Encounter With Age Range and Without VTE Diagnosis or Obstetrical Conditions" QualifyingEncounter, ["Procedure": "General or Neuraxial Anesthesia"] AnesthesiaProcedure, "Intervention Comfort Measures" ComfortMeasure where AnesthesiaProcedure.status = 'completed' and Global."Normalize Interval"(AnesthesiaProcedure.performed) ends 1 day after day of start of QualifyingEncounter.period and Coalesce(start of Global."Normalize Interval"(ComfortMeasure.performed), ComfortMeasure.authoredOn) during TJC."CalendarDayOfOrDayAfter"(end of Global."Normalize Interval"(AnesthesiaProcedure.performed)) return QualifyingEncounter
define "Denominator Exclusion": "Encounter Less Than 2 Days" union "Encounter With ICU Location Stay 1 Day or More" union "Encounter With Principal Diagnosis of Mental Disorder or Stroke" union "Encounter With Principal Procedure of SCIP VTE Selected Surgery" union "Encounter With Intervention Comfort Measures From Day of Start of Hospitalization To Day After Admission" union "Encounter With Intervention Comfort Measures on Day of or Day After Procedure"
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 EncounterStatus): value.value
define function "LengthInDays"(Value Interval<DateTime>): difference in days between start of Value and end of 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 "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 ToDate(value date): value.value
define function "EncounterDiagnosis"(Encounter Encounter): Encounter.diagnosis D return singleton from ([Condition] C where C.id = "GetId"(D.condition.reference))
define function ToString(value string): value.value
define function "GetId"(uri String): Last(Split(uri, '/'))
/* @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 MedicationAdministrationStatus): 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
define function ToDateTime(value instant): 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 "CalendarDayOfOrDayAfter"(StartValue DateTime ): Interval(Global."ToDate"(StartValue), Global."ToDate"(StartValue + 2 days))
define function ToString(value ObservationStatus): value.value
define function "FromDayOfStartOfHospitalizationToDayAfterAdmission"(Encounter FHIR.Encounter ): Interval[Global."ToDate"(start of Global."HospitalizationWithObservation"(Encounter)), Global."ToDate"(start of Encounter.period + 2 days))
define function "HospitalizationWithObservation"(TheEncounter FHIR.Encounter): TheEncounter Visit let ObsVisit: Last([Encounter: "Observation Services"] LastObs where LastObs.period ends 1 hour or less on or before start of Visit.period sort by end of period ), VisitStart: Coalesce(start of ObsVisit.period, start of Visit.period), EDVisit: Last([Encounter: "Emergency Department Visit"] LastED where LastED.period ends 1 hour or less on or before VisitStart sort by end of period ) return Interval[Coalesce(start of EDVisit.period, VisitStart), end of Visit.period]
define function ToBoolean(value boolean): value.value
define function ToString(value MedicationRequestStatus): value.value
define function ToString(value ServiceRequestStatus): value.value
//11/5: ServiceRequest not done reason is an extension in QI-Core R4 as ServiceRequest.extension:statusReason define function GetStatusReason(requestReason ServiceRequest): Global.GetBaseExtension(requestReason, 'request-statusReason')
define function "GetBaseExtension"(domainResource DomainResource, url String): singleton from "GetBaseExtensions"(domainResource, url)
/* NOTE: Extensions are not the preferred approach, but are used as a way to access content that is defined by extensions but not yet surfaced in the CQL model info. */ define function "GetBaseExtensions"(domainResource DomainResource, url String): domainResource.extension E where E.url = ('http://hl7.org/fhir/StructureDefinition/' + url) return E
define function ToString(value uri): value.value
define function "GetExtension"(domainResource DomainResource, url String): singleton from "GetExtensions"(domainResource, url)
/* NOTE: Extensions are not the preferred approach, but are used as a way to access content that is defined by extensions but not yet surfaced in the CQL model info. */ define function "GetExtensions"(domainResource DomainResource, url String): domainResource.extension E where E.url = ('http://hl7.org/fhir/us/qicore/StructureDefinition/' + url) return E
// Returns the location for the given location reference define function GetLocation(reference Reference): singleton from ( [Location] L where L.id = GetId(reference.reference) )
// Returns the condition that is specified as the principal diagnosis for the encounter // TODO: BTR 2019-07-30: Shouldn't need the FHIRHelpers reference here, investigate define function "PrincipalDiagnosis"(Encounter Encounter): (singleton from (Encounter.diagnosis D where FHIRHelpers.ToInteger(D.rank) = 1)) PD return singleton from ([Condition] C where C.id = "GetId"(PD.condition.reference))
define function ToInteger(value integer): value.value
define function "GetExtension"(element Element, url String): singleton from "GetExtensions"(element, url)
/* NOTE: Extensions are not the preferred approach, but are used as a way to access content that is defined by extensions but not yet surfaced in the CQL model info. */ define function "GetExtensions"(element Element, url String): element.extension E where E.url = (url) return E
define function ToString(value ServiceRequestIntent): value.value
Code system ConditionClinicalStatusCodes
Value set Low Dose Unfractionated Heparin for VTE Prophylaxis
Value set Low Molecular Weight Heparin for VTE Prophylaxis
Value set Injectable Factor Xa Inhibitor for VTE Prophylaxis
Value set Intermittent pneumatic compression devices (IPC)
Value set Graduated compression stockings (GCS)
Value set General or Neuraxial Anesthesia
Value set Oral Factor Xa Inhibitor for VTE Prophylaxis or VTE Treatment
Value set Glycoprotein IIb/IIIa Inhibitors
EXM108 - Venous Thromboembolism Prophylaxis
HL7 International / Clinical Quality Information
This measure assesses the number of patients who received VTE prophylaxis or have documentation why no VTE prophylaxis was given the day of or the day after hospital admission or surgery end date for surgeries that start the day of or the day after hospital admission
Measure specifications are in the Public Domain. LOINC(R) is a registered trademark of the Regenstrief Institute. This material contains SNOMED Clinical Terms(R) (SNOMED CT(C)) copyright 2004-2017 International Health Terminology Standards Development Organization. All rights reserved.
These performance measures are not clinical guidelines and do not establish a standard of medical care, and have not been tested for all potential applications. The measures and specifications are provided without warranty
Hospitalized patients at high-risk for VTE may develop an asymptomatic deep vein thrombosis (DVT), and die from pulmonary embolism (PE) even before the diagnosis is suspected. The majority of fatal events occur as sudden or abrupt death, underscoring the importance of prevention as the most critical action step for reducing death from PE (Geerts, et al, 2008). The estimated annual incidence of deep-vein thrombosis (DVT) and pulmonary embolism (PE), known collectively as venous thromboembolism (VTE), is approximately 900,000 (Geerts, et al, 2008). Approximately two-thirds of cases of DVT or PE are associated with recent hospitalization. This is consistent with the 2001 report by The Agency for Healthcare Research and Quality (AHRQ). AHRQ indicates that "the appropriate application of effective preventive measures in hospitals has major potential for improving patient safety by reducing the incidence of venous thromboembolism" (Shojania, 2001). Despite its proven effectiveness, rates of appropriate thromboprophylaxis remain low in both medical and surgical patients. A recent analysis from the ENDORSE survey, which evaluated prophylaxis rates in 17,084 major surgery patients, found that more than one third of patients at risk for VTE (38%) did not receive prophylaxis and that rates varied by surgery type (Cohen, et al., 2008). In a review of evidence-based patient safety practices, the Agency for Healthcare Research and Quality defined thromboprophylaxis against VTE as the "number one patient safety practice" for hospitalized patients (Shojania, 2001). Updated "safe practices" published by the National Quality Forum (NQF) recommend routine evaluation of hospitalized patients for risk of VTE and use of appropriate prophylaxis (National Quality Forum. National Voluntary Consensus Standards for Prevention and Care of Venous Thromboembolism, 2006). As noted by the ACCP, a vast number of randomized clinical trials provide irrefutable evidence that thromboprophylaxis reduces VTE events, and there are studies that have also shown that fatal PE is prevented by thromboprophylaxis (Geerts, et al. 2008). Some select surgeries have previously been monitored in the Surgical Care Improvement Project; since performance on these surgeries has achieved very high levels, they are not included in this measure.
Failure to recognize and protect patients at risk for venous thromboembolism (VTE) increases the chances for acutely ill hospitalized patients at high risk for developing a deep vein thrombosis or dying from a pulmonary emboli. Screening all patients is the only evidence based practice in reducing incidence of disease. All hospitalized patients should be evaluated for primary VTE prophylaxis, and given appropriate prophylaxis when indicated.
When low dose unfractionated heparin is administered for VTE Prophylaxis, the intended administration route for low dose unfractionated heparin is subcutaneous. Reasons for no pharmacological and no mechanical VTE prophylaxis must be explicitly documented by the MD/APN/PA or pharmacist and linked with VTE prophylaxis. Ambulation alone is not a sufficient reason for not administering VTE prophylaxis. In order for ambulation/patient ambulating to be considered as an acceptable reason, there needs to be explicit documentation, e.g., "patient out of bed and ambulating in halls - no VTE prophylaxis needed."
Patients age 18 and older discharged from hospital inpatient acute care without a diagnosis of venous thromboembolism (VTE) or obstetrics with a length of stay less than or equal to 120 days that ends during the measurement period
Patients who received VTE prophylaxis: - the day of or the day after hospital admission - the day of or the day after surgery end date for surgeries that end the day of or the day after hospital admission Patients who have documentation of a reason why no VTE prophylaxis was given: - between arrival and hospital admission - the day of or the day after hospital admission - the day of or the day after surgery end date (for surgeries that end the day of or the day after hospital admission)
* Patients who have a length of stay less than 2 days * Patients with comfort measures documented anytime between arrival and the day after hospital admission * Patients with comfort measures documented by the day after surgery end date for surgeries that start the day of or the day after hospital admission * Patients who are direct admits to intensive care unit (ICU), or transferred to ICU the day of or the day after hospital admission with ICU length of stay greater than or equal to one day * Patients with a principal diagnosis of mental disorders or stroke * Patients with a principal procedure of Surgical Care Improvement Project (SCIP) VTE selected surgeries