US Public Health Profiles Library
2.0.0-ballot - STU 2 - Ballot United States of America flag

This page is part of the US Public Health Profiles Library (v2.0.0-ballot: STU 2 Ballot) based on FHIR (HL7® FHIR® Standard) R4. This version is a pre-release. The current official version is 1.0.0. For a full list of available versions, see the Directory of published versions

Library: US Public Health Executable Library - Rule Filters - Chlamydia Example (Experimental)

Official URL: http://hl7.org/fhir/us/ph-library/Library/us-ph-executable-library-rule-filters Version: 2.0.0-ballot
Standards status: Informative Computable Name: RuleFilters
Other Identifiers: OID:2.16.840.1.113883.4.642.40.58.28.1

An example logic library for eRSD - Chlamydia example.

Title: Rule Filters
Id: us-ph-executable-library-rule-filters
Version: 2.0.0-ballot
Url: Rule Filters

urn:oid:2.16.840.1.113883.4.642.40.58.28.1

Experimental: true
Type:

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

code: logic-library

Date: 2025-07-30 14:31:09+0000
Publisher: HL7 International / Public Health
Description:

An example logic library for eRSD - Chlamydia example.

Jurisdiction: US
Related Artifacts:

Dependencies

Parameters:
NameTypeMinMaxIn/Out
Triggering EncounterEncounter01In
normalReportingDurationQuantity01In
PatientPatient01Out
Chlamydia Test ResultsObservation0*Out
Triggering EncountersEncounter0*Out
Encounter Location ReferencesReference0*Out
Locations Matching Encounter Location ReferencesLocation0*Out
Encounter Location AddressResource0*Out
Patient AddressResource0*Out
JurisdictionsResource0*Out
Encounter Address Postal Code is in Jurisdiction CodesResource0*Out
Encounter Address State is in Jurisdiction CodesResource0*Out
Patient Address Postal Code is in Jurisdiction CodesResource0*Out
Patient Address State is in Jurisdiction CodesResource0*Out
Address Exists in Jurisdiction Codesboolean01Out
Jurisdiction Codes Relevant to Encounter AddressesResource0*Out
Jurisdiction Codes Relevant to Patient AddressesResource0*Out
Indeterminate Chlamydia Test ResultsObservation0*Out
Negative Chlamydia Test ResultsObservation0*Out
Reportable Triggering CodesCoding0*Out
Encounter In ContextEncounter01Out
Is Encounter Within Normal Reporting Duration?boolean01Out
eICR CompositionsComposition0*Out
Existing Reportable Triggering CodesCoding0*Out
Is Encounter Reportable and Within Normal Reporting Duration?boolean01Out
Is Encounter Longer Than Normal Reporting Duration?boolean01Out
Is Encounter In Progressboolean01Out
Is Encounter Completeboolean01Out
Is Encounter In Progress and Within Normal Reporting Duration or 72h or less after end of encounter?boolean01Out
Most recent eICRComposition01Out
Most recent eICR sent over 72 hours ago?boolean01Out
Suspected Disorder Test ResultsObservation0*Out
Suspected DisordersResource0*Out
Is Suspected Disorder?boolean01Out
Data Requirements:
TypeProfileMSCode Filter
Patient http://hl7.org/fhir/StructureDefinition/Patient
Composition http://hl7.org/fhir/StructureDefinition/Composition ; code filter:
path: type

system: http://loinc.org

code: 55751-2

Encounter http://hl7.org/fhir/StructureDefinition/Encounter ;;
Patient http://hl7.org/fhir/StructureDefinition/Patient ;;;
Encounter http://hl7.org/fhir/StructureDefinition/Encounter ;;
Location http://hl7.org/fhir/StructureDefinition/Location ;;;;;;
CodeSystem http://hl7.org/fhir/StructureDefinition/CodeSystem ;;;;
Organization http://hl7.org/fhir/StructureDefinition/Organization
Observation http://hl7.org/fhir/StructureDefinition/Observation ;;;; code filter:
path: code
value set: http://example.org/fhir/ValueSet/us-ph-triggering-valueset-chlamydia-example
Location http://hl7.org/fhir/StructureDefinition/Location ;;;;;;
CodeSystem http://hl7.org/fhir/StructureDefinition/CodeSystem ;;;;
CodeSystem http://hl7.org/fhir/StructureDefinition/CodeSystem ;;;;
Patient http://hl7.org/fhir/StructureDefinition/Patient ;;;
CodeSystem http://hl7.org/fhir/StructureDefinition/CodeSystem ;;;;
Patient http://hl7.org/fhir/StructureDefinition/Patient ;;;
Composition http://hl7.org/fhir/StructureDefinition/Composition ; code filter:
path: type

system: http://loinc.org

code: 55751-2

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

system: http://loinc.org

code: 55751-2

