Search



You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

In this section, we illustrate how filters can be applied to expression constraints to further restrict the matching concepts.

Overview

Filter constraints provide the ability to limit the set of concepts, that satisfy a given expression constraint, based on the descriptions associated with each concept. Only concepts that have at least one matching description for each filter constraint will be included in the set of matching concepts. Descriptions can be filtered based on their term, type, language, and acceptability in a given dialect.

Term Filter

Term filters enable an expression constraint to match on only those concepts with an associated description whose term matches the given search term. For example, the following expression constraint is satisfied by SNOMED CT concepts with a description matching the search terms "heart" and "att". This expression constraint works like a term search performed in a SNOMED CT browser. * {{ term = "heart att" }} By default, term filters match using a word-prefix-any-order match technique. This means that each string value in the search term must match the start of a word in the concept's description term, but that these words may appear in any order. This word-prefix-any-order match technique can be explicitly specified in the term filter, using the keyword "match:" before the search term. For example, the following four expression constraints are equivalent, and are each satisfied only by diseases with a description term that includes both a word starting with "heart" and a word starting with "att" (in any order).

64572001 |Disease|  {{ term = "heart att"}}
64572001 |Disease|  {{ term = "heart", term = "att"}}
64572001 |Disease|  {{ term = match:"heart att"}}
64572001 |Disease|  {{ term = "att heart"}}
To indicate that a matching description may match either one search term or another, a search term set may be used.

The example below matches only those diseases with a description term containing either a word starting with "heart" or a word starting with "card" (or both).

64572001 |Disease|  {{ term = ("heart" "card")}}
The other match technique that may be used is a wildcard match.  This uses an asterisk ('*') to indicate zero to many characters in the given position, and is specified using the keyword "wild:" before the search term.

For example, the expression constraint below will match only diseases with a description term starting with "cardi" and ending with "opathy" with any number of characters between. This term filter would therefore match on terms such as "cardiopathy", "cardiomyopathy" and "cardiac channelopathy", but would not match on terms like "atrial cardiopathy" or "Cardiomyopathy (disorder)".

64572001 |Disease|  {{ term = wild:"cardi*opathy"}}
It is also possible to mix the match techniques in a search term set. For example, the expression constraint below will match those diseases with a description term that either contains a word starting with "gas", or ending with "itis" - e.g. "gastric flu", "gastritis", or "tonsillitis".
64572001 |Disease|  {{ term = (match:"gas" wild:"*itis")}}
If more than one filter is applied, then all filters (surrounded in double braces) must match at least one description of a concept, for that concept to satisfy the constraint. The descriptions that match each of the filters can either be the same description, or different descriptions on the same concept.

The expression constraint below matches those diseases which have both a description that contains a word starting "eye" and a description that ends with "itis". For example, this constraint would match the concept  9826008 | Conjunctivitis (disorder)| (with synonyms "Pink eye disease" and "Conjunctivitis") and the concept  15680481000119104 | Viral conjunctivitis of bilateral eyes (disorder)| (with synonyms "Bilateral viral conjunctivitis" and "Viral conjunctivitis of both eyes"), but would not match the concept  45261009 | Viral conjunctivitis (disorder)| (which does not have a synonym matching the word prefix "eye").

64572001 |Disease|  {{ term = "eye"}} {{ term = wild:"*itis"}}
Please note that filters apply only to the subexpression directly to the left of the filter. For example, the following expression constraint will apply the term filter to only the descendants or self of  415582006 | Stenosis| . This expression constraint will match descendants of  404684003 | Clinical finding|  with a finding site that is a descendant or self of  39057004 | Pulmonary valve structure| , and an associated morphology that is any descendant or self of  415582006 | Stenosis|  which has a description matching the term "insufficiency". Therefore, the concept 123801008 | Heart valve stenosis and regurgitation (disorder)|  will match this expression constraint because it has the associated morphology  708027006 | Valvular stenosis with valvular insufficiency| .
<   404684003 |Clinical finding|  :
         
363698007 |Finding site|   = <<   39057004 |Pulmonary valve structure|  , 
         
