opioidcds-09
type: PlanDefinition
node role: treeRoot
id:
  v: opioidcds-09
meta:
  profile:
    v: http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-recommendationdefinition
    link: http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-recommendationdefinition
  profile:
    v: http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-publishableplandefinition
    link: http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-publishableplandefinition
text:
  status:
    v: extensions
  div: Id: opioidcds-09 Url: Recommendation #9 - Consider Patient's History of Controlled Substance Prescriptions Version: 2022.1.0 Identifier: value: cdc-opioid-guidance Name: PlanDefinition_Recommendation_09_Order_Sign Title: Recommendation #9 - Consider Patient's History of Controlled Substance Prescriptions Status: draft Experimental: true Type: system: http://terminology.hl7.org/CodeSystem/plan-definition-type code: eca-rule display: ECA Rule Date: 2025-07-01 Publisher: Centers for Disease Control and Prevention (CDC) Description: When prescribing initial opioid therapy for acute, subacute, or chronic pain, and periodically during opioid therapy for chronic pain, clinicians should review the patient's history of controlled substance prescriptions using state prescription drug monitoring program (PDMP) data to determine whether the patient is receiving opioid dosages or combinations that put the patient at high risk for overdose. Logic Definitions: Library Name Name sequence OpioidCDSREC09 Chronic Pain Opioid Analgesic with Ambulatory Misuse Potential Prescriptions 0 define "Chronic Pain Opioid Analgesic with Ambulatory Misuse Potential Prescriptions": ( Common."Is Opioid Analgesic with Ambulatory Misuse Potential?"( ContextPrescriptions ) ) AmbulatoryOpioidPrescription where Routines."Is Subacute or Chronic Pain Prescription?"( AmbulatoryOpioidPrescription ) Library Name Name sequence OpioidCDSREC09 Patient Is Being Prescribed Opioid Analgesic with Ambulatory Misuse Potential 1 define "Patient Is Being Prescribed Opioid Analgesic with Ambulatory Misuse Potential": exists( "Chronic Pain Opioid Analgesic with Ambulatory Misuse Potential Prescriptions" ) Library Name Name sequence OpioidCDSRoutines Patient Age Less Than 18 2 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 OpioidCDSRoutines Condition Positive for Sickle Cell 3 define "Condition Positive for Sickle Cell…
