/*
NOTE: Proposed shared library content refactored to use USQualityCore 0.5.0
*/
library Status version '2.2.000'
using USQualityCore version '0.5.0'
using USCore version '6.1.0-derived'
using FHIR version '4.0.1'
include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers
include hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon
// TODO: Consider whether to refactor to use the FHIRCommon declarations here
codesystem "ObservationCategoryCodes": 'http://terminology.hl7.org/CodeSystem/observation-category'
codesystem "ConditionVerificationStatusCodes": 'http://terminology.hl7.org/CodeSystem/condition-ver-status'
code "exam": 'exam' from "ObservationCategoryCodes" display 'exam'
code "imaging": 'imaging' from "ObservationCategoryCodes" display 'imaging'
code "confirmed": 'confirmed' from ConditionVerificationStatusCodes display 'confirmed'
code "unconfirmed": 'unconfirmed' from ConditionVerificationStatusCodes display 'unconfirmed'
code "provisional": 'provisional' from ConditionVerificationStatusCodes display 'provisional'
code "differential": 'differential' from ConditionVerificationStatusCodes display 'differential'
code "entered-in-error": 'entered-in-error' from ConditionVerificationStatusCodes display 'entered-in-error'
code "refuted": 'refuted' from ConditionVerificationStatusCodes display 'refuted'
code "inactive": 'inactive' from ConditionVerificationStatusCodes display 'inactive'
code "resolved": 'resolved' from ConditionVerificationStatusCodes display 'resolved'
code "remission": 'remission' from ConditionVerificationStatusCodes display 'remission'
context Patient
// TODO: Deprecate because this is now in FHIRCommon
//Condition
/*
@description: Returns conditions in the given list that either have no verification status or have a verification status of confirmed, unconfirmed, provisional, or differential
@deprecated: Use the USCoreCommon verified function insteada
*/
define fluent function verified(conditions List<Choice<ConditionProblemsHealthConcerns, ConditionEncounterDiagnosis>>):
conditions C
where C.verificationStatus is not null implies
(C.verificationStatus ~ "confirmed"
or C.verificationStatus ~ "unconfirmed"
or C.verificationStatus ~ "provisional"
or C.verificationStatus ~ "differential"
)
//Assessment, Performed
define fluent function isAssessmentPerformed(Obs List<ObservationScreeningAssessment>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
//Device, Order - Personal Use Devices
define fluent function isDeviceOrderPersonalUseDevices(DeviceRequest List<FHIR.DeviceRequest>):
DeviceRequest D
where D.status in { 'active', 'completed' }
and D.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'}
//Diagnostic Study, Order
define fluent function isDiagnosticStudyOrder(ServiceRequest List<FHIR.ServiceRequest>):
ServiceRequest S
where S.status in { 'active', 'completed' }
and S.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'}
//Intervention, Order
define fluent function isInterventionOrder(ServiceRequest List<FHIR.ServiceRequest>):
ServiceRequest S
where S.status in { 'active', 'completed' }
and S.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'}
//Laboratory Test, Order
define fluent function isLaboratoryTestOrder(ServiceRequest List<FHIR.ServiceRequest>):
ServiceRequest S
where S.status in { 'active', 'completed' }
and S.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'}
//Diagnostic Study, Performed
define fluent function isDiagnosticStudyPerformed(Obs List<ObservationClinicalResult>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
and exists ( O.category ObservationCategory
where ( ObservationCategory ) ~ "imaging"
)
//Encounter, Performed
//General usage unless required otherwise by measure intent (e.g., follow-up encounters)
define fluent function isEncounterPerformed(Enc List<FHIR.Encounter>):
Enc E
where E.status = 'finished'
//Immunization, Administered
define fluent function isImmunizationAdministered(Immunization List<FHIR.Immunization>):
Immunization I
where I.status ~ 'completed'
//Intervention, Performed
define fluent function isInterventionPerformed(Proc List<FHIR.Procedure>):
Proc P
where P.status ~ 'completed'
//Procedure, Performed
define fluent function isProcedurePerformed(Proc List<FHIR.Procedure>):
Proc P
where P.status ~ 'completed'
//Laboratory Test, Performed
define fluent function isLaboratoryTestPerformed(Obs List<LaboratoryResultObservation>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
//Medication, Active
define fluent function isMedicationActive(MedicationRequest List<FHIR.MedicationRequest>):
MedicationRequest M
where M.status = 'active'
and M.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'}
//Medication, Dispensed
define fluent function isMedicationDispensed(Med List<FHIR.MedicationDispense>):
Med M
where M.status in { 'completed', 'in-progress', 'on-hold' }
//Medication, Order
define fluent function isMedicationOrder(MedicationRequest List<FHIR.MedicationRequest>):
MedicationRequest M
where M.status in { 'active', 'completed' }
and M.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'}
//Physical Exam, Performed
define fluent function isPhysicalExamPerformed(Obs List<ObservationClinicalResult>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
and exists ( O.category ObservationCategory
where ( ObservationCategory ) ~ "exam"
)
//Observation Vital Signs
define fluent function isObservationBP(Obs List<BloodPressureProfile>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
define fluent function isObservationBodyHeight(Obs List<BodyHeightProfile>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
define fluent function isObservationBodyWeight(Obs List<BodyWeightProfile>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
define fluent function isObservationBMI(Obs List<BMIProfile>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
//Observation Pediatric BMI
define fluent function isObservationPediatricBMI(Obs List<PediatricBMIforAgeObservationProfile>):
Obs O
where O.status in { 'final', 'amended', 'corrected' }
//Observation Smoking Status
define fluent function isObservationSmokingStatus(Obs List<SmokingStatusProfile>):
Obs O
where O.status = 'final'
//Symptom
define fluent function isSymptom(Obs List<SimpleObservation>):
Obs O
where O.status in { 'preliminary', 'final', 'amended', 'corrected' }
|