116676008 |Associated morphology|   = <<   415582006 |Stenosis|  {{ term = "insufficiency" }}
To apply a filter to a subexpression, which includes a refinement or binary operators, the subexpression must be enclosed in brackets. For example, the following expression constraint will find all the descendants of clinical finding, with a finding site that is a descendant or self of  39057004 | Pulmonary valve structure|  and an associated morphology that is a descendant or self of  415582006 | Stenosis| , and will then match only those clinical finding concepts that have a description that matches the term "insufficiency". Therefore, the concept 123801008 | Heart valve stenosis and regurgitation (disorder)|  will not match this expression constraints, as it does not have a description that matches the term "insufficiency".
(<   404684003 |Clinical finding|  :
         
363698007 |Finding site|   = <<   39057004 |Pulmonary valve structure|  , 
         
116676008 |Associated morphology|   = <<   415582006 |Stenosis| ) {{ term = "insufficiency" }}

Language Filter

Language filters enable an expression constraint to match on only those concepts with a matching description in a specified language. Language filters use the keyword "language", followed by a comparison operator (e.g. "=" or "!="), and the ISO 639-1 two-character language code (in upper or lowercase).

The expression constraint below matches only those diseases with a Swedish description containing the word prefix "hjärt" - e.g.  41884003 | hjärtpolyp| from the Swedish Edition (20200531) 

64572001 |Disease|  {{ term = "hjärt", language = sv }}
The expression constraint below matches only those diseases with a Swedish description containing the word prefix "hjärt" and an English description containing the word prefix "heart" - e.g.  84114007 | hjärtsvikt| (with English synonym "Heart failure") from the Swedish Edition (20200531).
64572001 |Disease|  {{ term = "hjärt", language = sv }} {{ term = "heart", language = en }}

Description Type Filter

Type filters enable an expression constraint to match on only those concepts with a matching description of a specified type. Type filters may either use the keyword "type" with the values "fsn", "syn" or "def", or may use the keyword "typeId" with a concept value that is  900000000000446008 |Description type|

The following table lists the valid description type keywords in both the brief and full syntax, and their equivalent concept reference alternatives. Please note that the full syntax accepts both the brief and full syntax keywords. If additional description types are required, these must be specified in a filter using the 'typeId' keyword with the corresponding concept reference.

Type Keyword

TypeId

Concept Reference

Brief SyntaxFull Syntax
fsnfullySpecifiedName900000000000003001 |Fully specified name|
synsynonym900000000000013009 |Synonym|
defdefinition900000000000550004 |Definition|

For example,  the expression constraint below matches all the subtypes of  | Heart disease| , that have a fully specified name containing the word prefix "heart".

56265001 |Heart disease|  {{ term = "heart", type = fsn }}
The following two expression constraints are equivalent, and both match only the subtypes of  | Heart disease| , which have a Swedish synonym containing the word prefix "hjärt".
56265001 |Heart disease|  {{ term = "hjärt", language = SV, type = syn }}
56265001 |Heart disease|  {{ term = "hjärta", language = sv, typeId =  900000000000013009 |synonym|  }}
The two equivalent expression constraints below match the subtypes of  | Heart disease| , which either have a synonym containing the word prefix "heart", or a fully specified name containing the word prefix "heart".
56265001 |Heart disease|  {{ term = "heart", type = (syn fsn) }}

Dialect Filter

Dialect filters enable an expression constraint to match on only those concepts with a matching description in a specified language reference set. Dialect filters may either use the keyword "dialect" with a value that represents a valid alias for a specific language reference set,  or may use the keyword "dialectId" with a concept value that is 900000000000506000 |Language type reference set| . Please refer to Appendix C - Dialect Aliases for a selection of valid dialect aliases for known language reference sets.

For example, the two equivalent expression constraints below will match all subtypes of  | Disease|  that have a description in the Australian English language reference set.

64572001 |Disease|  {{ dialect = en-au }}
The expression constraint below matches all diseases with a description in the New Zealand English language reference set that has a word starting with "cardio".
64572001 |Disease|  {{ term = "cardio", dialect = en-nz }}
In some situations, multiple language reference sets need to be used together to identify an appropriate set of concepts. A filter constraint may include a list of dialects to specify that a matching description may belong to any of the given language reference sets. 

