The general expression constraint language requirements include:
Requirement E.1: Able to be evaluated against SNOMED CT content
Expression constraints must be able to be evaluated against a specific set of SNOMED CT content (referred to as the substrate). When evaluated against a finite set of precoordinated concepts or postcoordinated SNOMED CT expressions, a finite subset of the substrate can be found which satisfies the expression constraint.
Please note that the substrate over which the expression constraint is evaluated is not explicitly defined within the expression constraint, and must therefore be established by some other means. By default, the assumed substrate is the set of active components from the snapshot release (in distribution normal form) of the SNOMED CT versioned edition currently loaded into the given tool.
Requirement E.2: Expression constraint functional requirements
The expression constraint language must support the following capabilities:
The ability to reference a precoordinated SNOMED CT concept using its identifier and optional human-readable term.
The ability to refer to a set of concepts which is exactly equal to the descendants, descendants and self, ancestors, or ancestors and self of a given concept.
Immediate children and parents
The ability to refer to a set of concepts which are either immediate children or immediate parents of a given concept (based on non-redundant 116680003 |is a|relationships) (with or without the given concept itself).
The ability to connect two expression constraints, attribute groups or attribute sets via a logical AND operator.
The ability to connect two expression constraints, attribute groups or attribute sets via a logical OR operator.
The ability to refine (or specialize) the meaning of an expression constraint using one or more attributes values.
|Reverse||The ability to constrain the source concepts of a set of relationships, and refer to the destination concepts of these relationships.|
|Dotted attribute||The ability to refer to the value (or set of values) of an attribute that is included in the definition of a set of concepts.|
The ability to group a collection of attributes which operate together as part of a refinement.
The ability to specify an attribute name-value pair which further refines the meaning of the matching expressions.
The ability to define an attribute which may apply to either the descendants of the given attribute name, or the descendants and self of the given attribute name.
The ability to use an expression constraint to represent the valid set of attribute names and/or attribute values.
The ability to use integers, decimals, strings and booleans as attribute values.
Concrete value comparison
The ability to compare the attribute value of the matching expressions with the attribute value in the expression constraint using mathematical comparison operators (e.g. =, <, >, <=, >=, !=).
The ability to refer to a set of concepts that are referenced by members of a reference set (or set of reference sets).
The ability to filter out a set of expressions from the result, by either removing expressions whose focus concept is in a specific set, or removing expressions whose attribute value matches a given value.
The ability to refer to any concept in the substrate, without relying on the availability of a single root concept.
|Term filter||The ability to filter the result set, based on each concept having a matching description. Matching criteria for descriptions should be able to restrict the term, type, language, membership of a language reference set, and acceptability within that language reference set. Term matching approaches should include wildcard and word-prefix-any-order.|