Related Artifacts depends-on FHIR model information http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1 depends-on Library FHIRHelpers http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1 depends-on Code system LOINC Logical Observation Identifiers, Names and Codes (LOINC) depends-on Code system UsageContext US Public Health CodeSystem - Usage Context Type depends-on Code system JurisdictionsList US Public Health CodeSystem Jurisdictions Example depends-on Value set Chlamydia Laboratory Result Trigger Codes http://example.org/fhir/ValueSet/us-ph-triggering-valueset-chlamydia-example depends-on Value set Indeterminate or Equivocal Lab Result Value Indeterminate or Equivocal Lab Result Value depends-on Value set Negative or Undetected Lab Result Value Negative or Undetected Lab Result Value Parameters Triggering Encounter in 0 1 Encounter normalReportingDuration in 0 1 Quantity Patient out 0 1 Patient Chlamydia Test Results out 0 * Observation Triggering Encounters out 0 * Encounter Encounter Location References out 0 * Reference Locations Matching Encounter Location References out 0 * Location Encounter Location Address out 0 * Resource Patient Address out 0 * Resource Jurisdictions out 0 * Resource Encounter Address Postal Code is in Jurisdiction Codes out 0 * Resource Encounter Address State is in Jurisdiction Codes out 0 * Resource Patient Address Postal Code is in Jurisdiction Codes out 0 * Resource Patient Address State is in Jurisdiction Codes out 0 * Resource Address Exists in Jurisdiction Codes out 0 1 boolean Jurisdiction Codes Relevant to Encounter Addresses out 0 * Resource Jurisdiction Codes Relevant to Patient Addresses out 0 * Resource Indeterminate Chlamydia Test Results out 0 * Observation Negative Chlamydia Test Results out 0 * Observation Reportable Triggering Codes out 0 * Coding Encounter In Context out 0 1 Encounter Is Encounter Within Normal Reporting Duration? out 0 1 boolean eICR Compositions out 0 * Composition Existing Reportable Triggering Codes out 0 * Coding Is Encounter Reportable and Within Normal Reporting Duration? out 0 1 boolean Is Encounter Longer Than Normal Reporting Duration? out 0 1 boolean Is Encounter In Progress out 0 1 boolean Is Encounter Complete out 0 1 boolean Is Encounter In Progress and Within Normal Reporting Duration or 72h or less after end of encounter? out 0 1 boolean Most recent eICR out 0 1 Composition Most recent eICR sent over 72 hours ago? out 0 1 boolean Suspected Disorder Test Results out 0 * Observation Suspected Disorders out 0 * Resource Is Suspected Disorder? out 0 1 boolean Data Requirements Type: Patient (Patient) Type: Composition (Composition) Filter Value type One of these codes: Logical Observation Identifiers, Names and Codes (LOINC) 55751-2: 55751-2 Type: Encounter (Encounter) Type: Patient (Patient) Type: Encounter (Encounter) Type: Location (Location) Type: CodeSystem (CodeSystem) Type: Organization (Organization) Type: Observation (Observation) Filter Value code In ValueSet http://example.org/fhir/ValueSet/us-ph-triggering-valueset-chlamydia-example Type: Location (Location) Type: CodeSystem (CodeSystem) Type: CodeSystem (CodeSystem) Type: Patient (Patient) Type: CodeSystem (CodeSystem) Type: Patient (Patient) Type: Composition (Composition) Filter Value type One of these codes: Logical Observation Identifiers, Names and Codes (LOINC) 55751-2: 55751-2 Type: Observation (Observation) Type: Composition (Composition) Filter Value type One of these codes: Logical Observation Identifiers, Names and Codes (LOINC) 55751-2: 55751-2 Type: Location (Location) Type: Organization (Organization) Type: Observation (Observation) Filter Value code In ValueSet http://example.org/fhir/ValueSet/us-ph-triggering-valueset-chlamydia-example Type: Encounter (Encounter) Type: Encounter (Encounter) Type: Location (Location) Type: Encounter (Encounter) Type: CodeSystem (CodeSystem) Type: Observation (Observation) Filter Value code In ValueSet http://example.org/fhir/ValueSet/us-ph-triggering-valueset-chlamydia-example Contents 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 not shown - (application/elm+xml, size = 150Kb)
An example logic library for eRSD - Chlamydia example.
Value set Chlamydia Laboratory Result Trigger Codes
Value set Indeterminate or Equivocal Lab Result Value
Value set Negative or Undetected Lab Result Value
Locations Matching Encounter Location References
Encounter Address Postal Code is in Jurisdiction Codes
Encounter Address State is in Jurisdiction Codes
Patient Address Postal Code is in Jurisdiction Codes
Patient Address State is in Jurisdiction Codes
Jurisdiction Codes Relevant to Encounter Addresses
Jurisdiction Codes Relevant to Patient Addresses
Is Encounter Within Normal Reporting Duration?
Is Encounter Reportable and Within Normal Reporting Duration?
Is Encounter Longer Than Normal Reporting Duration?
Is Encounter In Progress and Within Normal Reporting Duration or 72h or less after end of encounter?
Most recent eICR sent over 72 hours ago?