Breast Cancer Screening and Management (BCSM) Clinical Decision Support (CDS) Implementation Guide
1.0.0 - ci-build

Breast Cancer Screening and Management (BCSM) Clinical Decision Support (CDS) Implementation Guide - Local Development build (v1.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Library: Follow-up Screening Result

Official URL: http://cancerscreeningcds.github.io/bcsm-cds/Library/FollowupScreeningResult Version: 1.0.0
Draft as of 2025-02-28 Computable Name: FollowupScreeningResult
Title: Follow-up Screening Result
Id: FollowupScreeningResult
Version: 1.0.0
Url: Follow-up Screening Result
Status: draft
Type:

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

code: logic-library

Date: 2025-02-28 23:16:14+0000
Publisher: MITRE
Related Artifacts:

Dependencies

Parameters:
NameTypeMinMaxIn/Out
PatientPatient01Out
ErrorBreastBiopsyWithNoConclusionCodesboolean01Out
ErrorBreastImagingWithNoConclusionCodesboolean01Out
ErrorDiagnosticReportWithUnsupportedConclusionCodeboolean01Out
Errorsboolean01Out
FollowupBirads0ResultResource01Out
FollowupBirads3ResultResource01Out
FollowupBirads4Or5ResultResource01Out
FollowupBenignBiopsyResultResource01Out
FollowupAtypicalBiopsyResultResource01Out
FollowupMalignantBiopsyResultResource01Out
FollowupIndeterminateBiopsyResultResource01Out
FollowupDiscordantBiopsyResultResource01Out
flow-FollowupScreeningResultResource0*Out
NoErrorsHaveOccurredboolean01Out
ExistsFollowupBirads0Resultboolean01Out
FollowupBirads0ResultCodeCoding01Out
FollowupBirads0ResultReasonCoding01Out
FollowupBirads0ResultTimingResource01Out
FollowupBirads0ResultTimingEventstring01Out
FollowupBirads0ResultFlagResource0*Out
ExistsFollowupBirads3Resultboolean01Out
FollowupBirads3ResultCodeCoding01Out
FollowupBirads3ResultReasonCoding01Out
FollowupBirads3ResultTimingResource01Out
FollowupBirads3ResultTimingEventstring01Out
FollowupBirads3ResultFlagResource0*Out
ExistsFollowupBirads4Or5Resultboolean01Out
FollowupBirads4Or5ResultCodeCoding01Out
FollowupBirads4Or5ResultReasonCoding01Out
FollowupBirads4Or5ResultTimingResource01Out
FollowupBirads4Or5ResultTimingEventstring01Out
FollowupBirads4Or5ResultFlagResource0*Out
ExistsFollowupBenignBiopsyResultboolean01Out
FollowupBenignBiopsyResultCodeCoding01Out
FollowupBenignBiopsyResultReasonCoding01Out
FollowupBenignBiopsyResultTimingResource01Out
FollowupBenignBiopsyResultTimingEventstring01Out
FollowupBenignBiopsyResultFlagResource0*Out
ExistsFollowupAtypicalBiopsyResultboolean01Out
FollowupAtypicalBiopsyResultCodeCoding01Out
FollowupAtypicalBiopsyResultReasonCoding01Out
FollowupAtypicalBiopsyResultTimingResource01Out
FollowupAtypicalBiopsyResultTimingEventstring01Out
FollowupAtypicalBiopsyResultFlagResource0*Out
ExistsFollowupMalignantBiopsyResultboolean01Out
FollowupMalignantBiopsyResultCodeCoding01Out
FollowupMalignantBiopsyResultReasonCoding01Out
FollowupMalignantBiopsyResultTimingResource01Out
FollowupMalignantBiopsyResultTimingEventstring01Out
FollowupMalignantBiopsyResultFlagResource0*Out
ExistsFollowupIndeterminateBiopsyResultboolean01Out
FollowupIndeterminateBiopsyResultCodeCoding01Out
FollowupIndeterminateBiopsyResultReasonCoding01Out
FollowupIndeterminateBiopsyResultTimingResource01Out
FollowupIndeterminateBiopsyResultTimingEventstring01Out
FollowupIndeterminateBiopsyResultFlagResource0*Out
ExistsFollowupDiscordantBiopsyResultboolean01Out
FollowupDiscordantBiopsyResultCodeCoding01Out
FollowupDiscordantBiopsyResultReasonCoding01Out
FollowupDiscordantBiopsyResultTimingResource01Out
FollowupDiscordantBiopsyResultTimingEventstring01Out
FollowupDiscordantBiopsyResultFlagResource0*Out
Data Requirements:
TypeProfileMSCode Filter
Patient http://hl7.org/fhir/StructureDefinition/Patient
DiagnosticReport http://hl7.org/fhir/StructureDefinition/DiagnosticReport ;;;; code filter:
path: code
value set: http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1032.394
DiagnosticReport http://hl7.org/fhir/StructureDefinition/DiagnosticReport ;;;; code filter:
path: code

system: http://loinc.org

code: 66110-8

display: Breast Pathology biopsy report

DiagnosticReport http://hl7.org/fhir/StructureDefinition/DiagnosticReport ;;;
Observation http://hl7.org/fhir/StructureDefinition/Observation ;;;; code filter:
path: code

system: http://loinc.org

code: 66110-8

display: Breast Pathology biopsy report

Observation http://hl7.org/fhir/StructureDefinition/Observation ;;;; code filter:
path: code

system: http://loinc.org

code: 10193-1

display: Physical findings of Breasts Narrative

Content: text/cql
/*  
  Author: CMS Alliance to Modernize Healthcare, operated by THE MITRE Corporation.

  (C) 2024 The MITRE Corporation. All Rights Reserved. 
  Approved for Public Release: 24-2711. 
  Distribution Unlimited.

  Unless otherwise noted, this work is available under an Apache 2.0 license. 
  It was produced by the MITRE Corporation for the Division of Cancer Prevention 
  and Control, Centers for Disease Control and Prevention in accordance with the 
  Statement of Work, contract number 75FCMC18D0047, task order number 75D30123F17931.
*/

library FollowupScreeningResult version '1.0.0'

using FHIR version '4.0.1'
include FHIRHelpers  version '4.0.1' called FHIRHelpers

include FollowupScreeningResultEvents version '1.0.0' called Events
include FollowupScreeningResultActions version '1.0.0' called Actions
include DataElements version '1.0.0' called DataElements
include BCSMCommonFunctions version '1.0.0' called BCSMCommon

context Patient

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

define "flow-FollowupScreeningResult":
  if Errors then {}
  else
    {    
      FollowupBirads0Result,
      FollowupBirads3Result,
      FollowupBirads4Or5Result,
      FollowupBenignBiopsyResult,
      FollowupAtypicalBiopsyResult,
      FollowupMalignantBiopsyResult,
      FollowupIndeterminateBiopsyResult,
      FollowupDiscordantBiopsyResult
    }   
    except { null }

define FollowupBirads0Result:
  if Events."eve-latesttest".result ~ Events."Category0"
  then Actions."act-incompletescreen"
  else null 

define FollowupBirads3Result:
  if Events."eve-latesttest".result ~ Events."Category3"
  then Actions."act-intervalscreen"
  else null 

define FollowupBirads4Or5Result:
  if Events."eve-latesttest".result ~ Events."Category4" or
    Events."eve-latesttest".result ~ Events."Category4A" or
    Events."eve-latesttest".result ~ Events."Category4B" or
    Events."eve-latesttest".result ~ Events."Category4C"
  then Actions."act-biopsy4"
  else if Events."eve-latesttest".result ~ Events."Category5"
  then Actions."act-biopsy5"
  else null  

define FollowupBenignBiopsyResult:
  if Events."eve-latesttest".result ~ Events."Benign"
  then Actions."act-benignbiopsy"
  else null 

define FollowupAtypicalBiopsyResult:
  if Events."eve-latesttest".result ~ Events."Atypical"
  then Actions."act-highriskreferral"
  else null 

define FollowupMalignantBiopsyResult:
  if Events."eve-latesttest".result ~ Events."Malignant"
  then Actions."act-oncreferral"
  else null 

define FollowupIndeterminateBiopsyResult:
  if Events."eve-latesttest".result ~ Events."Indeterminate"
  then Actions."act-indeterminatebiopsy"
  else null 

define FollowupDiscordantBiopsyResult:
  if Events."eve-latesttest".result ~ Events."Discordant"
  then Actions."act-discordantbiopsy"
  else null   

//------------------------------------------------------------------------------
// ERRORS
//------------------------------------------------------------------------------     

define Errors:
  ErrorBreastBiopsyWithNoConclusionCodes or
    ErrorBreastImagingWithNoConclusionCodes or
    ErrorDiagnosticReportWithUnsupportedConclusionCode

define NoErrorsHaveOccurred:
  not Errors

define ErrorBreastBiopsyWithNoConclusionCodes:
  Events."eve-latesttest".type = 'biopsy' and 
  Message(DataElements.MostRecentBreastBiopsyDiagnosticReportNoConclusionCodes, 
    DataElements.MostRecentBreastBiopsyDiagnosticReportNoConclusionCodes,
    'http://example.org/CodeSystem/plan-definition-action-reason-code-system/missingresultcode',
    'Warning', 
    'A laboratory test was found without a result. Please review patient record to resolve.')  

define ErrorBreastImagingWithNoConclusionCodes:
  Events."eve-latesttest".type = 'imaging' and 
    Message(DataElements.MostRecentBreastImagingDiagnosticReportNoConclusionCodes, 
    DataElements.MostRecentBreastImagingDiagnosticReportNoConclusionCodes,
    'http://example.org/CodeSystem/plan-definition-action-reason-code-system/missingresultcode',
    'Warning', 
    'An imaging test was found without a result. Please review patient record to resolve.')      

define ErrorDiagnosticReportWithUnsupportedConclusionCode:  
  Message(Events."eve-latesttest".result is null, 
    Events."eve-latesttest".result is null,
    'http://example.org/CodeSystem/plan-definition-action-reason-code-system/unknownresultcode',
    'Warning', 
    'A laboratory test was found with an unexpected result code. Please review patient record to resolve.')   

//------------------------------------------------------------------------------
// DYNAMIC VALUES
//------------------------------------------------------------------------------    

define ExistsFollowupBirads0Result:
  FollowupBirads0Result is not null

define FollowupBirads0ResultCode:    
  FollowupBirads0Result R return R.code

define FollowupBirads0ResultReason:  
  FollowupBirads0Result R return R.reason

define FollowupBirads0ResultTiming:    
  FollowupBirads0Result R return R.timingTiming

define FollowupBirads0ResultTimingEvent:    
  FollowupBirads0ResultTiming R return First(R.event)

define FollowupBirads0ResultFlag:
  FollowupBirads0Result R return BCSMCommon.CreateRecommendationFlagExtension(R.flag)  

define ExistsFollowupBirads3Result:
  FollowupBirads3Result is not null

define FollowupBirads3ResultCode:    
  FollowupBirads3Result R return R.code

define FollowupBirads3ResultReason:  
  FollowupBirads3Result R return R.reason

define FollowupBirads3ResultTiming:    
  FollowupBirads3Result R return R.timingTiming

define FollowupBirads3ResultTimingEvent:    
  FollowupBirads3ResultTiming R return First(R.event)

define FollowupBirads3ResultFlag:
  FollowupBirads3Result R return BCSMCommon.CreateRecommendationFlagExtension(R.flag)

define ExistsFollowupBirads4Or5Result:
  FollowupBirads4Or5Result is not null

define FollowupBirads4Or5ResultCode:    
  FollowupBirads4Or5Result R return R.code

define FollowupBirads4Or5ResultReason:  
  FollowupBirads4Or5Result R return R.reason

define FollowupBirads4Or5ResultTiming:    
  FollowupBirads4Or5Result R return R.timingTiming

define FollowupBirads4Or5ResultTimingEvent:    
  FollowupBirads4Or5ResultTiming R return First(R.event)

define FollowupBirads4Or5ResultFlag:
  FollowupBirads4Or5Result R return BCSMCommon.CreateRecommendationFlagExtension(R.flag)

define ExistsFollowupBenignBiopsyResult:
  FollowupBenignBiopsyResult is not null

define FollowupBenignBiopsyResultCode:    
  FollowupBenignBiopsyResult R return R.code

define FollowupBenignBiopsyResultReason:  
  FollowupBenignBiopsyResult R return R.reason

define FollowupBenignBiopsyResultTiming:    
  FollowupBenignBiopsyResult R return R.timingTiming

define FollowupBenignBiopsyResultTimingEvent:    
  FollowupBenignBiopsyResultTiming R return First(R.event)

define FollowupBenignBiopsyResultFlag:
  FollowupBenignBiopsyResult R return BCSMCommon.CreateRecommendationFlagExtension(R.flag)

define ExistsFollowupAtypicalBiopsyResult:
  FollowupAtypicalBiopsyResult is not null

define FollowupAtypicalBiopsyResultCode:    
  FollowupAtypicalBiopsyResult R return R.code

define FollowupAtypicalBiopsyResultReason:  
  FollowupAtypicalBiopsyResult R return R.reason

define FollowupAtypicalBiopsyResultTiming:    
  FollowupAtypicalBiopsyResult R return R.timingTiming

define FollowupAtypicalBiopsyResultTimingEvent:    
  FollowupAtypicalBiopsyResultTiming R return First(R.event)

define FollowupAtypicalBiopsyResultFlag:
  FollowupAtypicalBiopsyResult R return BCSMCommon.CreateRecommendationFlagExtension(R.flag)

define ExistsFollowupMalignantBiopsyResult:
  FollowupMalignantBiopsyResult is not null

define FollowupMalignantBiopsyResultCode:    
  FollowupMalignantBiopsyResult R return R.code

define FollowupMalignantBiopsyResultReason:  
  FollowupMalignantBiopsyResult R return R.reason

define FollowupMalignantBiopsyResultTiming:    
  FollowupMalignantBiopsyResult R return R.timingTiming

define FollowupMalignantBiopsyResultTimingEvent:    
  FollowupMalignantBiopsyResultTiming R return First(R.event)

define FollowupMalignantBiopsyResultFlag:
  FollowupMalignantBiopsyResult R return BCSMCommon.CreateRecommendationFlagExtension(R.flag)

define ExistsFollowupIndeterminateBiopsyResult:
  FollowupIndeterminateBiopsyResult is not null

define FollowupIndeterminateBiopsyResultCode:    
  FollowupIndeterminateBiopsyResult R return R.code

define FollowupIndeterminateBiopsyResultReason:  
  FollowupIndeterminateBiopsyResult R return R.reason

define FollowupIndeterminateBiopsyResultTiming:    
  FollowupIndeterminateBiopsyResult R return R.timingTiming

define FollowupIndeterminateBiopsyResultTimingEvent:    
  FollowupIndeterminateBiopsyResultTiming R return First(R.event)

define FollowupIndeterminateBiopsyResultFlag:
  FollowupIndeterminateBiopsyResult R return BCSMCommon.CreateRecommendationFlagExtension(R.flag)

define ExistsFollowupDiscordantBiopsyResult:
  FollowupDiscordantBiopsyResult is not null

define FollowupDiscordantBiopsyResultCode:    
  FollowupDiscordantBiopsyResult R return R.code

define FollowupDiscordantBiopsyResultReason:  
  FollowupDiscordantBiopsyResult R return R.reason

define FollowupDiscordantBiopsyResultTiming:    
  FollowupDiscordantBiopsyResult R return R.timingTiming

define FollowupDiscordantBiopsyResultTimingEvent:    
  FollowupDiscordantBiopsyResultTiming R return First(R.event)

define FollowupDiscordantBiopsyResultFlag:
  FollowupDiscordantBiopsyResult R return BCSMCommon.CreateRecommendationFlagExtension(R.flag)


Content: application/elm+xml
Encoded data (204208 characters)
Content: application/elm+json
Encoded data (368844 characters)