Overview
The inferred definition of each concept includes a set of one or more subtype relationships relationships.
A subtype relationship is a relationship that asserts that a concept is a subtype of another concept.
- Subtype relationships are represented by relationship type 116680003 | is a| .
A subtype relationship asserts that a concept conforms to all the defining characteristics the supertypeconcept but also has at least one feature or refinement that distinguishes it from that concept.
- Subtype relationships are transitive. Each individual subtype relationship links a concept to a supertype parent concept. That concept will also have one or more subtype relationships to its own supertype parents.
- These transitive chains of subtype relationships link every active concept to a set of supertype ancestors and eventually to the | SNOMED CT root concept| .
The meaning of a concept subsumes the meaning of its subtype children and descendants. Therefore, service that test or traverse subtype relationships are essential for effective meaning-based reporting and analysis.
Requirements and Options
Display of the SNOMED CT hierarchy requires access to the direct supertype parents and subtype children of a specified concept.
Effective use of SNOMED CT for retrieval, analysis and constrained data entry requires rapid identification of concepts that are supertype ancestors or subtype descendants of a specified concept.
The requirements listed in Table 4.5-1 include services that return the full set of children, parents, descendants or ancestors of a concept. However, other requirements can be more efficiently met by testing for a transitive subtype or supertype relationship between a specified concept and a set of one or more candidate concepts.
Service Name and Status | Input | Output |
---|---|---|
Get subtype children of a concept REQUIRED |
|
|
Get supertype parents of a concept REQUIRED |
|
|
Get subtype descendants of a concept REQUIRED |
|
|
Get supertype ancestors of a concept REQUIRED |
|
|
Test subsumption between two concepts RECOMMENDED 3 |
|
|
Test a set of concepts for subsumption RECOMMENDED 3 |
|
|
Interdependencies
Required By
- Other Services
- Use Cases
Depends On
Service Examples
The Snowstorm and FHIR examples are presented in plain text and URL encoded versions. Always use the "Encoded URL" when testing the example service requests. The plain text version is included to aid readability but using this version in a service request may result in errors. These errors result from characters that have to be encoded as they are not permitted in a URL (see IETF RFC1738).
Service Name | API Call4 | Result |
Get subtype children of a concept |
GET [snowstorm]/browser/[branch]/concepts/[conceptId]/children for example GET [snowstorm]/browser/MAIN/2020-01-31/concepts/80146002/children Encoded URL GET [snowstorm]/browser/MAIN%2F2020-01-31/concepts/80146002/children | Returns a JSON representation of data about each of the child concepts. The data returned for each concept includes:
Also returns the total number of child concepts. |
Get supertype parents of a concept |
GET [snowstorm]/browser/[branch]/concepts/[conceptId]/parents for example GET [snowstorm]/browser/MAIN/2020-01-31/concepts/80146002/parents Encoded URL GET [snowstorm]/browser/MAIN%2F2020-01-31/concepts/80146002/parents | Returns a JSON representation of data about each of the parent concepts. The data returned for each concept includes:
Also returns the total number of parent concepts. |
Get subtype descendants of a concept |
GET [snowstorm]/[branch]/concepts/[conceptId]/descendants for example GET [snowstorm]/MAIN/2020-01-31/concepts/80146002/descendants?limit=50&offset=0 Encoded URL GET [snowstorm]/MAIN%2F2020-01-31/concepts/80146002/descendants?limit=50&offset=0 | Returns a JSON representation of data about each of the descendant concepts. The data returned for each concept includes:
Also returns the total number of descendant concepts. As some concepts have very large numbers of descendants, this service is paged. Requests parameters include:
|
Get supertype ancestors of a concept |
GET [snowstorm]/browser/[branch]/concepts/[conceptId]/ancestors for example GET [snowstorm]/browser/MAIN/2020-01-31/concepts/80146002/ancestors Encoded URL GET [snowstorm]/browser/MAIN%2F2020-01-31/concepts/80146002/ancestors | Returns a JSON representation of data about each of the ancestor concepts. The data returned for each concept includes:
Also returns the total number of ancestor concepts. |
Test subsumption between two concepts | Snowstorm does not provide a specific service for this test but the test can be accomplished using the get concepts service (see 4.7 Validate and Apply Expression Constraints) with a combination of an expression constraint to represent the subsumption requirement and a concept identifiers list.
GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=<[predicateSupertypeId]&conceptIds=[candidateSubtypeId] For example
GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=<404684003&conceptIds=703264005 Encoded URL GET [snowstorm]/MAIN%2F2020-01-31/concepts?ecl=%3C404684003&conceptIds=703264005 | Returns a JSON object with contents that depend on whether the candidate concept is a subtype of the predicate concept:
|
Test a set of concepts for subsumption | Snowstorm does not provide a specific service for this test but the technique used in the row above can be used with all the candidate concept identifiers included in the comma separated list.
GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=<[predicateSupertypeId]&conceptIds=[candidateSubtypeIdList] For example GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=<404684003&conceptIds=703264005,307581005,195967001 Encoded URL GET [snowstorm]/MAIN%2F2020-01-31/concepts?ecl=%3C404684003&conceptIds=703264005%2C307581005%2C195967001 | Returns a JSON representation of the candidate concepts that are subtypes descendants of the predicate concept.
As some expression constraints are matched by large numbers of concept, this service is paged. Requests parameters include:
|
Service Name | API Call6 | Result |
Get subtype children of a concept | FHIR does not provide a specific operation for this service, but the SNOMED CT Expression Constraint Language supports that retrieval of the direct children of SNOMED CT concept, and can thus be used to enable this service through the ValueSet/$expand operation. GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/<![predicateSupertypeId]&count=10 for example:
GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/<!26322001&count=10 | Returns a JSON representation of data about each of the subtype children concepts. The data returned for each concept includes:
Also returns the total number of children concepts. As some concepts have very large numbers of children, this service is paged. Requests parameters include:
|
Get supertype parents of a concept | FHIR does not provide a specific operation for this service, but the SNOMED CT Expression Constraint Language supports that retrieval of the direct parents of SNOMED CT concept, and can thus be used to enable this service through the ValueSet/$expand operation. GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/>![predicateSubtypeId]&count=10 GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/>!26322001&count=10 | Returns a JSON representation of data about each of the parent concepts. The data returned for each concept includes:
Also returns the total number of parent concepts. As some concepts have very large numbers of parents, this service is paged. Requests parameters include:
|
Get subtype descendants of a concept | Option 1)
GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=isa/[predicateSupertypeId]&count=10 for example:
GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=isa/27624003&count=10 | Returns a JSON representation of data about each of the descendant concepts. The data returned for each concept includes:
Also returns the total number of descendant concepts. As some concepts have very large numbers of descendants, this service is paged. Requests parameters include:
|
Option 2) GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/[predicateSupertypeId]&count=10 GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/<26322001&count=10 | ||
Get supertype ancestors of a concept | Option 2) FHIR does not provide a specific operation for this service, but the SNOMED CT Expression Constraint Language supports that retrieval of the ancestors of SNOMED CT concept, and can thus be used to enable this service through the ValueSet/$expand operation.
GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/>[predicateSubtypeId]&count=10 for example for example:
GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/>26322001&count=10 | Returns a JSON representation of data about each of the ancestor concepts. The data returned for each concept includes:
Also returns the total number of descendant concepts. As some concepts have very large numbers of ancestors, this service is paged. Requests parameters include:
|
Test subsumption between two concepts |
GET [fhir]/CodeSystem/$subsumes?system=[systemURI]&version=[versionURI]&codeA=[conceptId]&codeB=[conceptId] for example: GET [fhir]/CodeSystem/$subsumes?system=http://snomed.info/sct&version=http://snomed.info/sct/900000000000207008/version/20200131&codeA=307355007&codeB=118940003 | Returns a JSON representation of information about the subsumption relation between the two concepts:
|
Service Name | SQL Query 7 | Result |
Get subtype children of a concept | SELECT id,term FROM snap_rel_child_fsn WHERE conceptId=[conceptId] for example SELECT id,term FROM snap_rel_child_fsn WHERE conceptId=80146002; | Returns rows containing the id and term for each subtype child of the specified concept.
|
Get supertype parents of a concept | SELECT id,term FROM snap_rel_parent_fsn WHERE conceptId=[conceptId] for example SELECT id,term FROM snap_rel_parent_fsn WHERE conceptId=80146002; | Returns rows containing the id and term for each supertype parent of the specified concept.
|
Get subtype descendants of a concept | SELECT id,term FROM snap_tc_descendant_pref WHERE conceptId=[conceptId] for example SELECT id,term FROM snap_tc_descendant_pref WHERE conceptId=80146002; | Returns rows containing the id and term for each subtype descendant of the specified concept.
|
Get supertype ancestors of a concept | SELECT id,term FROM snap_tc_ancestor_pref WHERE conceptId=[conceptId] for example SELECT id,term FROM snap_tc_ancestor_pref WHERE conceptId=80146002; | Returns rows containing the id and term for each supertype ancestor of the specified concept.
|
Test subsumption between two concepts | SELECT count(supertypeId) FROM snap_transclose WHERE supertypeId=[predicateConceptId] AND subtypeId=[candidateConceptId] for example SELECT count(supertypeId) FROM snap_transclose WHERE supertypeId=80146002 AND subtypeId=6025007; | Returns 1 if the candidate concept is a subtype of the supertype concept. |
Test a set of concept for subsumption | Different approaches can be used depending on the specific requirement. As with the options for
SELECT subtypeId FROM snap_transclose WHERE supertypeId=80146002 AND subtypeId IN (703264005, 307581005, 195967001,6025007) | Option 3 will return the ids of concepts in the bracketed list that are subtypes descendants of the predicate concept. |
Footnotes
Feedback