Metadata Title Preventive Care and Screening: Screening for High Blood Pressure and Follow-Up Documented Version 0.0.001 Short Name High Blood Pressure Screening GUID (Version Independent) http://example.org/fhir/us/cqm/Measure/HBPComponent GUID (Version Specific) http://example.org/fhir/us/cqm/Measure/22v11 Identifier urn:oid:2.16.840.1.113883.4.642.40.61.29.11 Effective Period 2022-01-01 through 2022-12-31 Experimental true Use Context Clinical Venue = EC Jurisdiction Global (Whole world) Steward (Publisher) HL7 International / Clinical Quality Information Description This is an example only. Measure Basis Encounter Measure Scoring Proportion Measure Type Process Improvement Notation Increased score indicates improvement Measure Group (Rate) (ID: primary) Initial Population ID: primary-hbpcomponent-initial-population Description: No description provided Criteria: Initial Population Denominator ID: primary-hbpcomponent-denominator Description: No description provided Criteria: Denominator Denominator Exclusion ID: primary-hbpcomponent-denominator-exclusion Description: No description provided Criteria: Denominator Exclusions Denominator Exception ID: primary-hbpcomponent-denominator-exception Description: No description provided Criteria: Denominator Exceptions Numerator ID: primary-hbpcomponent-numerator Description: No description provided Criteria: Numerator Supplemental Data Guidance This guidance provides instructions on how to collect and report supplemental data elements for this measure. Supplemental Data Elements Supplemental Data Element ID: cd02ebb6-a0bf-4196-90f9-80f2a8a79bbf Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Ethnicity Supplemental Data Element ID: a67a3fc7-cedd-4d78-b7b0-4718fa7f3e2b Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Payer Supplemental Data Element ID: 3dc8840d-cc30-44af-a233-3b2b6c602060 Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Race Supplemental Data Element ID: 5a4e95aa-f8b3-400f-89b3-02555a361251 Usage Code: Supplemental Data Description: No description provided Logic Definition: SDE Sex Measure Logic Primary Library HBP Component Library Contents Population Criteria Logic Definitions Terminology Dependencies Data Requirements Population Criteria Measure Group (Rate) (ID: primary) Initial Population define "Initial Population": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [Patient] BirthDate such that Global."CalendarAgeInYearsAt" ( FHIRHelpers.ToDate ( BirthDate.birthDate ), start of "Measurement Period" ) >= 18 Definition Denominator define "Denominator": "Initial Population" Definition Denominator Exclusion define "Denominator Exclusions": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [Condition: "Diagnosis of Hypertension"] Hypertension such that Global."Prevalence Period" ( Hypertension ) overlaps before QualifyingEncounter.period Definition Denominator Exception define "Denominator Exceptions": "Encounter with Medical Reason for Not Obtaining or Patient Declined Blood Pressure Measurement" union "Encounter with Order for Hypertension Follow Up Declined by Patient" Definition Numerator define "Numerator": "Encounter with Normal Blood Pressure Reading" union ( "Encounter with Prehypertensive Blood Pressure Reading" intersect ( ( "Encounter with Order for Intervention for Hypertension" intersect "Encounter with Order for Follow Up Within One Year" ) union "Encounter with Referral to Alternate Provider for High Blood Pressure Reading" ) ) union ( "Encounter with First Hypertensive Reading" intersect ( ( "Encounter with Order for Intervention for Hypertension" intersect "Encounter with Order for Follow Up Within 4 Weeks" ) union "Encounter with Referral to Alternate Provider for High Blood Pressure Reading" ) ) union ( "Encounter with Second Hypertensive Reading" intersect ( ( "Encounter with Order for Intervention for Hypertension" intersect ( "Encounter with Order for Laboratory Test for Hypertension" union "Encounter with Order for Electrocardiogram for Hypertension" union "Encounter with Order for Hypertension Medication" ) ) union "Encounter with Referral to Alternate Provider for High Blood Pressure Reading" ) ) Definition 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: MATGlobalCommonFunctions define function "CalendarAgeInYearsAt"(BirthDateTime DateTime, AsOf DateTime): years between ToDate(BirthDateTime)and ToDate(AsOf) Logic Definition Library Name: MATGlobalCommonFunctions define function "ToDate"(Value DateTime): DateTime(year from Value, month from Value, day from Value, 0, 0, 0, 0, timezoneoffset from Value) Logic Definition Library Name: MATGlobalCommonFunctions define function "Prevalence Period"(condition Condition): Interval[start of "Normalize Interval"(condition.onset), end of "Normalize Abatement"(condition)) Logic Definition Library Name: MATGlobalCommonFunctions define function "Normalize Abatement"(condition Condition): if condition.abatement is FHIR.dateTime then Interval[FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime), FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime)] else if condition.abatement is FHIR.Period then FHIRHelpers.ToInterval(condition.abatement as FHIR.Period) else if condition.abatement is FHIR.string then Message(null as Interval<DateTime>, true, '1', 'Error', 'Cannot compute an interval from a String value') else if condition.abatement is FHIR.Age then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age) + 1 year) else if condition.abatement is FHIR.Range then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).low), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).high) + 1 year) else if condition.abatement is FHIR.boolean then Interval[end of "Normalize Interval"(condition.onset), condition.recordedDate) else null Logic Definition Library Name: HBPComponent define "SDE Sex": SDE."SDE Sex" Logic Definition Library Name: HBPComponent define "Qualifying Encounter During Measurement Period": [Encounter: "Encounter to Screen for Blood Pressure"] ValidEncounter where ValidEncounter.period during "Measurement Period" Logic Definition Library Name: HBPComponent define "Encounter with Normal Blood Pressure Reading": "Qualifying Encounter During Measurement Period" QualifyingEncounter let EncounterLastSystolicBP: Last([Observation: "Systolic blood pressure"] SystolicBP where SystolicBP.effective during QualifyingEncounter.period sort by effective ), EncounterLastDiastolicBP: Last([Observation: "Diastolic blood pressure"] DiastolicBP where DiastolicBP.effective during QualifyingEncounter.period sort by effective ) where EncounterLastSystolicBP.value included in Interval[1 'mm[Hg]', 120 'mm[Hg]' ) and EncounterLastDiastolicBP.value included in Interval[1 'mm[Hg]', 80 'mm[Hg]' ) Logic Definition Library Name: HBPComponent define "Encounter with Prehypertensive Blood Pressure Reading": "Qualifying Encounter During Measurement Period" QualifyingEncounter let EncounterLastSystolicBP: Last([Observation: "Systolic blood pressure"] SystolicBP where SystolicBP.effective during QualifyingEncounter.period sort by effective ), EncounterLastDiastolicBP: Last([Observation: "Diastolic blood pressure"] DiastolicBP where DiastolicBP.effective during QualifyingEncounter.period sort by effective ) where EncounterLastSystolicBP.value included in Interval[1 'mm[Hg]', 140 'mm[Hg]' ) and EncounterLastDiastolicBP.value included in Interval[1 'mm[Hg]', 90 'mm[Hg]' ) and ( EncounterLastSystolicBP.value >= 120 'mm[Hg]' or EncounterLastDiastolicBP.value >= 80 'mm[Hg]' ) Logic Definition Library Name: HBPComponent define "Encounter with Order for Intervention for Hypertension": "Qualifying Encounter During Measurement Period" QualifyingEncounter with ( [ServiceRequest: "Lifestyle Recommendation"] union [ServiceRequest: "Weight Reduction Recommended"] union [ServiceRequest: "Dietary Recommendations"] union [ServiceRequest: "Recommendation to Increase Physical Activity"] union [ServiceRequest: "Referral or Counseling for Alcohol Consumption"] ) HighBloodPressureIntervention such that HighBloodPressureIntervention.authoredOn same day as start of QualifyingEncounter.period Logic Definition Library Name: HBPComponent define "Encounter with Order for Follow Up Within One Year": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [ServiceRequest: "Follow Up Within One Year"] FollowupOneYear such that FollowupOneYear.authoredOn same day as start of QualifyingEncounter.period Logic Definition Library Name: HBPComponent define "Encounter with Referral to Alternate Provider for High Blood Pressure Reading": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [ServiceRequest: "Referral to Primary Care or Alternate Provider"] Referral such that Referral.authoredOn same day as start of QualifyingEncounter.period and Referral.reasonCode in "Finding of Elevated Blood Pressure or Hypertension" Logic Definition Library Name: HBPComponent define "Encounter with High Blood Pressure Reading": "Qualifying Encounter During Measurement Period" QualifyingEncounter let EncounterLastSystolicBP: Last([Observation: "Systolic blood pressure"] SystolicBP where SystolicBP.effective during QualifyingEncounter.period sort by effective ), EncounterLastDiastolicBP: Last([Observation: "Diastolic blood pressure"] DiastolicBP where DiastolicBP.effective during QualifyingEncounter.period sort by effective ) where EncounterLastSystolicBP.value > 0 'mm[Hg]' and EncounterLastDiastolicBP.value > 0 'mm[Hg]' and ( EncounterLastSystolicBP.value >= 140 'mm[Hg]' or EncounterLastDiastolicBP.value >= 90 'mm[Hg]' ) Logic Definition Library Name: HBPComponent define "Encounter with High Blood Pressure Reading Within Year Prior": "Qualifying Encounter During Measurement Period" QualifyingEncounter let EncounterLastSystolicBP: Last([Observation: "Systolic blood pressure"] SystolicBP where SystolicBP.effective 1 year or less before start of QualifyingEncounter.period sort by effective ), EncounterLastDiastolicBP: Last([Observation: "Diastolic blood pressure"] DiastolicBP where DiastolicBP.effective 1 year or less before start of QualifyingEncounter.period sort by effective ) where EncounterLastSystolicBP.value > 0 'mm[Hg]' and EncounterLastDiastolicBP.value > 0 'mm[Hg]' and ( EncounterLastSystolicBP.value >= 140 'mm[Hg]' or EncounterLastDiastolicBP.value >= 90 'mm[Hg]' ) Logic Definition Library Name: HBPComponent define "Encounter with First Hypertensive Reading": "Encounter with High Blood Pressure Reading" except "Encounter with High Blood Pressure Reading Within Year Prior" Logic Definition Library Name: HBPComponent define "Encounter with Order for Follow Up Within 4 Weeks": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [ServiceRequest: "Follow Up Within 4 Weeks"] Followup4Weeks such that Followup4Weeks.authoredOn same day as start of QualifyingEncounter.period Logic Definition Library Name: HBPComponent define "Encounter with Second Hypertensive Reading": "Encounter with High Blood Pressure Reading" intersect "Encounter with High Blood Pressure Reading Within Year Prior" Logic Definition Library Name: HBPComponent define "Encounter with Order for Laboratory Test for Hypertension": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [ServiceRequest: "Laboratory Tests for Hypertension"] HypertensionLabs such that HypertensionLabs.authoredOn same day as start of QualifyingEncounter.period Logic Definition Library Name: HBPComponent define "Encounter with Order for Electrocardiogram for Hypertension": "Qualifying Encounter During Measurement Period" QualifyingEncounter with ( [ServiceRequest: "12 lead EKG panel"] union [ServiceRequest: "EKG study"] ) ECG such that ECG.authoredOn same day as start of QualifyingEncounter.period Logic Definition Library Name: HBPComponent define "Encounter with Order for Hypertension Medication": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [MedicationRequest: "Pharmacologic Therapy for Hypertension"] AntihypertensiveMedication such that AntihypertensiveMedication.authoredOn same day as start of QualifyingEncounter.period Logic Definition Library Name: HBPComponent define "Numerator": "Encounter with Normal Blood Pressure Reading" union ( "Encounter with Prehypertensive Blood Pressure Reading" intersect ( ( "Encounter with Order for Intervention for Hypertension" intersect "Encounter with Order for Follow Up Within One Year" ) union "Encounter with Referral to Alternate Provider for High Blood Pressure Reading" ) ) union ( "Encounter with First Hypertensive Reading" intersect ( ( "Encounter with Order for Intervention for Hypertension" intersect "Encounter with Order for Follow Up Within 4 Weeks" ) union "Encounter with Referral to Alternate Provider for High Blood Pressure Reading" ) ) union ( "Encounter with Second Hypertensive Reading" intersect ( ( "Encounter with Order for Intervention for Hypertension" intersect ( "Encounter with Order for Laboratory Test for Hypertension" union "Encounter with Order for Electrocardiogram for Hypertension" union "Encounter with Order for Hypertension Medication" ) ) union "Encounter with Referral to Alternate Provider for High Blood Pressure Reading" ) ) Logic Definition Library Name: HBPComponent define "Initial Population": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [Patient] BirthDate such that Global."CalendarAgeInYearsAt" ( FHIRHelpers.ToDate ( BirthDate.birthDate ), start of "Measurement Period" ) >= 18 Logic Definition Library Name: HBPComponent define "Denominator": "Initial Population" Logic Definition Library Name: HBPComponent define "SDE Payer": SDE."SDE Payer" Logic Definition Library Name: HBPComponent define "SDE Ethnicity": SDE."SDE Ethnicity" Logic Definition Library Name: HBPComponent define "Denominator Exclusions": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [Condition: "Diagnosis of Hypertension"] Hypertension such that Global."Prevalence Period" ( Hypertension ) overlaps before QualifyingEncounter.period Logic Definition Library Name: HBPComponent define "SDE Race": SDE."SDE Race" Logic Definition Library Name: HBPComponent define "Encounter with Medical Reason for Not Obtaining or Patient Declined Blood Pressure Measurement": "Qualifying Encounter During Measurement Period" QualifyingEncounter with ( [Observation: "Systolic blood pressure"] union [Observation: "Diastolic blood pressure"] ) NoBPScreen such that ( NoBPScreen.code in "Medical Reason" or NoBPScreen.code in "Patient Declined" ) and NoBPScreen.effective same day as start of QualifyingEncounter.period and "Not Done"(NoBPScreen) and NoBPScreen.status = 'final' Logic Definition Library Name: HBPComponent define "Encounter with Order for Hypertension Follow Up Declined by Patient": "Qualifying Encounter During Measurement Period" QualifyingEncounter with ( [ServiceRequest: "12 lead EKG panel"] union [ServiceRequest: "EKG study"] union [ServiceRequest: "Follow Up Within One Year"] union [ServiceRequest: "Follow Up Within 4 Weeks"] union [ServiceRequest: "Referral to Primary Care or Alternate Provider"] union [ServiceRequest: "Lifestyle Recommendation"] union [ServiceRequest: "Weight Reduction Recommended"] union [ServiceRequest: "Dietary Recommendations"] union [ServiceRequest: "Recommendation to Increase Physical Activity"] union [ServiceRequest: "Referral or Counseling for Alcohol Consumption"] union [ServiceRequest: "Laboratory Tests for Hypertension"] union [MedicationRequest: "Pharmacologic Therapy for Hypertension"] ) NoFollowUpOrdered such that NoFollowUpOrdered.doNotPerform is true and NoFollowUpOrdered.code in "Patient Declined" and NoFollowUpOrdered.authoredOn same day as start of QualifyingEncounter.period Logic Definition Library Name: HBPComponent define "Denominator Exceptions": "Encounter with Medical Reason for Not Obtaining or Patient Declined Blood Pressure Measurement" union "Encounter with Order for Hypertension Follow Up Declined by Patient" Logic Definition Library Name: HBPComponent define function "Not Done"(res DomainResource ): if ( res R where ( "GetModiferExtension"(R, 'http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-notDone').value = true ) ) is not null then true else false Logic Definition Library Name: HBPComponent define function "GetModiferExtension"(res DomainResource, url String ): singleton from "GetModifierExtensions"(res, url) Logic Definition Library Name: HBPComponent define function "GetModifierExtensions"(res DomainResource, url String ): res.modifierExtension E where E.url = ( url ) return E Logic Definition Library Name: FHIRHelpers define function ToString(value AdministrativeGender): value.value Logic Definition Library Name: FHIRHelpers /* @description: Converts the given [Period](https://hl7.org/fhir/datatypes.html#Period) value to a CQL DateTime Interval @comment: If the start value of the given period is unspecified, the starting boundary of the resulting interval will be open (meaning the start of the interval is unknown, as opposed to interpreted as the beginning of time). */ define function ToInterval(period FHIR.Period): if period is null then null else if period."start" is null then Interval(period."start".value, period."end".value] else Interval[period."start".value, period."end".value] Logic Definition Library Name: FHIRHelpers define function ToDateTime(value 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 [Range](https://hl7.org/fhir/datatypes.html#Range) value to a CQL Interval of Quantity */ define function ToInterval(range FHIR.Range): if range is null then null else Interval[ToQuantity(range.low), ToQuantity(range.high)] 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 /* @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 string): value.value Logic Definition Library Name: FHIRHelpers define function ToDate(value date): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value uri): value.value Logic Definition Library Name: FHIRHelpers define function ToBoolean(value boolean): value.value Logic Definition Library Name: FHIRHelpers define function ToString(value ObservationStatus): value.value Terminology 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 to Screen for Blood Pressure Resource: Encounter to Screen for Blood Pressure Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1920 Value Set Description: Value set Lifestyle Recommendation Resource: Lifestyle Recommendation Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1581 Value Set Description: Value set Weight Reduction Recommended Resource: Weight Reduction Recommended Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1510 Value Set Description: Value set Dietary Recommendations Resource: Dietary Recommendations Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1515 Value Set Description: Value set Recommendation to Increase Physical Activity Resource: Recommendation to Increase Physical Activity Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1518 Value Set Description: Value set Referral or Counseling for Alcohol Consumption Resource: Referral or Counseling for Alcohol Consumption Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1583 Value Set Description: Value set Follow Up Within One Year Resource: Follow Up Within One Year Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1579 Value Set Description: Value set Referral to Primary Care or Alternate Provider Resource: Referral to Primary Care or Alternate Provider Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1580 Value Set Description: Value set Finding of Elevated Blood Pressure or Hypertension Resource: Finding of Elevated Blood Pressure or Hypertension Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.514 Value Set Description: Value set Follow Up Within 4 Weeks Resource: Follow Up Within 4 Weeks Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1578 Value Set Description: Value set Laboratory Tests for Hypertension Resource: Laboratory Tests for Hypertension Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1482 Value Set Description: Value set Pharmacologic Therapy for Hypertension Resource: Pharmacologic Therapy for Hypertension Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.1577 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 Diagnosis of Hypertension Resource: Diagnosis of Hypertension Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.263 Value Set Description: Value set Medical Reason Resource: Medical Reason Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1007 Value Set Description: Value set Patient Declined Resource: Patient Declined Canonical URL: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1582 Direct Reference Code Display: Systolic blood pressure Code: 8480-6 System: http://loinc.org Direct Reference Code Display: Diastolic blood pressure Code: 8462-4 System: http://loinc.org Direct Reference Code Display: 12 lead EKG panel Code: 34534-8 System: http://loinc.org Direct Reference Code Display: EKG study Code: 11524-6 System: http://loinc.org Dependencies Dependency Description: Library SDE Resource: Supplemental Data Elementsversion: null2.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 Libraryversion: null5.0.000) Canonical URL: http://hl7.org/fhir/uv/cqm/Library/MATGlobalCommonFunctions|5.0.000 Data Requirements Data Requirement Type: Patient Profile(s): Patient Must Support Elements: birthDate, url, extension, value Data Requirement Type: Encounter Profile(s): Encounter Must Support Elements: type, period Code Filter(s): Path: type ValueSet: Encounter to Screen for Blood Pressure Data Requirement Type: Observation Profile(s): Observation Must Support Elements: code, effective, status, value Code Filter(s): Path: code Code(s): LOINC: 8480-6 (Systolic blood pressure) Data Requirement Type: Observation Profile(s): Observation Must Support Elements: code, effective, status, value Code Filter(s): Path: code Code(s): LOINC: 8462-4 (Diastolic blood pressure) Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code Code(s): LOINC: 34534-8 (12 lead EKG panel) Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code Code(s): LOINC: 11524-6 (EKG study) Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code ValueSet: Follow Up Within One Year Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code ValueSet: Follow Up Within 4 Weeks Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn, reasonCode Code Filter(s): Path: code ValueSet: Referral to Primary Care or Alternate Provider Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code ValueSet: Lifestyle Recommendation Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code ValueSet: Weight Reduction Recommended Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code ValueSet: Dietary Recommendations Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code ValueSet: Recommendation to Increase Physical Activity Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code ValueSet: Referral or Counseling for Alcohol Consumption Data Requirement Type: ServiceRequest Profile(s): ServiceRequest Must Support Elements: code, authoredOn Code Filter(s): Path: code ValueSet: Laboratory Tests for Hypertension Data Requirement Type: MedicationRequest Profile(s): MedicationRequest Must Support Elements: medication, authoredOn Code Filter(s): Path: medication ValueSet: Pharmacologic Therapy for Hypertension Data Requirement Type: MedicationRequest Profile(s): MedicationRequest Must Support Elements: medication.reference, authoredOn Data Requirement Type: Medication Profile(s): Medication Must Support Elements: id, code Data Requirement Type: Coverage Profile(s): Coverage Must Support Elements: type, period Code Filter(s): Path: type ValueSet: Payer Type Data Requirement Type: Condition Profile(s): Condition Must Support Elements: code Code Filter(s): Path: code ValueSet: Diagnosis of Hypertension Generated using version 0.4.9 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
Qualifying Encounter During Measurement Period
define "Qualifying Encounter During Measurement Period": [Encounter: "Encounter to Screen for Blood Pressure"] ValidEncounter where ValidEncounter.period during "Measurement Period"
Encounter with Normal Blood Pressure Reading
define "Encounter with Normal Blood Pressure Reading": "Qualifying Encounter During Measurement Period" QualifyingEncounter let EncounterLastSystolicBP: Last([Observation: "Systolic blood pressure"] SystolicBP where SystolicBP.effective during QualifyingEncounter.period sort by effective ), EncounterLastDiastolicBP: Last([Observation: "Diastolic blood pressure"] DiastolicBP where DiastolicBP.effective during QualifyingEncounter.period sort by effective ) where EncounterLastSystolicBP.value included in Interval[1 'mm[Hg]', 120 'mm[Hg]' ) and EncounterLastDiastolicBP.value included in Interval[1 'mm[Hg]', 80 'mm[Hg]' )
Encounter with Prehypertensive Blood Pressure Reading
define "Encounter with Prehypertensive Blood Pressure Reading": "Qualifying Encounter During Measurement Period" QualifyingEncounter let EncounterLastSystolicBP: Last([Observation: "Systolic blood pressure"] SystolicBP where SystolicBP.effective during QualifyingEncounter.period sort by effective ), EncounterLastDiastolicBP: Last([Observation: "Diastolic blood pressure"] DiastolicBP where DiastolicBP.effective during QualifyingEncounter.period sort by effective ) where EncounterLastSystolicBP.value included in Interval[1 'mm[Hg]', 140 'mm[Hg]' ) and EncounterLastDiastolicBP.value included in Interval[1 'mm[Hg]', 90 'mm[Hg]' ) and ( EncounterLastSystolicBP.value >= 120 'mm[Hg]' or EncounterLastDiastolicBP.value >= 80 'mm[Hg]' )
Encounter with Order for Intervention for Hypertension
define "Encounter with Order for Intervention for Hypertension": "Qualifying Encounter During Measurement Period" QualifyingEncounter with ( [ServiceRequest: "Lifestyle Recommendation"] union [ServiceRequest: "Weight Reduction Recommended"] union [ServiceRequest: "Dietary Recommendations"] union [ServiceRequest: "Recommendation to Increase Physical Activity"] union [ServiceRequest: "Referral or Counseling for Alcohol Consumption"] ) HighBloodPressureIntervention such that HighBloodPressureIntervention.authoredOn same day as start of QualifyingEncounter.period
Encounter with Order for Follow Up Within One Year
define "Encounter with Order for Follow Up Within One Year": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [ServiceRequest: "Follow Up Within One Year"] FollowupOneYear such that FollowupOneYear.authoredOn same day as start of QualifyingEncounter.period
Encounter with Referral to Alternate Provider for High Blood Pressure Reading
define "Encounter with Referral to Alternate Provider for High Blood Pressure Reading": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [ServiceRequest: "Referral to Primary Care or Alternate Provider"] Referral such that Referral.authoredOn same day as start of QualifyingEncounter.period and Referral.reasonCode in "Finding of Elevated Blood Pressure or Hypertension"
Encounter with High Blood Pressure Reading
define "Encounter with High Blood Pressure Reading": "Qualifying Encounter During Measurement Period" QualifyingEncounter let EncounterLastSystolicBP: Last([Observation: "Systolic blood pressure"] SystolicBP where SystolicBP.effective during QualifyingEncounter.period sort by effective ), EncounterLastDiastolicBP: Last([Observation: "Diastolic blood pressure"] DiastolicBP where DiastolicBP.effective during QualifyingEncounter.period sort by effective ) where EncounterLastSystolicBP.value > 0 'mm[Hg]' and EncounterLastDiastolicBP.value > 0 'mm[Hg]' and ( EncounterLastSystolicBP.value >= 140 'mm[Hg]' or EncounterLastDiastolicBP.value >= 90 'mm[Hg]' )
Encounter with High Blood Pressure Reading Within Year Prior
define "Encounter with High Blood Pressure Reading Within Year Prior": "Qualifying Encounter During Measurement Period" QualifyingEncounter let EncounterLastSystolicBP: Last([Observation: "Systolic blood pressure"] SystolicBP where SystolicBP.effective 1 year or less before start of QualifyingEncounter.period sort by effective ), EncounterLastDiastolicBP: Last([Observation: "Diastolic blood pressure"] DiastolicBP where DiastolicBP.effective 1 year or less before start of QualifyingEncounter.period sort by effective ) where EncounterLastSystolicBP.value > 0 'mm[Hg]' and EncounterLastDiastolicBP.value > 0 'mm[Hg]' and ( EncounterLastSystolicBP.value >= 140 'mm[Hg]' or EncounterLastDiastolicBP.value >= 90 'mm[Hg]' )
Encounter with First Hypertensive Reading
define "Encounter with First Hypertensive Reading": "Encounter with High Blood Pressure Reading" except "Encounter with High Blood Pressure Reading Within Year Prior"
Encounter with Order for Follow Up Within 4 Weeks
define "Encounter with Order for Follow Up Within 4 Weeks": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [ServiceRequest: "Follow Up Within 4 Weeks"] Followup4Weeks such that Followup4Weeks.authoredOn same day as start of QualifyingEncounter.period
Encounter with Second Hypertensive Reading
define "Encounter with Second Hypertensive Reading": "Encounter with High Blood Pressure Reading" intersect "Encounter with High Blood Pressure Reading Within Year Prior"
Encounter with Order for Laboratory Test for Hypertension
define "Encounter with Order for Laboratory Test for Hypertension": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [ServiceRequest: "Laboratory Tests for Hypertension"] HypertensionLabs such that HypertensionLabs.authoredOn same day as start of QualifyingEncounter.period
Encounter with Order for Electrocardiogram for Hypertension
define "Encounter with Order for Electrocardiogram for Hypertension": "Qualifying Encounter During Measurement Period" QualifyingEncounter with ( [ServiceRequest: "12 lead EKG panel"] union [ServiceRequest: "EKG study"] ) ECG such that ECG.authoredOn same day as start of QualifyingEncounter.period
Encounter with Order for Hypertension Medication
define "Encounter with Order for Hypertension Medication": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [MedicationRequest: "Pharmacologic Therapy for Hypertension"] AntihypertensiveMedication such that AntihypertensiveMedication.authoredOn same day as start of QualifyingEncounter.period
define "Numerator": "Encounter with Normal Blood Pressure Reading" union ( "Encounter with Prehypertensive Blood Pressure Reading" intersect ( ( "Encounter with Order for Intervention for Hypertension" intersect "Encounter with Order for Follow Up Within One Year" ) union "Encounter with Referral to Alternate Provider for High Blood Pressure Reading" ) ) union ( "Encounter with First Hypertensive Reading" intersect ( ( "Encounter with Order for Intervention for Hypertension" intersect "Encounter with Order for Follow Up Within 4 Weeks" ) union "Encounter with Referral to Alternate Provider for High Blood Pressure Reading" ) ) union ( "Encounter with Second Hypertensive Reading" intersect ( ( "Encounter with Order for Intervention for Hypertension" intersect ( "Encounter with Order for Laboratory Test for Hypertension" union "Encounter with Order for Electrocardiogram for Hypertension" union "Encounter with Order for Hypertension Medication" ) ) union "Encounter with Referral to Alternate Provider for High Blood Pressure Reading" ) )
define "Initial Population": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [Patient] BirthDate such that Global."CalendarAgeInYearsAt" ( FHIRHelpers.ToDate ( BirthDate.birthDate ), start of "Measurement Period" ) >= 18
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 "Denominator Exclusions": "Qualifying Encounter During Measurement Period" QualifyingEncounter with [Condition: "Diagnosis of Hypertension"] Hypertension such that Global."Prevalence Period" ( Hypertension ) overlaps before QualifyingEncounter.period
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
Encounter with Medical Reason for Not Obtaining or Patient Declined Blood Pressure Measurement
define "Encounter with Medical Reason for Not Obtaining or Patient Declined Blood Pressure Measurement": "Qualifying Encounter During Measurement Period" QualifyingEncounter with ( [Observation: "Systolic blood pressure"] union [Observation: "Diastolic blood pressure"] ) NoBPScreen such that ( NoBPScreen.code in "Medical Reason" or NoBPScreen.code in "Patient Declined" ) and NoBPScreen.effective same day as start of QualifyingEncounter.period and "Not Done"(NoBPScreen) and NoBPScreen.status = 'final'
Encounter with Order for Hypertension Follow Up Declined by Patient
define "Encounter with Order for Hypertension Follow Up Declined by Patient": "Qualifying Encounter During Measurement Period" QualifyingEncounter with ( [ServiceRequest: "12 lead EKG panel"] union [ServiceRequest: "EKG study"] union [ServiceRequest: "Follow Up Within One Year"] union [ServiceRequest: "Follow Up Within 4 Weeks"] union [ServiceRequest: "Referral to Primary Care or Alternate Provider"] union [ServiceRequest: "Lifestyle Recommendation"] union [ServiceRequest: "Weight Reduction Recommended"] union [ServiceRequest: "Dietary Recommendations"] union [ServiceRequest: "Recommendation to Increase Physical Activity"] union [ServiceRequest: "Referral or Counseling for Alcohol Consumption"] union [ServiceRequest: "Laboratory Tests for Hypertension"] union [MedicationRequest: "Pharmacologic Therapy for Hypertension"] ) NoFollowUpOrdered such that NoFollowUpOrdered.doNotPerform is true and NoFollowUpOrdered.code in "Patient Declined" and NoFollowUpOrdered.authoredOn same day as start of QualifyingEncounter.period
define "Denominator Exceptions": "Encounter with Medical Reason for Not Obtaining or Patient Declined Blood Pressure Measurement" union "Encounter with Order for Hypertension Follow Up Declined by Patient"
define function ToString(value AdministrativeGender): value.value
/* @description: Converts the given [Period](https://hl7.org/fhir/datatypes.html#Period) value to a CQL DateTime Interval @comment: If the start value of the given period is unspecified, the starting boundary of the resulting interval will be open (meaning the start of the interval is unknown, as opposed to interpreted as the beginning of time). */ define function ToInterval(period FHIR.Period): if period is null then null else if period."start" is null then Interval(period."start".value, period."end".value] else Interval[period."start".value, period."end".value]
define function ToDateTime(value dateTime): value.value
define function ToDateTime(value instant): value.value
/* @description: Converts the given FHIR [Range](https://hl7.org/fhir/datatypes.html#Range) value to a CQL Interval of Quantity */ define function ToInterval(range FHIR.Range): if range is null then null else Interval[ToQuantity(range.low), ToQuantity(range.high)]
/* @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
/* @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 string): value.value
define function "CalendarAgeInYearsAt"(BirthDateTime DateTime, AsOf DateTime): years between ToDate(BirthDateTime)and ToDate(AsOf)
define function "ToDate"(Value DateTime): DateTime(year from Value, month from Value, day from Value, 0, 0, 0, 0, timezoneoffset from Value)
define function ToDate(value date): value.value
define function ToString(value uri): value.value
define function "Prevalence Period"(condition Condition): Interval[start of "Normalize Interval"(condition.onset), end of "Normalize Abatement"(condition))
define function "Normalize Abatement"(condition Condition): if condition.abatement is FHIR.dateTime then Interval[FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime), FHIRHelpers.ToDateTime(condition.abatement as FHIR.dateTime)] else if condition.abatement is FHIR.Period then FHIRHelpers.ToInterval(condition.abatement as FHIR.Period) else if condition.abatement is FHIR.string then Message(null as Interval<DateTime>, true, '1', 'Error', 'Cannot compute an interval from a String value') else if condition.abatement is FHIR.Age then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity(condition.abatement as FHIR.Age) + 1 year) else if condition.abatement is FHIR.Range then Interval[FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).low), FHIRHelpers.ToDate(Patient.birthDate) + FHIRHelpers.ToQuantity((condition.abatement as FHIR.Range).high) + 1 year) else if condition.abatement is FHIR.boolean then Interval[end of "Normalize Interval"(condition.onset), condition.recordedDate) else null
define function "Not Done"(res DomainResource ): if ( res R where ( "GetModiferExtension"(R, 'http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-notDone').value = true ) ) is not null then true else false
define function ToBoolean(value boolean): value.value
define function "GetModiferExtension"(res DomainResource, url String ): singleton from "GetModifierExtensions"(res, url)
define function "GetModifierExtensions"(res DomainResource, url String ): res.modifierExtension E where E.url = ( url ) return E
define function ToString(value ObservationStatus): value.value
Value set Encounter to Screen for Blood Pressure
Value set Recommendation to Increase Physical Activity
Value set Referral or Counseling for Alcohol Consumption
Value set Referral to Primary Care or Alternate Provider
Value set Finding of Elevated Blood Pressure or Hypertension
Value set Laboratory Tests for Hypertension
Value set Pharmacologic Therapy for Hypertension
This guidance provides instructions on how to collect and report supplemental data elements for this measure.
Preventive Care and Screening: Screening for High Blood Pressure and Follow-Up Documented
HL7 International / Clinical Quality Information