Location http://hl7.org/fhir/StructureDefinition/Location ;;;;;;
Organization http://hl7.org/fhir/StructureDefinition/Organization
Observation http://hl7.org/fhir/StructureDefinition/Observation ;;;; code filter:
path: code
value set: http://example.org/fhir/ValueSet/us-ph-triggering-valueset-chlamydia-example
Encounter http://hl7.org/fhir/StructureDefinition/Encounter ;;
Encounter http://hl7.org/fhir/StructureDefinition/Encounter ;;
Location http://hl7.org/fhir/StructureDefinition/Location ;;;;;;
Encounter http://hl7.org/fhir/StructureDefinition/Encounter
CodeSystem http://hl7.org/fhir/StructureDefinition/CodeSystem ;;;;
Observation http://hl7.org/fhir/StructureDefinition/Observation ;;;; code filter:
path: code
value set: http://example.org/fhir/ValueSet/us-ph-triggering-valueset-chlamydia-example
Content: text/cql
library RuleFilters version '1.0.0'

using FHIR version '4.0.1'

include FHIRHelpers version '4.0.1'

codesystem "LOINC": 'http://loinc.org'
codesystem "UsageContext": 'http://hl7.org/fhir/us/ecr/CodeSystem/us-ph-usage-context-type'
codesystem "JurisdictionsList": 'http://example.org/fhir/CodeSystem/ersd-jurisdictions-example'

// Overall triggering value sets, groupings of all condition-specific value sets, grouped by representation in the information model
valueset "Diagnosis Trigger Codes": 'http://example.org/fhir/ValueSet/valueset-dxtc-example'
valueset "Medication Trigger Codes": 'http://example.org/fhir/ValueSet/valueset-mrtc-example'
valueset "Laboratory Order Trigger Codes": 'http://example.org/fhir/ValueSet/valueset-lotc-example'
valueset "Laboratory Result Trigger Codes": 'http://example.org/fhir/ValueSet/valueset-lrtc-example'
valueset "Organism Substance Trigger Codes": 'http://example.org/fhir/ValueSet/valueset-ostc-example'
valueset "Procedure Trigger Codes": 'http://example.org/fhir/ValueSet/valueset-pctc-example'
valueset "Suspected Disorder Trigger Codes": 'http://example.org/fhir/ValueSet/valueset-sdtc-example'

// Condition-specific triggering codes, these would be listed for each condition
valueset "Chlamydia Laboratory Result Trigger Codes": 'http://example.org/fhir/ValueSet/valueset-chlamydia-example'

// Supplemental (or operational) value sets used in suspected reportability determination logic
valueset "Indeterminate or Equivocal Lab Result Value": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1035'
valueset "Negative or Undetected Lab Result Value": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1034'

code "eICRComposition": '55751-2' from "LOINC"

parameter "Triggering Encounter" Encounter
parameter "normalReportingDuration" default 14 days

context Patient

define "Chlamydia Test Results":
  [Observation: "Chlamydia Laboratory Result Trigger Codes"] O
    where O.status in { 'registered', 'preliminary', 'final', 'amended', 'corrected' }

define "Triggering Encounters":
  [Encounter] E

define "Encounter Location References":
  flatten("Triggering Encounters" TriggeringEncounter
    return TriggeringEncounter.location.location)

define "Locations Matching Encounter Location References":
  [Location] Location
    where exists (
        "Encounter Location References" LocationReference
          where ('Location/' + Location.id) ~ LocationReference.reference
      )

define "Encounter Location Address":
  "Locations Matching Encounter Location References" Address
    return Tuple { state: Address.address.state,  postalCode: Address.address.postalCode }

define "Patient Address":
  Patient.address PA
  return Tuple { state: PA.state, postalCode: PA.postalCode }

define "Jurisdictions":
  flatten([CodeSystem] C
    return C.concept Cpt
      return Tuple { jurisdictionCode: Cpt.code,
        definition: Cpt.definition,
        jurisdictionType: Cpt.property P where P.code='type' return P.value as FHIR.string,
        stateCode: Cpt.property P where P.code = 'state' return P.value as FHIR.code,
        postalCode: Cpt.property P where P.code = 'postalcode' return P.value as FHIR.code
        })

define "Encounter Address Postal Code is in Jurisdiction Codes":
  "Jurisdictions" J
    with "Encounter Location Address" LocationAddress
      such that LocationAddress.postalCode in J.postalCode

define "Encounter Address State is in Jurisdiction Codes":
    "Jurisdictions" J
      with "Encounter Location Address" LocationAddress
        such that LocationAddress.state in J.stateCode
          and 'STATE' in J.jurisdictionType

define "Patient Address Postal Code is in Jurisdiction Codes":
  "Jurisdictions" J
    with "Patient Address" PA
      such that PA.postalCode in J.postalCode

define "Patient Address State is in Jurisdiction Codes":
"Jurisdictions" J
  with "Patient Address" PA
    such that (PA.state.value in J.stateCode
      and 'STATE' in J.jurisdictionType)

