Requirements
In this chapter, we state the requirements of the SNOMED CT Template Syntax. These requirements are grouped into general SNOMED CT language requirements (which are shared by all SNOMED CT computable languages), template design requirements and template processing requirements.
General SNOMED CT Language Requirements
The general SNOMED CT language requirements include:
Requirement G.1 : Backward compatibility
The language should be backwardly compatible with any version of the language that has previously been adopted as an IHTSDO standard. Note that the only exception to this rule is where an error in the syntax has been identified and subsequently fixed.
Requirement G.2 : Consistency
Each logical feature of the language should have a single, consistent meaning across all the languages in the SNOMED CT family of languages. Each logical feature should also have a consistent set of syntax representations.
Requirement G.3 : Sufficient and necessary
Each language must be sufficiently expressive to meet the requirements of the use cases for which it was designed. However, functionality without a corresponding use case will not be included, as this increases the complexity of implementation unnecessarily.
Requirement G.4 : Machine processability
In order to facilitate the easy adoption by technical audiences, instances of each language must be able to be parsed into a logical representation using a machine processable syntax specification. This requirement will be met by defining the language syntax in ABNF.
Requirement G.5 : Human readability
Non-technical stakeholders require that the language is as human readable as possible, while still meeting the other requirements. This is essential for both the clinical validation of language instances, as well as for education and training.
Template Design Requirements
The template design requirements include:
Requirement D.1 : Placeholders for values
Templates should allow for placeholders (i.e. slots) to be specified, wherever a concept, expression, token or attribute value can be used.
Requirement D.2 Slot names
Templates should allow each slot to be assigned a name, enabling the slot to be referenced outside the slot (e.g. for specifying input data).
Requirement D.3 Slot types
Template slots should be able to be constrained to only permit a specific type of value (e.g. only allowing precoordinated concepts to replace a slot).
Requirement D.4 : Template value constraints
Templates slots should be able to be constrained to only permit values from a specific value set (e.g. only allowing expressions that satisfy a given expression constraint).
Requirement D.5 : Repeatability of template components
Templates should support a way of indicating how many times each focus concept, relationship group and attribute value pair can be repeated when the template is populated.
Template Processing Requirements
The template processing requirements include:
Requirement P.1 : Processable input data
Input data must be available, which can be automatically processed with the template to populate the slots with values. Input data must be clear (either explicitly or implicitly) as to which slot it is intended to populate, and whether multiple values are intended to be used within the same relationship group, the same expression (but different relationship groups), or different expressions.
Requirement P.2 : Post-processing validity of constraints
After template processing, the resulting language instance (e.g. expression) must be valid against the cardinality, slot type and value constraints that were defined in the template.
Requirement P.3 : Post-processing syntactic validity
After template processing, the resulting language instance (e.g. expression) must conform to the ABNF syntax of the associated base language (e.g. SNOMED CT compositional grammar).
Requirement P.4 : Post-processing concept model validity
After template processing, the resulting language instance (e.g. expression) should be valid according to the concept model rules defined by the relevant MRCM.
Requirement P.5 : Post-processing use case validity
After template processing, the resulting language instance (e.g. expression) should conform to all additional rules that are imposed by the relevant use case. For example, if an expression template is being used to author precoordinated concepts, then the resulting expression must not use nested values (to enable representation in RF2).
Last updated