Examples of representation of concrete domains in AMT

Examples of representation of concrete domains in AMT

The following document is provided by Dion McMurtrie for discussion.

Below is a concept definition taken from AMT showing a simple example. The example shows 2 tablets in a pack, which is the datatype property.

Declaration(Class(:SCT_63262011000036107))

AnnotationAssertion(rdfs:label :SCT_63262011000036107 "paracetamol 500 mg tablet, 2 tablets (medicinal product pack)")

EquivalentClasses(:SCT_63262011000036107 ObjectIntersectionOf(:SCT_30513011000036104 ObjectSomeValuesFrom(:RoleGroup ObjectSomeValuesFrom(:SCT_30348011000036104 ObjectIntersectionOf( :SCT_23628011000036109 ObjectSomeValuesFrom(:RoleGroup ObjectIntersectionOf(ObjectSomeValuesFrom(:SCT_177631000036102 :SCT_63011000036109 ) DataHasValue(:SCT_700000131000036101 "2"^^xsd:decimal ))) )))

))

 

Diagrammed this looks like

 

From the RF2 content this looks like

Table 1 Concepts file

id

effectiveTime

active

moduleId

definitionStatusId

63262011000036107

20090630

1

900062011000036108

900000000000073002

 

Table 2 Descriptions file

id

effectiveTime

active

moduleId

conceptId

languageCode

typeId

term

caseSignificanceId

386203011000036117

20090630

1

900062011000036108

63262011000036107

en

900000000000003001

paracetamol 500 mg tablet, 2 tablets (medicinal product pack)

900000000000017005

386204011000036115

20090630

1

900062011000036108

63262011000036107

en

900000000000013009

paracetamol 500 mg tablet, 2

900000000000017005

 

Table 3 Stated relationships file

id

effectiveTime

active

moduleId

sourceId

destinationId

relationshipGroup

typeId

characteristicTypeId

modifierId

1974711000168128

20140630

1

900062011000036108

63262011000036107

30513011000036104

0

116680003

900000000000010007

900000000000451002

1974721000168124

20140630

1

900062011000036108

63262011000036107

23628011000036109

0

30348011000036104

900000000000010007

900000000000451002

 

Table 4 Stated concrete domain reference set file

id

effectiveTime

active

moduleId

refsetId

referencedComponentId

unitId

operatorId

value

a2a03443-3b46-4e32-9a87-7b39ab799ae6

20140630

1

900062011000036108

700000131000036101

1974721000168124

63011000036109

700000051000036108

2

 

Note that the yellow cells show that the reference set row references the relationship id – this indicates that the concrete domain value being added is nested under this relationship.

 

Note also that the green field indicates the reference set id, which is used as the datatype property type. The blue column “unitId” is the unit for the scalar value provided, this was put into the single reference set row rather than a separate statement as it is easier for consumers to deal with.

 

There are plenty of examples of this in AMT – this technique is used for strengths, unitary medication size, pack size and sub pack sizes.

 

Matt has written a page on it here https://snomed.atlassian.net/wiki/display/IAP/Use+of+Concrete+Domains+in+AMT

 

The Concrete Domain Specification details how all this works, it can be found at https://snomed.atlassian.net/wiki/display/IAP/Options+paper+for+representing+Numbers?preview=%2F33498037%2F33498119%2FRF2+Specification+Change+Request+-+Addition+of+Concrete+Domains+v0.6.1.doc

 

The bit we’re interested in is how this affects the logic. That is covered in section 3.1.5 which I’ve copied below for easy reference.

 

The bottom line is that the intention was

  • If the reference set references a concept, the datatype property and unit are role grouped together for the concept with no additional nesting – AMT doesn’t use this

  • If the reference set references a relationship, then “target” of the relationship will be the conjunction of the relationship target concept and a role group of the datatype property and unit.

 

This achieves the additional level of nesting required, particularly important for strengths of multi ingredient drugs. I’ve included a diagram of one of these below, it is a more complex example than I detailed above, but the principle and implementation in RF2 is the same, just more rows.

 

 

Copyright © 2026, SNOMED International