Page tree

What are Concrete Domains?

SNOMED CT is based on relationships between concepts, structured and constrained by the Machine Readable Content Model (MRCM), and represented and distributed using the RF2 release file format. The OWL based Description Logic (DL) supports the use of classification tools to infer relationships that are not directly stated in concepts, and hence provide additional meaning and context, however there are challenges when concept attributes need to express fixed values.

In the case of numerics - for example the weight of a particular medicinal substance used in a drug product - it is desirable to be able to represent that amount, and then be able to ask questions like "List all drugs that contain >= 100mg of Paracetamol".

A work around for this particular attribute was put in place in 2017, namely to create a concept to represent every number needed in the International Drug Model. This solution results in fully correct classification, and in particular has facilitated progression of the Drug Model implementation, however it also has several drawbacks, particularly when needing to make comparisons and check for equivalencies.

The drawbacks of using concepts as numbers can be resolved by defining concrete values within SNOMED CT in a way that still fully supports classification to reveal inferred relationships, whilst enabling numeric operator comparisons and (subject to appropriate modelling) equivalences between different units to be detected.

Concrete Domains are a means for the SNOMED CT DL to express concrete objects (such as numbers) and predefined predicates on these objects (such as numerical comparisons) when defining concepts, in a way that still supports classification and inferred relationships.

How are Concrete Domains supported in the Authoring Platform?

The Authoring Platform (AP) supports the following concrete value data types:

  • Integer
  • Decimal
  • String

The MRCM can apply the following types of constraints to concrete values assigned to attributes:

  • List (predefined fixed values)
  • Range (any numeric value between predefined limits; applicable to Integer and Decimal data types)

How are Concrete Domains presented in the Authoring Platform?

CD values in attribute data entry and display boxes

Attributes previously using concepts as numbers have the same FSN term when represented using concrete domains, however the target value box has a green background, and the concrete domain values don't have a semantic tag since they are no longer concepts.

Drag and drop is supported for concrete values, so the "drag handle" arrows icon  is still available, however concepts dragged from other fields, search results or taxonomy entries cannot be dropped as the target for a concrete domain attribute value, and likewise a concrete value cannot be dragged and dropped onto a concept target slot. Dropping a concrete domain value onto other concrete domain attributes will also be disabled if the drop value doesn't satisfy any MRCM constraints applicable to the target attribute.

CD values In concept model diagram views

A concrete value is represented by a solid green rectangle with diagonal lines in the corners, and the value centred within the box.

CD values in ECL expressions

Numeric values are represented in Unicode text expressions preceded by a # (hash) symbol. for example:

  • #0.09
  • #0.5
  • #99.99
  • #1
  • #20
  • #500           

Strings are represented in Unicode text enclosed by double quotes. A backslash is used as an escape character for quotes within the string, and hence any backslashes within the string also need to be escaped by an additional backslash.

  • "Product Name"
  • "Product Name \"containing\" quotes"
  • "Product Name \"containing\" quotes and a backslash (\\) character"

Where do Concrete Domains appear in the Authoring Platform?

Since concrete domains are simply a form of attribute target value, as well as the above examples from the Task - Concept - Edit Panel they can appear in any feature of the Authoring Platform that presents attributes and their values, for instance:

  • No labels