Refinements

In this section, we illustrate how the set of matching concepts can be filtered using one or more simple attribute refinements. For more information on applying refinements to nested expression constraints, using nested attribute names and using nested attribute values, please refer to Nested Expression Constraints.

Attributes

Adding an attribute refinement to an expression constraint restricts the set of valid clinical meanings to only those whose defining attributes satisfy the given refinement condition. Similarly to the SNOMED CT Compositional Grammar, attribute refinements are placed after a 'colon' (i.e. ":") in the expression constraint.

The example below is satisfied only by the set of lung disorders, which have an associated morphology that is exactly equal to 79654002 | Edema| .

< 19829001 |Disorder of lung| :
116676008 |Associated morphology| = 79654002 |Edema|

In many cases, however, the value of the matching attribute is allowed to be either the concept itself, or a descendant of that concept. In these cases, the descendantOrSelfOf operator is used prior to the concept representing the attribute value. For example, the expression constraint below (in brief and long syntaxes respectively) is satisfied only by the set of lung disorders, which have an associated morphology of 79654002 | Edema| or any descendant of 79654002 | Edema| .

< 19829001 |Disorder of lung| :
116676008 |Associated morphology| = << 79654002 |Edema|

When more than one attribute is defined in an expression constraint, the attributes are normally separated by a comma. A comma between two attributes indicates a conjunction and implies that both attribute conditions must be true. For example, the expression constraint below, written in brief syntax, is satisfied only by the set of clinical findings, which have both a finding site of 39057004 | Pulmonary valve structure| (or a subtype of 39057004 | Pulmonary valve structure| ) and an associated morphology of 'stenosis' (or a subtype of 'stenosis').

< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| ,
116676008 |Associated morphology| = << 415582006 |Stenosis|

Please note that attribute refinements may also be used when the focus concept is '*' (or ANY). The following expression constraint represents any concept that has a 246075003 | Causative agent| attribute whose value is 387517004 | Paracetamol| .

*: 246075003 |Causative agent| = 387517004 |Paracetamol| 

Attribute Groups

Similarly to SNOMED CT compositional grammar, expression constraints use curly braces (i.e. "{..}") to indicate that a set of attributes should be grouped together in an attribute group. For example, the expression constraint below is satisfied only by the set of clinical findings with an associated morphology of 'stenosis' (or descendant) at the finding site 'pulmonary valve structure' (or descendant), and also with an associated morphology of 'hypertrophy' (or descendant) at the finding site 'right ventricular structure' (or descendant).

< 404684003 |Clinical finding| :
{ 363698007 |Finding site| = << 39057004 |Pulmonary valve structure| ,
116676008 |Associated morphology| = << 415582006 |Stenosis| },
{ 363698007 |Finding site| = << 53085002 |Right ventricular structure| ,
116676008 |Associated morphology| = << 56246009 |Hypertrophy| }

Attribute Constraint Operators

In some cases, an attribute concept has subtypes or supertypes in the | Concept model attribute| hierarchy. Where this occurs, it is possible to indicate that an attribute condition may be satisfied by matching one of the subtypes or supertypes of the given attribute. This is done adding a constraint operator directly before the attribute name concept. For example, the expression constraint below will not only match clinical findings that are | Associated with| a type of | Edema| , but also those that are | Due to| , | After| or the | Causative agent| of a type of | Edema| . This result occurs because the 47429007 | Associated with| attribute concept has three subtypes: 255234002 | After| , 246075003 | Causative agent| and 42752001 | Due to| .

<< 404684003 |Clinical finding| :
<< 47429007 |Associated with| = << 267038008 |Edema|

Similarly, the expression constraint below will not only match clinical findings that are | Due to| a type of | Edema| , but also those that have an | Associated with| relationship whose value is a type of | Edema| .

<< 404684003 |Clinical finding| :
>>42752001 |Due to| = << 267038008 |Edema|

Concrete Values

The SNOMED CT Compositional Grammar allows attributes to be given concrete values (e.g. Strings, Integers, Decimal, Boolean). The SNOMED CT Expression Constraint Language supports the ability to compare these attribute values with a given concrete value.

When numeric concrete values (i.e. Integers and Decimals) are compared, a set of standard mathematical operators may be used. These mathematical operators are:

Operator
Name

=

Equals

!=

Not equals

<

Less than

<=

Less than or equals

>

Greater than

>=

Greater than or equals

Please note that the 'not equals' operator may alternatively be represented as "<>" and "not =" (case insensitive) in the long syntax.

The following expression constraint is satisfied by oral medicinal products, which contain amoxicillin and have a presentation strength greater than or equal to 250 mg.

