Quality Measure Implementation Guide
2.0.0-ballot - STU 2 Ballot

Quality Measure Implementation Guide - Downloaded Version null See the Directory of published versions

## Library: CAUTI Elements (Experimental)

Official URL: http://hl7.org/fhir/uv/cqm/Library/CAUTIElements | Version: 2.0.0-ballot | Highlight text changes?
Standards status: Informative Draft as of 2026-04-07 | Maturity Level: 1 | Computable Name: CAUTIElements
Other Identifiers: OID:2.16.840.1.113883.4.642.40.61.28.38

DRAFT Data elements used in the calculation of NHSN Catheter-associated Urinary Tract Infection measures.

Metadata
Title | CAUTI Elements
Version | 2.0.0-ballot
Identifier | urn:oid:2.16.840.1.113883.4.642.40.61.28.38
Status | Draft
Experimental | true
Jurisdiction | 001 from http://unstats.un.org/unsd/methods/m49/m49.htm
Topic | FHIR
Topic | CQL
Steward (Publisher) | HL7 International / Clinical Quality Information
Description | DRAFT Data elements used in the calculation of NHSN Catheter-associated Urinary Tract Infection measures.
Type | logic-library from http://terminology.hl7.org/CodeSystem/library-type
Dependency | Description: Library FHIRHelpers Resource: http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.1 Canonical URL: `http://hl7.org/fhir/uv/cql/Library/FHIRHelpers|4.0.1`
Dependency | Description: Library FHIRCommon Resource: http://hl7.org/fhir/uv/cql/Library/FHIRCommon|2.0.0 Canonical URL: `http://hl7.org/fhir/uv/cql/Library/FHIRCommon|2.0.0`
Dependency | Description: Value Set Catheter Inserted Resource: `http://example.org/ValueSet/catheter-inserted` Canonical URL: `http://example.org/ValueSet/catheter-inserted`
Dependency | Description: Value Set Catheter Removed Resource: `http://example.org/ValueSet/catheter-removed` Canonical URL: `http://example.org/ValueSet/catheter-removed`
Dependency | Description: Value Set Urine Culture Resource: `http://example.org/ValueSet/urine-culture` Canonical URL: `http://example.org/ValueSet/urine-culture`
Dependency | Description: Value Set Bacterium Presence Resource: `http://example.org/ValueSet/bacterium-presence` Canonical URL: `http://example.org/ValueSet/bacterium-presence`
Dependency | Description: Value Set Microbiologic Blood Tests Resource: `http://example.org/ValueSet/bacterium-presence` Canonical URL: `http://example.org/ValueSet/bacterium-presence`
Data Requirement | Type: Procedure Profile(s): Procedure Code Filter(s): Path: code ValueSet: `http://example.org/ValueSet/catheter-inserted`
Data Requirement | Type: Procedure Profile(s): Procedure Code Filter(s): Path: code ValueSet: `http://example.org/ValueSet/catheter-removed`
Data Requirement | Type: Observation Profile(s): Observation Code Filter(s): Path: code ValueSet: `http://example.org/ValueSet/urine-culture`
Data Requirement | Type: Condition Profile(s): Condition
Data Requirement | Type: Observation Profile(s): Observation Code Filter(s): Path: code ValueSet: `http://example.org/ValueSet/bacterium-presence`
Data Requirement | Type: Encounter Profile(s): Encounter
Parameters
Name | Use | Card. | Type | Documentation
Measurement Period | In | 0..1 | Period |
Patient | Out | 0..1 | Patient |
Catheter Inserted Procedure | Out | 0..* | Procedure |
Catheter Removed Procedure | Out | 0..* | Procedure |
Catheter Usage | Out | 0..* | Period |
Catheter Usage During Measurement Period | Out | 0..* | Period |
Urine Culture With Bacterium | Out | 0..* | Observation |
UTI | Out | 0..* | Resource |
Catheter-Associated UTI | Out | 0..* | Resource |
Symptoms Not Attributable To Catheter | Out | 0..* | Condition |
Symptoms Attributable To Catheter | Out | 0..* | Condition |
Symptomatic UTI | Out | 0..* | Resource |
Microbiologic Blood Test Result | Out | 0..* | Observation |
Bacteremic UTI | Out | 0..* | Resource |
Encounter During Measurement Period | Out | 0..* | Encounter |
Library Content
CQL Content |
    /*
    @description: Provides data elements used in the Catheter-Associated Urinary Tract Infection Rates and Standardized Infection Ratio measures.
    @comment: DRAFT: Note that this is draft content used to illustrate an approach to calculating risk-adjusted measures.
    The logic represented here is based on the CAUTI measures defined in the [UTI Events](https://www.cdc.gov/nhsn/pdfs/pscmanual/7psccauticurrent.pdf)
    documentation on the NHSN site.
    @seealso: https://github.com/cqframework/CQL-Formatting-and-Usage-Wiki/blob/master/Source/Cooking%20With%20CQL/93/CAUTI.md
    */
    library CAUTIElements

    using FHIR version '4.0.1'

    include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers
    include hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon

    valueset "Catheter Inserted": 'http://example.org/ValueSet/catheter-inserted'
    valueset "Catheter Removed": 'http://example.org/ValueSet/catheter-removed'
    valueset "Urine Culture": 'http://example.org/ValueSet/urine-culture'
    valueset "Bacterium Presence": 'http://example.org/ValueSet/bacterium-presence'
    valueset "Microbiologic Blood Tests": 'http://example.org/ValueSet/bacterium-presence'

    parameter "Measurement Period" Interval<DateTime>
      default Interval[@2026-01-01T00:00:00, @2026-12-31T23:59:59]

    context Patient

    define "Catheter Inserted Procedure":
      [Procedure: "Catheter Inserted"] P
        where P.status = 'completed'

    define "Catheter Removed Procedure":
      [Procedure: "Catheter Removed"] P
        where P.status = 'completed'

    define "Catheter Usage":
      "Catheter Inserted Procedure" I
        let catheterRemoved:
          First(
            "Catheter Removed Procedure" R
              where R.performed.toInterval() starts after I.performed.toInterval()
              sort by start of performed.toInterval()
          )
        return Interval[
          date from start of I.performed.toInterval(),
          date from start of catheterRemoved.performed.toInterval()
        ]

    define "Catheter Usage During Measurement Period":
      collapse (
        "Catheter Usage" Usage
            where Usage overlaps "Measurement Period"
            return Interval[
                Max({start of Usage, start of "Measurement Period"}),
                Min({end of Usage, end of "Measurement Period"})
            ]
      )

    define "Urine Culture With Bacterium":
      [Observation: "Urine Culture"] O
        where O.status = 'final'
          and exists (
            O.component C
              where C.code in "Bacterium Presence"
                and C.value >= 10000 '[CFU]/mL'
          )

    define "UTI":
      "Urine Culture With Bacterium" U
        let
          DOE: date from start of U.effective.toInterval(),
          IWP: Interval[DOE - 3 days, DOE + 3 days]
        where start of U.effective.toInterval() during "Measurement Period"
        return {
          urineCultureResult: U,
          dateOfEvent: DOE,
          infectionWindowPeriod: IWP
        }

    define "Catheter-Associated UTI":
      "UTI" U
        where exists (
            "Catheter Usage" Usage
              where start of Usage before U.dateOfEvent
                and end of Usage on or after U.dateOfEvent - 1 day
                and duration in days of Usage > 2
        )

    define "Symptomatic UTI":
      "UTI" U
        where exists ("Symptoms Not Attributable To Catheter" S
          where S.prevalenceInterval() starts during U.infectionWindowPeriod
        )
          or exists (
            "Symptoms Attributable To Catheter" S
              where S.prevalenceInterval() starts during U.infectionWindowPeriod
                and not exists (
                  "Catheter Usage" Usage
                    where S.prevalenceInterval() starts during Usage
                )
          )

    // Need to finish out symptoms attributable and not-attributable
    define "Symptoms Not Attributable To Catheter":
      [Condition] C where false
    /*
      "Fever Over 38"
        union "Suprapubic Tenderness"
        union "Costovertebral Angle Pain"
        union "Hypothermia Under 36 In Infants"
        union "Apnea In Infants"
        union "Bradycardia In Infants"
        union "Lethargy In Infants"
        union "Vomiting In Infants"
    */

    define "Symptoms Attributable To Catheter":
      [Condition] C where false

    define "Microbiologic Blood Test Result":
      [Observation: "Microbiologic Blood Tests"] T
        where T.status = 'final'
          and exists (
            T.component C
              where C.code in "Bacterium Presence"
                and C.value >= 10000 '[CFU]/ml'
          )

    define "Bacteremic UTI":
      "UTI" U
        where exists (
          "Microbiologic Blood Test Result" B
            where B.effective.toInterval() during U.infectionWindowPeriod
              and exists (
                B.component.code intersect U.urineCultureResult.component.code
              )
        )

    define "Encounter During Measurement Period":
      [Encounter] E
        where E.period during "Measurement Period"

    define function "Patient Days"(location Location):
      Sum(
        "Encounter During Measurement Period" E
          where E.location.location.references(location)
          return all duration in days of E.period
      )
ELM XML Content |
    Encoded data
ELM JSON Content |
    Encoded data
Generated using version 0.5.4 of the sample-content-ig Liquid templates