contained: Library
  id:
    v: effective-data-requirements
  name:
    v: EffectiveDataRequirements
  status:
    v: active
  type:
    coding:
      system:
        v: http://terminology.hl7.org/CodeSystem/library-type
      code:
        v: module-definition
  related artifact:
    type:
      v: depends-on
    display:
      v: Library Common
    resource:
      v: http://fhir.org/guides/cdc/opioid-cds/Library/OpioidCDSCommon|2022.1.0
      link: 2022.1
      link: .0
  related artifact:
    type:
      v: depends-on
    display:
      v: Library FHIRHelpers
    resource:
      v: http://fhir.org/guides/cdc/opioid-cds/Library/FHIRHelpers|4.0.1
      link: 4.0
      link: .1
  related artifact:
    type:
      v: depends-on
    display:
      v: Library Routines
    resource:
      v: http://fhir.org/guides/cdc/opioid-cds/Library/OpioidCDSRoutines|2022.1.0
      link: 2022.1
      link: .0
  related artifact:
    type:
      v: depends-on
    display:
      v: Library Config
    resource:
      v: http://fhir.org/guides/cdc/opioid-cds/Library/OpioidCDSCommonConfig|2022.1.0
      link: 2022.1
      link: .0
  related artifact:
    type:
      v: depends-on
    display:
      v: Value set Opioid analgesics with ambulatory misuse potential
    resource:
      v: http://fhir.org/guides/cdc/opioid-cds/ValueSet/opioid-analgesics-with-ambulatory-misuse-potential
      link: http://fhir.org/guides/cdc/opioid-cds/ValueSet/opioid-analgesics-with-ambulatory-misuse-potential
  related artifact:
    type:
      v: depends-on
    display:
      v: Value set Community
    resource:
      v: http://fhir.org/guides/cdc/opioid-cds/ValueSet/medicationrequest-category-community
      link: http://fhir.org/guides/cdc/opioid-cds/ValueSet/medicationrequest-category-community
  related artifact:
    type:
      v: depends-on
    display:
      v: Value set PDMP review procedure
    resource:
      v: http://fhir.org/guides/cdc/opioid-cds/ValueSet/pdmp-review-procedure
      link: http://fhir.org/guides/cdc/opioid-cds/ValueSet/pdmp-review-procedure
  related artifact:
    type:
      v: depends-on
    display:
      v: Value set PDMP data reviewed finding
    resource:
      v: http://fhir.org/guides/cdc/opioid-cds/ValueSet/pdmp-data-reviewed-finding
      link: http://fhir.org/guides/cdc/opioid-cds/ValueSet/pdmp-data-reviewed-finding
  parameter:
    name:
      v: ContextPrescriptions
    use:
      v: in
    min:
      v: 0
    max:
      v: *
    type:
      v: MedicationRequest
  parameter:
    name:
      v: Is Recommendation Applicable?
    use:
      v: out
    min:
      v: 0
    max:
      v: 1
    type:
      v: boolean
  data requirement:
    type:
      v: Procedure
    profile:
      v: http://hl7.org/fhir/StructureDefinition/Procedure
      link: http://hl7.org/fhir/StructureDefinition/Procedure
    must support:
      v: code
    must support:
      v: status
    must support:
      v: performed
    code filter:
      path:
        v: code
      value set:
        v: http://fhir.org/guides/cdc/opioid-cds/ValueSet/pdmp-review-procedure
        link: http://fhir.org/guides/cdc/opioid-cds/ValueSet/pdmp-review-procedure
  data requirement:
    type:
      v: Observation
    profile:
      v: http://hl7.org/fhir/StructureDefinition/Observation
      link: http://hl7.org/fhir/StructureDefinition/Observation
    must support:
      v: code
    must support:
      v: status
    code filter:
      path:
        v: code
      value set:
        v: http://fhir.org/guides/cdc/opioid-cds/ValueSet/pdmp-data-reviewed-finding
        link: http://fhir.org/guides/cdc/opioid-cds/ValueSet/pdmp-data-reviewed-finding
extension:
  url:
    v: http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability
  value: code
    v: shareable
extension:
  url:
    v: http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability
  value: code
    v: computable
extension:
  url:
    v: http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability
  value: code
    v: executable
extension:
  url:
    v: http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability
  value: code
    v: publishable
extension:
  extension:
    url:
      v: libraryName
    value: string
      v: OpioidCDSREC09
  extension:
    url:
      v: name
    value: string
      v: Chronic Pain Opioid Analgesic with Ambulatory Misuse Potential Prescriptions
  extension:
    url:
      v: statement
    value: string
      v: define "Chronic Pain Opioid Analgesic with Ambulatory Misuse Potential Prescriptions": ( Common."Is Opioid Analgesic with Ambulatory Misuse Potential?"( ContextPrescriptions ) ) AmbulatoryOpioidPrescription where Routines."Is Subacute or Chronic Pain Prescription?"( AmbulatoryOpioidPrescription )
  extension:
    url:
      v: displaySequence
    value: integer
      v: 0
  url:
    v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition
extension:
  extension:
    url:
      v: libraryName
    value: string
      v: OpioidCDSREC09

url:
  v: name
value: string
  v: Patient Is Being Prescribed Opioid Analgesic with Ambulatory Misuse Potential

url:
  v: statement
value: string
  v: define "Patient Is Being Prescribed Opioid Analgesic with Ambulatory Misuse Potential": exists( "Chronic Pain Opioid Analgesic with Ambulatory Misuse Potential Prescriptions" )