For example, the following expression constraint matches all diseases that have a description in either the en-nhs-clinical or en-nhs-pharmacy language reference sets, where that description contains a word starting with the prefix "card".

64572001 |Disease|  {{ term = "card", dialect = ( en-nhs-clinical en-nhs-pharmacy ) }}

Acceptability Filter

Acceptability filters enable an expression constraint to match on only those concepts with a matching description that has the specified acceptability in the specified language reference set. Acceptability filters must always be applied to a specified dialect. As such, they are represented by placing the required acceptability in brackets after the value of the dialect filter. Acceptabilities can be indicated using either one of the keywords below, or using a concept value that is  900000000000511003 |Acceptability| . The following table lists the valid acceptability keywords in both the brief and full syntax, and their equivalent concept reference alternatives. Please note that the full syntax accepts both the brief and full syntax keywords.

Acceptability Keyword

AcceptabilityId

Concept Reference

Brief SyntaxFull Syntax
preferpreferred900000000000548007 |Preferred|
acceptacceptable900000000000549004 |Acceptable|

For example, the following two expression constraints both match all descendants of disease with a description that matches the word prefix 'box', has the type 'synonym', and has an acceptability of 'preferred' in the en-us language reference set. In other words, this expression constraint matches diseases with a US English preferred term that uses the word prefix 'box'.

64572001 |Disease|  {{ term = "box", type = syn, dialect = en-us (prefer) }}
64572001 |Disease|  {{ term = "box", typeId =  900000000000013009 |Synonym| , dialect = en-us ( 900000000000548007 |Preferred| ) }}
Multiple dialect filters may be used with different acceptabilities applied to each. For example, the expression constraint below matches on diseases, which have a synonym with word prefix "box" that is preferred in the en-nhs-clinical language reference set and is acceptable in the en-gb language reference set.
64572001 |Disease|  {{ term = "box", type = syn, dialect = en-nhs-clinical (prefer), dialect = en-gb (accept) }}
To support alternative acceptabilities in more than one language reference set, a dialect set can be used. For example, the following two equivalent expression constraints match on diseases, which have a synonym with word prefix "box" that is either preferred in the en-gb language reference set or preferred in the en-nhs-clinical language reference set.
64572001 |Disease|  {{ term = "box", type = syn, dialect = ( en-gb (prefer) en-nhs-clinical (prefer) ) }}
64572001 |Disease|  {{ term = "box", type = syn, dialect = ( en-gb en-nhs-clinical ) (prefer) }}

Filters with Negation

Filters can use negation in a number of ways. The simplest approach is to use the 'not equal to' comparison operator (e.g. "!=") before the value.

For example, the following expression constraint matches on subtypes of  | Fracture of bone|  that do not use the word prefix "fracture" in their US English preferred term.

125605004 |Fracture of bone|  {{ term != "fracture", type = syn, dialect = en-us (prefer)}}
If we remove the type and acceptability filters, as shown below, the remaining expression constraint matches on those subtypes of  | Fracture of bone|  which have any US English description that does not contain the word prefix "fracture". Concepts including  263171005 | Fractured nasal bones|  (with synonym "Broken nose") will match the constraint below.
125605004 |Fracture of bone|  {{ term != "fracture", dialect = en-us}}
To find the set of concepts, for which all descriptions match some specified criteria, the expression constraint must use the MINUS operation to exclude concepts that have a non-matching description. For example, the expression constraint below matches all subtypes of  | Fracture of bone| , for which every description contains the word prefix "fracture". Please note that the filter only applies to the descendants of 125605004 | Fracture of bone|  (i.e. the subexpression directly proceeding the filter).
125605004 |Fracture of bone|  MINUS <  125605004 |Fracture of bone|  {{ term != "fracture"}}
This expression constraint can be simplified to the equivalent one below, using the wildcard character '*' (which represents any concept in the substrate).
125605004 |Fracture of bone|  MINUS * {{ term != "fracture"}}
Using a similar principle, the expression constraint below matches all concepts that do not have a preferred term specified in the en-nz language reference set.
* MINUS * {{ type = syn, dialect = en-nz (prefer) }}


Feedback
  • No labels