< 763158003 |Medicinal product (product)| :
411116001 |Has manufactured dose form (attribute)| = << 385268001 |Oral dose form (dose form)| ,
{ << 127489000 |Has active ingredient (attribute)| = << 372687004 |Amoxicillin (substance)| ,
1142135004 |Has presentation strength numerator value (attribute)| >= #250,
732945000 |Has presentation strength numerator unit (attribute)| = 258684004 |milligram (qualifier value)| }

Please note that, as per SNOMED CT Compositional Grammar, integer and decimal values are preceded by a hash character (e.g. "#500"), while string values are surrounded by double quotes (e.g. "PANADOL").

To find those oral amoxicillin products that have a strength between 250 and 800 mg (inclusive), the following expression constraint may be used:

< 763158003 |Medicinal product (product)| :
411116001 |Has manufactured dose form (attribute)| = << 385268001 |Oral dose form (dose form)| ,
{ << 127489000 |Has active ingredient (attribute)| = << 372687004 |Amoxicillin (substance)| ,
1142135004 |Has presentation strength numerator value (attribute)| >= #250,
1142135004 |Has presentation strength numerator value (attribute)| <= #800,
732945000 |Has presentation strength numerator unit (attribute)| = 258684004 |milligram (qualifier value)| }

Concrete values of type string and boolean may also be included in an expression constraint, and compared using an 'equal to' (i.e. "=") or 'not equal to' (i.e. "!=") operator. The following expression constraint is satisfied only by products with a product name equal to "".

< 373873005 |Pharmaceutical / biologic product| :
3460481009 |Has product name| = "PANADOL"

The following expression constraint is satisfied only by products that are in the national benefit scheme (of the given country) .

< 373873005 |Pharmaceutical / biologic product| :
859999999102 |Is in national benefit scheme| = TRUE

Reverse Attributes

In most cases, an attribute refinement is satisfied by those concepts, which are the source concept of a defining relationship whose destination concept matches the attribute value. In some cases, however, it may be necessary to select the destination concept of a relationship and constrain the source concept to a given attribute value. To achieve this, an expression constraint indicates that an attribute is to be constrained in the reverse order using a 'reverse flag' . In the brief syntax, the reverse flag is represented by preceding the name of the attribute with a capital letter 'R'.

For example, the expression constraint below finds the set of anatomical structures, which are the finding site of a type of bone fracture (e.g. 85050009 | Humerus| , 71341001 | Femur| ).

< 91723000 |Anatomical structure| :
R 363698007 |Finding site| = < 125605004 |Fracture of bone|

Dotted Attributes

An alternative way of representing 'reversed attributes' is by applying the dot notation to represented them as dotted attributes. Using this alternative notation, " < 123456 123456 |X| .234567 234567 |Y| " represents the set of attribute values (i.e. destination concepts) of the attribute "Y" for descendants or self of concept "X". This is therefore equivalent to " * : R 234567 234567 |Y| = < 123456 123456 |X| " using the reverse flag.

The previous expression constraint (which finds the set of body sites for any subtype of bone fracture) has an equivalent representation using the 'dot notation' of:

< 91723000 |Anatomical structure| AND (< 125605004 |Fracture of bone| . 363698007 |Finding site| )

Because all values of 363698007 | Finding site| must be < 91723000 | Anatomical structure| (according to the SNOMED CT concept model), this expression constraint can be further simplified to:

< 125605004 |Fracture of bone| . 363698007 |Finding site|

The next example finds the set of substances, which are an active ingredient in any product containing amoxicillin.

< 105590001 |Substance| :
R << 127489000 |Has active ingredient| = < 27658006 |Product containing amoxicillin|

When more than one dot attribute is used in sequence, the dot notation is evaluated sequentially from left to right. For example, the following expression constraint represents the set of | Finding sites| of any concept that is | Associated with| a subtype of | Disorder of lung| .

< 19829001 |Disorder of lung| . < 47429007 |Associated with| . 363698007 |Finding site|

This expression constraint is evaluated by first finding the descendants of | Disorder of lung| , then finding the set of attribute values for these concepts (with an attribute type that is any subtype of | Associated with| ), and then from these attribute value concepts, finding the value of any | Finding sites| attribute. Please note that the expression constraint above (with no brackets) is equivalent to the one below (with brackets added).

((< 19829001 |Disorder of lung| ) . < 47429007 |Associated with| ) . 363698007 |Finding site|

Any Attribute Name and Value

A single 'star' (i.e. "*") may be used in the place of an attribute name to represent any attribute in the substrate. The expression constraint below evaluates to the set of clinical findings which have any attribute with a value of 79654002 | Edema| .

< 404684003 |Clinical finding| : * = 79654002 |Edema|

The 'star' symbol (i.e. "*") may also be used to represent any attribute value (either with or without refinement). The following expression constraint evaluates to the set of clinical findings which have an associated morphology (with any value).

< 404684003 |Clinical finding| : 116676008 |Associated morphology| = *

Last updated