url:
  v: displaySequence
value: integer
  v: 1

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSRoutines
extension:
  url:
    v: name
  value: string
    v: Patient Age Less Than 18
extension:
  url:
    v: statement
  value: string
    v: define "Patient Age Less Than 18": if (Config."Age Less than 18 Years Is Enabled") then AgeInYearsAt(Today()) < 18 else false
extension:
  url:
    v: displaySequence
  value: integer
    v: 2
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSRoutines
extension:
  url:
    v: name
  value: string
    v: Condition Positive for Sickle Cell
extension:
  url:
    v: statement
  value: string
    v: define "Condition Positive for Sickle Cell": if (Config."Sickle Cell Check Enabled") then exists( Common."Positive Sickle Cell Condition" ) else false
extension:
  url:
    v: displaySequence
  value: integer
    v: 3
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSRoutines
extension:
  url:
    v: name
  value: string
    v: Is Active Cancer Treatment?
extension:
  url:
    v: statement
  value: string
    v: 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
extension:
  url:
    v: displaySequence
  value: integer
    v: 4
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSRoutines
extension:
  url:
    v: name
  value: string
    v: Conditions Likely Terminal for Opioid Prescribing
extension:
  url:
    v: statement
  value: string
    v: 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
extension:
  url:
    v: displaySequence
  value: integer
    v: 5
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSRoutines
extension:
  url:
    v: name
  value: string
    v: Is Opioid Review Useful?
extension:
  url:
    v: statement
  value: string
    v: define "Is Opioid Review Useful?": 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"
extension:
  url:
    v: displaySequence
  value: integer
    v: 6
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSCommonConfig
extension:
  url:
    v: name
  value: string
    v: PDMP Data Not Reviewed in Past 90 Days Criteria Enabled
extension:
  url:
    v: statement
  value: string
    v: // Recommendation 9 define "PDMP Data Not Reviewed in Past 90 Days Criteria Enabled": true
extension:
  url:
    v: displaySequence
  value: integer
    v: 7
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSREC09
extension:
  url:
    v: name
  value: string
    v: Look Back 90 Days
extension:
  url:
    v: statement
  value: string
    v: define "Look Back 90 Days": Interval[Today() - 90 days, Today()]
extension:
  url:
    v: displaySequence
  value: integer
    v: 8
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSREC09
extension:
  url:
    v: name
  value: string
    v: PDMP Data Not Reviewed in Past 90 Days
extension:
  url:
    v: statement
  value: string
    v: define "PDMP Data Not Reviewed in Past 90 Days": Config."PDMP Data Not Reviewed in Past 90 Days Criteria Enabled" and not ( exists ( [Procedure: Common."PDMP review procedure"] P where P.status ~ 'completed' and P.performed during "Look Back 90 Days" ) or exists ( [Observation: Common."PDMP data reviewed finding"] O where O.status in { 'final', 'amended' } and ( if O.effective is FHIR.Period then (O.effective as FHIR.Period) during day of "Look Back 90 Days" else if O.effective is FHIR.dateTime then date from O.effective in day of "Look Back 90 Days" else false ) ) )
extension:
  url:
    v: displaySequence
  value: integer
    v: 9
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSREC09
extension:
  url:
    v: name
  value: string
    v: Inclusion Criteria
extension:
  url:
    v: statement
  value: string
    v: define "Inclusion Criteria": "Patient Is Being Prescribed Opioid Analgesic with Ambulatory Misuse Potential" and Routines."Is Opioid Review Useful?" and "PDMP Data Not Reviewed in Past 90 Days"
extension:
  url:
    v: displaySequence
  value: integer
    v: 10
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSREC09
extension:
  url:
    v: name
  value: string
    v: Exclusion Criteria
extension:
  url:
    v: statement
  value: string
    v: define "Exclusion Criteria": false
