Related Artifacts
Parameters
Patient | out | 0 | 1 | Patient |
Inclusion Criteria | out | 0 | 1 | boolean |
Active or Completed Medication Statement | out | 0 | * | MedicationStatement |
Medication Statement Not Taken | out | 0 | * | MedicationStatement |
Active or Completed Medication Administration | out | 0 | * | MedicationAdministration |
Medication Administration Not Done | out | 0 | * | MedicationAdministration |
Active or Completed Medication Dispense | out | 0 | * | MedicationDispense |
Medication Dispense Not Done | out | 0 | * | MedicationDispense |
Rejected Task | out | 0 | * | Task |
Medication Proposal | out | 0 | * | MedicationRequest |
Medication Prohibited | out | 0 | * | MedicationRequest |
Medication Rejected | out | 0 | * | MedicationRequest |
Is Recommendation Applicable | out | 0 | 1 | boolean |
Data Requirements
Contents
text/cql
library OrderMedication
using FHIR version '4.0.1'
include FHIRHelpers version '4.0.1'
codesystem "Task Codes": 'http://hl7.org/fhir/CodeSystem/task-code'
code "fulfill": 'fulfill' from "Task Codes" display 'Fulfill'
context Patient
/* Recommendation to order a medication */
/*
Positive recommendation:
If the medication is not being taken (i.e. dispensed, administered, or documented)
If the medication has not been ordered
Propose the medication
Given a proposal, the user can:
Accept the proposal
Ignore the proposal
Reject the proposal without reason
Reject the proposal with reason
Scenario 1: No event, no plan or proposal, decision support should propose
Scenario 2: No event, incomplete proposal, decision support should not propose
Scenario 3: No event, rejected proposal, decision support should not propose
Scenario 4: Event, no proposal, decision support should not propose
Scenario 5: Event, proposal, decision support should not propose
Scenario 6: Event not done, no proposal, decision support should not propose
Scenario 7: Event not done, proposal, decision support should not propose
*/
define "Inclusion Criteria":
Patient.active
define "Active or Completed Medication Statement":
[MedicationStatement] M
where M.status in { 'active', 'completed', 'intended', 'on-hold' }
define "Medication Statement Not Taken":
[MedicationStatement] M
where M.status in { 'not-taken', 'stopped' } // TODO: Is 'stopped' appropriate here?
define "Active or Completed Medication Administration":
[MedicationAdministration] M
where M.status in { 'in-progress', 'on-hold', 'completed' }
define "Medication Administration Not Done":
[MedicationAdministration] M
where M.status in { 'not-done', 'stopped' } // TODO: Is 'stopped' appropriate here?
define "Active or Completed Medication Dispense":
[MedicationDispense] M
where M.status in { 'preparation', 'in-progress', 'on-hold', 'completed' }
define "Medication Dispense Not Done":
[MedicationDispense] M
where M.status in { 'cancelled', 'stopped', 'declined' } // TODO: Is 'stopped' appropriate here?
define "Rejected Task":
[Task] T
where T.code ~ "fulfill"
and T.status = 'rejected'
define "Medication Proposal":
[MedicationRequest] M
without "Rejected Task" T
such that M.id = Last(Split(T.focus.reference, '/'))
where M.status in { 'draft', 'active', 'on-hold', 'completed' }
and M.doNotPerform is not true
define "Medication Prohibited":
[MedicationRequest] M
where M.status in { 'cancelled', 'stopped' }
and M.doNotPerform is true
define "Medication Rejected":
[MedicationRequest] M
with "Rejected Task" T
such that M.id = Last(Split(T.focus.reference, '/'))
where M.status = 'active'
and M.doNotPerform is not true
define "Is Recommendation Applicable":
"Inclusion Criteria"
and not exists (
"Active or Completed Medication Statement"
union "Medication Statement Not Taken"
union "Active or Completed Medication Administration"
union "Medication Administration Not Done"
union "Active or Completed Medication Dispense"
union "Medication Dispense Not Done"
)
and not exists (
"Medication Proposal"
union "Medication Prohibited"
union "Medication Rejected"
)
Content not shown - (
application/elm+xml
, size = 65Kb )
Content not shown - (
application/elm+json
, size = 119Kb )