HBP Component Library |
0.0.001 |
urn:oid:2.16.840.1.113883.4.642.40.61.28.23 |
true |
Global (Whole world) |
HL7 International / Clinical Quality Information |
Preventive Care and Screening: Screening for High Blood Pressure and Follow-Up Documented
|
Logic Library |
Name: Measurement Period
Use: In
Min Cardinality: 0
Max Cardinality: 1
Type: Period
|
Name: Patient
Use: Out
Min Cardinality: 0
Max Cardinality: 1
Type: Patient
|
Name: SDE Ethnicity
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Coding
|
Name: SDE Payer
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Resource
|
Name: SDE Race
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Coding
|
Name: SDE Sex
Use: Out
Min Cardinality: 0
Max Cardinality: 1
Type: Coding
|
Name: Qualifying Encounter During Measurement Period
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with High Blood Pressure Reading
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with High Blood Pressure Reading Within Year Prior
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Second Hypertensive Reading
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Normal Blood Pressure Reading
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Prehypertensive Blood Pressure Reading
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Order for Intervention for Hypertension
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Order for Follow Up Within One Year
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Referral to Alternate Provider for High Blood Pressure Reading
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with First Hypertensive Reading
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Order for Follow Up Within 4 Weeks
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Order for Laboratory Test for Hypertension
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Order for Electrocardiogram for Hypertension
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Order for Hypertension Medication
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Numerator
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Initial Population
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Order for Hypertension Follow Up Declined by Patient
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Encounter with Medical Reason for Not Obtaining or Patient Declined Blood Pressure Measurement
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Denominator Exceptions
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Denominator Exclusions
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Name: Denominator
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: Encounter
|
Type: Patient
Profile(s):
Patient
Must Support Elements: birthDate
|
Type: Encounter
Profile(s):
Encounter
Must Support Elements: type, period
Code Filter(s):
Path: type
ValueSet: Encounter to Screen for Blood Pressure
|
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
|
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
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn
Code Filter(s):
Path: code
Code(s):
LOINC 34534-8: 12 lead EKG panel
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn
Code Filter(s):
Path: code
Code(s):
LOINC 11524-6: EKG study
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn
Code Filter(s):
Path: code
ValueSet: Follow Up Within One Year
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn
Code Filter(s):
Path: code
ValueSet: Follow Up Within 4 Weeks
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn, reasonCode
Code Filter(s):
Path: code
ValueSet: Referral to Primary Care or Alternate Provider
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn
Code Filter(s):
Path: code
ValueSet: Lifestyle Recommendation
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn
Code Filter(s):
Path: code
ValueSet: Weight Reduction Recommended
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn
Code Filter(s):
Path: code
ValueSet: Dietary Recommendations
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn
Code Filter(s):
Path: code
ValueSet: Recommendation to Increase Physical Activity
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn
Code Filter(s):
Path: code
ValueSet: Referral or Counseling for Alcohol Consumption
|
Type: ServiceRequest
Profile(s):
ServiceRequest
Must Support Elements: code, authoredOn
Code Filter(s):
Path: code
ValueSet: Laboratory Tests for Hypertension
|
Type: MedicationRequest
Profile(s):
MedicationRequest
Must Support Elements: medication, authoredOn
Code Filter(s):
Path: medication
ValueSet: Pharmacologic Therapy for Hypertension
|
Type: MedicationRequest
Profile(s):
MedicationRequest
Must Support Elements: medication.reference, authoredOn
|
Type: Medication
Profile(s):
Medication
Must Support Elements: id, code
|
Type: Condition
Profile(s):
Condition
Must Support Elements: code
Code Filter(s):
Path: code
ValueSet: Diagnosis of Hypertension
|
/*
This example is a work in progress and should not be considered a final specification
or recommendation for guidance. This example will help guide and direct the process
of finding conventions and usage patterns that meet the needs of the various stakeholders
in the measure development community.
*/
library HBPComponent version '0.0.001'
using FHIR version '4.0.1'
include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers
include SupplementalDataElements version '2.0.000' called SDE
include MATGlobalCommonFunctions version '5.0.000' called Global
codesystem "LOINC": 'http://loinc.org'
valueset "Diagnosis of Hypertension": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.263'
valueset "Dietary Recommendations": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1515'
valueset "Encounter to Screen for Blood Pressure": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1920'
valueset "Ethnicity": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837'
valueset "Finding of Elevated Blood Pressure or Hypertension": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.514'
valueset "Follow Up Within 4 Weeks": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1578'
valueset "Follow Up Within One Year": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1579'
valueset "Laboratory Tests for Hypertension": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1482'
valueset "Lifestyle Recommendation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1581'
valueset "Medical Reason": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1007'
valueset "ONC Administrative Sex": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1'
valueset "Patient Declined": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1582'
valueset "Pharmacologic Therapy for Hypertension": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.1577'
valueset "Recommendation to Increase Physical Activity": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1518'
valueset "Referral or Counseling for Alcohol Consumption": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1583'
valueset "Referral to Primary Care or Alternate Provider": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1580'
valueset "Weight Reduction Recommended": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1510'
code "Birth date": '21112-8' from "LOINC" display 'Birth date'
code "Diastolic blood pressure": '8462-4' from "LOINC" display 'Diastolic blood pressure'
code "12 lead EKG panel": '34534-8' from "LOINC" display '12 lead EKG panel'
code "EKG study": '11524-6' from "LOINC" display 'EKG study'
code "Systolic blood pressure": '8480-6' from "LOINC" display 'Systolic blood pressure'
parameter "Measurement Period" Interval<DateTime>
context Patient
define "SDE Ethnicity":
SDE."SDE Ethnicity"
define "SDE Payer":
SDE."SDE Payer"
define "SDE Race":
SDE."SDE Race"
define "SDE Sex":
SDE."SDE Sex"
define "Encounter with Second Hypertensive Reading":
"Encounter with High Blood Pressure Reading"
intersect "Encounter with High Blood Pressure Reading Within Year Prior"
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 "Encounter with First Hypertensive Reading":
"Encounter with High Blood Pressure Reading"
except "Encounter with High Blood Pressure Reading Within Year Prior"
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 "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
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
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 "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
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"
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 "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'
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 "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 "Denominator":
"Initial Population"
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
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
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]'
)
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]'
)
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]' )
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]'
)
define "Qualifying Encounter During Measurement Period":
[Encounter: "Encounter to Screen for Blood Pressure"] ValidEncounter
where ValidEncounter.period during "Measurement Period"
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 "GetModifierExtensions"(res DomainResource, url String ):
res.modifierExtension E
where E.url = ( url )
return E
define function "GetModiferExtension"(res DomainResource, url String ):
singleton from "GetModifierExtensions"(res, url)
|
Encoded data (364196 characters)
|
Encoded data (654256 characters)
|