Clinical Quality Language Publication Directory

This page is part of the Clinical Quality Language Specification (v1.5.2: Normative - Normative) based on FHIR R4. This is the current published version. For a full list of available versions, see the Directory of published versions

1.3 Change Log

STU3 Reconciliation Changes

This changelist describes the substantive changes, as well as a handful of more significant changes to the specification as a result of STU 3 comment reconciliation. For a complete list of changes, refer to the repository commit history and the ballot reconciliation spreadsheet.

  • #30: Updated terminology identifiers to use URIs in examples throughout

  • #36: Added discussion of code and concept declarations and literals

  • #42: Specified duration of year as 365 days and month as 30 days when there is no anchor

  • #43: Clarified that timezone offset normalization should only apply for time-based precisions

  • #47: Added Date overloads for CalculateAge operators in ELM and CQL; AgeInYears and AgeInMonths use Date, AgeInWeeks and finer use DateTime

  • #48: Added examples of Date-interval with open/closed boundaries

  • #57: Added guidance on use of external functions

  • #61: Added examples throughout

  • #65: Added documentation of formatting strings

  • #67: Clarified behavior of precision with between and other date/time functions

  • #72: Added SplitOnMatches operator

  • #73: Added discussion of potential pitfalls with uncertainty and date/time arithmetic

  • #75: Added Concept overload for Equivalence

  • #101: Updated ELM model

  • #167: Clarified mixed-type signatures for interval and date/time operators and the semantics for interval promotion/demotion and when they are used

  • #207: Added OperatorExpression type in ELM

  • #214: Align with the FHIRPath normative ballot

  • #215: Remove the ability to extract a week component

  • #216: Remove the ability to say "same week as"

  • #211: Symbolic date/time comparisons now occur at finest precision specified in either input

  • #212: Remove unnecessary overloads of Divide and Multiply

  • #217: Added choice-casting and interval promotion/demotion to conversion precedence

  • #218: Added discussion of the option to require the from keyword for all queries

  • #219: Changed date/time equality/comparison to return null only if the values have different levels of precision

  • #220: Changed tuple equality to return null only if the values have different elements specified

  • #221: Changed list membership and duplicate detection semantics throughout to use equality instead of equivalence

  • #222: Add a per clause to the collapse operator

STU 3 Ballot Changes

  • 1377: Corrected link to Type Operators section

  • 1378: Corrected link to Type Operators section

  • 1379: Improved formatting for table 9-E

  • 1432: Added signature element to FunctionRef ELM type

  • 1433: Clarified that on and same are synonyms in timing phrases

  • 1434: Relaxed quantity operation semantics to return null rather than raise an error for invalid quantity operations

  • 1435: Exists operator now ignores null elements in lists

  • 1436: Clarified aliases are not allowed in sort clauses

  • 1437: Added Ratio system-defined type

  • 1438: Fixed take() FHIRPath mapping

  • 1439: Added difference of and duration between operators

  • 1440: Require case-sensitivity for UCUM units

  • 1441: Added clarifying guidance regarding date/time calculations involving date/time values with different timezone offsets

  • 1442: Division of like quantities results in a quantity with the default UCUM unit ('1')

  • 1443: Added implicit conversion from Integer or Decimal to Quantity

  • 1444: Added Date system-defined type

  • 1445: Clarified singular and UCUM temporal units are allowed for date/time arithmetic

  • 1446: Changed conversion of List<Code> to Concept from implicit to explicit

  • 1447: Added overloads of In to support List<Code>

  • 1475: Clarified set semantics of intersect and except

  • 1478: Clarified timezone offset handling for difference calculations

  • 1479: Clarified calendar semantics for date/time arithmetic, even when using UCUM time-period units

  • 1483: BinaryExpression and TernaryExpression ELM types are now abstract

  • 1500: Union, Intersect, and Except are now NaryExpressions

  • 1507: Generalized named type specifier rule to allow for multiple-qualifier type names

  • 1509: Clarified case-insensitive behavior of string comparison

  • 1538: Clarified instance selector behavior for missing elements

  • 1539: Clarified behavior of a quantity with a null unit

  • 1540: Corrected ELM documentation for IdentifierRef

  • 1541: Added support for Product and GeometricMean aggregate operators

  • 1542: Added support for Expand interval set operator

  • 1549: Publish CQL as a web-based specification

  • 1552: Clarified that ELM and CQL do not prescribe short-circuit evaluation

  • 1553: Clarified that parameter defaults must be compile-time evaluable

  • 1555: Relaxed semantics of conversion failures to return null instead of run-time errors

  • 1556: Clarify semantics for string overload of valueset membership operator (in)

  • 1560: Corrected population context example

  • 1561: Added singleton overloads for included in and includes

  • 1569: Corrected missing operators in operator precedence chart

  • 1574: Clarified null-handling behavior for in and contains

  • 1579: Added FHIRPath changes: Mappings for hasValue, conformsTo, memberOf, subsumes, subsumedBy, toChars, and aggregate; added $index and $total iterators

  • 1580: Changed ELM serialization to avoid type clash with JSON serializers