This page is part of the Clinical Quality Language Specification (v1.5.0: Normative Ballot 1). The current version which supercedes this version is 1.5.1. For a full list of available versions, see the Directory of published versions
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