Clinical Quality Language Specification
2.0.0-ballot - R2 STU 1 (Ballot)

Clinical Quality Language Specification, published by Clinical Decision Support WG. 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/cql/ and changes regularly. See the Directory of published versions

## V1.2 Change Log

Page standards status: Informative | Maturity Level: N/A

1.2 Change Log

Update 2 Changes:

Adopted the FHIRPath.g4 grammar as the base expression grammar for the language

Expanded semantics to enable FHIRPath expressions:

- Added ability to invoke property accessors on a list
- Added $ and % identifier scopes
- Added implies operator

- Added | as a synonym for union

- Added & string concatenation operator
- Added promotion and demotion of lists
- Added options to support enabling aspects of FHIRPath functionality
- Added “method-style” invocation syntax
- Added rewrite rules for FHIRPath operations
- Added Repeat, Slice, StartsWith, EndsWith, Matches, ReplaceMatches, LastPositionOf, Children, and Descendents operations
- Applied “treat null as empty list” semantics for list operators (e.g. exists (null) now returns false, not null)
- Added ToList operator to support efficient list promotion

Corrected String concatenation mapping

Clarified runtime behavior for options on quantities with incompatible units

Clarifications and errata throughout based on ballot comments

#824: Fixed Substring declarations in ELM

#991: Clarified semantics for conditional expressions

#1009: Clarified semantics and usage of retrieve with codes and terminologies

#1013: Changed semantics of set operators to distinct

#1031: Clarified semantics of decimal equality (trailing zeroes are ignored)

#1057: Added CQL and ELM Media Types and URL.

#1064: Added support for declaration-only libraries

#1102: Clarified quoted-identifier semantics

#1105: Added version header to CQL grammar file

#1111: Clarified semantics of time-based quantities

#1114: Clarified calculations involving weeks

#1116: Specified semantics for CQL versioning within libraries

#1120: Clarified semantics of date/time arithmetic with timezones

#1122: Added choice types

#1196: Clarified semantics of multiple with/without clauses in a query

#1197: Clarified semantics of weeks for date/time operations

#1221: Added warnings for decimal truncation of time-valued quantities

#1223: Added external function definitions to support import of external libraries

#1229: Clarified subtype vs proper subtype definition

#1232: Fixed incorrect IndexOf documentation

#1233: Fixed Implies signature

#1235: Clarified semantics for Upper and Lower operators

#1236: Clarified semantics for Min and Max aggregate operators

#1237: Clarified semantics for Age in a population context

#1287: Clarified rules for interval construction

#1309: Called clause in the include definition is now optional

#1310: Added source locator information to ELM

#1311: Added result type information to ELM

#1312: Specified JSON format for ELM

#1313: Added less than/more than qualifiers to interval operator phrases

#1314: Provided examples for time interval calculations

#1315: Clarified type inference rules for queries

#1316: Added EndsWith operator

#1317: Fixed an error with escape characters not parsing correctly

#1336: Clarified semantics for before/after timing phrases

#1337: Added on or/or on qualifier to timing phrases to enable inclusive before/after

#1339: Clarified sort behavior in the presence of nulls

#1340: Added Message operators to support errors, warnings, messages and tracing

#1341: Relaxed syntactic restriction on terminology expression in retrieves

#1345: Corrected interpretation of timing phrases

#1348: Clarified let semantics and added documentation for the let clause

Errata:

#1407: Corrected signature for Interval Intersect

#1426: Corrected signature for Same or Before

#1427: Corrected capitalization of is in keywords list

#1431: Relaxed equivalence semantics for Code values to ignore code system version