| Library Name | Name | sequence |
| OpioidCDSREC11OrderSelect |
Opioid Analgesic with Ambulatory Misuse Potential Prescriptions |
0 |
define "Opioid Analgesic with Ambulatory Misuse Potential Prescriptions":
Common."Is Opioid Analgesic with Ambulatory Misuse Potential?"( ContextPrescriptions )
| Library Name | Name | sequence |
| OpioidCDSREC11OrderSelect |
Patient Is Being Prescribed Opioid Analgesic with Ambulatory Misuse Potential |
1 |
define "Patient Is Being Prescribed Opioid Analgesic with Ambulatory Misuse Potential":
exists( "Opioid Analgesic with Ambulatory Misuse Potential Prescriptions" )
| Library Name | Name | sequence |
| OpioidCDSCommonConfig |
Can the implementing EHR support queries for past medications by date range? |
2 |
// Subroutine 2 - Past Medications
define "Can the implementing EHR support queries for past medications by date range?":
true
| Library Name | Name | sequence |
| OpioidCDSCommon |
Active Medication List |
3 |
define "Active Medication List":
[MedicationRequest: status in { 'active' }] ActiveMeds
where ActiveMeds.category in "Community"
| Library Name | Name | sequence |
| OpioidCDSCommon |
Active Ambulatory Benzodiazepine or CNS Depressant Rx |
4 |
define "Active Ambulatory Benzodiazepine or CNS Depressant Rx":
if Config."Can the implementing EHR support queries for past medications by date range?" then
(
"Get MedicationRequest Medication as Code"("Active Medication List")
) Rx
where date from Rx.authoredOn 2 years or less on or before Today()
and Rx.medication in "Benzodiazepine medications"
or Rx.medication in "CNS Depressant Medications"
else
List<FHIR.MedicationRequest>{}
| Library Name | Name | sequence |
| OpioidCDSREC11OrderSelect |
Benzodiazepine or CNS Depressant Prescriptions |
5 |
define "Benzodiazepine or CNS Depressant Prescriptions":
Common."Is Benzodiazepine or CNS Depressant?"( ContextPrescriptions )
| Library Name | Name | sequence |
| OpioidCDSREC11OrderSelect |
Patient Is Being Prescribed Benzodiazepine or CNS Depressant |
6 |
define "Patient Is Being Prescribed Benzodiazepine or CNS Depressant":
exists( "Benzodiazepine or CNS Depressant Prescriptions" )
| Library Name | Name | sequence |
| OpioidCDSCommon |
Active Ambulatory Opioid Rx |
7 |
define "Active Ambulatory Opioid Rx":
if Config."Can the implementing EHR support queries for past medications by date range?" then
(
"Get MedicationRequest Medication as Code"("Get Active Ambulatory Medication Requests"([MedicationRequest]))
) Rx
where date from Rx.authoredOn 2 years or less on or before Today()
and Rx.medication in "Opioid analgesics with ambulatory misuse potential"
else
List<FHIR.MedicationRequest>{}
| Library Name | Name | sequence |
| OpioidCDSCommonConfig |
Age Less than 18 Years Is Enabled |
8 |
// CDC 2022 General Inclusion Criteria
define "Age Less than 18 Years Is Enabled":
true
| Library Name | Name | sequence |
| OpioidCDSRoutines |
Patient Age Less Than 18 |
9 |
define "Patient Age Less Than 18":
if (Config."Age Less than 18 Years Is Enabled") then
AgeInYearsAt(Today()) < 18
else false
| Library Name | Name | sequence |
| OpioidCDSCommonConfig |
Sickle Cell Check Enabled |
10 |
// Sickle Cell
define "Sickle Cell Check Enabled":
true
| Library Name | Name | sequence |
| OpioidCDSCommonConfig |
Sickle Cell Assumed Active |
11 |
define "Sickle Cell Assumed Active":
true
| Library Name | Name | sequence |
| OpioidCDSCommon |
US Core-Categorized Conditions |
12 |
// 3. Medications indicating end of life
/* or exists (
"Medications Indicating End of Life"
) */
define "US Core-Categorized Conditions":
[Condition: category in "Encounter Diagnosis Condition Category"]
union [Condition: category in "Problem List Condition Category"]
union [Condition: category in "US Core Health Concern Condition Category"]
| Library Name | Name | sequence |
| OpioidCDSCommon |
Positive Sickle Cell Condition |
13 |
define "Positive Sickle Cell Condition":
if Config."Sickle Cell Check Enabled" and not Config."Sickle Cell Assumed Active"
then (
"US Core-Categorized Conditions" C
where C.code in "Sickle Cell Diseases"
and C.clinicalStatus in "Active Condition"
) else if Config."Sickle Cell Check Enabled" and Config."Sickle Cell Assumed Active"
then (
"US Core-Categorized Conditions" C
where C.code in "Sickle Cell Diseases"
)
else null
| Library Name | Name | sequence |
| OpioidCDSRoutines |
Condition Positive for Sickle Cell |
14 |
define "Condition Positive for Sickle Cell":
if (Config."Sickle Cell Check Enabled") then
exists(
Common."Positive Sickle Cell Condition"
)
else false
| Library Name | Name | sequence |
| OpioidCDSCommonConfig |
Active Cancer Treatment Encounters Condition Is Enabled |
15 |
// Active Cancer Treatment
define "Active Cancer Treatment Encounters Condition Is Enabled":
true
| Library Name | Name | sequence |
| OpioidCDSRoutines |
Encounter Period |
16 |
// End of Opioid Naive Routine
/*
** Routine #3
** Active Cancer Treatment Routine
**
** Definition | Answer to Proceed | Details | Data (Terminology) Requirement
** ---------------------------------------------------------------------------------------------------------------------------------
** Two office visits within the | No | Look for a minimum of two distinct | Office Visit
** past 12 months | | encounters within 12 months of the date |
** | | of the current visit for which each of the |
** | | following is true: |
** | | - the encounter diagnosis (primary or |
** | | secondary or co-morbidity diagnosis) |
** | | is listed in the CDC Malignant Cancer |
** | | Conditions value set |
** ---------------------------------------------------------------------------------------------------------------------------------
** Office visits with an | No | The encounter is performed by an | Oncology specialty
** oncology specialist | | oncologist as defined in the oncology | designations (NUCC)
** present | | specialty designations using the |
** | | National Uniform Claim Committee |
** | | (NUCC) classifications |
** ---------------------------------------------------------------------------------------------------------------------------------
** Office visits including CDC | No | The encounter diagnosis (primary or | CDC malignant cancer
** malignant cancer | | secondary or co-morbidity diagnosis) | conditions
** condition | | is listed in the CDC Malignant Cancer |
** | | Conditions value set |
** ----------------------------------------------------------------------------------------------------------------------------------
**
*/
define "Encounter Period":
Interval[Today() - 12 months, Today())
| Library Name | Name | sequence |
| OpioidCDSCommon |
USCore Encounter Cancer Diagnoses |
17 |
define "USCore Encounter Cancer Diagnoses":
[Condition: category in "Encounter Diagnosis Condition Category"] CancerDiagnoses
where CancerDiagnoses.code in "CDC malignant cancer conditions"
| Library Name | Name | sequence |
| OpioidCDSRoutines |
Encounters with Cancer Diagnosis During Encounter Period |
18 |
// encounter-diagnosis, problem-list and health-concern Conditions
// define "US Core-Categorized Cancer Diagnoses":
// Common."US Core-Categorized Conditions" C
// where C.code in Common."CDC malignant cancer conditions"
// define "Encounters with Cancer Diagnosis During Encounter Period":
// [Encounter] Encounter
// with "US Core-Categorized Cancer Diagnoses" CancerDiagnosis
// such that date from Encounter.period."start".value in day of "Encounter Period"
// and EndsWith(CancerDiagnosis.encounter.reference, Encounter.id)
define "Encounters with Cancer Diagnosis During Encounter Period":
[Encounter] Encounters
where date from Encounters.period."start" in day of "Encounter Period"
and exists (
Common."USCore Encounter Cancer Diagnoses" CancerDiagnoses
where EndsWith(CancerDiagnoses.encounter.reference, Encounters.id)
)
| Library Name | Name | sequence |
| OpioidCDSRoutines |
Number of Encounters with Cancer Diagnosis During Encounter Period |
19 |
define "Number of Encounters with Cancer Diagnosis During Encounter Period":
Count ("Encounters with Cancer Diagnosis During Encounter Period")
| Library Name | Name | sequence |
| OpioidCDSRoutines |
Has Two or More Encounters with Cancer Diagnosis During Encounter Period |
20 |
define "Has Two or More Encounters with Cancer Diagnosis During Encounter Period":
"Number of Encounters with Cancer Diagnosis During Encounter Period" >= 2
| Library Name | Name | sequence |
| OpioidCDSCommon |
USCore Problem List Cancer Diagnoses |
21 |
define "USCore Problem List Cancer Diagnoses":
[Condition: category in "Problem List Condition Category"] CancerDiagnoses
where CancerDiagnoses.code in "CDC malignant cancer conditions"
| Library Name | Name | sequence |
| OpioidCDSRoutines |
Has Active Cancer Diagnosis on Problem List |
22 |
define "Has Active Cancer Diagnosis on Problem List":
exists (
Common."USCore Problem List Cancer Diagnoses" CancerDiagnoses
where CancerDiagnoses.category in Common."Problem List Condition Category"
and exists(
CancerDiagnoses.clinicalStatus.coding ClinicalStatus
where ClinicalStatus.code ~ 'active'
)
)
| Library Name | Name | sequence |
| OpioidCDSRoutines |
Is Active Cancer Treatment? |
23 |
define "Is Active Cancer Treatment?":
if (Config."Active Cancer Treatment Encounters Condition Is Enabled")
then "Has Two or More Encounters with Cancer Diagnosis During Encounter Period"
or "Has Active Cancer Diagnosis on Problem List"
else false
| Library Name | Name | sequence |
| OpioidCDSCommonConfig |
End-Stage Disease Criteria Enabled |
24 |
// CDC 2022 General Inclusion Criteria
define "End-Stage Disease Criteria Enabled":
true
| Library Name | Name | sequence |
| OpioidCDSRoutines |
Conditions Likely Terminal for Opioid Prescribing |
25 |
define "Conditions Likely Terminal for Opioid Prescribing":
if (Config."End-Stage Disease Criteria Enabled") then
exists (
Common."US Core-Categorized Conditions" EOLC
where EOLC.code in Common."Conditions likely terminal for opioid prescribing"
// and EOLC.clinicalStatus in Common."Active Condition"
)
else false
| Library Name | Name | sequence |
| OpioidCDSRoutines |
CDC 2022 Guideline General Inclusion Criteria |
26 |
define "CDC 2022 Guideline General Inclusion Criteria":
not "Patient Age Less Than 18"
and not "Condition Positive for Sickle Cell"
and not "Is Active Cancer Treatment?"
and not "Conditions Likely Terminal for Opioid Prescribing"
| Library Name | Name | sequence |
| OpioidCDSREC11OrderSelect |
Inclusion Criteria |
27 |
define "Inclusion Criteria":
(
(
"Patient Is Being Prescribed Opioid Analgesic with Ambulatory Misuse Potential"
and exists Common."Active Ambulatory Benzodiazepine or CNS Depressant Rx"
)
or (
"Patient Is Being Prescribed Benzodiazepine or CNS Depressant"
and exists Common."Active Ambulatory Opioid Rx"
)
)
and Routines."CDC 2022 Guideline General Inclusion Criteria"
| Library Name | Name | sequence |
| OpioidCDSCommon |
Conditions Indicating End of Life or With Limited Life Expectancy |
28 |
define "Conditions Indicating End of Life or With Limited Life Expectancy":
(
"US Core-Categorized Conditions" C
where C.code in "Conditions likely terminal for opioid prescribing"
and C.clinicalStatus in "Active Condition"
)
union
(
"US Core-Categorized Conditions" C
where C.code in "Limited life expectancy conditions"
and C.clinicalStatus in "Active Condition"
)
| Library Name | Name | sequence |
| OpioidCDSCommonConfig |
Hospice Findings Exclusion Enabled |
29 |
// OpioidCDSCommon
define "Hospice Findings Exclusion Enabled":
false
| Library Name | Name | sequence |
| OpioidCDSCommon |
Admitted/Referred/Discharged to Hospice Care |
30 |
define "Admitted/Referred/Discharged to Hospice Care":
(
if (Config."Hospice Findings Exclusion Enabled") then
[Observation: code in "Hospice Finding Codes"] O
where not (O.status.value in { 'unknown', 'entered-in-error', 'cancelled' })
else
{}
)
union
(
[Encounter] E
where date from E.period.start 1 year or less on or before Today()
and (
if E.hospitalization.dischargeDisposition.coding is null
or not exists (E.hospitalization.dischargeDisposition.coding)
then false
else E.hospitalization.dischargeDisposition in "Hospice Disposition"
)
and E.status.value in { 'planned', 'arrived', 'in-progress', 'finished', 'onleave' }
)
| Library Name | Name | sequence |
| OpioidCDSCommon |
End of Life Assessment |
31 |
define "End of Life Assessment":
// 1. Conditions indicating end of life or with limited life expectancy
exists (
"Conditions Indicating End of Life or With Limited Life Expectancy"
)
// 2. Admitted/referred/discharged to hospice care
or exists (
"Admitted/Referred/Discharged to Hospice Care"
)
| Library Name | Name | sequence |
| OpioidCDSREC11OrderSelect |
Exclusion Criteria |
32 |
define "Exclusion Criteria":
Common."End of Life Assessment"
| Library Name | Name | sequence |
| OpioidCDSREC11OrderSelect |
Is Recommendation Applicable? |
33 |
define "Is Recommendation Applicable?":
"Inclusion Criteria"
and not "Exclusion Criteria"
| Library Name | Name | sequence |
| OpioidCDSCommon |
Is Opioid Analgesic with Ambulatory Misuse Potential? |
34 |
define function "Is Opioid Analgesic with Ambulatory Misuse Potential?"(value List<MedicationRequest>):
("Get MedicationRequest Medication as Code"(value)) Rx
where Rx.medication in "Opioid analgesics with ambulatory misuse potential"
and Rx.category in "Community"
| Library Name | Name | sequence |
| OpioidCDSCommon |
Get MedicationRequest Medication as Code |
35 |
define function "Get MedicationRequest Medication as Code"(value List<MedicationRequest>):
value Rx
let Med:
if Rx.medication is Reference then singleton from (
[Medication] M
where M.id = (Last(Split((Rx.medication as FHIR.Reference).reference, '/')))
) else null
return
MedicationRequest {
id: Rx.id,
status: Rx.status,
intent: Rx.intent,
category: Rx.category,
medication: if Rx.medication is Reference then Med.code else Rx.medication as CodeableConcept,
subject: Rx.subject,
authoredOn: Rx.authoredOn,
recorder: Rx.recorder,
dosageInstruction: Rx.dosageInstruction,
dispenseRequest: Rx.dispenseRequest
}
| Library Name | Name | sequence |
| FHIRHelpers |
ToString |
36 |
define function ToString(value string): value.value
| Library Name | Name | sequence |
| FHIRHelpers |
ToConcept |
37 |
define function ToConcept(concept FHIR.CodeableConcept):
if concept is null then
null
else
System.Concept {
codes: concept.coding C return ToCode(C),
display: concept.text.value
}
| Library Name | Name | sequence |
| FHIRHelpers |
ToCode |
38 |
define function ToCode(coding FHIR.Coding):
if coding is null then
null
else
System.Code {
code: coding.code.value,
system: coding.system.value,
version: coding.version.value,
display: coding.display.value
}
| Library Name | Name | sequence |
| FHIRHelpers |
ToDateTime |
39 |
define function ToDateTime(value dateTime): value.value
| Library Name | Name | sequence |
| OpioidCDSCommon |
Is Benzodiazepine or CNS Depressant? |
40 |
define function "Is Benzodiazepine or CNS Depressant?"(value List<MedicationRequest>):
("Get MedicationRequest Medication as Code"(value)) Rx
where Rx.medication in "Benzodiazepine medications"
or Rx.medication in "CNS Depressant Medications"
and Rx.category in "Community"
| Library Name | Name | sequence |
| OpioidCDSCommon |
Get Active Ambulatory Medication Requests |
41 |
define function "Get Active Ambulatory Medication Requests" (value List<MedicationRequest>) returns List<MedicationRequest>:
value Rx
where Rx.status.value = 'active'
and Rx.category in "Community"
|