Clinical Practice Guidelines
2.0.0 - STU2 International flag

This page is part of the Clinical Guidelines (v2.0.0: STU2) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version. For a full list of available versions, see the Directory of published versions

Library: Order Medication Library (Experimental)

Official URL: http://hl7.org/fhir/uv/cpg/Library/ordermedication-library Version: 2.0.0
Active as of 2024-11-26 Computable Name: OrderMedication
Other Identifiers: OID:2.16.840.1.113883.4.642.40.48.28.12

Logic for an example recommendation to order a medication

Generated Narrative: Library ordermedication-library

Related Artifacts

Depends OnCode System Task CodesTask Codes

Parameters

Patientout01Patient
Inclusion Criteriaout01boolean
Active or Completed Medication Statementout0*MedicationStatement
Medication Statement Not Takenout0*MedicationStatement
Active or Completed Medication Administrationout0*MedicationAdministration
Medication Administration Not Doneout0*MedicationAdministration
Active or Completed Medication Dispenseout0*MedicationDispense
Medication Dispense Not Doneout0*MedicationDispense
Rejected Taskout0*Task
Medication Proposalout0*MedicationRequest
Medication Prohibitedout0*MedicationRequest
Medication Rejectedout0*MedicationRequest
Is Recommendation Applicableout01boolean

Data Requirements

Type: MedicationStatement (MedicationStatement)
Type: MedicationStatement (MedicationStatement)
Type: MedicationAdministration (MedicationAdministration)
Type: MedicationAdministration (MedicationAdministration)
Type: MedicationDispense (MedicationDispense)
Type: MedicationDispense (MedicationDispense)
Type: Task (Task)
Type: MedicationRequest (MedicationRequest)
Type: MedicationRequest (MedicationRequest)
Type: MedicationRequest (MedicationRequest)

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 )