Related Artifacts
Parameters
Patient | out | 0 | 1 | Patient |
Medication Proposal | out | 0 | * | MedicationRequest |
Medication Not Proposed | out | 0 | * | MedicationRequest |
Inclusion Criteria | out | 0 | 1 | boolean |
Active or Completed Medication Dispense | out | 0 | * | MedicationDispense |
Medication Dispense Not Done | out | 0 | * | MedicationDispense |
Dispense Proposal | out | 0 | * | Task |
Dispense Proposal Rejected | out | 0 | * | Task |
Is Recommendation Applicable | out | 0 | 1 | boolean |
Data Requirements
Contents
text/cql
library DispenseMedication
using FHIR version '4.0.1'
include FHIRHelpers version '4.0.1'
codesystem "Activity Type": 'http://hl7.org/fhir/uv/cpg/CodeSystem/cpg-activity-type-cs'
code "Dispense medication": 'dispense-medication' from "Activity Type"
context Patient
/* Recommendation to dispense an existing order for a medication */
/*
Positive recommendation:
If the medication has been ordered but has not been dispensed
Propose dispensing 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
and exists ("Medication Proposal")
and not exists ("Medication Not Proposed")
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 "Medication Proposal":
[MedicationRequest] M
where M.status in { 'draft', 'active', 'on-hold', 'completed' }
define "Medication Not Proposed":
[MedicationRequest] M
where M.status in { 'cancelled', 'stopped' }
define "Dispense Proposal":
[Task] R
where R.code ~ "Dispense medication"
and R.status in { 'draft', 'requested', 'received', 'accepted', 'ready' }
and not Coalesce(doNotPerform(R), false)
define "Dispense Proposal Rejected":
[Task] R
where R.code ~ "Dispense medication"
and R.status in { 'rejected' }
and not Coalesce(doNotPerform(R), false)
define "Is Recommendation Applicable":
"Inclusion Criteria"
and not exists (
"Active or Completed Medication Dispense"
union "Medication Dispense Not Done"
)
and not exists (
"Dispense Proposal"
union "Dispense Proposal Rejected"
)
define function doNotPerform(task Task):
singleton from (
task.modifierExtension E
where E.url = 'http://hl7.org/fhir/StructureDefinition/request-doNotPerform'
).value as boolean
Content not shown - (
application/elm+xml
, size = 42Kb)
Content not shown - (
application/elm+json
, size = 77Kb)