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: Expression Library for the Uniform Pharmacy Prior Authorization Request Form Example (Experimental)

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

Initial expressions for use in populating answers to questions in the Example Uniform Pharmacy Prior Authorization Request Form example questionnaire.

Metadata
Title Expression Library for the Uniform Pharmacy Prior Authorization Request Form Example
Version 1.0.0
Status Draft
Experimental true
Jurisdiction United States of America
Steward (Publisher) HL7 International / Clinical Decision Support
Description

Initial expressions for use in populating answers to questions in the Example Uniform Pharmacy Prior Authorization Request Form example questionnaire.

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 FHIRCommon
Resource: http://hl7.org/fhir/uv/cql/Library/FHIRCommon|2.0.0
Canonical URL: http://hl7.org/fhir/uv/cql/Library/FHIRCommon|2.0.0
Dependency Description: Library UC
Resource: US Core Common
Canonical URL: http://hl7.org/fhir/us/cql/Library/USCoreCommon
Dependency Description: Library UCE
Resource: US Core Elements
Canonical URL: http://hl7.org/fhir/us/cql/Library/USCoreElements
Dependency Description: Library CMD
Resource: Cumulative Medication Duration
Canonical URL: http://hl7.org/fhir/us/cql/Library/CumulativeMedicationDuration
Dependency Description: Code System Identifier Type
Resource: identifierType
Canonical URL: http://terminology.hl7.org/CodeSystem/v2-0203
Dependency Description: Code System Verification Status
Resource: ConditionVerificationStatus
Canonical URL: http://terminology.hl7.org/CodeSystem/condition-ver-status
Dependency Description: Code System Condition Clinical
Resource: Condition Clinical Status Codes
Canonical URL: http://terminology.hl7.org/CodeSystem/condition-clinical
Dependency Description: Code System ICD10
Resource: International Classification of Diseases, 10th Revision, Clinical Modification (ICD-10-CM)
Canonical URL: http://hl7.org/fhir/sid/icd-10-cm
Dependency Description: Value Set ICD10 vs
Resource: ICD-10 Codes
Canonical URL: http://hl7.org/fhir/ValueSet/icd-10
Data Requirement Type: MedicationRequest
Profile(s): US Core MedicationRequest Profile
Parameters
Name Use Card. Type Documentation
MedicationRequest In 0..1 Resource
Patient Out 0..1 Resource
Retrieve Medication Request test parameter Out 0..1 Resource
Medication Request Out 0..1 Resource
Most Recent Medication Request Out 0..1 Resource
Urgency Out 0..1 string
Most Recent Medication Out 0..1 Resource
Most Recent Medication Name Out 0..1 string
Is Opioid Treatment Out 0..1 Resource
Prior Prescription Out 0..1 Reference
Is First Prior Authentication Out 0..1 boolean
Initial Request Date Out 0..1 dateTime
Is First Request > 12 Months Out 0..1 boolean
Prescription Date Out 0..1 dateTime
Requester Out 0..1 Resource
Prescriber Name Out 0..1 string
Prescriber Fax Out 0..1 string
Prescriber Phone Out 0..1 string
Prescriber Pager Out 0..1 string
Prescriber Address Out 0..1 string
Prescriber Contact Out 0..1 string
Prescriber NPI Out 0..1 string
Prescriber DEA Out 0..1 Resource
Prescriber Tax ID Out 0..1 string
RequesterRole Out 0..1 Resource
Prescriber Specialty Out 0..1 string
Prescriber Email Address Out 0..1 string
Request Type Out 0..1 string
ICD 10 Codes Out 0..* code
Diagnosis Descriptions Out 0..1 string
Dosage Value as String Out 0..1 string
Dosage Unit Out 0..1 string
Unit Volume of Named Drugs Out 0..1 string
Dose Out 0..1 string
Route Out 0..1 string
Most Recent Dosage Instruction Out 0..1 Dosage
Frequency Out 0..1 string
Refills Out 0..1 unsignedInt
Today Out 0..1 date
Start Date and Length Out 0..1 string
Library Content
CQL Content
library UPPARFInitialExpressions

