This page provides access to downloadable PDF copies of the current and previous versions of this document.
The most recent version should also be available via a link on the front page of the document.
A new version was published in mid 2017 in response to a range of implementation feedback, and to support the publication of the Machine Readable Concept Model (MRCM) in the 20170731 international release. In particular, a refinement can now be applied to any subexpression constraint, the parsing of dottedExpressionConstraints is simplified, a subexpression constraint can now be used in place of an attribute name, and the rule conceptReference has been renamed to eclConceptReference to avoid overlap with the corresponding rule from SNOMED CT Compositional Grammar (when used together in the Template Syntax). These changes were reflected in the updated brief syntax ABNF rules:
refinedExpressionConstraint = subExpressionConstraint ws ":" ws eclRefinement
simpleExpressionConstraint = [constraintOperator ws] [memberOf ws] eclFocusConcept
dottedExpressionConstraint = subExpressionConstraint 1*(ws dottedExpressionAttribute)
dottedExpressionAttribute = dot ws eclAttributeName
eclFocusConcept = eclConceptReference / wildCard
eclConceptReference = conceptId [ws "|" ws term ws "|"]
eclAttribute = ["[" cardinality "]" ws] [reverseFlag ws] eclAttributeName ws (expressionComparisonOperator ws subExpressionConstraint / numericComparisonOperator ws "#" numericValue / stringComparisonOperator ws QM stringValue QM)
attributeOperator = childOf / descendantOrSelfOf / descendantOf
eclAttributeName = subExpressionConstraint
A new version, published in early 2017, which included an additional feature requested by implementers - namely the ability for the 'memberOf' function to be applied to a set of reference set concepts defined using an expression constraint.This change was reflected in the brief syntax ABNF rule:
subExpressionConstraint = [constraintOperator ws] [memberOf ws] (eclFocusConcept / "(" ws expressionConstraint ws ")")
A minor update, published in 2016, which corrected the definition of numericValue to allow negative decimal values to be fully supported. This change was reflected in the updated brief syntax ABNF rules:
numericValue = ["-"/"+"] (decimalValue / integerValue)
integerValue = digitNonZero *digit / zero
decimalValue = integerValue "." 1*digit
An update, published in 2016, to incorporate some additional features requested by implementers of the language. These updates included:
First official version of the SNOMED CT Expression Constraint Language - version 1.0, 2014.