define "Address Exists in Jurisdiction Codes":
  exists (
    "Encounter Address State is in Jurisdiction Codes"
      union "Encounter Address Postal Code is in Jurisdiction Codes"
        union "Patient Address State is in Jurisdiction Codes"
          union "Patient Address Postal Code is in Jurisdiction Codes"
    )

define function EncounterAddressJurisdictions():
  if exists ("Encounter Address Postal Code is in Jurisdiction Codes")
    then "Encounter Address Postal Code is in Jurisdiction Codes"
      else "Encounter Address State is in Jurisdiction Codes"

define function PatientAddressJurisdictions():
  if exists ("Patient Address Postal Code is in Jurisdiction Codes")
    then "Patient Address Postal Code is in Jurisdiction Codes"
      else "Patient Address State is in Jurisdiction Codes"

define "Jurisdiction Codes Relevant to Encounter Addresses":
  EncounterAddressJurisdictions()

define "Jurisdiction Codes Relevant to Patient Addresses":
  PatientAddressJurisdictions()

define "Indeterminate Chlamydia Test Results":
  "Chlamydia Test Results" O
    let organization: [Organization]
    where (
      (
        exists (
            O.interpretation interpretationConcept
              where interpretationConcept as CodeableConcept in "Indeterminate or Equivocal Lab Result Value"
        )
          or O.value as CodeableConcept in "Indeterminate or Equivocal Lab Result Value"
      )
        and "Address Exists in Jurisdiction Codes"
    )

define "Negative Chlamydia Test Results":
  "Chlamydia Test Results" O
    let organization: [Organization]
    where (
      (
        exists (
            O.interpretation interpretationConcept
              where interpretationConcept as CodeableConcept in "Negative or Undetected Lab Result Value"
        )
          or O.value as CodeableConcept in "Negative or Undetected Lab Result Value"
      )
        and "Address Exists in Jurisdiction Codes"
    )

define "Reportable Triggering Codes":
  flatten ("Indeterminate Chlamydia Test Results" O return O.code.coding)
    union flatten ("Negative Chlamydia Test Results" O return O.code.coding)
    // ... reportable triggering codes for other conditions

define "Is Encounter Within Normal Reporting Duration?":
  "Current Encounter Duration"("Encounter In Context") <= "normalReportingDuration"

define "Is Encounter Reportable and Within Normal Reporting Duration?":
  exists (
    "Reportable Triggering Codes"
      except "Existing Reportable Triggering Codes"
  )
    and "Is Encounter Within Normal Reporting Duration?"

define "Existing Reportable Triggering Codes":
  flatten (
    "eICR Compositions" C
      return
        C.section.entry.extension E
          where E.url = 'http://hl7.org/fhir/us/ecr/StructureDefinition/eicr-trigger-code-flag-extension'
            return (singleton from (E.extension SE where SE.url = 'triggerCode')).value as Coding
  )

define function "Current Encounter Duration"(encounter Encounter):
  Quantity {
    value: decimal {
      value: duration in days between encounter.period.start and Coalesce(encounter.period.end.value, Now())
    },
    unit: string { value: 'days' }
  }

define "Encounter In Context":
  if "Triggering Encounter" is not null
    then "Triggering Encounter"
      else singleton from "Triggering Encounters"

define "Is Encounter Longer Than Normal Reporting Duration?":
  "Current Encounter Duration"("Encounter In Context") > "normalReportingDuration"

define "Is Encounter In Progress":
  "Encounter In Context".status ~ 'in-progress'

define "Is Encounter Complete":
  "Encounter In Context".status ~ 'finished'

define "Is Encounter In Progress and Within Normal Reporting Duration or 72h or less after end of encounter?":
  (
    "Is Encounter In Progress"
      and "Is Encounter Within Normal Reporting Duration?"
  )
    or (not IsNull("Triggering Encounter") and "Triggering Encounter".period.end 72 hours or less before Now())
    or (exists ("Triggering Encounters") and singleton from "Triggering Encounters".period.end 72 hours or less before Now())

define "eICR Compositions":
  [Composition : "eICRComposition"]

define "Most recent eICR sent over 72 hours ago?":
  if "Most recent eICR" is not null
    then "Most recent eICR".date 72 hours or more before Now()
    else false

define "Most recent eICR":
  First (
    "eICR Compositions" eICRs
      sort by date desc
  )

define "Suspected Disorder Test Results":
  [Observation] O
    where O.status in { 'registered', 'preliminary', 'final', 'amended', 'corrected' }
      and O.value as CodeableConcept in "Suspected Disorder Trigger Codes"

define "Suspected Disorders":
  [Condition: "Suspected Disorder Trigger Codes"]
    union [MedicationRequest: "Suspected Disorder Trigger Codes"]
    union "Suspected Disorder Test Results"

define "Is Suspected Disorder?":
  exists (
    "Suspected Disorders"
  )
Content: application/elm+xml
Encoded data (205120 characters)