Common CQL Artifacts for FHIR (US-Based)
1.0.0 - Informative 1 United States of America flag

Common CQL Artifacts for FHIR (US-Based), published by HL7 International / Clinical Decision Support. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/us-cql-ig/ and changes regularly. See the Directory of published versions

Library: Cumulative Medication Duration Tests (Experimental)

Official URL: http://hl7.org/fhir/us/cql/Library/CumulativeMedicationDurationTests Version: 1.0.0
Standards status: Informative Maturity Level: 3 Computable Name: CumulativeMedicationDurationTests

This library provides tests for the cumulative medication duration calculation logic for use with FHIR medication prescription, administration, and dispensing resources.

Metadata
Title Cumulative Medication Duration Tests
Version 1.0.0
Experimental true
Jurisdiction United States of America
Topic FHIR
Topic CQL
Topic Medication
Topic Cumulative Medication Duration
Topic Unit Tests
Steward (Publisher) HL7 International / Clinical Decision Support
Description

This library provides tests for the cumulative medication duration calculation logic for use with FHIR medication prescription, administration, and dispensing resources.

Type logic-library from http://terminology.hl7.org/CodeSystem/library-type
Dependency Description: Library FHIRHelpers
Resource: http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.1
Canonical URL: http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.1
Dependency Description: Library CMD
Resource: Cumulative Medication Duration
Canonical URL: http://hl7.org/fhir/us/cql/Library/CumulativeMedicationDuration
Data Requirement Type: MedicationRequest
Profile(s): MedicationRequest
Data Requirement Type: MedicationDispense
Profile(s): MedicationDispense
Parameters
Name Use Card. Type Documentation
Patient Out 0..1 Patient
Prescriptions Out 0..* MedicationRequest
Dispenses Out 0..* MedicationDispense
PrescriptionPeriods Out 0..* Period
DispensePeriods Out 0..* Period
CumulativeDuration Out 0..1 integer
CumulativeMedicationDuration Out 0..1 integer
Library Content
CQL Content
library CumulativeMedicationDurationTests

using FHIR version '4.0.1'

include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1'

include CumulativeMedicationDuration called CMD

context Patient

/*
# Example 1:
MedicationRequest 2 tabs 3x/day   #180/2
* dosage = 2
* frequency = 3x /day (i.e., repeats / period = day)
* supply = 180
* daysSupplied = 30 days
* refills = 2

derived daysSupplied = [supply (180) / ((dosage (2) x frequency (3))] = 30
daysSuppliedWithRefills = [supply (180) x (1 + refills (2)) / ((dosage (2) x frequency (3))] = 30 x 3 = 90 days
*/

/*
## Example 1a - boundsPeriod specified

## Example 1b - expectedSupplyDuration specified

## Example 1c - Calculated from dosing information
*/

/*
# Example 2:
MedicationDispense 2 tabs 3x/day #180/2*
* dosage = 2
* frequency = 3x /day (i.e., repeats / period = day)
* supply = 180
* daysSupplied = 30 days
* refills = n/a

derived daysSupplied = [supply (180) / ((dosage (2) x frequency (3))] = 30
*/

/*
## Example 2a - daysSupply Specified

## Example 2b - Calculated from dosing information
*/

/*
# Example 3:
MedicationRequest ½ tab 2x/day #30/2
* dosage = 1/2
* frequency = 2x /day (i.e., repeats / period = day)
* supply = 30
* daysSupplied = 30
* refills = 2

derived daysSupplied = [supply (30) / ((dosage (1/2) x frequency (2))] = 30
daysSuppliedWithRefills = [supply (30) x (1 + refills (2)) / ((dosage (1/2) x frequency (2) = 30 x 3 = 90 days
*/

/*
## Example 3a - boundsPeriod specified

## Example 3b - expectedSupplyDuration specified

## Example 3c - Calculated from dosing information
*/

/*4
# Example 4:
MedicationDispense ½ tab 2x/day #30/2*
* dosage = 1/2
* frequency = 2x /day (i.e., repeats / period = day)
* supply = 30
* daysSupplied = 30
* refills = n/a

derived daysSupplied = [supply (30) / ((dosage (1/2) x frequency (2))] = 30
*/

/*
## Example 4a - daysSupply Specified

## Example 4b - Calculated from dosing information
*/

/*
# Example 5:
MedicationRequest 5 ml 3x/day  #150 ml/0
* dosage = 5 ml
* frequency = 3x /day (i.e., repeats / period = day)
* supply = 150 ml
* daysSupplied = 10
* refills = 0

derived daysSupplied = [supply (150 ml) / ((dosage (5 ml) x frequency (3)) = 10 days
daysSuppliedWithRefills = [supply (150 ml) x (1 + refills (0)) / ((dosage (5 ml) x frequency (3)) = 10 days
*/

/*
# Example 6:
MedicationDispense 5 ml 3x/day  #150 ml/0*
* dosage = 5 ml
* frequency = 3x /day (i.e., repeats / period = day)
* supply = 150 ml
* daysSupplied = 10
* refills = n/a

* CMD calculated for “Medication, Dispensed” does not use the number of refills; rather, the days covered by each dispensing event must be retrieved and added.
*/

define Prescriptions: [MedicationRequest]
define Dispenses: [MedicationDispense]

define PrescriptionPeriods:
  Prescriptions P
    return CMD.MedicationRequestPeriod(P)

define DispensePeriods:
  Dispenses D
    return CMD.MedicationDispensePeriod(D)

define CumulativeDuration:
  CMD.CumulativeDuration(PrescriptionPeriods union DispensePeriods)

// TODO: Debug this
define CumulativeMedicationDuration:
  CMD.CumulativeMedicationDuration(
    Prescriptions
      union Dispenses
  )
ELM XML Content
Encoded data 
ELM JSON Content
Encoded data 
Generated using version 0.5.3-cibuild of the sample-content-ig Liquid templates