using USCore version '7.0.0'
using FHIR version '4.0.1'

include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1'
include hl7.fhir.uv.cql.FHIRCommon version '2.0.0'
include USCoreCommon called UC
include USCoreElements called UCE
include CumulativeMedicationDuration called CMD 

codesystem "Identifier Type": 'http://terminology.hl7.org/CodeSystem/v2-0203'
codesystem "Verification Status": 'http://terminology.hl7.org/CodeSystem/condition-ver-status'
codesystem "Condition Clinical": 'http://terminology.hl7.org/CodeSystem/condition-clinical'
codesystem "ICD10": 'http://hl7.org/fhir/sid/icd-10-cm' 

valueset "ICD10 vs": 'http://hl7.org/fhir/ValueSet/icd-10'

code "ICD10 example code": 'example' from "ICD10"
code "Member Number": 'MB' from "Identifier Type"
code "Subscriber Number": 'SN' from "Identifier Type"
code "Confirmed": 'confirmed' from "Verification Status"
code "Active": 'active' from "Condition Clinical"

parameter "MedicationRequest" USCore.MedicationRequestProfile

context Patient

define "Retrieve Medication Request test parameter":
  // The VSCode extension doesn't support parameters
  // When executing CQL with the VSCode extension retrieve the resource specific for the test case
  //   the list of resource ids match the resources from the test case folders
  singleton from ([USCore.MedicationRequestProfile] MR where MR.id in { 
    'reference-nizatidine',                 // from tests/library/UPPARFInitialExpressions/example/MedicationRequest-new-reference-nizatidine.json
    'MedicationRequest-1-nizatidine',       // from tests/library/UPPARFInitialExpressions/Patient-example-UPPARF-1/MedicationRequest-1-nizatidine.json
    'MedicationRequest-lisinopril-example'  // from tests/library/UPPARFInitialExpressions/Patient-example-UPPARF-2/MedicationRequest-lisinopril-example.json
  })

define "Medication Request":
  Coalesce(
    MedicationRequest,
    "Retrieve Medication Request test parameter"
  )

define "Urgency":
"Most Recent Medication Request".priority P
  return (
    if P != 'routine' then 'Urgent'
    else  'Not Urgent'
  )

//TODO: name could also be retrieved by MedicationRequest as a codeable concept if there is no reference
define "Most Recent Medication Name":
  "Most Recent Medication" M
    return Combine(((M.code.coding) C return C.display), '|')

define "Is Opioid Treatment":
null //TBD

//TODO: can we assume that with a previous prior authentication there also has been a prior prescription?
define "Is First Prior Authentication":
IsNull("Prior Prescription")

//TODO: does the initial request date mean the exact same medication was requested before?
define "Initial Request Date":
if not "Is First Prior Authentication" then
    singleton from (
    UCE."All Medication Requests" M
      where EndsWith(("Most Recent Medication Request".priorPrescription).reference, M.id)
      return M.authoredOn
    )
  else 
    null

define "Is First Request > 12 Months":
if IsNull("Initial Request Date") then null else 
(months between "Initial Request Date" and Now() > 12)

define "Prescription Date":
"Most Recent Medication Request".authoredOn

define "Prescriber Name":
   First(Requester.name).family
   //TODO: should this be First("Requester".name).family with double quotes?
   //TODO: prefix, suffix and given do not work as expected.

define "Prescriber Fax":
  Fax(Requester.telecom).value

define "Prescriber Phone":
  Mobile(Requester.telecom).value

define "Prescriber Pager":
  Pager(Requester.telecom).value

define "Prescriber Address":
'TODO: remove hard coded address'

define "Prescriber Contact":
'TODO: remove hard coded contact'
//TBD: would this be a work phone or more something like an address?

