Quality Measure Implementation Guide
2.0.0-ballot - STU 2 Ballot International flag

Quality Measure Implementation Guide, published by HL7 International / Clinical Quality Information. This guide is not an authorized publication; it is the continuous build for version 2.0.0-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-cqm/ and changes regularly. 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
Standards status: Informative Draft as of 2026-04-03 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