extension:
  url:
    v: displaySequence
  value: integer
    v: 11
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSREC09
extension:
  url:
    v: name
  value: string
    v: Is Recommendation Applicable?
extension:
  url:
    v: statement
  value: string
    v: define "Is Recommendation Applicable?": "Inclusion Criteria" and not "Exclusion Criteria"
extension:
  url:
    v: displaySequence
  value: integer
    v: 12
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSCommon
extension:
  url:
    v: name
  value: string
    v: Is Opioid Analgesic with Ambulatory Misuse Potential?
extension:
  url:
    v: statement
  value: string
    v: 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"
extension:
  url:
    v: displaySequence
  value: integer
    v: 13
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSCommon
extension:
  url:
    v: name
  value: string
    v: Get MedicationRequest Medication as Code
extension:
  url:
    v: statement
  value: string
    v: 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 }
extension:
  url:
    v: displaySequence
  value: integer
    v: 14
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: FHIRHelpers
extension:
  url:
    v: name
  value: string
    v: ToConcept
extension:
  url:
    v: statement
  value: string
    v: 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 }
extension:
  url:
    v: displaySequence
  value: integer
    v: 15
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSRoutines
extension:
  url:
    v: name
  value: string
    v: Is Subacute or Chronic Pain Prescription?
extension:
  url:
    v: statement
  value: string
    v: // End of Active Cancer Treatment Routine /* ** Routine #4 ** For Subacute or Chronic Pain Routine ** ** Definition | Answer to Proceed | Details | Data (Terminology) Requirement ** ----------------------------------------------------------------------------------------------------------------------------------- ** Order for opioid analgesic | Yes | Order for opioid analgesics with ambulatory | Opioid analgesics with ** with expected supply | | misuse potential with a supply duration of >= | ambulatory misuse potential ** duration >= 28 days | | 28 days | ** | | | ** | | - Subacute definition = order for opioid | ** | | analgesics with ambulatory misuse | ** | | potential with a supply duration of one to | ** | | two months. | ** | | - Chronic pain definition = order for opioid | ** | | analgesics with ambulatory misuse | ** | | potential with a supply duration of >= two | ** | | months. | ** ----------------------------------------------------------------------------------------------------------------------------------- ** */ define function "Is Subacute or Chronic Pain Prescription?"(prescription FHIR.MedicationRequest): "Is Subacute or Chronic Pain Using Expected Supply Duration"(prescription) or "Is Subacute or Chronic Pain Using Validity Period"(prescription)
extension:
  url:
    v: displaySequence
  value: integer
    v: 16
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSRoutines
extension:
  url:
    v: name
  value: string
    v: Is Subacute or Chronic Pain Using Expected Supply Duration
extension:
  url:
    v: statement
  value: string
    v: define function "Is Subacute or Chronic Pain Using Expected Supply Duration"(prescription FHIR.MedicationRequest): ( prescription.dispenseRequest is not null and prescription.dispenseRequest.expectedSupplyDuration is not null and ( Common.GetDurationInDays(prescription.dispenseRequest.expectedSupplyDuration) >= 28 days ) )
extension:
  url:
    v: displaySequence
  value: integer
    v: 17
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSCommon
extension:
  url:
    v: name
  value: string
    v: GetDurationInDays
extension:
  url:
    v: statement
  value: string
    v: define function GetDurationInDays(value FHIR.Duration): if value is null then null else case when value.code.value ~ 'a' then System.Quantity{ value: value.value.value * 365.0, unit: 'days' } when value.code.value ~ 'mo' then System.Quantity{ value: value.value.value * 30.0, unit: 'days' } when value.code.value ~ 'wk' then System.Quantity{ value: value.value.value * 7.0, unit: 'days' } when value.code.value ~ 'd' then System.Quantity{ value: value.value.value, unit: 'days' } when value.code.value ~ 'h' then System.Quantity{ value: value.value.value / 24.0, unit: 'days' } when value.code.value ~ 'min' then System.Quantity{ value: value.value.value / 60.0 / 24.0, unit: 'days' } when value.code.value ~ 's' then System.Quantity{ value: value.value.value / 60.0 / 60.0 / 24.0, unit: 'days' } when value.code.value ~ 'ms' then System.Quantity{ value: value.value.value / 60.0 / 60.0 / 24.0 / 1000.0, unit: 'days' } when value.code.value is null then Message(1000, true, 'Undefined', 'Error', 'Duration unit code is null') else Message(1000, true, 'Undefined', 'Error', 'Unsupported duration unit code: ' + value.code.value) end
