Colorectal Cancer Screening and Management (CRCSM) Clinical Decision Support (CDS) Implementation Guide
0.1.0 - ci-build

Colorectal Cancer Screening and Management (CRCSM) Clinical Decision Support (CDS) Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Library: PrimaryScreeningDecision

Official URL: http://cancerscreeningcds.github.io/crcsm-cds/Library/PrimaryScreeningDecision Version: 0.1.0
Draft as of 2025-02-28 Computable Name: PrimaryScreeningDecision
Id: PrimaryScreeningDecision
Version: 0.1.0
Url: PrimaryScreeningDecision
Status: draft
Type:

system: http://terminology.hl7.org/CodeSystem/library-type

code: logic-library

Date: 2025-02-28 21:24:30+0000
Publisher: MITRE
Related Artifacts:

Dependencies

  • http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1
  • http://cancerscreeningcds.github.io/crcsm-cds/Library/ScreeningEligible|1.0.0
  • http://cancerscreeningcds.github.io/crcsm-cds/Library/DecisionToScreen|1.0.0
  • http://cancerscreeningcds.github.io/crcsm-cds/Library/USPSTFAvgRisk|1.0.0
  • http://cancerscreeningcds.github.io/crcsm-cds/Library/FHIRHelpers|4.0.1
  • http://cancerscreeningcds.github.io/crcsm-cds/Library/IncreasedRiskExclusions|1.0.0
  • Logical Observation Identifiers, Names and Codes (LOINC)
Parameters:
NameTypeMinMaxIn/Out
PatientPatient01Out
IsScreeningEligibleboolean01Out
flow-DecisionToScreenResource0*Out
flow-ScreeningEligibleResource0*Out
PrimaryScreeningDecisionResource0*Out
CheckIsIncludedAndNotExcludedboolean01Out
IsNotScreeningEligibleboolean01Out
ScreeningEligibleCodeCoding01Out
ScreeningEligibleReasonCoding01Out
ExistsSDMContinueScreeningAgeboolean01Out
SDMContinueScreeningAgeCodeCoding01Out
SDMContinueScreeningAgeReasonCoding01Out
ExistsSDMContinueScreeningLifeExpboolean01Out
SDMContinueScreeningLifeExpCodeCoding01Out
SDMContinueScreeningLifeExpReasonCoding01Out
ExistsStopScreeningAgeboolean01Out
StopScreeningAgeCodeCoding01Out
StopScreeningAgeReasonCoding01Out
ExistsIncreasedRiskExclusionsRecommendationsboolean01Out
ExistsUSPSTFAverageRiskRecommendationsboolean01Out
ExistsHereditarySyndromeboolean01Out
HereditarySyndromeCodeCoding01Out
HereditarySyndromeReasonCoding01Out
ExistsIBDboolean01Out
IBDCodeCoding01Out
IBDReasonCoding01Out
ExistsHxCRCboolean01Out
HxCRCCodeCoding01Out
HxCRCReasonCoding01Out
ExistsFamilyHxboolean01Out
FamilyHxCodeCoding01Out
FamilyHxReasonCoding01Out
ExistsHxPolypsboolean01Out
HxPolypsCodeCoding01Out
HxPolypsReasonCoding01Out
ExistsUSPSTFAvgRiskboolean01Out
USPSTFAvgRiskCodeCoding01Out
USPSTFAvgRiskReasonCoding01Out
USPSTFAvgRiskTimingResource01Out
USPSTFAvgRiskTimingEventstring01Out
ExistsUSPSTFAvgRiskStartAt45boolean01Out
ExistsUSPSTFAvgRiskNextDueboolean01Out
ExistsUSPSTFAvgRiskStartNowboolean01Out
Data Requirements:
TypeProfileMSCode Filter
Patient http://hl7.org/fhir/StructureDefinition/Patient
Observation http://hl7.org/fhir/StructureDefinition/Observation ;;; code filter:
path: code

system: http://loinc.org

code: 30525-0

display: Age

code filter:
path: value.unit

code: years

Content: text/cql
library PrimaryScreeningDecision version '1.0.0'

using FHIR version '4.0.1'

include ScreeningEligible version '1.0.0' called ScreeningEligible
include DecisionToScreen version '1.0.0' called DecisionToScreen
include USPSTFAvgRisk version '1.0.0' called USPSTFAvgRisk

context Patient

//------------------------------------------------------------------------------
// RECOMMENDATIONS
//------------------------------------------------------------------------------

define PrimaryScreeningDecision:
  Flatten(
    {
      "flow-DecisionToScreen",
      "flow-ScreeningEligible"
     }
    except { null }
  )

define "flow-ScreeningEligible":
  ScreeningEligible."flow-ScreeningEligible"