define "Prescriber NPI":
First (
  "Requester".identifier I
  where I.system = 'http://hl7.org.fhir/sid/us-npi'
  ).value

//TODO: what is DEA?
// A DEA number is used to identify the prescriber who is licensed to prescribe controlled substances.
// A prescriber needs a unique DEA numbers for every jurisdiction they are licensed.
// Every DEA number is made up of two letters, six numbers, and one check digit
// https://www.careerstep.com/blog/news/dea-numbers-what-do-they-mean/#:~:text=The%20DEA%20number%20is%20also,a%20manufacturer%2C%20etc.).
define "Prescriber DEA":
  null

define "Prescriber Tax ID":
First (
  "Requester".identifier I
  where I.system = 'urn:oid:2.16.840.1.113883.4.4'
  ).value

define "Prescriber Specialty":
First(RequesterRole.specialty.coding).display

define "Prescriber Email Address":
  Email(Requester.telecom).value

define "Request Type":
//TODO: is this logic correct?
if "Is First Prior Authentication" then
  'New Request' else 'Reauthorization'

define "ICD 10 Codes":
  UCE."Active Confirmed Problem List Items".code.coding C
  where C.system ~ "ICD10 example code".system //"ICD10".id
  return C.code

define "Diagnosis Descriptions":
  Combine(((UCE."Active Confirmed Problem List Items".code.coding) C return C.display), ', ')

define "Unit Volume of Named Drugs":
  "Dosage Value as String" + "Dosage Unit"

define "Dose": 
  "Dosage Value as String"

define "Route": 
  Combine(((First("Most Recent Medication Request".dosageInstruction).route.coding) C return C.display), ', ')

define "Most Recent Dosage Instruction":
  singleton from ("Most Recent Medication Request".dosageInstruction)

define "Frequency": 
  "Most Recent Dosage Instruction" DI
    return ToString(DI.timing.repeat.frequency) + ' times per ' 
      + ToString(DI.timing.repeat.period) 
      + DI.timing.repeat.periodUnit

define "Refills": 
  "Most Recent Medication Request".dispenseRequest.numberOfRepeatsAllowed

define "Today":
  Today()

define "Dosage Value as String":
  ToString(("Most Recent Medication Request".dosageInstruction.doseAndRate[0].dose).value)

define "Dosage Unit":
  ("Most Recent Medication Request".dosageInstruction.doseAndRate[0].dose).unit

//helper definitions
//TODO: medications are not necessarily a reference but could also be represented by a codeable concept
define "Most Recent Medication":
singleton from (
  UCE."All Medications" M
    where EndsWith(("Most Recent Medication Request".medication).reference, M.id))

define "Most Recent Medication Request":
  "Medication Request"
  // UCE."Most Recent Medication Request"

define "Prior Prescription":
  "Most Recent Medication Request".priorPrescription

define "Requester":
  UCE.Requester("Most Recent Medication Request")

define "RequesterRole":
  UCE.RequesterRole("Most Recent Medication Request")

//email, pager, and fax functions moved to USCoreCommon.cql

//IMPORTANT NOTE: Missing the entire (or majority) of the "Prior Authorization Request for Drug Benefit" section of the quesstionnaire. Expect errors on Postman regarding the items in this section.
define "Start Date and Length":
  null as System.String

define function Pager(contactPoints List<ContactPoint>):
  singleton from (contactPoints P where P.system = 'pager')

define function Mobile(contactPoints List<ContactPoint>):
  singleton from (contactPoints P where P.system = 'mobile')

define function Email(contactPoints List<ContactPoint>):
  singleton from (contactPoints P where P.system = 'email')

define function Fax(contactPoints List<ContactPoint>):
  singleton from (contactPoints P where P.system = 'fax')
ELM XML Content
Encoded data 
ELM JSON Content
Encoded data 
Generated using version 0.5.3-cibuild of the sample-content-ig Liquid templates