Clinical Practice Guidelines
2.0.0 - STU2 International flag

Clinical Practice Guidelines, published by HL7 International / Clinical Decision Support. This guide is not an authorized publication; it is the continuous build for version 2.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/cqf-recommendations/ and changes regularly. 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 2026-04-29 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

Metadata
Title Order Medication Library
Version 2.0.0
Identifier urn:oid:2.16.840.1.113883.4.642.40.48.28.12
Experimental true
Jurisdiction World
Steward (Publisher) HL7 International / Clinical Decision Support
Steward Contact HL7 International / Clinical Decision Support
Description

Logic for an example recommendation to order a medication

Type logic-library from http://terminology.hl7.org/CodeSystem/library-type
Dependency Description: Code System Task Codes
Resource: Task Codes
Canonical URL: http://hl7.org/fhir/CodeSystem/task-code
Data Requirement Type: MedicationStatement
Profile(s): MedicationStatement
Data Requirement Type: MedicationAdministration
Profile(s): MedicationAdministration
Data Requirement Type: MedicationDispense
Profile(s): MedicationDispense
Data Requirement Type: Task
Profile(s): Task
Data Requirement Type: MedicationRequest
Profile(s): MedicationRequest
Parameters
Name Use Card. Type Documentation
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
Library Content
CQL Content
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"
    )
ELM XML Content
Encoded data 
ELM JSON Content
Encoded data 
Generated using version 0.5.4 of the sample-content-ig Liquid templates