SNOMED Documentation Search


Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The following ABNF definition specifies the SNOMED CT Template Syntaxtemplate syntax

templateSlot =  templateReplaceSlot / templateRemoveSlot templateReplacementSlot / templateInformationSlot

templateReplacementSlot = conceptReplacementSlot / expressionReplacementSlot / tokenReplacementSlot / concreteValueReplacementSlot

conceptReplacementSlot templateReplaceSlot = "[[" ws ws "+" ws "id" ws [ replaceInfo "(" ws expressionConstraint ws ")" ws] [slotInfo slotName ws] "]]"templateRemoveSlot = "[[" ws [slotInfo

expressionReplacementSlot "[[" ws "+" ws ["scg" ws] [ "(" ws expressionConstraint ws ")" ws] [slotName ws] "]]"

replaceInfo = conceptReplaceInfo / expressionReplaceInfo / constraintReplaceInfo / stringReplaceInfo

conceptReplaceInfo = "id" [ ws tokenReplacementSlot "[[" ws "+" ws "tok" ws [ "(" ws expressionConstraint slotTokenSet ws ")" ]expressionReplaceInfo"scg" [ ws " ws] [slotName ws] "]]"

concreteValueReplacementSlot = stringReplacementSlot / integerReplacementSlot / decimalReplacementSlot

stringReplacementSlot = "[[" ws "+" ws "str" ws [ "(" ws expressionConstraint slotStringSet ws ")" ]constraintReplaceInfo = "ecl"" ws] [slotName ws] "]]"

integerReplacementSlot = "[[" ws "+" ws "int" ws [  [ ws "(" ws expressionConstraintTemplate slotIntegerSet ws ")"  ]
stringReplaceInfo"str" ws] [slotName ws] "]]"

decimalReplacementSlot = "[[" ws "+" ws "dec" ws [ [ ws "(" ws slotStringSet slotDecimalSet ws ")" ws] [slotName ws] " ]]]" 

slotTokenSet = slotToken *(mws slotToken)

slotStringSet = slotString *(mws slotString *(ws "," ws slotString)

slotInfo = [slotCardinality ws] [slotName ws] [slotReference ws]

slotCardinality  = nonNegativeInteger ".." (nonNegativeInteger / "*")

slotName = "@" slotString

slotReference = "$" slotString

slotString = *nonQuoteString / (doubleQM *nondoubleQuoteString doubleQM) /  (singleQM *nonsingleQuoteString singleQM)

nonQuoteString = %x21 / %x23 / %x25-26 / %x28-3F / %x41-5A / %x5C / %x5E-7E   ; no ws, quotes, at, or dollar

nondoubleQuoteString = %x21 / %x23 / %x25-3F / %x41-7E   ; no ws, double quotes, at or dollar

)

slotIntegerSet = ( "#" integerValue / slotIntegerRange) *(mws ("#" integerValue / slotIntegerRange))

slotDecimalSet( "#" decimalValue / slotDecimalRange) *(mws ("#" decimalValue / slotDecimalRange))

slotIntegerRange = ( slotIntegerMinimum to [ slotIntegerMaximum ] ) / ( to slotIntegerMaximum )

slotIntegerMinimum = [ exclusiveMinimum ] "#" integerValue

slotIntegerMaximum = [ exclusiveMaximum ] "#" integerValue

slotDecimalRange = ( slotDecimalMinimum to [ slotDecimalMaximum ] ) / ( to slotDecimalMaximum )

slotDecimalMinimum = [ exclusiveMinimum ] "#" DecimalValue

slotDecimalMaximum = [ exclusiveMaximum ] "#" DecimalValue

exclusiveMinimum = ">"

exclusiveMaximum = "<"

slotName = "@" (nonQuoteStringValue / slotString)

slotToken = definitionStatus / memberOf / constraintOperator / conjunction / disjunction / exclusion / reverseFlag / expressionComparisonOperator / numericComparisonOperator / stringComparisonOperator

slotString = QM stringValue QM

nonQuoteStringValue = *(%x21 / %x23nonsingleQuoteString = %x21-23 / %x25-26 / %x28-3F / %x41-5A / %x5C / %x5E-7E)     ; string with no ws, single quotes, at  at or dollarsquare brackets

nonNegativeInteger =  (%x31-39 *(%x30-39) ) / %x30    ; (digitNonZero *digit) / zero

doubleQM = %x22   ; Double quotation mark

singleQM = %x27   ; Single quotation mark

Please note that three of the rules used above are defined in other specifications. In particular,

templateInformationSlot = "[[" ws slotInformation ws "]]"

slotInformation = [cardinality ws] [slotName ws]

Please note that some of the rules referenced above are defined elsewhere. In particular, definitionStatus is defined in SNOMED CT compositional grammar, and expressionConstraintcardinality, toQMstringValue, integerValue, decimalValuews, mwsmemberOfconstraintOperatorconjunctiondisjunctionexclusionreverseFlagexpressionComparisonOperatornumericComparisonOperator and stringComparisonOperator are all defined in the expression constraint language syntax. These rule definitions must therefore be combined with the above syntax before it can be used.

 These rules must be combined with the Template Syntax defined above.