extension:
  url:
    v: displaySequence
  value: integer
    v: 18
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: OpioidCDSRoutines
extension:
  url:
    v: name
  value: string
    v: Is Subacute or Chronic Pain Using Validity Period
extension:
  url:
    v: statement
  value: string
    v: define function "Is Subacute or Chronic Pain Using Validity Period"(prescription FHIR.MedicationRequest): ( prescription.dispenseRequest is not null and prescription.dispenseRequest.validityPeriod is not null and ( days between prescription.dispenseRequest.validityPeriod.start and prescription.dispenseRequest.validityPeriod.end >= 28 ) )
extension:
  url:
    v: displaySequence
  value: integer
    v: 19
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: FHIRHelpers
extension:
  url:
    v: name
  value: string
    v: ToDateTime
extension:
  url:
    v: statement
  value: string
    v: define function ToDateTime(value dateTime): value.value
extension:
  url:
    v: displaySequence
  value: integer
    v: 20
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: FHIRHelpers
extension:
  url:
    v: name
  value: string
    v: ToString
extension:
  url:
    v: statement
  value: string
    v: define function ToString(value ProcedureStatus): value.value
extension:
  url:
    v: displaySequence
  value: integer
    v: 21
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

extension:
  url:
    v: libraryName
  value: string
    v: FHIRHelpers
extension:
  url:
    v: name
  value: string
    v: ToInterval
extension:
  url:
    v: statement
  value: string
    v: define function ToInterval(period FHIR.Period): if period is null then null else if period."start" is null then Interval(period."start".value, period."end".value] else Interval[period."start".value, period."end".value]
extension:
  url:
    v: displaySequence
  value: integer
    v: 22
url:
  v: http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition

id:
  v: effective-data-requirements
url:
  v: http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements
value: canonical
  v: #effective-data-requirements

use:
  v: official
value:
  v: cdc-opioid-guidance

v: 2022.1.0

v: PlanDefinition_Recommendation_09_Order_Sign

v: Recommendation #9 - Consider Patient's History of Controlled Substance Prescriptions

coding:
  system:
    v: http://terminology.hl7.org/CodeSystem/plan-definition-type
  code:
    v: eca-rule
  display:
    v: ECA Rule

v: draft

v: true

v: 2025-07-01

v: Centers for Disease Control and Prevention (CDC)

telecom:
  system:
    v: url
  value:
    v: https://www.cdc.gov

v: When prescribing initial opioid therapy for acute, subacute, or chronic pain, and periodically during opioid therapy for chronic pain, clinicians should review the patient's history of controlled substance prescriptions using state prescription drug monitoring program (PDMP) data to determine whether the patient is receiving opioid dosages or combinations that put the patient at high risk for overdose.

code:
  system:
    v: http://terminology.hl7.org/CodeSystem/usage-context-type
  code:
    v: focus
  display:
    v: Clinical Focus
value: CodeableConcept
  coding: http://snomed.info/id/182888003
    system:
      v: http://snomed.info/sct
    code:
      v: 182888003
    display:
      v: Medication requested (situation)

code:
  system:
    v: http://terminology.hl7.org/CodeSystem/usage-context-type
  code:
    v: focus
  display:
    v: Clinical Focus
value: CodeableConcept
  coding: http://snomed.info/id/82423001
    system:
      v: http://snomed.info/sct
    code:
      v: 82423001
    display:
      v: Chronic pain (finding)

