Common CQL Assets for FHIR (US-Based)
1.0.0-ballot - STU 1 Ballot
This page is part of the Common CQL Assets for FHIR (US-Based) (v1.0.0-ballot: STU 1 Ballot 1) based on FHIR (HL7® FHIR® Standard) R4. No current official version has been published yet. For a full list of available versions, see the Directory of published versions
Page standards status: Informative |
USCore defines USCore Condition Encounter Diagnosis and USCore Condition Problems and Health Concerns.
Many clinical systems make a distinction between the active conditions for a patient (i.e. the problem list or health concerns) and the diagnoses associated with an encounter. Problem list items and health concerns are typically documented with additional information about the condition such as prevalence period and clinical status, while encounter diagnoses typically have less information, usually only the diagnosis code as part of the encounter information. Within FHIR, both these types of data are represented using the Condition resource. The category element is used to indicate which kind of data the Condition represents, a problem list item, a health concern, or an encounter diagnosis.
Typical code systems for Condition.code include ICD-10, SNOMED, and LOINC. For historical conditions there will also be ICD-9.
Conditions in US Core have the following modifier elements:
Note that neither of these elements are required, but both are must support, and have a required binding. As such the USCoreCommon library defines functions such as isActive()
for assessing these statuses. Further examples are provided in the "Common Elements" section below.
USCore defines the following mandatory search parameters for Condition resources:
In addition, the following optional parameters are defined:
NOTE: For discussion on how to manage search parameters with terminology, see the Terminology Considerations discussion in the Architectural Guidance topic.
NOTE: For discussion on how to manage optional search parameters, see the Performant Data Access discussion in the Architectural Guidance topic.
The 3.1.1 version of USCore has a single profile for Conditions and the category
element is used to distinguish between problem list items, health concerns, and encounter diagnoses. As a result, expressions that referenced Condition directly in 3.1.1 will need to reference both profiles in 6.1.0:
define "All Conditions":
[ConditionProblemsHealthConcerns]
union [ConditionEncounterDiagnosis]
Often the most relevant condition/diagnosis is available in the context of the workflow (such as ServiceRequest.reason or Encounter.reason). For prior auth the condition/diagnosis associated with the orders getting prior auth should already be known to the payer during CRD or PAS prior to returning the questionnaire, so it's best practice not to ask for it again in the questionnaire.
define "Active Diabetes Conditions":
UCE."All Conditions" Condition
where Condition.code in "Diabetes"
and Condition.isActive()
The USCoreCommon library defines functions and terminology declarations to facilitate common tests for the status elements of conditions:
isActive()
: Returns true if clinicalStatus
is one of active
, recurrence
, or relapse
isConfirmed()
: Returns true if verificationStatus
is confirmed
isRefuted()
: Returns true if verificationStatus
is refuted
Note that if the status elements being tested in these functions are not present, they will in general return null
(i.e. unknown), so care must be taken to ensure the correct interpretation in that case. For example:
define "Not Refuted":
UCE."All Conditions" Condition
where Condition.verificationStatus is not null implies not Condition.isRefuted()
To answer questions like "Have you ever been diagnosed with diabetes" use the "All Conditions"
expression:
define "History of Diabetes":
UCE."All Conditions" Condition
where Condition.code in "Diabetes"
If you have more filters such as excluding things that were refuted you can include those:
define "History of Diabetes":
UCE."All Conditions" Condition
where Condition.code in "Diabetes"
and Condition.verificationStatus is not null implies not Condition.isRefuted()
To answer questions like "Have you had COVID in the past 3 months", use prevalenceInterval
:
define "COVID Conditions":
UCE."All Conditions" Condition
where Condition.code in "COVID Diagnosis Codes"
and Condition.prevalenceInterval() status 3 months on or before Today()
Note that time frame and status requirements could vary by condition and payer interpretation and might not be spelled out in the medical policy. As such, the USCoreCommon and USCoreElement expressions are intended to be flexible to support a broad range of uses.
Note that the USCore profiles for condition indicate that:
Although all three are marked as Must Support, servers are not required to support all three.
The USCoreCommon library defines the following functions for determining onset, abatement, and prevalence:
toInterval()
: returns an interval representation of a time-valued element (i.e. choice of time types)abatementInterval()
: returns the abatement interval of a conditionprevalenceInterval()
: returns the prevalence interval of a condition (i.e. earliest onset through latest abatement if known)Some of this content is adapted from https://github.com/cqframework/CQL-Formatting-and-Usage-Wiki/wiki/Authoring-Patterns-QICore-v6.0.0#conditions