Clinical Quality Language Publication Directory

Clinical Quality Language Specification - Local Development build (v1.5.0). See the Directory of published versions

All Published Versions of Clinical Quality Language

The following versions of Clinical Quality Language are available:

Date Version Description
Current Versions
June 20th, 20191.4.1Current Official Published Version (Release 1 STU4)
(draft) (last commit) Current Development build (may be incoherent and change rapidly)
Normative sequence
April 2nd, 2020 1.5.0 R1 Ballot (mixed Normative and STU content):
  • Compatible, Substantive Changes:
    • STU4#1877: Added support for modular arithmetic for quantities
    • STU4#1896: Added an overload of expand to take a single interval
    • STU4#1907: Added an aggregate clause to the query construct
    • STU4#1910: Added support for specifying search paths in the Retrieve
    • STU4#1918: Added support for comment annotations that result in tags in the ELM output
    • STU4#1920: Added a fluent keyword to support fluent-style function invocation
    • STU4#1921: Added support for specifying include and reverseInclude elements in the Retrieve
    • STU4#1923: Added System.Long to support 64-bit integers
    • STU4#1908: Added the ability to pass value sets and code systems as reference-type arguments
    • STU4#1917: Added a text/cql.identifier media type to support referencing the name of a defined CQL expression

Detailed Change Log

STU4 sequence
June 20th, 2019 1.4.1 STU4 Release. Changes (since the 2019 May Ballot):
  • Breaking Changes:
    • STU4B#22: Added definitional and referential identifier categories to the grammar to resolve ambiguity
    • STU4B#23: Updated semantics of list operators to treat null elements as equal for the purposes of membership determination
    • STU4B#27: Changed ToDateTime(Date) to leave time components unspecified
    • STU4B#70: Changed "Unspecified" context name to "Unfiltered"
    • STU4B#94: Removed the scope attribute from the Retrieve in ELM
  • Breaking Changes (from 2019 May Ballot only):
    • STU4B#79: Required related context retrieve expression to return a singleton
    • STU4B#114: ConvertQuantity operator now throws an error if the implementation does not support the conversion
  • Substantive Changes:
    • STU4B#29: Added contextTargetRelationship to model information to support identifying target context elements
    • STU4B#32: Added target element to model information
    • STU4B#35: Changed timing phrase translations to add null check when the translation constructs an interval from a nullable element
    • STU4B#36: Added Precision, LowBoundary, and HighBoundary operators for Decimal, DateTime, Date, and Time types
    • STU4B#87: Added Ratio overload of ToQuantity operator
    • STU4B#109: Code paths specified in retrieves can now use literal indexers
  • Detailed Change Log

March 24th, 2019 1.4.0 STU4 Ballot. Changes:
  • Breaking Changes:
    • #1716: Added support for non-patient, model-defined contexts
    • #1723: Define seconds as a Decimal for the purposes of comparison
    • #1724: Removed timezone offset from Time; changed timezone keyword to timezoneoffset
    • #1722: Removed the 'T' prefix from time formatting strings
  • Substantive Changes:
    • #1707: Added a Size operator for intervals
    • #1719: Added support for namespaces for library names
    • #1720: Added support for qualifiers in retrieve code paths
    • #1722: Updated FHIRPath usage and translation mappings for FHIRPath Normative 3 ballot
    • #1727: Added unit conversion support for quantities
    • #1766: Added valuesetProperty to ELM Retrieve
    • Added support for related-context queries

Detailed Change Log

STU3 sequence
September 5, 2018 1.3.1 STU3 Release. Changes:
  • Equality for types with components now only returns null if the values have different elements specified
  • List membership and duplicate detection now use equality rather than equivalence semantics throughout
  • Clarified date/time equality/equivalence/comparison semantics
  • Symbolic date/time comparisons now occur at finest precision specified in either value
  • Clarified relationship between symbolic/specified comparison operators
  • Clarified relationship between date/time and interval overloads for equality/equivalence/comparison operators
  • Clarified definition and behavior of interval promotion and demotion and indicated it is optional and disabled by default
  • Improved conversion precedence
  • Removed "week" operations that require a "week number"
  • Changed AgeInYears() and AgeInMonths() to use Date, not DateTime
  • Added a per clause to collapse
  • Added SplitOnMatches
  • Added backtick-delimited identifiers
  • ELM operator content is now generated from the ELM model
  • Numerous clarifications and errata throughout
  • Added sidebar navigation

Detailed change log

April 1st, 2018 1.3.0 STU3 Ballot. Changes:
  • Language Changes:
    • Added Ratio and Date system-defined types
    • Added difference of and duration between syntax
    • Named type specifiers now allow multiple qualifiers
    • Added Product and GeometricMean aggregate operators
    • Added Expand interval set operator
    • Invalid quantity operations and conversions now return null instead of error
    • Exists now ignores null elements
    • Added implicit conversion from Integer or Decimal to Quantity
  • ELM Changes:
    • Added signature element to FunctionRef
    • Added ELM classes for new operators
    • BinaryExpression and TernaryExpression are now abstract
    • Union, Intersect, and Except are now NaryExpressions
  • FHIRPath Support:
    • Added mappings for hasValue, conformsTo, memberOf, subsumes, subsumedBy, toChars
    • Added support for new aggregate()
    • Added support for $index and $total accessors

Detailed change log

STU2 sequence
July 2017 (published link)
July 2017 (web version)
1.2.1 STU2 Release. Changes:
  • Adopted FHIRPath grammar as basis for expressions
    • Support for paths
    • Method-style invocation
    • List promotion and demotion
    • Empty list as null semantics
    • $ and % identifier scopes
    • Additional FHIRPath operators
  • Support for declaration-only libraries
  • Added choice type support
  • Added Message operator to support run-time messages, errors, and warnings
  • Added external function declarations
  • Added debug and type information to ELM
  • Specified JSON format for ELM
  • Added less than/more than timing phrase modifiers
  • Added on or/or on timing phrase modifiers
  • Relaxed syntactic restriction on terminology target in a retrieve

Detailed change log

STU1 sequence
July 2016 1.1 DSTU Update. Changes:
  • Changed define clause to let within queries
  • Changed matches to ~
  • Changed <> to !=
  • Changed lists to be 0-based instead of 1-based
  • Renamed expand to flatten
  • Added implicit conversion from List<Code> to Concept
  • Added Exp operator (inverse of Ln)
  • Added weeks duration
  • Added support for forward declarations
  • Added concept and code declarations

Detailed change log

May 2015 1.0 STU1 Release May 2015