code:
  system:
    v: http://terminology.hl7.org/CodeSystem/usage-context-type
  code:
    v: focus
  display:
    v: Clinical Focus
value: CodeableConcept
  coding: http://snomed.info/id/274663001
    system:
      v: http://snomed.info/sct
    code:
      v: 274663001
    display:
      v: Acute pain (finding)

code:
  system:
    v: http://terminology.hl7.org/CodeSystem/usage-context-type
  code:
    v: focus
  display:
    v: Clinical Focus
value: CodeableConcept
  text:
    v: Subacute pain

v: The 2022 CDC Clinical Practice Guideline for Prescribing Opioids for Pain is intended to improve communication between clinicians and patients about the benefits and risks of pain treatments, including opioid therapy; improve the effectiveness and safety of pain treatment; mitigate pain; improve function and quality of life for patients with pain; and reduce risks associated with opioid pain therapy, including opioid use disorder, overdose, and death. The recommendations do not apply to pain related to sickle cell disease or cancer or to patients receiving palliative or end-of-life care.

v: At a minimum, during long-term opioid therapy, PDMP data should be reviewed before an initial opioid prescription and then every 3 months or more frequently.

v: © CDC 2016+.

text:
  v: Opioid Prescribing

name:
  v: Kensaku Kawamoto, MD, PhD, MHS

name:
  v: Bryn Rhodes

name:
  v: Floyd Eisenberg, MD, MPH

name:
  v: Robert McClure, MD, MPH

type:
  v: documentation
display:
  v: 2022 CDC Clinical Practice Guideline for Prescribing Opioids for Pain
url:
  v: https://www.cdc.gov/mmwr/volumes/71/rr/rr7103a1.htm
document:
  url:
    v: https://www.cdc.gov/mmwr/volumes/71/rr/rr7103a1.htm

extension:
  url:
    v: http://hl7.org/fhir/StructureDefinition/cqf-strengthOfRecommendation
  value: CodeableConcept
    coding:
      system:
        v: http://terminology.hl7.org/CodeSystem/recommendation-strength
      code:
        v: weak
      display:
        v: Weak
extension:
  url:
    v: http://hl7.org/fhir/StructureDefinition/cqf-qualityOfEvidence
  value: CodeableConcept
    coding:
      system:
        v: http://terminology.hl7.org/CodeSystem/evidence-quality
      code:
        v: very-low
      display:
        v: Very low quality
title:
  v: Before Ordering Opioids, Review PDMP Data
description:
  v: Review PDMP data for this patient before completing an opioid order. For guidance about utilizing PDMP information to improve patient safety, see [Recommendation 9 of the 2022 CDC Clinical Practice Guideline](https://www.cdc.gov/mmwr/volumes/71/rr/rr7103a1.htm#:~:text=Clinicians%20should%20take,see%20Recommendation%2010).). [CDC advises not to dismiss patients from your practice on the basis of PDMP information](https://www.cdc.gov/mmwr/volumes/71/rr/rr7103a1.htm#:~:text=Clinicians%20should%20not%20dismiss,Recommendations%208%20and%2012%5D).)
priority:
  v: urgent
trigger:
  type:
    v: named-event
  name:
    v: order-sign
condition:
  kind:
    v: applicability
  expression:
    description:
      v: Check whether the current order is for an opioid with ambulatory misuse potential, if an opioid review is appropriate or there exists evidence of a prescription drug monitoring program (PDMP) review procedure or finding occurred in the past 90 days.
    language:
      v: text/cql.identifier
    expression:
      v: Is Recommendation Applicable?
grouping behavior:
  v: visual-group
selection behavior:
  v: any
action:
  description:
    v: Access Data - Launch app to review PDMP data
action:
  description:
    v: Document - PDMP data reviewed, snooze 3 months
action:
  description:
    v: Snooze* - N/A see comment, snooze 3 months