define "flow-DecisionToScreen":
  if IsScreeningEligible then DecisionToScreen."flow-DecisionToScreen" else null

//------------------------------------------------------------------------------
// DYNAMIC VALUES Screening Eligible
//------------------------------------------------------------------------------      

define CheckIsIncludedAndNotExcluded:
  ScreeningEligible.CheckIsIncludedAndNotExcluded

define IsScreeningEligible:
  ScreeningEligible."IsScreeningEligible"

define IsNotScreeningEligible:
  ScreeningEligible.IsNotScreeningEligible

// TODO: Add Screening Eligible Actions for Not Eligible Reasons

define ScreeningEligibleCode:
  ScreeningEligible.ScreeningEligibleCode

define ScreeningEligibleReason:
  ScreeningEligible.ScreeningEligibleReason     

//------------------------------------------------------------------------------
// DYNAMIC VALUES DECISION TO SCREEN
//------------------------------------------------------------------------------  

define ExistsSDMContinueScreeningAge:
  DecisionToScreen.ExistsSDMContinueScreeningAge

define SDMContinueScreeningAgeCode:
  DecisionToScreen.SDMContinueScreeningAgeCode

define SDMContinueScreeningAgeReason:
  DecisionToScreen.SDMContinueScreeningAgeReason

define ExistsSDMContinueScreeningLifeExp:
  DecisionToScreen.ExistsSDMContinueScreeningLifeExp

define SDMContinueScreeningLifeExpCode:
  DecisionToScreen.SDMContinueScreeningLifeExpCode

define SDMContinueScreeningLifeExpReason:
  DecisionToScreen.SDMContinueScreeningLifeExpReason

define ExistsStopScreeningAge:
  DecisionToScreen.ExistsStopScreeningAge
  
define StopScreeningAgeCode:
  DecisionToScreen.StopScreeningAgeCode

define StopScreeningAgeReason:
  DecisionToScreen.StopScreeningAgeReason

define ExistsIncreasedRiskExclusionsRecommendations:
  DecisionToScreen.ExistsIncreasedRiskExclusionsRecommendations

define ExistsUSPSTFAverageRiskRecommendations:
  DecisionToScreen.ExistsUSPSTFAverageRiskRecommendations

//------------------------------------------------------------------------------
// DYNAMIC VALUES INCREASED RISK SCREENING/SURVEILLANCE
//------------------------------------------------------------------------------

define ExistsHereditarySyndrome:
  DecisionToScreen.ExistsHereditarySyndrome

define HereditarySyndromeCode:
  DecisionToScreen.HereditarySyndromeCode

define HereditarySyndromeReason:
  DecisionToScreen.HereditarySyndromeReason

define ExistsIBD:
  DecisionToScreen.ExistsIBD

define IBDCode:
  DecisionToScreen.IBDCode

define IBDReason:
  DecisionToScreen.IBDReason

define ExistsHxCRC:
  DecisionToScreen.ExistsHxCRC

define HxCRCCode:
  DecisionToScreen.HxCRCCode

define HxCRCReason:
  DecisionToScreen.HxCRCReason

define ExistsFamilyHx:
  DecisionToScreen.ExistsFamilyHx

define FamilyHxCode:
  DecisionToScreen.FamilyHxCode

define FamilyHxReason:
  DecisionToScreen.FamilyHxReason

define ExistsHxPolyps:
  DecisionToScreen.ExistsHxPolyps

define HxPolypsCode:
  DecisionToScreen.HxPolypsCode

define HxPolypsReason:
  DecisionToScreen.HxPolypsReason

//------------------------------------------------------------------------------
// DYNAMIC VALUES AVERAGE RISK
//------------------------------------------------------------------------------

define ExistsUSPSTFAvgRisk:
  DecisionToScreen.ExistsUSPSTFAvgRisk

define USPSTFAvgRiskCode:    
  DecisionToScreen.USPSTFAvgRiskCode

define USPSTFAvgRiskReason:
  DecisionToScreen.USPSTFAvgRiskReason

define USPSTFAvgRiskTiming:    
  DecisionToScreen.USPSTFAvgRiskTiming

define USPSTFAvgRiskTimingEvent:    
  DecisionToScreen.USPSTFAvgRiskTimingEvent

define ExistsUSPSTFAvgRiskStartAt45:
  USPSTFAvgRisk.ExistsUSPSTFAvgRiskStartAt45

define ExistsUSPSTFAvgRiskNextDue:
  USPSTFAvgRisk.ExistsUSPSTFAvgRiskNextDue

define ExistsUSPSTFAvgRiskStartNow:
  USPSTFAvgRisk.ExistsUSPSTFAvgRiskStartNow
Content: application/elm+xml
Encoded data (51236 characters)
Content: application/elm+json
Encoded data (86636 characters)