All pages
Powered by GitBook
1 of 16

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Identify Changes to the Terminology

Got it — here’s the GitBook-ready version with no section or table numbering, fully cleaned up for a smooth read.


Overview

\

SNOMED CT release files include data that allows tracking of all changes between different versions of any edition of the terminology.

\

In addition to a unique id, each row in every release file includes:

  • effectiveTime – the date when the row became the effective version of that component or reference set member, either as a new component or a revision of the previous version.

  • active – indicates whether the component is still intended for active use.

  • moduleId – identifies the module that the component belongs to. A change to the moduleId indicates that a component has been moved to a different module, which may be:

    • another module maintained by the same organization, or

    • a module maintained by a different organization.

Before updating to a newer SNOMED CT version, it is essential to:

  • Identify the inactivation of any concepts and descriptions used in:

    • data entry templates

    • picklists

    • reporting and analytics queries

This section focuses on services that identify and categorize these changes. Additional services that provide more detail about some changes are described later in Get History Data.


To identify changes, terminology services must be able to:

  • Identify components and reference set members in the full release of the new version with an effectiveTime greater than the date of the previously installed version.

  • For each identified component:

    • Check active status in the updated release (active or inactive).

    • Check whether it existed in the previous release and, if so, its status there (active, inactive, or none).


Previous
Updated
Update Type
Comment
Actions to Consider
Service Name and Status
Input
Output
  • Other Services

  • Use Cases

  • (including support for selecting two versions for comparison)

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 ).

Service Name
API Call
Result

FHIR API

Service Name
API Call 5
Result
Service Name
SQL Query
Result

Notes

  • The significance of changes to membership of reference sets depends on the extent to which they are used by a particular application. For example, a change to language reference set membership may mean that a description is no longer acceptable in the language or dialect used in by an application. Similarly, a change to a the membership of a simple reference set used to constrain a searches, reports or analytics may alter the results of those actions.

  • A delta release file may be available to provide information about changes since the previous release. However, in cases where an organization does not update the version they are using regularly, there may not be a single set of delta release files covering all the changes made between the version in use and the current version.

  • Language and/or dialect should be specified if the service returns terms associated with referenced concepts.

Review changes to reference set memberships where these sets are used to assist or constrain data entry.

  • Consider broader review of changes to other reference sets used in reporting or analysis.

  • Based on these results, determine:

    • The type of update.

    • Actions to consider.

    active

    active

    Change

    Component changed but remains active. May include property changes or moduleId reorganization.

    Review nature of change and assess impact.

    active

    inactive

    Inactivation

    Component inactivated since the previous release.

    Concept: Review/replace in templates, picklists, constraints, queries; use history data to find replacements.Description: Review/replace in templates, picklists.Refset member: Assess impact on data entry, mapping, reporting.

    inactive

    active

    Reactivation

    Component reactivated, possibly correcting an earlier inactivation.

    Reverse any prior adjustments if applicable.

    inactive

    inactive

    Remains inactive

    Unusual case – remains inactive but has changed in some way.

    No action required.

    none

    inactive

    Inactivated addition

    Likely added in an intermediate release, now inactivated.

    No local action required, but be aware it may appear in data from systems using that intermediate release.

    Get and Test Concept Subtypes and Supertypes

  • Get and Test Reference Set Membership

  • In the Snowstorm service requests [snowstorm] should be replaced by the URL to the Snowstorm server endpoint.

  • In the FHIR service requests [fhir] should be replaced by the URL to the FHIR terminology server endpoint. FHIR® is a registered trademarks of HL7 (www.hl7.org).

  • The SNOMED CT MySQL example database is not designed as a terminology server and is not intended for use in a live system. It is referenced in this guide as an illustration that some readers may find helpful. For more information about the SNOMED CT example database see the SNOMED CT - SQL Practical Guide. For instructions on how to build the example database refer to Appendix A: Building the SNOMED CT Example Database.

  • Note that to avoid issues if hours, minutes or seconds are included in previousVersionDate, the value should be set as 23:59:59 on the required date.

  • none

    active

    Addition

    Component added since the previous release.

    Get components or reference set members that have changed since a specified previous release REQUIRED

    • Edition

    • Version release date/time (snapshot of components and refset members at this date/time represents the updated state)

    • Previous version release date/time (snapshot of components and refset members at this date/time represents the previous state)

    • Component type or reference set type

    • Optional: refsetId

    • Optional: Language/dialect

    • Identifiers of components or reference set members with the following characteristics:

      • specified component or reference set type

      • effectiveTime greater than previous release date/time (note that if only date is specified then component with any effectiveTime on that date must be excluded)

    • Indication of the update type. The update type indication should be applied either to:

      • the set of identifiers to which it applies; or

      • individually to each identifier.

    Optionally other data associated with each changed component or reference set member could also be returned. However, requirements for additional data vary depending on the update type and the type of component or reference set. A service that returns sets of identifiers grouped by update type, and component or reference set type offers a more flexible solution. It allows additional data to be retrieved selectively by other services to support appropriate review of the changes.

    Get components or reference set members that have changed since a specified previous release

    N/A

    This service is not currently supported.

    When Snowstorm is running with write access enabled it is possible to export SNOMED CT content selected by a range between two effective times. This process could be adapted to allow the relevant information to be processed in an application to identify the components and reference set members that have been updated. However, this would require the client application to process the selected data after it has been exported in the release file format.

    Get components or reference set members that have changed since a specified previous release

    N/A

    This service is not supported.

    Get components or reference set members that have changed since a specified previous release

    SELECT *  FROM [snapshotTableName]
    WHERE effectiveTime > [previousVersionDate];

    Example 1

     * FROM `snap_concept`where `effectiveTime` > '2019-07-31';

    Example 2

    SELECT * FROM `snap_description`
     where `effectiveTime` > '2017-01-31';

    Example 3

    CALL setSnapshotTime(1, '2019-07-31);
    SELECT * FROM snap1_refset_simple
            WHERE effectiveTime > '2018-07-31';

    Returns all rows in the specified snapshot view of the named release file that have an effectiveTime is later than the specified previous version date. The snapshot time for the snapshot view determines the date of the current version.

    Example 1 returns all rows in the current snapshot of the concept release file that have an effectiveTime after 2019-07-31.

    Example 2 returns all rows in the current snapshot of the description release file that have an effectiveTime after 2017-01-31.

    Example 3 sets a specific snapshot time 1 as (2019-07-31). It then returns rows from the simple reference set table in that specific snapshot view that have an effectiveTime after 2018-07-31.

    Minimum Review Checklist

    Requirements and Options

    Terminology Component Update Types

    Note on Unusual Cases

    The “Remains inactive” and “Inactivated addition” situations are uncommon. While they generally require no local action, they can appear in exchanged data from systems using different SNOMED CT release versions. Awareness of these scenarios helps avoid confusion when interpreting shared records.

    Services Required

    Interdependencies

    Required By

    Depends On

    Service Examples

    Snowstorm API

    MySQL Example Database

    Get History Data
    Select Edition and Version
    Get a Concept, Description or Relationship
    Get Terms for a Concept
    Get Definition of a Concept
    IETF RFC1738
    Provide Feedback

    Concept/description: Consider including in templates, picklists, etc.Refset member: Assess impact if used in constraints for data entry or reporting.

    Manage Impact of Changes on EHR Applications
    Manage Impact of Changes on Extensions

    Find Concepts

    Overview

    Finding a specific concept is a fundamental requirement and a prerequisite for most other terminology service. To make practical use of SNOMED CT, users must be able search for concepts using using phrases, words or parts of words. The SNOMED CT Search and Data Entry Guide provides detailed descriptions of these essential search types. It also notes a range of important additional features that facilitate appropriate use of the terminology by constraining searches and appropriately ordering search results. This section does not repeat that detailed discussion of different search techniques. Instead, it focuses on technical and practical requirements for delivering and accessing services that meet those requirements.

    Several services described earlier in the guide provide technical ways to constrain searches for concepts to meet particular requirements.

    • Get a Concept, Description or Relationship introduced services that find concepts by identifier1.

    • Get and Test Concept Subtypes and Supertypes includes consideration of services that find concepts based on subtype relationships to or from other concepts.

    • includes services that find concepts that are members of a particular reference set.

    • describes the way that the above approaches to finding concepts can be combined.

    This section indicates ways in which term searches can and should be combined with those constraints to enable effective searches for concepts relevant to a particular context of use.

    High-performance term search services are essential for most practical applications of SNOMED CT. Search services also need to employ effective strategies for rationalizing, sorting and presenting search results in ways that facilitate selection of concepts most frequently used in a given context of use. Term searches are typically language or dialect specific. Therefore requests for searches should include appropriate language codes or language reference set identifiers2.

    Section in the Search and Data Entry Guide identifies a range of different search techniques that may be valuable. If a terminology server supports more than on search technique the service request will need to indicate the technique to be used.

    In the simplest case a term search service should be able to take a term or phrase typed by a user and return matching results. For this purpose, the recommended default search technique is to search for words or parts of words in any order (see Search and Data Entry Guide ). Searches using this technique should be to return concepts associated with terms that include words that match or begin with all the words or part words in the search string. The order of words need not be the same in the search string and the matched term and the search string need not include all the words in the term.

    Specific data storage and development environments also support specific solutions for searching text. These include boolean searches (which require some words to be present and other words to be absent, natural language searches which may include words with similar meanings. In addition to these there are more general pattern matching approaches including the use of wildcard character and searches using regular expressions. While these techniques can be useful, end users should be able to search SNOMED CT effectively without being required to understand a specific technical syntax.

    Section in the Search and Data Entry Guide identifies a range of options for filtering and ordering the results of a search. Filtering options include avoiding displaying multiple matching terms that refer to the same concept as well as ensuring that by default descriptions associated with inactive concept are not displayed (though there should be an option to include inactive concepts as these may be relevant to historical data). Ordering options include displaying the closest matches, shortest matching terms or most commonly used concepts at the top of the list of results.

    Many practical use cases are best addressed by applying term searches to a constrained set of concepts. Searches that are appropriately constrained result in shorter lists of matching results and thus make it easier for a user to find the required concept. Constrained searches also reduce the risk of inadvertently selecting a concept in a hierarchy that is not appropriate to the data entry context. Thus this technique simplifies data entry and leads to improvements in data quality.

    Example

    Searching the entire content of SNOMED CT when looking for a diagnosis or reason for admission is likely to include many concepts that are are not valid diagnoses or reasons for admission. This can make if difficult for the user to find the concept that they need and, in some case, may lead to recording of concepts that have terms that do not represent the intended meaning. Examples of errors arising from failing to constrain searches include recording the names of substances and morphological abnormality rather than the name of symptom or disorder. The results of such errors can result in errors in reporting, analysis and decision support even in cases where the selected term may appear to capture the required meaning.

    The recommended approach to constrained searches is to use expression constraints to specify the constraints. Ideally, the service should implement all the features of (ECL). However, even if the service does not support some of the more advanced features, it should enable use of ECL to represent and combine subtype tests and reference set membership tests.

    Services that do not support ECL should as a minimum support constraints based on reference set membership and the position of the concept in the subtype hierarchy. The recommended approach to testing the location of a concept in the hierarchy is the use of subtype tests. However, if these tests are not supported, a more limited approach that filters search results by hierarchy tags may be used.

    Service Name and Status
    Input
    Output
    • Other Services

    • Use Cases

    Service Name
    API Call
    Result
    Service Name
    API Call
    Result
    Service Name
    SQL Query 9
    Result

    Notes

    It should never be necessary for an end-user to enter a concept identifier. However, there are practical situations in which concept identifiers may be available to be used to find a specific concept or set of concepts. These situations include coded data in existing records or messages; templates, pick lists and other user interface controls that are bound to specific concept identifiers. If concept identifiers are available they provide a direct way to find data about specific concepts.

    One or more languages and/or dialects should be specified for searches. If more than one language or dialect is specified, the search should return matching terms that are acceptable in any specified language or dialect.

    The nature of the search string may vary according the search techniques supported and any options selected (see ).

    The search technique needs to be specified if the service supports different techniques (see ).

    If the service supports alternative ways of filtering or ordering results, these options chosen need to be specified (see ).

    As noted in , the use of expression constraints is recommended. However, other representations of constraints may be used if the service does not support expression constraint language.

    In the Snowstorm service requests [snowstorm] should be replaced by the URL to the Snowstorm server endpoint.

    In the FHIR service requests [fhir] should be replaced by the URL to the FHIR terminology server endpoint. FHIR® is a registered trademarks of ().

    The SNOMED CT MySQL example database is not designed as a terminology server and is not intended for use in a live system. It is referenced in this guide as an illustration that some readers may find helpful. For more information about the SNOMED CT example database see the . For instructions on how to build the example database refer to .

    Support EHR Data Entry

  • EHR Reporting and Analytics

  • Get and Test Concept Subtypes and Supertypes

  • Get and Test Reference Set Membership

  • Validate and Apply Expression Constraints

  • Find concepts by term search

    • Edition and version

    • Language code(s)

    • Search string

    • Search technique option (if required )

    • Search filtering or sorting options (if supported)

    A collection of matching terms each of which is linked to the appropriate concept.

    Find concepts by constrained term search

    • Edition and version

    • Language code(s)

    • Search string

    • Search technique option (if required)

    • Search filtering or sorting options (if supported)

    • An expression constraint

    Find concepts by term search

    GET [snowstorm]/snomed-ct/[branchPath]/concepts?activeFilter=true&term=[search-string]

    Example 1

    GET [snowstorm]/MAIN/2020-01-31/concepts?activeFilter=true&term=knee

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&term=knee

    Example 2.

    GET [snowstorm]/MAIN/2020-01-31/concepts?activeFilter=true&term=alcohol

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&term=alcohol

    Example 3.

    GET [snowstorm]/MAIN/2020-01-31/concepts?activeFilter=true&term=ren ston

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&term=ren+ston

    Returns a JSON representation of data related to the concepts that have terms that match the search string.

    The data returned for each concept includes:

    • All concept release file data4

    • The preferred term and fully specified name.

    Also returns the total number of concepts that match the search string.

    As some searches are matched by large numbers of concepts, this service is paged. Requests parameters include:

    • limit to restrict the number of concepts returned (default 50).

    • offset to specify the start in the results (in multiples of the limit).

    The results of the searches shown when applied to the 2020-01-31 International Edition were as follows:

    • Example 1 returns the first 50 concept that match the search term "knee". It also return a total value of 1387 indicating that there are 1337 more matches that could be shown. If the word "x-ray" is added to the search term, this reduces the number of matches to 8. This is an example of how an additional term can provide refinement for a particular context of use. However, this does not necessarily include all radiographic procedures on the knee - for example "Computed tomography of knee" will not match.

    • Example 2 returns the first 50 of 509 matches for the search term "alcohol". Of the first 50 concepts shown most related relate to the substance alcohol (26) and only 11 relate to disorders and findings.

    • Example 3 uses a search term with two partial words "ren ston". This finds only 7 matches but even in this case, the search results contain concepts from five different SNOMED CT hierarchies (substance, specimen, disorder, procedure and situation).

    In all the above examples adding another word or two greatly reduces the results returned and reduces the distribution of the results across multiple hierarchies. However, when entering data for a given purpose it makes sense to limit the search results to concepts that can sensibly be applied to those contexts.

    Find concepts by constrained term search

    GET [snowstorm]/snomed-ct/[branchPath]/concepts?activeFilter=true&term=[search-string]&ecl=[expressionConstraint]

    Example 4.

    GET [snowstorm]/MAIN/2020-01-31/concepts?activeFilter=true&ecl=<363680008|Radiographic imaging procedure|&term=knee

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&amp;amp;ecl=%3C363680008%7CRadiographic+imaging+procedure%7C&amp;term=knee

    Example 5.

    GET [snowstorm]/MAIN/2020-01-31/concepts?activeFilter=true&term=alcohol&ecl=<64572001|Disease|

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&amp;amp;term=alcohol&amp;ecl=%3C64572001%7CDisease%7C

    Example 6.

    GET [snowstorm]/MAIN/2020-01-31/concepts?activeFilter=true&term=alcohol&ecl=<64572001|Disease| and ^450970008| General Practice / Family Practice reference set|

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&amp;amp;term=alcohol&amp;ecl=%3C64572001%7CDisease%7C+and+%5E450970008%7C+General+Practice+%2F+Family+Practice+reference+set%7C%0A

    Example 7.

    GET [snowstorm]/MAIN/2020-01-31/concepts?activeFilter=true&term=ren ston&ecl=<64572001|Disease|

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&amp;amp;term=ren+ston&amp;ecl=%3C64572001%7CDisease%7C

    Find concepts by term search

    In FHIR, the ValueSet/$expand operation may be used to search within a specified collection of codes.

    A text filter may be applied to FHIR requests to restrict the codes that are returned. The interpretation of this is delegated to the server in order to allow to determine the most optimal search approach for the context.

    Typical usage of this parameter includes functionality like:

    • using left matching e.g. "acut ast"

    • allowing for wild cards such as %, &, ?

    • searching on definition as well as display(s)

    • allowing for search conditions (and / or / exclusions)

    For further details, see

    Example 1


    Encoded URL

    Example 2


    Encoded URL

    Returns a JSON representation of data related to the concepts that have terms that match the search string.

    The data returned for each concept includes:

    • The codesystem to which the returned concept belongs

    • The identifier (code) of the returned concept

    • A display term associated with the concept, e.g. the preferred term

    • All concept release file data

    • The preferred term and fully specified name.

    Also returns the total number of concepts that match the search string.

    As some searches are matched by large numbers of concepts, restrictions may be applied to limit the number of returned concepts. Parameters include:

    • count to restrict the number of concepts returned.

    • offset to specify the start in the results (in multiples of the limit).

    Example 1 returns the first 10 concepts that match the search term "knee". As indicated by the first part of the url, the version requested is the January 2020 version of the International Edition. The total number of concepts returned is 1387.

    Example 2 uses the a search term with two partial words "ren ston". This finds only 7 matches but even in this case, the search results contain concepts from five different SNOMED CT hierarchies (substance, specimen, disorder, procedure and situation). However, please note that when using this FHIR service, the semantic tag (or FSN) is not provided in the response.

    Find concepts by constrained term search

    GET [fhir]/ValueSet/$expand?url=[version]?fhir_vs=ecl/[expressionConstraint]&filter=[search-string]

    Example 3

    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs=ecl/<363680008&count=10&filter=knee

    Encoded URL

    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_vs%3Decl%2F%3C363680008&amp;amp;count=10&amp;filter=knee

    Example 4

    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs=ecl/<64572001|Disease|&filter=alcohol

    Encoded URL

    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_vs%3Decl%2F%3C64572001%7CDisease%7C&amp;filter=alcohol

    Example 5

    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs=ecl/<64572001|Disease|and ^450970008| General Practice / Family Practice reference set|&filter=alcohol

    Encoded URL

    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_vs%3Decl%2F%3C64572001%7CDisease%7Cand+%5E450970008%7C+General+Practice+%2F+Family+Practice+reference+set%7C&amp;filter=alcohol

    Find concepts by term search

    SELECT s.conceptId 'id',s.term 'term',f.term 'FSN'
    FROM snap_term_search_active s JOIN snap_fsn f on s.conceptId=f.conceptId
    WHERE MATCH (s.term) AGAINST ('[search-string]' IN BOOLEAN MODE) ORDER BY LENGTH(s.term)

    For example

    SELECT s.conceptId 'id',s.term 'term',f.term 'FSN' FROM snap_term_search_active s
    JOIN snap_fsn f on s.conceptId=f.conceptId
    WHERE MATCH (s.term) AGAINST ('knee' IN BOOLEAN MODE) ORDER BY LENGTH(s.term)
    SELECT s.conceptId 'id',s.term 'term',f.term 'FSN' FROM snap_term_search_active s
    JOIN snap_fsn f on s.conceptId=f.conceptId
    WHERE MATCH (s.term) AGAINST ('+renal +stone' IN BOOLEAN MODE) ORDER BY LENGTH(s.term)

    Returns the conceptId, term found and fully specified name. Ordering the results so that the closest matches (shortest matching terms) appear first in the list.

    Find concepts by constrained term search

    SELECT s.conceptId 'id',s.term CALL snap_SearchPlus('[search-string]', '[simple-constraint]')

    For example

    CALL snap_SearchPlus('knee', '<363680008')
    CALL snap_SearchPlus('+alcohol intoxication', '<64572001')

    Requirements and Options

    Term Searches

    Search Techniques and Search Strings

    Search Result Filtering and Ordering

    Constrained Term Searches

    All those involved in developing or procuring SNOMED CT terminology services are strongly advised to refer to the detailed guidance on this topic in the SNOMED CT Search and Data Entry Guide .

    Essential and Recommended Functionality for Finding Concepts

    Interdependencies

    Required By

    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).

    Snowstorm API

    FHIR API

    MySQL Example Database

    Get and Test Reference Set Membership
    Validate and Apply Expression Constraints
    Expression Constraint Language
    Validate and Apply Expression Constraints
    Explore and Review SNOMED CT
    Select Edition and Version
    Get a Concept, Description or Relationship
    Get Terms for a Concept
    Get Definition of a Concept
    Search Techniques and Search Strings
    Search Techniques and Search Strings
    Search Result Filtering and Ordering
    Constrained Term Searches
    HL7
    www.hl7.org
    SNOMED CT - SQL Practical Guide
    Appendix A: Building the SNOMED CT Example Database
    Provide Feedback

    A collection of matching terms that are applicable to concepts that conform to the specified constraints. Each term must be linked to the appropriate concept.

    Constrained searches return JSON data for each of the matches in the same way as described above for the unconstrained searches.

    Example 4 provides an example of how a search for x-ray procedures can be constrained so it is only necessary to enter the site and other related details. In this case the search term "knee" returns 40 matches. These include concepts such as "computed tomography of knee" which do not match "knee x-ray". The same constraint would simplifies all searches for radiology procedures and the constraint could also relaxed to include all imaging procedures.

    Examples 5 and 6 provide an examples of how a search for a reason for admission might be constrained. In example 5 the constraint to disease restricts searches for alcohol or other drugs to concepts in the disorder hierarchy. This reduces the count of matches to 148. In example 6 a further constraint is added requiring the concept to be in the "General Practice / Family Practice reference set". The result of this is that only 21 matching concepts are returned. It is important to note that this is only an example, for practical in different clinical environments more specific reference sets should be considered.

    Example 7 restricts the "ren ston" search to subtypes of disease and result in only 2 matches, which is a worryingly low number because there are certainly more SNOMED CT concepts that represent different disorders involving renal stones. The problem here is that many of the concepts do not have terms that match the search string. Instead, most related concepts use synonymous terms like "renal calculus" or "kidney stone".

    Returns a JSON representation of data related to the concepts that have terms that match the search string.

    The data returned for each concept includes:

    • The codesystem to which the returned concept belongs

    • The identifier (code) of the returned concept

    • A display term associated with the concept, e.g. the preferred term

    The searchPlus procedure allows a search string to be combined with a simple subtype constraint. This returns the conceptId and term for each match found. This current searchPlus procedure in the example MySQL database does not support more complex constraint expressions.

    All concept release file data

  • The preferred term and fully specified name.

  • Also returns the total number of concepts that match the search string.

    As some searches are matched by large numbers of concepts, restrictions may be applied to limit the number of returned concepts. Parameters include:

    • count to restrict the number of concepts returned.

    • offset to specify the start in the results (in multiples of the limit).

    Example 3 provides an example of how a search for x-ray procedures can be constrained so it is only necessary to enter the site and other related details. In this case the search term "knee" returns 40 matches. These include concepts such as "computed tomography of knee" which do not match "knee x-ray". The same constraint would simplifies all searches for radiology procedures and the constraint could also relaxed to include all imaging procedures.

    Examples 4 and 5 provide an examples of how a search for a reason for admission might be constrained. In example 4, the constraint to disease restricts searches for alcohol or other drugs to concepts in the disorder hierarchy. This reduces the count of matches to 148. In example 5 a further constraint is added requiring the concept to be in the "General Practice / Family Practice reference set". The result of this is that only 21 matching concepts are returned. It is important to note that this is only an example, for practical in different clinical environments more specific reference sets should be considered.

    GET [fhir]/ValueSet/$expand?url=[versionURI]?fhir_vs&count=10&filter=[search-string]
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs&filter=knee
    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_vs&amp;filter=knee
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs&filter=ren ston
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs&filter=ren ston

    A useful option to allow the user to deal with this situation is for the client application to provide users with the option to expand the results to include the subtype children or descendants of the matching concepts. In the case illustrated by example 7, this option would return 18 additional concepts (subtype descendants of 95570007|Kidney stone| that did not match the search term.

    http://hl7.org/fhir/valueset-operation-expand.html
    4
    4

    Select Edition and Version

    Overview

    Editions

    Several different SNOMED CT editions are available. All editions include the content of the SNOMED CT International Edition but some also include extensions that contain additional content designed for use in a particular country, region, speciality or organization. Terminology services may support access to more than one edition, so the service must enable the client to select the appropriate edition.

    It is important to specify the edition to enable access to national or local terminology content that is not available in other editions. Content specific to an edition may include locally added concepts and additional descriptions that provide terms in a national language or local dialect. An edition may also include additional reference sets representing subsets or maps.

    Versions

    SNOMED CT editions are maintained with regular updates. Each update to an edition is referred to as a SNOMED CT versioned edition. Terminology services should enable access to more than one edition, so the service must enable the client to select the appropriate version.

    It is important to specify the version as each version update adds, changes or inactivates some components and reference set members. Therefore, the result of a terminology service may differ depending on the version.

    An organization maintaining a SNOMED CT edition or extension will also have internal development versions and prerelease versions for testing. Therefore, services designed to support terminology development and maintenance also need to enable selection of specific terminology development versions or branches.

    SNOMED CT specifications define a full release that represents a complete record of the history of all released components, and a snapshot release type that only represents the state of those components at a specified date.

    Some services described in this guide involve checking for changes between versions. Direct support for these services requires two versions to be specified to enable comparison of the before and after state of components that have changed between versions.

    Selection of a specified edition, versioned edition or extended versioned edition is a prerequisite for all other terminology services as it determines the terminology substrate to be used when responding to those service requests. The selection process needs to be supported by services that enable the client application to find out information about available editions, versioned editions, and extended versioned editions. The required services are listed in the table below.

    Service Name and Status
    Input
    Output

    For performance reasons, scalable terminology services should be stateless and this rules out prior configuration of a session to work with a particular edition or version. Therefore, all service requests must explicitly identify the edition and version to be accessed.

    • Servers that support access to development versions of an edition must enable access to specified development branches as well as versions.

    • Servers that provides access to development branches needs to provide a service that identifies the available development branches.

    • Terminology services that support comparison between versions (or between development branches), must allow both the versions (or branches) to be specified.

    Required By:

    • All other terminology services

    • All use cases

    Explanation: Terminology services depend on the explicit selection of an edition and version (or development branch) to ensure accurate querying, classification, and interpretation of SNOMED CT data.

    In minimal implementations (e.g., a server with only a single pre-configured snapshot), version/edition selection may not be an explicit service. Instead, the selection is implicitly determined by the data loaded into the server.

    However, more flexible and scalable systems—especially those supporting multiple editions and version comparisons—must expose version selection as a configurable parameter in every request.

    Depends On:

    • The terminology server must contain data for all versioned editions that may be requested.

    Service Name
    API Call
    Result
    Service Name
    API Call
    Result
    Service Name
    SQL Query
    Result

    Any version of the edition supported by the schema, can be accessed provided the schema was built using the full release files. The most recent version and two earlier versions can be accessed simultaneously by referring to different views (snap1 and snap2). The versions in each of the two earlier views are specified in a configuration file. The version settings for each of these the earlier views can be set to specify the version at any past date.

    Queries run on a specific snapshot view return the data as it was at the configured date.

    Get available development branches

    DEVELOPMENT

    • Edition identifier

    • Data associated with available versions of the specified edition:

      • The name of the edition

      • Data related to the development branch

      • An identifier that can be used to select that development branch using

    Specify a versioned edition

    REQUIRED

    • Versioned edition identifier

    In most cases, specification of a versioned edition, extended versioned edition or development branch should be an integral part of a request for another terminology service. It simply identifies the terminology substrate to which those requests apply and does not produce specific output.

    There are two exceptions to this:

    • Versioned edition selection services without a request for another service should provide data about the versioned edition (or extended versioned edition), in a similar as specified for the "Get available versions" service.

    • If the specified version is not accessible, the output should be an appropriate error message.

    Specify an extended versioned edition

    OPTIONAL

    • Versioned edition identifier

    • moduleId(s) and version dates of each of the modules to be included in the extended versioned edition.

    Same as above

    Specify development branch

    DEVELOPMENT

    • Development branch identifier.

    Same as above

    Specify a specific versioned edition

    for example


    Encoded URL

    Returns information about the identified versioned edition specified by the branchPath. This includes information about all the modules included in the edition.

    In practice the branchPath may refer to an extended versioned edition containing additional modules that are not part of the formally defined edition (see ). In this case, these modules will also be listed.

    Other Snowstorm API calls use the same branchPath mechanism to refer to specific versioned editions or development branches.

    Specify an extended edition

    An edition supplemented by a set of compatible extension modules can be built as a separate schema by importing the full release of the edition and the full release for each of the extension packages required. Once this schema has been built, queries run on that schema provide access to data in that extended edition.

    -

    Get available versions of an edition

    Not required.

    Any version of that edition, can be accessed from a schema built using the full release files. The version is accessed simply by specifying an appropriate snapshot date.

    -

    Specify a specific versioned edition

    for example

    After applying the two procedure calls shown, queries that refer to views with the prefix snap1_ will be applied to the 2019-07-31 version and queries that refer to views with the prefix snap2_ will be applied to the 2015-01-31 version.

    CALL setSnapshotTime([configId],[snapshotTime]);

    CALL setSnapshotTime(1,'20190731');CALL setSnapshotTime(2,'20150131');

    Get available editions

    REQUIRED

    • None

    • Data associated with available SNOMED CT editions:

      • The name of the edition

      • An identifier that can be used to select that edition

        • See note on input to the "Get available versions" service

      • Optionally other data including:

        • Information about the organization responsible for maintenance and distribution

        • Information about available versions of this edition (as specified for the "Get available versions" service)

    Get available versions

    REQUIRED

    • Edition identifier

    Notes

    Get available editions

    GET [snowstorm]/codesystems

    Returns JSON representation of all SNOMED CT Editions that are available in the server.

    The data for each edition includes a shortname property used to refer that edition in subsequent API calls.

    For the International Edition the shortname is "SNOMEDCT".

    Get available versions of an edition

    GET [snowstorm]/codesystems/[shortname]/versions

    for example

    GET [snowstorm]/codesystems/SNOMEDCT/versions

    Get available code systems

    GET [fhir]/CodeSystem?_elements=name,url

    Returns a JSON representation of the name and URL of each supported code system.

    • The URL is then used in other commands to specify the code system to be accessed.

    Get available editions

    Not supported. Available editions are determined by importing each edition into a separate schema.

    -

    Specify an edition

    To select an edition in the SNOMED CT example database it is necessary to build an instance of the database schema using the set of SNOMED CT release files representing a full release of that edition. Once this schema has been built, queries run on that schema provide access to data in that edition.

    CALL setSnapshotTime(1,'20190731');CALL setSnapshotTime(2,'20150131');

    CALL setSnapshotTime([configId],[snapshotTime]);

    Release Types

    Comparing Versions

    Requirements and Options

    Services Required

    Accessing a Selected Edition Version or Branch

    Interdependencies

    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).

    Snowstorm API

    In the Snowstorm service requests [snowstorm] should be replaced by the URL to the Snowstorm server endpoint.

    FHIR API

    In the FHIR service requests [fhir] should be replaced by the URL to the FHIR terminology server endpoint. FHIR® is a registered trademarks of HL7 (www.hl7.org).

    MySQL Example

    For more information about the SNOMED CT example database see the SNOMED CT - SQL Practical Guide.

    The SNOMED CT MySQL example database is used as an illustration and is not intended for use as a terminology server. In particular, note that the version setting approach described above is not stateless. Configuration changes made by any user apply to all the queries they or other users of the database run. This approach to versioning makes it easier to demonstrate processes that require simultaneous access to current and previous versions of an edition. However, this stateful approach is clearly unsafe in a multiuser environment.

    Provide Feedback
    • Data associated with available versions of the specified edition:

      • The name of the edition

      • The version date

      • An identifier that can be used to select that versioned edition (or extended versioned edition

    Returns JSON representation of each version of the edition specified by shortname that are available in the server.

    The data for each edition version includes a branchPath property used to refer that edition in subsequent API calls. For the 2020-01-31 release of the International Edition the branchPath is "MAIN/2020-01-31". The data returned also includes details of the modules in included in each versioned edition.

    Note that URL encoding rules requires the / (slash) character to be replaced with %2F. Thus in subsequent API calls the branchPath is represented as MAIN%2F2020-01-31

    -

    Test Expression Subsumption

    An expression is a structured combination of one or more concept identifiers that represents an idea. Expressions can be used to represent concept definitions. They can also be used to represent meanings that are not currently represented by a concept in the current SNOMED CT release.

    When expressions are used, it is necessary to determine whether the meaning of a particular expression is a subtype of a specified concept or more generally is subsumed by a particular expression constraint. The terminology services required are similar to those described for testing concepts in sections and . However, in this case the first step is to determine the meaning of the expression relative to existing defined concepts.

    The required services are listed in the table below.

    Services Required

    Service Name and Status
    Input
    ):
    • See note on input to the "Specify a versioned edition" service

  • Identifiers of the versioned modules included in that version of the edition.

  • Optionally:

    • Information about the organization responsible for maintenance and distribution

  • Optionally:

    • Information about ownership, status and access rights to the development branch

    Notes
    Notes
    Enabling Access to Extended Editions
    GET [snowstorm]/codesystems/[branchPath]
    GET [snowstorm]/codesystems/MAIN/2020-01-31
    GET [snowstorm]/codesystems/MAIN%2F2020-01-31
    Output

    Test subsumption of an expression minimal REQUIRED

    • Use Cases

      • EHR Data Entry (if entry of post-coordinated expressions is supported)

      • EHR Reporting and Analytics (if stored data includes post-coordinated expressions)

    • Select Edition and Version

    • Get Definition of a Concept

    • Get and Test Concept Subtypes and Supertypes

    • Validate and Apply Expression Constraints

    Service Name
    API Call 2
    Result

    ...

    ...

    Service Name
    API Call 3
    Result

    ...

    ...

    Service Name
    SQL Query 4
    Result

    ...


    Notes

    • Language and/or dialect should be specified if the service returns terms associated with referenced concepts.

    • In the Snowstorm service requests [snowstorm] should be replaced by the URL to the Snowstorm server endpoint.

    • In the FHIR service requests [fhir] should be replaced by the URL to the FHIR terminology server endpoint. FHIR® is a registered trademarks of HL7 (www.hl7.org).

    • The SNOMED CT MySQL example database is not designed as a terminology server and is not intended for use in a live system . It is referenced in this guide as an illustration that some readers may find helpful. For more information about the SNOMED CT example database see the . For instructions on how to build the example database refer to .

    Provide Feedback

    This page is a placeholder for an identified advanced service requirement for which a definitive set of detailed requirements are not yet available.

    The detailed requirements are under discussion and this page will be updated based on the outcome of those discussions.

    Overview

    Requirements and Options

    Get and Test Concept Subtypes and Supertypes
    Validate and Apply Expression Constraints

    Interdependencies

    Required By

    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 ).

    Snowstorm API

    FHIR API (to be added)

    MySQL Example Database

    SNOMED CT - SQL Practical Guide
    Appendix A: Building the SNOMED CT Example Database
    IETF RFC1738
    Optimizing Searches
    Search for Words within in Any Order
    Optimize Display of Search Results

    Get and Test Reference Set Membership

    Overview

    Reference set files provide a standard format for maintaining and distributing a set of references to SNOMED CT components.

    Notes

    • A reference set can be used to represent a subset of components (concepts, descriptions or relationships).

    • A reference set may also associate referenced components with additional information such as:

      • Ordered lists of components

      • Sets of associations between components

      • Mapping between SNOMED CT concepts and other systems codes, classifications, or knowledge resources.

    A concept or description is a member of a reference set if that reference set contains an active row with a referencedComponentId matching the id of that concept or description.

    Two services are specified in this section. One of these returns the list of members of a specified reference set. The other tests whether a candidate concept or description is a member of a specified reference set.

    The union, intersection or complement of two or more reference sets can be determined using the (ECL). Terminology service requirements for accessing expression constraints are described in .

    The services listed in the table below can be used to determine whether a concept or description is a member of any identified reference set. These services are primarily applicable to simple reference sets that represent subsets of concepts or descriptions (). Members of other types of reference set contain additional data and services that provide access to this additional data are described in .

    Service Name and Status
    Input
    Output
    • Other Services

    • Use Cases

    Service Name
    API Call
    Result
    Service Name
    API Call 5
    Result
    Service Name
    SQL Query 6
    Result

    Notes

    • The reference set specification should indicate which component types are permitted to be members. The members of some reference sets are concepts while the members of other reference sets are concepts. It is also possible, for some reference sets to contain both concepts and descriptions as members. Services that only return the referencedComponentId do not need to be aware of the types of component in the reference set. However, if a service returns terms or other additional data, the service must take account of the component type.

    • The value TRUE may be represented in a variety of ways. For example: as a Boolean value, as a non-zero count of matching members or by a data object representation of the candidate component. Similarly the value FALSE may be represented by a Boolean, by a zero count, or by an empty or null returned object.

    • In the Snowstorm service requests [snowstorm] should be replaced by the URL to the Snowstorm server endpoint.

    Get Definition of a Concept

    Each SNOMED CT concept has a concept definition.

    A concept definition is a set of one or more axioms that partially or sufficiently specify the meaning of a SNOMED CT concept.

    The table below describes several distinct types of access to concept definitions and the client application functionalities that each of these access types supports.

    General purpose terminology services that are able to access subtype relationships relationships can be used to meet a limited set of SNOMED CT use cases. However, SNOMED CT terminology services should also provide access to the inferred view of concept definitions.

    Advanced SNOMED CT terminology services require the ability to access and interpret the axioms that represent the stated view of concept definitions. They should also enable description logic classification either as a built in service or via an interface to separate classifier. Services that support classification provide added value for data retrieval and analysis by enabling post-coordinated expressions to be classified and appropriately located in the subtype hierarchy.

    The required services listed in the table below omit services that only require access to subtype relationships, as these are described in .

    Support EHR Data Entry

  • Reference Set Editing

  • Get Data from a Reference Set

  • The number of results returned defaults to 50 but can be set using a limit parameter in the call. Additionally the starting offset within a large set of results can be specified by an additional parameter.

  • In the FHIR service requests [fhir] should be replaced by the URL to the FHIR terminology server endpoint. FHIR ® is a registered trademarks of HL7 ( www.hl7.org ).

  • The SNOMED CT MySQL example database is not designed as a terminology server and is not intended for use in a live system . It is referenced in this guide as an illustration that some readers may find helpful. For more information about the SNOMED CT example database see the SNOMED CT - SQL Practical Guide. For instructions on how to build the example database refer to Appendix A: Building the SNOMED CT Example Database.

  • Get all members of a specified reference set

    • A reference set specified by its refsetId

    • A list of concept or description ids

    • Option to include additional information about each concept or description

    Test if a concept or description is a member of specified reference set

    • A reference set specified by its refsetId A candidate concept.id or description.id

    Get all members of a specified reference set

    GET [snowstorm]/[branch]/members?active=true&referenceSet=[refsetId]

    for example

    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referenceSet=723264001

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;referenceSet=723264001

    Returns a JSON representation of data about all the active members of the reference set.

    It also returns the total number of members in the reference set.

    As some reference sets contain a large numbers of members, this service is paged. Requests parameters include:

    • limit to restrict the number of reference set members returned (default 50).

    • offset to specify the starting point in the results (in multiples of the limit).

    This example returns all active members of the 723264001 | Lateralizable body structure reference set| . This is large reference set with nearly 20,000 active members so although this call returns the count of members it only returns data on a limited number of members .

    Test if a concept or description is a member of specified reference set

    GET [snowstorm]/[branch]/members?active=true&referencedComponentId=[candidateId]&referenceSet=[refsetId]

    for example this call returns true

    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referencedComponentId=53120007&referenceSet=723264001

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;amp;referencedComponentId=53120007&amp;referenceSet=723264001

    while the next call returns false

    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referencedComponentId=80891009&referenceSet=723264001

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;amp;referencedComponentId=80891009&amp;referenceSet=723264001

    Get all members of a specified reference set

    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs%3Decl%2F%5E721144007&amp;count=10
    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs%3Decl%2F%5E%5BrefsetId%5D&amp;count=10

    An alternative solution is to use the expression constraint language, as shown here:

    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs%3Drefset%2F721144007&amp;count=10

    for example

    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=refset/[refsetId]&count=10

    Returns a JSON representation of data about each of the reference set member.

    The data returned for each concept includes:

    • code: the conceptId of the reference set member

    • display: the preferred term for the reference set member

    Also returns the total number of reference set members

    As some reference sets have very large numbers of children, this service is paged. Requests parameters include:

    • count to restrict the number of members returned.

    • offset to specify the start in the results (in multiples of the limit).

    Test if a concept is a member of specified reference set

    FHIR does not provide a specific operation for this service, but the SNOMED CT Expression Constraint Language supports testing for reference set membership, and can thus be used to enable this service through the ValueSet/$expand operation.

    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/^[refsetId] AND [predicateConceptId]

    for example

    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/^721144007 AND 734009000

    Encoded URL

    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs%3Decl%2F%5E721144007+AND+734009000

    *Note that the ECL memberOf function needs to be url encoded. The URL encoding for ^ is %5E

    If multiple predicate concepts should be tested in the same requests this can be done using the following expression constraint:

    ^[refsetId] AND ([predicateConceptId_1] OR [predicateConceptId_2].... OR [predicateConceptId_n])

    Get all members of a specified reference set

    SELECT referencedComponentId FROM snap_refset_simple
    WHERE active=1 AND refsetId=[refsetId]

    for example

    SELECT referencedComponentId FROM snap_refset_simple
    WHERE active=1 AND refsetId=723264001

    Returns the ids of all the concepts or descriptions that are the members of the reference se

    Test if a concept or description is a member of specified reference set

    
    SELECT count(referencedComponentId)
    FROM snap_refset_simple
    WHERE active=1 AND refsetId=[refsetId] AND referencedComponentId=[candidateComponentId]

    for example

    SELECT referencedComponentId FROM snap_refset_simple
    WHERE active=1 AND refsetId=723264001

    Requirements and Options

    Services Required

    Interdependencies

    Required By

    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).

    Snowstorm API

    FHIR API

    MySQL Example Database

    SNOMED CT Expression Constraint Language
    Validate and Apply Expression Constraints
    Get Data from a Reference Set
    Validate and Apply Expression Constraints
    Find Concepts
    Select Edition and Version
    Provide Feedback
    • If the candidate concept or description is a member of the reference set: TRUE

    • Otherwise: FALSE

    Returns a JSON representation of data including a count of matching member rows followed by data from the matching member rows. The result of the test can be determined by checking the total property of the returned object. Non-zero implies the candidate concept or description is a member of the reference set, zero implies it is not.

    The two example calls both test membership of the . The first one returns with a total value of 1 confirming that is a member of this reference set. The second example returns with a total value of 0 as is not a member of this reference set.

    Returns a JSON representation of data about each of the predicate concepts that are members of the reference set.

    The data returned for each concept includes:

    • code: the conceptId of the reference set member

    • display: the preferred term for the reference set member

    Also returns the total number of concepts satisfying the expression constraint.

    Note: If none of the predicate concepts are which are tested for membership are included in the reference set, the service will return 0 results.

    Returns:

    • 0 : if the candidate component is not in the reference set.

    • 1 : If the candidate component is a member of the reference set

      • Some types or reference set can include the same component more than once, so any value greater than zero indicate the component is a member of the references set.

    Service Name and Status
    Input
    Output

    Access to subtype relationships

    - Concept identifier - Edition and version

    - Set of conceptIds of all concepts with a direct subtype relationship to or from the specified concept. - Optionally, additional information such as the fully specified name or preferred term of each concept in the set.

    Access to the transitive closure of subtype relationships

    - Concept identifier - Edition and version

    - Set of conceptIds of all concepts with a direct or transitive subtype relationship to or from the specified concept. - Optionally, additional information such as the fully specified name or preferred term of each concept in the set.

    Service Name and Status
    Input
    Output

    Get inferred necessary normal form definition of a concept REQUIRED

    - Edition and version - Concept identifier - Language/dialect (optional)

    - Inferred definition of the specified concept as a SNOMED CT compositional grammar expression or as a data object representing all active rows in the snapshot view of the relationship file. - Optionally, concept identifiers in the definition may be supplemented with the preferred term or fully specified name in a specified language or dialect.

    Get stated definition of a concept ADVANCED

    - Edition and version - Concept identifier - Language/dialect (optional)

    • Other Services

      • Get and Test Concept Subtypes and Supertypes

      • Get and Test Reference Set Membership

      • Validate and Apply Expression Constraints

    • Use Cases

    • Select Edition and Version

    • Get a Concept, Description or Relationship

    Service Name
    API Call
    Result

    Get the inferred necessary normal form definition of a concept

    for example


    Encoded URL

    or without including the terms


    Encoded URL

    Returns a JSON data object containing a compositional grammar expression representing the inferred definition of the concept.

    If the optional includeTerms parameter is set to true the expression includes the fully specified names of each concept referenced in the expression. Otherwise only the expression only includes the concept identifiers.

    Get the stated definition of a concept

    for example


    Encoded URL

    or as example of a concept defined by more than one axiom


    Encoded URL

    Service Name
    API Call
    Result

    Get the inferred necessary normal form definition of a concept

    for example

    Returns a JSON representation of information containing the definition of the concept.

    The data returned includes the necessary inferred, normal form definition of the concept represented as a compositional grammar expression.

    Get the stated definition of a concept

    N/A

    Service Name
    SQL Query
    Result

    Get the inferred necessary normal form definition of a concept

    for example

    or including terms

    Returns the set of rows each containing one defining relationship with its associated relationship group number.

    -- Get stated defining axiomsSELECT owlExpressionFROM snap_refset_owlexpression WHERE active=1 AND refsetId=733073007 AND referencedComponentId=473011001 ORDER BY owlExpression;

    -- Get stated defining axiomsSELECT owlExpressionFROM snap_refset_owlexpression WHERE active=1 AND refsetId=733073007 AND referencedComponentId=6025007 ORDER BY owlExpression;

    -- Get stated defining axiomsSELECT owlExpressionFROM snap_refset_owlexpression WHERE active=1 AND refsetId=733073007 AND referencedComponentId=[conceptId] ORDER BY owlExpression;

    -- Get inferred defining relationships with termsSELECT CONCAT(typeId,"|",typeTerm,"|=", destinationId,"|",destinationTerm,"|") 'value', relationshipGroup 'group'FROM snap_rel_def_fsn WHERE sourceId=6025007;

    -- Get inferred defining relationshipsSELECT typeId,destinationId,groupFROM snap_relationship WHERE active=1 AND characteristicType=900000000000011006 AND sourceId=6025007;

    -- Get inferred defining relationshipsSELECT typeId,destinationId,groupFROM snap_relationship WHERE AND active=1 AND sourceId=[conceptId] AND characteristicType=900000000000011006;

    Provide Feedback

    Overview

    Notes

    • Concept definitions are represented in two ways in SNOMED CT release files: * As a stated view represented by axioms that conform to the OWL Functional Syntax distributed in the OWL Expression Reference Set file. * As an inferred view represented by defining relationships that are distributed in the relationship file. The inferred view is generated by applying description logic classification to the stated view.

    • Concept definitions include two distinct elements

      • Axioms that assert that a concept is a subtype of one or more other concepts. In the inferred view these are represented as subtype relationships.

      • Axioms that assert characteristics of a concept that distinguish it from its supertypes. In the inferred view these are represented as attribute relationships.

    Requirements and Options

    Practical Requirements for Access to Concept Definitions

    Get and Test Concept Subtypes and Supertypes

    Services Required

    Interdependencies

    Required By

    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 ).

    Snowstorm API

    FHIR API

    MySQL Example Database

    Access to the complete inferred view of concept definitions, including subtype relationships and attribute relationships

    - Concept identifier - Edition and version

    - Inferred definition of the specified concept represented as a compositional grammar expression or as a data object representing all active rows in the snapshot view of the relationship file. - Optionally, concept identifiers in the definition may be supplemented with the preferred term or fully specified name in a specified language or dialect.

    Access to the complete stated view of concept definitions, as OWL axioms

    - Concept identifier - Edition and version

    - Stated definition of the concept represented as a set of one or more OWL axioms or as a SNOMED CT compositional grammar expression. - Optionally, concept identifiers in the definition may be supplemented with the preferred term or fully specified name in a specified language or dialect.

    - Stated definition of the concept as a set of one or more OWL axioms or as a SNOMED CT compositional grammar expression. - Optionally, concept identifiers in the definition may be supplemented with the preferred term or fully specified name in a specified language or dialect.

    This service returns a JSON representation of one or more members of in the OWL expression reference set that together represent the stated definition of the identified concept. Each of these reference set members contains an axiom, represented using OWL Functional Syntax, in the additionalFields.owlExpression property string.

    This service is not supported by the FHIR terminology services API

    -- Get inferred defining relationshipsSELECT typeId,destinationId,groupFROM snap_relationship WHERE AND active=1 AND sourceId=[conceptId] AND characteristicType=900000000000011006;

    -- Get inferred defining relationshipsSELECT typeId,destinationId,groupFROM snap_relationship WHERE active=1 AND characteristicType=900000000000011006 AND sourceId=6025007;

    -- Get inferred defining relationships with termsSELECT CONCAT(typeId,"|",typeTerm,"|=", destinationId,"|",destinationTerm,"|") 'value', relationshipGroup 'group'FROM snap_rel_def_fsn WHERE sourceId=6025007;

    -- Get inferred defining relationshipsSELECT typeId,destinationId,groupFROM snap_relationship WHERE AND active=1 AND sourceId=[conceptId] AND characteristicType=900000000000011006;

    -- Get inferred defining relationshipsSELECT typeId,destinationId,groupFROM snap_relationship WHERE active=1 AND characteristicType=900000000000011006 AND sourceId=6025007;

    -- Get inferred defining relationships with termsSELECT CONCAT(typeId,"|",typeTerm,"|=", destinationId,"|",destinationTerm,"|") 'value', relationshipGroup 'group'FROM snap_rel_def_fsn WHERE sourceId=6025007;

    Get the stated definition of a concept

    for example

    or as example of a concept defined by more than one axiom

    Returns the set of rows each containing one OWL axiom.

    The sort order used in this query ensures that class axioms appear before any GCI axioms

    -- Get stated defining axiomsSELECT owlExpressionFROM snap_refset_owlexpression WHERE active=1 AND refsetId=733073007 AND referencedComponentId=[conceptId] ORDER BY owlExpression;

    -- Get stated defining axiomsSELECT owlExpressionFROM snap_refset_owlexpression WHERE active=1 AND refsetId=733073007 AND referencedComponentId=6025007 ORDER BY owlExpression;

    -- Get stated defining axiomsSELECT owlExpressionFROM snap_refset_owlexpression WHERE active=1 AND refsetId=733073007 AND referencedComponentId=473011001 ORDER BY owlExpression;

    -- Get stated defining axiomsSELECT owlExpressionFROM snap_refset_owlexpression WHERE active=1 AND refsetId=733073007 AND referencedComponentId=[conceptId] ORDER BY owlExpression;

    -- Get stated defining axiomsSELECT owlExpressionFROM snap_refset_owlexpression WHERE active=1 AND refsetId=733073007 AND referencedComponentId=6025007 ORDER BY owlExpression;

    -- Get stated defining axiomsSELECT owlExpressionFROM snap_refset_owlexpression WHERE active=1 AND refsetId=733073007 AND referencedComponentId=473011001 ORDER BY owlExpression;

    Find Concepts
    https://github.com/SNOMED-Documents/snomed-terminology-services-guide/blob/main/4%20terminology-service-types/broken-reference/README.md
    Test Expression Subsumption
    Explore and Review SNOMED CT
    Support Terminology Authoring and Review
    IETF RFC1738
    GET [snowstorm]/[branch]/concepts/[conceptId]/normal-form?includeTerms=[true|false]
    GET [snowstorm]/MAIN/2020-01-31/concepts/6025007/normal-form?includeTerms=true
    GET [snowstorm]/MAIN%2F2020-01-31/concepts/6025007/normal-form?includeTerms=true
    GET [snowstorm]/MAIN/2020-01-31/concepts/6025007/normal-form
    GET [snowstorm]/MAIN%2F2020-01-31/concepts/6025007/normal-form
    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=733073007&referencedComponentId=[conceptId]
    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=733073007&referencedComponentId=6025007
    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=733073007&amp;referencedComponentId=6025007
    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=733073007&referencedComponentId=473011001
    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=733073007&amp;referencedComponentId=473011001
    [fhir]/CodeSystem/$lookup?system=http://snomed.info/sct&code=[conceptId]&property=normalForm&_format=json
    GET [fhir]/CodeSystem/$lookup?system=http://snomed.info/sct&code=6025007&property=normalForm&_format=json
    723264001 | Lateralizable body structure reference set|
    53120007 | Upper limb structure|
    80891009 | Heart structure|

    Get Terms for a Concept

    Overview

    Each concept is associated with descriptions. Each description is an association between a human-readable phrase (term) and a particular SNOMED CT concept.

    There are different types of descriptions and there may be descriptions of each of the following types in several languages:

    • A synonym is a word or phrase that expresses the meaning of a SNOMED CT concept in a specified language.

      • Synonyms are terms that represent the meaning of the concept in a way that is familiar and readily understandable. However, when taken out of context a synonym may not be unambiguous and in some cases the same term may be associated with more than one concept.

      • Each concept has at least one synonym and a concepts may have several synonyms. One of the synonym descriptions in each language is marked as the preferred term for the associated concept and others may be marked as acceptable for use. The preferred term is the term deemed to be the most clinically appropriate way of expressing a concept in specified language context.

    • A fully specified name is a description that represents the meaning of a concept in a way that is unambiguous and independent of the context in which it is used.

      • Fully specified names are essential for disambiguation of the meaning of a concept. These term used in the fully specified name includes a hierarchy tag that specifies the branch of the SNOMED CT hierarchy the concept is in. The hierarchy tag is enclosed in brackets at the end of the term.

      • There is only one fully specified name in each language. In some languages there may not be a fully specified name, in which case the English fully specified name may be used where necessary for disambiguation.

    • A text definition is a narrative text explanation of the meaning of a concept that may exceed the maximum permitted length for a fully specified name.

      • Text definitions are only included for some concepts where longer terms are deemed to be necessary or useful to add clarity to the meaning of the concept.

    Terminology services must enable access to the term in each active description associated with an identified concept. They should also be able to selectively filter the descriptions for which terms are returned based on the following criteria:

    • Active status (description.active)

      • Inactive descriptions associated with a concept should not be returned unless explicitly requested.

    • Description type (description.typeId)

      • Fully specified name

    The required services are listed in the table below.

    Service Name and Status
    Input
    Output
    • Use Cases

    • Service Types

    Service Name
    API Call
    Result
    Service Name
    API Call
    Result
    Service Name
    API Call
    Result

    Validate Concept Definitions and Expressions

    A concept definition is a set of one or more axioms that partially or sufficiently specify the meaning of a SNOMED CT concept.

    Concept definitions must conform to the SNOMED CT Concept Model as specified by the machine readable concept model. A concept with a definition that does not conform to the concept model cannot be accurately classified.

    • Terminology services supporting SNOMED CT authoring must validate concept definitions based on concept model rules.

    • Services only for terminology use do not need to meet this requirement.

    An expression is a structured combination of one or more concept identifiers that represents an idea.

    Synonyms (including the preferred term)

  • Textual definitions (and other types where these are used)

  • Acceptability in a specified Language Reference Set

    • Preferred: To access the fully specified name or preferred term

    • Acceptable: To access synonyms

  • Get all terms for a concept

    • Get the terms from all descriptions associated with a concept

    REQUIRED

    • Edition and version

    • Concept identifier

    • Include inactive descriptions (optional)

    • Descriptions not found: Return appropriate error message

    • Descriptions found: Return data associated with each of the descriptions found

      • This data must include the id, term, active status, description type, language code and case sensitivity

      • It should also include the acceptability of the term in one or more language reference sets

    Get filtered terms for a concept

    • Get terms from descriptions associated with a particular concept filtered by one or more of the following

      • Status of the description (active: 1=true, 0=false)

    • Edition and version

    • Concept identifier

    • Filters

      • Active

    • Descriptions not found: Return appropriate error message

    • Descriptions found: Return data associated with the descriptions found

      • This data must include the id, term and case sensitivity

      • It must also include the term, active status, description type, language code

    EHR Reporting and Analytics

  • Support Terminology Authoring and Review

  • Get filtered terms for a concept

    Use the API call above to get all terms for a concept and then filter using the returned data.

    Same as above

    Get all synonyms of a concept

    for example

    Returns all the preferred term of a specified concept and with their caseSignificanceId values.

    Get all terms for a concept

    for example

    Returns all descriptions of all concepts together with all the data for each of those descriptions in the concept file.

    Set language configuration

    for example

    After this setting is made all references to views including the prefix snap_ and the suffixes _fsn, _pref, _syn, _synall will use the language reference set for GB English (rather than the default language US English).

    Other languages supported by the the installed Edition can also be specified in a similar way.

    Get fully specified name of a concept

    • Get the fully specified name of a concept in US English (or in a specified language reference set).

    REQUIRED

    • Edition and version

    • Concept identifier

    • Language refset set identifier (optional)

    • Description not found: Return appropriate error message

    • Description found: Return data associated with the description:

      • Required: id, term, caseSignificanceId

      • Optional:

        • typeId (which will always be )

        • languageCode

    Get preferred term of a concept

    • Get the preferred term of a concept in US English (or in a specified language reference set).

    REQUIRED

    • Edition and version

    • Concept identifier

    • Language refset set identifier (optional)

    Get fully specified name of a concept Get preferred term of a concept

    GET [snowstorm]/[branchPath]/concepts/[conceptId]

    for example

    GET [snowstorm]/MAIN/2020-01-31/concepts/6025007

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts/6025007

    Returns a JSON representation of data about the selected concept. This include both the fully specified name and the preferred term.

    This is the same Snowstorm API call used in Get a Concept, Description or Relationshipto get the concept by identifier. If the fully specified name and/or preferred term there is no need for a specific service to get these terms.

    Get all terms for a concept

    GET [snowstorm]/[branchPath]/concepts/[conceptId]/descriptions

    for example

    GET [snowstorm]/MAIN/2020-01-31/concepts/6025007/descriptions

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts/6025007/descriptions

    Get all descriptions for a concept

    GET [fhir]/CodeSystem/$lookup?system=http://snomed.info/sct&code=[conceptId]

    for example

    GET [fhir]/CodeSystem/$lookup?system=http://snomed.info/sct&code=6025007

    Returns a JSON representation of data about the selected concept. This include both the fully specified name and all synonyms of the concept.

    This is the same FHIR API call used in Get a Concept, Description or Relationship to get concept by identifier. If the fully specified name and/or preferred term there is no need for a specific service to get these terms.

    Get fully specified name of a concept

    SELECT term,caseSignificanceId FROM snap_fsn WHERE conceptId=[conceptId]

    for example

    SELECT term,caseSignificanceId FROM snap_fsn WHERE conceptId=6025007

    Returns the fully specified name of a specified concept and its caseSignificanceId.

    Get preferred term of a concept

    SELECT term,caseSignificanceId FROM snap_pref WHERE conceptId=[conceptId]

    for example

    SELECT term,caseSignificanceId FROM snap_pref WHERE conceptId=6025007

    Requirements and Options

    The services described in Get a Concept, Description or Relationship require access to data about individual components based on their unique identifiers. Therefore, a service that gets a description is only required to return the data in the identified description. However, some implementations of those services may also meet some of the requirements for getting terms associated with a concept.

    • Services that get concepts may also return some or all of the terms associated with the selected concept.

      • For example, the Snowstorm service that retrieves an identified concept also returns the fully specified name and preferred term for that concept in one language.

      • Similarly, the FHIR service returns a single display term and may optionally also return other associated terms as designations.

    • Services that get relationships may also return terms associated with the concepts identified by those relationships.

    Services Required

    Interdependencies

    Required By

    Depends On

    This service requires access to description acceptability data in a language reference set. This could be regarded as a dependency on Get Data from a Reference Set. However, access to language reference set data is an essential part of the process of displaying appropriate terms for a concept. Therefore access to the language reference set is included as an integral part of this service and is not declared as a distinct dependency.

    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).

    Snowstorm API

    Snowstorm supports selection of the language(s) in which terms will be returned. This is specified using HTTP request header Accept-Language. The values used with this include the identifiers of the language reference sets to be applied.

    For example

    { "Accept": "application/json", &#xNAN;"Accept-Language": "en-X-900000000000509007,en-X-900000000000508004,en" }

    FHIR API

    MySQL Example Database

    The SNOMED CT MySQL example database is not designed as a terminology server and is not intended for use in a live system . It is referenced in this guide as an illustration that some readers may find helpful. For more information about the SNOMED CT example database see the SNOMED CT - SQL Practical Guide.

    Explore and Review SNOMED CT
    Support EHR Data Entry
    Display EHR Data
    Select Edition and Version
    Provide Feedback
    • Description not found: Return appropriate error message

    • Description found: Return data associated with the description:

      • Required: id, term, caseSignificanceId

      • Optional:

    Returns a JSON representation of data about all descriptions in the selected edition and version that are associated with the concept specified.

    The descriptions returned include:

    • Active and inactive descriptions

    • All types of descriptions

    • Descriptions in all languages that are present in the selected edition

    The data return for each description includes all data present in the description release file and acceptability data derived from language reference sets. The following items have specific roles in filtering descriptions and presenting the terms they contain:

    Returns the preferred term of a specified concept and its caseSignificanceId

    Example

    Example (with terms)

    Expressions should conform to the SNOMED CT Concept Model and be classifiable by a description logic classifier.

    Transforming Invalid Expressions to Valid Expressions

    • Move refining attributes into valid groups.

    • Nest refinements where required.

    • Move context attributes into a context wrapper.

    Example Transformation (Laterality applied to body structure): Invalid:

    Valid:

    Service Requirements for Expression Validation

    Services supporting use of postcoordinated expressions should support expression validation.

    Services Required

    Service Name and Status
    Input
    Response

    Validate expression

    RECOMMENDED

    • Edition and Version

    • Expression to be validated

    • Optional: Language/dialect

    • Indication of whether the expression is valid or invalid

    • If the expression is invalid an indication of the reason for failure of validation

      • Syntax error including:

    Transform invalid expression

    OPTIONAL

    • Edition and Version

    • Invalid candidate expression for adjustment

    • 3.2.3 EHR Data Entry

    • 3.2.2 EHR Data Entry Design

    • 3.8 Support Terminology Authoring and Review

    • 4.1 Select Edition and Version

    • 4.2 Get a Concept, Description or Relationship

    • 4.3 Get Terms for a Concept

    • 4.4 Get Definition of a Concept

    Validate concept definition:

    Response: JSON object with concept, descriptions, axioms, relationships.

    Validate concept definitions (multiple):

    No direct SNOMED CT expression validation services.

    • No direct support for expression validation, but can validate using concept model rules and expression constraints.

    • Language/dialect should be specified if service returns terms.

    Provide Feedback

    Overview

    Concept Definitions

    Concept Definition Validation Requirements

    Service Requirements for Concept Definition Validation

    SNOMED CT Expressions

    284196006:363698007=770850006
    284196006 |burn of skin| : 363698007 |finding site| = 770850006 |Skin structure of left index finger|
    71620000 |fracture of femur| : 272741003 |laterality| = 7771000 |left|
    === 7523003 |Injury of thigh| +
        46866001 |Fracture of lower limb| :
            { 363698007 |Finding site| = ( 71341001 |Bone structure of femur| :
                272741003 |laterality| = 7771000 |left| ),
              116676008 |Associated morphology| = 72704001 |Fracture| }
    POST [snowstorm]/browser/{branch}/validate/concept
    POST [snowstorm]/browser/{branch}/validate/concepts

    Expression Validation Requirements

    Requirements and Options

    Interdependencies

    Required By

    Depends On

    Service Examples

    Snowstorm API

    FHIR API

    MySQL Example Database

    Notes

    Get and Test Concept Subtypes and Supertypes

    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 .

    • A subtype relationship asserts that a concept conforms to all the defining characteristics the supertype concept but also has at least one feature or refinement that distinguishes it from that concept.

    Validate and Apply Expression Constraints

    An expression constraint is A computable rule that is used to define a set of clinical meanings.

    • SNOMED CT expression constraints are defined using the expression constraint language (ECL).

    • Expression constraints can be used for a variety of purposes including:

      • Specifying value set bindings that constrain the values that can be entered in a particular data entry context.

    Character position of first syntax error, and/or
  • More specific error message(s).

  • Concept model validation error including:

    • Character position of start of invalid element and/or

    • Reference to failed concept model rule(s).

  • Terming errors including:

    • Indication of any terms in the expression that do not match valid descriptions for the identified concept.

    • Structurally adjusted valid expression

    • An error message if it is not possible to transform to valid expression

    Validate concept definition(s)

    ONLY REQUIRED FOR AUTHORING

    • Edition and Version

    • Identifier(s) of concept(s) to be validated

    • Indication of validation results for one or more concepts including

      • Nature of error

      • If appropriate a reference to a failed concept model rule

    4.5 Get and Test Concept Subtypes and Supertypes
    4.8 Find Concepts
    4.13 Get Concept Model Rules
    1
  • typeId (which will always be 900000000000013009 | synonym| )

  • languageCode

  • Term (term: matching a phrase or pattern)
  • Description type (typeId: fully specified name, synonym, textual definition)

  • Language (languageCode)

  • Acceptability in a specified language reference set (refset.acceptabilityId: preferred, acceptable)

  • CONDITIONAL

    TypeId

  • Language code

  • Language refset identifier

  • Language refset acceptability

    • The active value (true or false) can be used to exclude inactive descriptions.

    • The typeId value can be used to filter descriptions of specific types.

      • The additional a text token type provides a human readable representation.

    • The lang value contains the language code and this can be used to filter descriptions.

    • The acceptabilityMap contains text tokens for the acceptability of the description in one or more language reference sets.

    • The caseSignificance value contains a text token indicate whether all or part of a term is case-sensitive. This can be used to enable the case of a term to be adjusted to fit the context of use except in when this would be incorrect or liable to alter the meaning.

    900000000000207008 | fully specified name|
    SELECT term,caseSignificanceId FROM snap_synall WHERE conceptId=[conceptId]
    SELECT term,caseSignificanceId FROM snap_synall WHERE conceptId=6025007
    SELECT * FROM snap_description WHERE conceptId=[conceptId]
    SELECT * FROM snap_description WHERE conceptId=6025007
    CALL setLanguage([configId],[languageCode]);
    CALL setLanguage(0,'en-GB');

    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 the table below 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

    • conceptId

    • Optionally, language or dialect code

    • Set of conceptIds of all concepts with a direct 116680003 | is a | relationship to the specified concept.

    • Optionally additional information such as the fully specified name or preferred term of each concept in the set.

    Get supertype parents of a concept

    • conceptId

    • Optionally, language or dialect code

    • Other Services

      • Validate and Apply Expression Constraints

      • Find Concepts

      • Validate Concept Definitions and Expressions

    • Use Cases

    • Select Edition and Version

    • Get a Concept, Description or Relationship

    • Get Definition of a Concept

    Service Name
    API Call 4
    Result

    Get subtype children of a concept

    for example


    Encoded URL

    Returns a JSON representation of data about each of the child concepts.

    The data returned for each concept includes:

    • All concept release file data

    • The preferred term and fully specified name.

    Also returns the total number of child concepts.

    Get supertype parents of a concept

    for example


    Encoded URL

    Service Name
    API Call 6
    Result

    Get subtype children of a concept

    FHIR does not provide a specific operation for this service, but the 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.

    for example:

    Returns a JSON representation of data about each of the subtype children concepts.

    The data returned for each concept includes:

    • code: the code for each subtype child

    • display: the preferred term for subtype child

    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 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.

    for example:

    Service Name
    SQL Query
    Result

    Get subtype children of a concept

    for example

    Returns rows containing the id and term for each subtype child of the specified concept.

    • The query shown return the fully specified name as the term for each concept

    • Replace the view suffix _fsn with _pref to return the preferred term for each concept

    Get supertype parents of a concept

    for example


    Notes

    • The services in this table that list subtype and supertype concepts are a subset of the services required to implement expression constraints (see see [4.7 Validate and Apply Expression Constraints" style="width: 100%;">). Therefore, it is recommended that the Expression Constraint Language syntax is used when requesting these services.

    • Language and/or dialect should be specified if the service returns terms associated with referenced concepts.

    • The subsumption test services are marked as recommended rather than required because they can be implemented by the client application using the results of the get subtype descendants and/or get supertype ancestors services.

    • In the Snowstorm service requests [snowstorm] should be replaced by the URL to the Snowstorm server endpoint.

    • Data in the definitionStatusId and active columns is represented as symbolic names rather than the boolean and SCTID data types used in release file columns.

    • In the FHIR service requests [fhir] should be replaced by the URL to the FHIR terminology server endpoint. FHIR® is a registered trademarks of ().

    • The SNOMED CT MySQL example database is not designed as a terminology server and is not intended for use in a live system . It is referenced in this guide as an illustration that some readers may find helpful. For more information about the SNOMED CT example database see the . For instructions on how to build the example database refer to .

    Provide Feedback

    4.5 Get and Test Concept Subtypes and Supertypes

    Overview

    116680003 | is a|

    Services Required

    Interdependencies

    Required By

    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 ).

    Snowstorm API

    FHIR API

    MySQL Example Database

  • Representing an intensional subset definition, which may be used to determine the membership of a reference set

  • Querying electronic health records for record entries that contain specified sets of concepts and/or expressions

  • Defining the SNOMED CT concept model by specifying the sets of concepts in a | concept model domains| and the range of values applicable to each attribute.

  • The Expression Constraint Language - Specification and Guide defines the syntax used to represent expression constraints. It also defines the rules for applying constraints specified using expression constraint language (ECL) to SNOMED CT concepts and expressions.

    Effective use of SNOMED CT requires the ability to constrain searches for concepts in a variety of ways. Subtype constraints and reference set membership constraints are identified as specific service requirements in sections Get and Test Concept Subtypes and Supertypes and Get and Test Reference Set Membership. Expression constraints can represent combinations of those constraints. They can also include rules that apply to specific aspects of the definition of a concept. For example, limiting concepts to those that are associated with particular body structures.

    Expression constraints can be applied for a range of different purposes. In some cases, these may require enumeration of the set of all the concepts that conform to the constraint, while in other cases it may be more appropriate to apply a specific test to an individual concept. The required services are listed in the table below.

    Service Name and Status
    Input
    Output

    Validate an expression constraint RECOMMENDED

    • Edition and version

    • Expression constraint

    • Error message if expression constraint contains syntax errors

    • Error message if any concept identifiers in the expression constraint are not present in the specified edition

    Get all concepts that conform to an expression constraint

    • Edition and version

    • Expression constraint

    • Optional: Language/dialect

    • Other Services

      • Find Concepts

      • Validate Concept Definitions and Expressions

      • Test Expression Subsumption

    • Use Cases

    • Select Edition and Version

    • Get a Concept, Description or Relationship

    • Get Terms for a Concept

    • Get Definition of a Concept

    Service Name
    API Call
    Result

    Validate an expression constraint

    Not supported as individual service. Limited validation is possible by applying an expression constraint (as shown in next row).

    An error message is returned if the expression constraint contains a syntax error. The error message does not indicate the specific cause of the validation error. No error message is shown if a concept identified in the expression constraint is not present in the selective edition or version.

    Get all concepts that conform to an expression constraint

    The two examples are shown first as the expression constraint complete with the terms for each of the concepts. This is followed by the API service calls in which the terms have been removed (as an optional simplification). The constraint has been URL encoded as required for the REST API.

    Bone fractures with sites that are members of the lateralizable body structure reference set

    < : = ^


    Encoded URL

    Bone fractures with sites that are NOT members of the lateralizable body structure reference set: < : != ^


    Encoded URL

    Note that the ECL memberOf function needs to be url encoded. The URL encoding for ^ is %5E

    Service Name
    API Call 5
    Result

    Validate an expression constraint

    N/A

    Not supported as indi vidual service. Limited validation is possible by applying an expression constraint (as shown in next row).

    Get all concepts that conform to an expression constraint

    Example 1

    Bone fractures with sites that are members of the lateralizable body structure reference set

    < : =^


    Encoded URL

    Example 2

    Bone fractures with sites that are NOT members of the lateralizable body structure reference set

    < : != ^


    Encoded URL

    Service Name
    SQL Query
    Result

    Validate an expression constraint

    Not supported.

    Get all concepts that conform to an expression constraint

    Examples

    Bone fractures with sites that are members of the lateralizable body structure reference set

    Bone fractures with sites that are members of the lateralizable body structure reference set


    Footnotes

    • The validation service is recommended rather than required as minimal validation can be provided by attempting to apply the expression constraint. However, a validation service that reports specific errors, is required for use cases that involve creating or editing expression constraints (e.g EHR Data Entry Design).

    • Language and/or dialect should be specified if the service returns terms associated with referenced concepts.

    • The test service is recommended rather than required because this can be delivered by the get service simply by adding an additional constraint as shown in the Snowstorm illustration.

    • In the Snowstorm service requests [snowstorm] should be replaced by the URL to the Snowstorm server endpoint.

    • In the FHIR service requests [fhir] should be replaced by the URL to the FHIR terminology server endpoint. FHIR® is a registered trademarks of ().

    • The SNOMED CT MySQL example database is not designed as a terminology server and is not intended for use in a live system. It is referenced in this guide as an illustration that some readers may find helpful. For more information about the SNOMED CT example database see the . For instructions on how to build the example database refer to .

    • Snowstorm expression validation has been raised as an open issue see .

    Provide Feedback

    Overview

    Notes

    Requirements and Options

    Services Required

    Interdependencies

    Required By

    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 ).

    Snowstorm API

    FHIR API

    MySQL Example Database

    Get Data from a Reference Set

    Overview

    Reference set files provide a standard format for maintaining and distributing a set of references to SNOMED CT components.

    Notes

    • A reference set can be used to represent a subset of components (concepts, descriptions or relationships).

    • A reference set may also associate referenced components with additional information such as:

      • Ordered lists of components

      • Sets of associations between components

      • Mapping between SNOMED CT concepts and other systems codes, classifications, or knowledge resources.

    The services required to identify the members of a reference set are described in Section . This section describes general requirements for services that are able to access additional data stored in reference sets.

    The following services, described in earlier sections, require access to a single data value from each reference set row:

    • requires access to the acceptabilityId in a to determine the preferred and acceptable terms for a concept in a specified language or dialect.

    • requires access to the owlExpression in the to get the stated view of a concept definition.

    The following services described in the next few sections, require access to one or more data values from each reference set row:

    • uses historical reference set data to determine the reason for inactivation and to identify related active concepts.

    • uses mapping reference set data to access maps to or from SNOMED CT concepts or expressions.

    • uses MRCM reference set data to access concept model domain, attribute and range related rules.

    Other reference set types that are not specifically documented in this section of the guide also contain additional data to which a client application may require access. Furthermore when new reference sets are introduced, there will be requirements to access additional data items in those reference sets. The service described in this section provides a general solution by providing access to all additional data associated with a reference set member in any type of reference set.

    Service Name and Status
    Input
    Output
    • Other Services

      • Get Terms for a Concept

      • Get Definition of a Concept

      • Get History Data

    • Select Edition and Version

    • Get and Test Reference Set Membership

    Service Name
    API Call 2
    Result
    Service Name
    API Call
    Result
    Service Name
    SQL Query
    Result

    Get Mapping Data

  • Get Concept Model Rules

  • Get data from a reference set for a specific referenced component REQUIRED

    • Edition and version

    • refsetId for the reference set from which data is to be extracted.

      • Optional alternatives: a set of refsetIds or an expression constraint for a group of related reference sets.

    • Optional: referencedComponentId

    • Optional parameters to select items within a particular type of reference set for example:

      • mapTarget (in a mapping reference set)

      • targetComponentId (in an association or ordered association reference set)

    Data from specified rows in the identified reference set(s).

    • Note that the available data depends on the reference set type

    Get data from a reference set for a specific referenced component

    Example 1


    Encoded URL

    Example 2


    Encoded URL

    Example 3


    Encoded URL

    Returns a JSON representation of data from members of the specified reference set that match the specified criteria.

    The data returned for each matching reference set row includes:

    • Data from the common columns present in all reference sets.

    • The referencedComponentId

      • If the referencedComponentId refers to a concept, details of the concept including its fully specified name and preferred term are also included.

    • An additionalFields object containing specific data fields associated with the particular reference set type.

    Also returns the total number of reference set row that match the constraint.

    As some requests for reference set members return a large numbers of row, this service is paged. Requests parameters include:

    • limit to restrict the number of concepts returned (default 50).

    • offset to specify the start in the results (in multiples of the limit).

    Example 1 shows a search for data about a specific inactive component in a specific association reference set. This returns two rows each of which includes a targetComponentId referring to an active concept that represents a possible meaning of the inactive concept.

    Example 2 provides an example in which rows from all the historical association reference sets are returned.

    Example 3 demonstrates that it is also possible to specify a targetComponentId value when searching for members of reference sets that contains this data item. Similar options are also supported for searches using some other data items specific to certain types of reference set (e.g. mapTarget, owlExpression.conceptId).

    Get data from a reference set for a specific referenced component

    The FHIR TS API supports the retrieval of targets for specific SNOMED CT reference sets. Please refer to this document for detailed guidance: https://www.hl7.org/fhir/snomedct.html. Thus, the ConceptMap/$translate operation enables the retrieval of targets for a specific referenced component.

    for example

    Returns a JSON representation of data about each of the target components.

    The data returned for each concept includes:

    • boolean: True if the concept could be translated successfully. The value can only be true if at least one returned match

    • match: Each match represents data for the map or associated target. Note that there may be multiple matches, where each element represents a mapTarget. For each mapTarget, following data is provided

    • system: the codesystem of the mapTarget

    • code: The identifier of the mapTarget

    Example 1 shows a search for data about a specific inactive component in a specific association reference set. This returns two rows each of which includes a targetComponentId referring to an active concept that represents a possible meaning of the inactive concept.

    Get data from a reference set for a specific referenced component

    Example 1

    Example 2

    Example 1

    Returns rows of data from the relevant reference set determined by the specified criteria.

    The data returned for each matching reference set row includes:

    • Data in the common columns present in all reference sets.

    • Additional data columns associated with the particular reference set type.

    Also returns the total number of reference set row that match the constraint.

    Example 1 shows a search for data about a specific inactive component in a specific association reference set. This returns two rows each of which includes a targetComponentId referring to an active concept that represents a possible meaning of the inactive concept.

    Example 2 provides an example in which rows from two an historical association reference sets and the concept inactivation attribute value reference set are returned for a specified referencedComponentId

    Requirements and Options

    Interdependencies

    Required By

    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).

    Snowstorm API

    FHIR API

    MySQL Example Database

    Get and Test Reference Set Membership
    Get Terms for a Concept
    language reference set
    Get Definition of a Concept
    OWL axiom reference set
    Get History Data
    Get Mapping Data
    Get Concept Model Rules
    Provide Feedback

    count to restrict the number of children returned.

  • offset to specify the start in the results (in multiples of the limit).

    • Set of conceptIds of all concepts with a direct 116680003 | is a | relationship to the specified concept.

    • Optionally additional information such as the fully specified name or preferred term of each concept in the set.

    Get subtype descendants of a concept

    • conceptId

    • Optionally, language or dialect code

    • Set of conceptIds of all concepts with a direct or transitive 116680003 | is a | relationship to the specified concept.

    • Optionally additional information such as the fully specified name or preferred term of each concept in the set.

    Get supertype ancestors of a concept

    • conceptId

    • Optionally, language or dialect code

    • Set of conceptIds of all concepts with a direct or transitive 116680003 | is a | relationship from the specified concept.

    • Optionally additional information such as the fully specified name or preferred term of each concept in the set.

    Test subsumption between two concepts 3

    • Predicate.conceptId

    • Candidate.conceptId

    • If Candidate concept is a subtype descendant of the predicate concept: TRUE

    • Otherwise: FALSE

    Test a set of concepts for subsumption 3

    • Predicate.conceptId

    • Set of candidate.conceptIds

    • Set of conceptIds of all concepts in the candidate set that have a direct or transitive 116680003 | is a | relationship from the specified concept.

    Returns a JSON representation of data about each of the parent concepts.

    The data returned for each concept includes:

    • All concept release file data

    • The preferred term and fully specified name.

    Also returns the total number of parent concepts.

    Get subtype descendants of a concept

    for example


    Encoded URL

    Returns a JSON representation of data about each of the descendant concepts.

    The data returned for each concept includes:

    • All concept release file data

    • The preferred term and fully specified name.

    Also returns the total number of descendant concepts.

    As some concepts have very large numbers of descendants, this service is paged. Requests parameters include:

    • limit to restrict the number of descendants returned (default 50).

    • offset to specify the start in the results (in multiples of the limit).

    Get supertype ancestors of a concept

    for example


    Encoded URL

    Returns a JSON representation of data about each of the ancestor concepts.

    The data returned for each concept includes:

    • All concept release file data

    • The preferred term and fully specified name.

    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 Validate and Apply Expression Constraints) with a combination of an expression constraint to represent the subsumption requirement and a list of concept identifiers.

    For example


    Encoded URL

    Returns a JSON object with contents that depend on whether the candidate concept is a subtype of the predicate concept:

    • If it is a subtype descendant the returned object contains:

      • The property total with value 1; and

      • An item array that contains data about the candidate concept (as it is the only concept that is both a subtype of the predicate and equal to the candidate concept).

    • If it is not a subtype descendant the returned object contains:

      • The property total with value 0.

    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.

    For example


    Encoded URL

    Returns a JSON representation of the candidate concepts that are subtypes descendants of the predicate concept.

    • If one or more of the predicate concepts are subtypes of the candidate concept the returned object contains:

      • The property total with value equal to the number of candidate concepts that are subtypes of the predicate concept; and

      • For each candidate concept that is a subtype of the predicate concept a an item array that contain data about that candidate concept .

    • If none of the candidate subtypes are a subtype descendants the returned object contains:

      • The property total with value 0.

    As some expression constraints are matched by large numbers of concept, this service is paged. Requests parameters include:

    • limit to restrict the number of concepts returned (default 50).

    • offset to specify the start in the results (in multiples of the limit).

    Returns a JSON representation of data about each of the parent concepts.

    The data returned for each concept includes:

    • code: the code for each parent

    • display: the preferred term for each parent

    Also returns the total number of parent concepts.

    As some concepts have very large numbers of parents, this service is paged. Requests parameters include:

    • count to restrict the number of parents returned.

    • offset to specify the start in the results (in multiples of the limit).

    Get subtype descendants of a concept

    Option 1)

    for example:

    Option 2)

    Returns a JSON representation of data about each of the descendant concepts.

    The data returned for each concept includes:

    • code: the code for each descendant

    • display: the preferred term for each descendant

    Also returns the total number of descendant concepts.

    As some concepts have very large numbers of descendants, this service is paged. Requests parameters include:

    • count to restrict the number of descendants returned.

    • offset to specify the start in the results (in multiples of the limit).

    Get supertype ancestors 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 ancestors of SNOMED CT concept, and can thus be used to enable this service through the ValueSet/$expand operation.

    for example:

    Returns a JSON representation of data about each of the ancestor concepts.

    The data returned for each concept includes:

    • code: the code for each descendant

    • display: the preferred term for each descendant

    Also returns the total number of descendant concepts.

    As some concepts have very large numbers of ancestors, this service is paged. Requests parameters include:

    • count to restrict the number of descendants returned.

    • offset to specify the start in the results (in multiples of the limit).

    Test subsumption between two concepts

    for example:

    Returns a JSON representation of information about the subsumption relation between the two concepts:

    • subsumed-by indicates that the concept provided as the value for codeA is a subtype of the concept provided as the value for codeB

    • subsumes indicates that the concept provided as the value for codeA is a supertype of the concept provided as the value for codeB

    • not-subsumed indicates that there is no subsumption relationship between the concepts provided as values for codeA and codeB

    Returns rows containing the id and term for each supertype parent of the specified concept.

    • The query shown return the fully specified name as the term for each concept

    • Replace the view suffix _fsn with _pref to return the preferred term for each conce

    Get subtype descendants of a concept

    for example

    Returns rows containing the id and term for each subtype descendant of the specified concept.

    • The query shown return the preferred term for each concept

    • Replace the view suffix _pref with _fsn to return the fully specified name for each concept

    Get supertype ancestors of a concept

    for example

    Returns rows containing the id and term for each supertype ancestor of the specified concept.

    • The query shown return the preferred term for each concept

    • Replace the view suffix _pref with _fsn to return the fully specified name for each concept

    Test subsumption between two concepts

    for example

    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

    1. Use the get descendants service to generate the list of descendants of the predicate concept and use this list as part of a query for records containing subtypes of that concept;

    2. Individually, apply the test for subsumption between two concepts to each candidate concept;

    3. Extend the ECL query to include all the candidate concepts as illustrated below.

    Option 3 will return the ids of concepts in the bracketed list that are subtypes descendants of the predicate concept.

    Test Expression Subsumption
    Explore and Review SNOMED CT
    EHR Data Entry
    EHR Reporting and Analytics
    HL7
    www.hl7.org
    SNOMED CT - SQL Practical Guide
    Appendix A: Building the SNOMED CT Example Database
    SNOMED CT Expression Constraint Language
    SNOMED CT Expression Constraint Language
    IETF RFC1738
    GET [snowstorm]/[branchPath]/members?active=true&referenceSet=[refsetId-or-ecl][&refsetComponentId=[componentId][&other-refsetType-specific-parameters]
    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referenceSet=900000000000523009|POSSIBLY EQUIVALENT TO association reference set|&referencedComponentId=203004
    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;amp;referenceSet=900000000000523009%7CPOSSIBLY+EQUIVALENT+TO+association+reference+set%7C&amp;referencedComponentId=203004
    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referenceSet=<900000000000522004|Historical association reference set|
    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;referenceSet=%3C900000000000522004%7CHistorical+association+reference+set%7C
    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referenceSet=<900000000000522004|Historical association reference set|&targetComponent=140004
    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;amp;referenceSet=%3C900000000000522004%7CHistorical+association+reference+set%7C&amp;targetComponent=140004
    GET [fhir]/ConceptMap/$translate?code=[componentId] &system=http://snomed.info/sct &source=http://snomed.info/sct?fhir_vs &target=http://snomed.info/sct?fhir_vs &url=[version]?fhir_cm=[refesetId]
    GET [fhir]/ConceptMap/$translate?code=203004 &system=http://snomed.info/sct &source=http://snomed.info/sct?fhir_vs &target=http://snomed.info/sct?fhir_vs &url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_cm=900000000000523009
    SELECT * FROM snap_refset_[refsetType] WHERE refsetId=[refsetId]    [AND other-refset-type-specific-criteria];
    SELECT * FROM snap_refset_association    WHERE refsetId=900000000000523009    AND active=1 AND referencedComponentId=203004;
    SELECT * FROM snap_refset_association
        WHERE refsetId IN (900000000000523009)
        AND active=1 AND referencedComponentId=203004
    UNION 
    SELECT * FROM snap_refset_attributevalue
        WHERE refsetId IN (900000000000489007)
        AND active=1 AND referencedComponentId=203004;
    
    SELECT * FROM snap_refset_association
    WHERE refsetId IN (900000000000523009,900000000000489007)
        AND active=1 AND targetComponentId=140004;
    SELECT * FROM snap_refset_association WHERE refsetId IN (900000000000523009, 900000000000524003, 900000000000525002, 900000000000526001, 900000000000527005, 900000000000528000, 900000000000529008, 900000000000530003, 900000000000531004)
        AND active=1 AND targetComponentId=140004;
    GET [snowstorm]/[branch]/concepts/[conceptId]/descendants
    GET [snowstorm]/MAIN/2020-01-31/concepts/80146002/descendants?limit=50&offset=0
    GET [snowstorm]/MAIN%2F2020-01-31/concepts/80146002/descendants?limit=50&amp;offset=0
    GET [snowstorm]/browser/[branch]/concepts/[conceptId]/ancestors
    GET [snowstorm]/browser/MAIN/2020-01-31/concepts/80146002/ancestors
    GET [snowstorm]/browser/MAIN%2F2020-01-31/concepts/80146002/ancestors
    GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=<[predicateSupertypeId]&conceptIds=[candidateSubtypeId]
    GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=<404684003&conceptIds=703264005
    GET [snowstorm]/MAIN%2F2020-01-31/concepts?ecl=%3C404684003&amp;conceptIds=703264005
    GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=<[predicateSupertypeId]&conceptIds=[candidateSubtypeIdList]
    GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=<404684003&conceptIds=703264005,307581005,195967001
    GET [snowstorm]/MAIN%2F2020-01-31/concepts?ecl=%3C404684003&amp;conceptIds=703264005%2C307581005%2C195967001
    GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=isa/[predicateSupertypeId]&count=10
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=isa/27624003&count=10
    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 [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
    GET [fhir]/CodeSystem/$subsumes?system=[systemURI]&version=[versionURI]&codeA=[conceptId]&codeB=[conceptId]
    GET [fhir]/CodeSystem/$subsumes?system=http://snomed.info/sct&version=http://snomed.info/sct/900000000000207008/version/20200131&codeA=307355007&codeB=118940003
    SELECT id,term FROM snap_tc_descendant_pref WHERE conceptId=[conceptId]
    SELECT id,term FROM snap_tc_descendant_pref
    WHERE conceptId=80146002
    SELECT id,term FROM snap_tc_ancestor_pref
    WHERE conceptId=[conceptId]
    SELECT id,term FROM snap_tc_ancestor_pref
    WHERE conceptId=80146002
    SELECT count(supertypeId) FROM snap_transclose
    WHERE supertypeId=[predicateConceptId]
    AND subtypeId=[candidateConceptId] WHERE conceptId=80146002
    SELECT count(supertypeId) FROM snap_transclose
    WHERE supertypeId=80146002 AND subtypeId=6025007
    WHERE supertypeId=80146002 AND subtypeId=602500
    GET [snowstorm]/browser/[branch]/concepts/[conceptId]/children
    GET [snowstorm]/browser/MAIN/2020-01-31/concepts/80146002/children
    GET [snowstorm]/browser/MAIN%2F2020-01-31/concepts/80146002/children
    GET [snowstorm]/browser/[branch]/concepts/[conceptId]/parents
    GET [snowstorm]/browser/MAIN/2020-01-31/concepts/80146002/parents
    GET [snowstorm]/browser/MAIN%2F2020-01-31/concepts/80146002/parents
    GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/<![predicateSupertypeId]&count=10
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/<!26322001&count=10
    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
    SELECT id,term FROM snap_rel_child_fsn    WHERE conceptId=[conceptId]
    SELECT id,term FROM snap_rel_child_fsn    WHERE conceptId=80146002
    SELECT id,term FROM snap_rel_parent_fsn WHERE conceptId=[conceptId]
    SELECT id,term FROM snap_rel_parent_fsn WHERE conceptId=80146002
    • Set of conceptIds of all concepts that conform to the expression constraint

    • Optionally additional information such as the fully specified name or preferred term of each concept in the set.

    Error message if expression constraint contains syntax errors

    Test if a specific concept conforms to an expression constraint RECOMMENDED

    • Edition and version

    • Expression constraint

    • Candidate concept identifier

    • A true or false result depending on whether the candidate concept conforms to the constraint

    Returns a JSON representation of data related to the concepts that conform to the expression constraint.

    The data returned for each concept includes:

    • All concept release file data5

    • The preferred term and fully specified name.

    Also returns the total number of concepts that match the constraint.

    As some expression constraints are matched by large numbers of concept, this service is paged. Requests parameters include:

    • limit to restrict the number of concepts returned (default 50).

    • offset to specify the start in the results (in multiples of the limit).

    With the data from the 2020-01-31 International release

    • The first example returns 1442 concepts.

    • The second example returns 737 concepts.

    If the expression constraint contains a syntax error, the returned data is an error message.

    Test if a specific concept conforms to an expression constraint

    The service used for getting concepts that conform to an expression constraint can be adapted to test whether one or more specific concepts conform to the constraint by simply extending the constraint so it also constrains the results to only include the specified concept(s).

    Test if fracture of mandible (jaw bone) is a bone fracture with a site that is a member of the lateralizable body structure reference set

    (< 125605004 |Fracture of bone| : 363698007 |Finding site| = ^ 723264001 |Lateralizable body structure reference set| ) and ( 263172003 |Fracture of mandible| )

    GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=(<125605004: 363698007=^723264001) and (263172003)

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts?ecl=%28%3C125605004%3A+363698007%3D%5E723264001%29+and+%28263172003%29

    Test if fracture of femur (thigh bone) is a bone fracture with a site that is a member of the lateralizable body structure reference set(< 125605004 |Fracture of bone| : 363698007 |Finding site| = ^ 723264001 |Lateralizable body structure reference set| ) and ( 71620000 |Fracture of femur| )

    GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=(<125605004: 363698007=^723264001) and (71620000)

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts?ecl=%28%3C125605004%3A+363698007%3D%5E723264001%29+and+%2871620000%29

    Test if osteomyelitis of femur is a bone fracture with a site that is a member of the lateralizable body structure reference set (< 125605004 |Fracture of bone| : 363698007 |Finding site| = ^ ) and ( )


    Encoded URL

    Returns a JSON representation of data related to the concept if it conforms to the expression constraint as described above.

    When testing a single candidate concept the value of the property total is sufficient to tell whether the candidate concept conforms to the constraint:

    1. Fracture of mandible total: 0

      • It is a subtype fracture of bone but the mandible is not lateralizable

    2. Fracture of femur total: 1

      • It is a subtype fracture of bone and the femur is lateralizable (there a left femur and a right femur)

    3. Osteomyelitis of femur total : 0

      • Femur is lateralizable and is the finding site but the osteomyelitis is not a subtype of fracture.

    Test which of a specific set of concepts conform to an expression constraint

    The technique used for testing whether a single concept conforms to an expression constraint can also be used to determine which members of a specified set of concepts conform to that constraint. In the case each of the member of the set of candidates is included in the constraint as shown below:

    (< 125605004 |Fracture of bone| : 363698007 |Finding site| = ^ 723264001 |Lateralizable body structure reference set| ) and ( 263172003 |Fracture of mandible| or 71620000 |Fracture of femur| or 1551001 |Osteomyelitis of femur| or 37449000 |Open fracture of ulna| )

    GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=(<125605004: 363698007=^723264001) and (263172003 or 71620000 or 15510011551001 or 37449000)

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/concepts?ecl=%28%3C125605004%3A+363698007%3D%5E723264001%29+and+%28263172003+or+71620000+or+15510011551001+or+37449000%29

    Returns a JSON representation of data related to concepts in the set that conforms to the expression constraint.

    The example shown returns an array containing data about the following concepts:

    • 71620000 | Fracture of femur|

    • 37449000 | Open fracture of ulna|

    Returns a JSON representation of data about each of the concepts in the specified version that conform to the expression constraint.

    The data returned for each concept includes:

    • code: the conceptId of the reference set member

    • display: the preferred term for the reference set member

    Also returns the total number of reference set members

    As some expression constraints are satisfied by many concepts, this service is paged. Requests parameters include:

    • count to restrict the number of members returned.

    • offset to specify the start in the results (in multiples of the limit).

    • Example 1 returns 1442 concepts.

    • Example 2 returns 737 concepts.

    The /ValueSet/$validate-code operation can be used to test whether a concept is included in a specific value set, where the value set is identified as an implicit value set.

    GET [fhir]/ValueSet/$validate-code?system=http://snomed.info/sct&code=[conceptId]&url=[versionURI]?fhir_vs=ecl/[expressionConstraint]

    Example 3

    Test if fracture of mandible (jaw bone), 263172003|Fracture of mandible|, is a bone fracture with a site that is a member of the lateralizable body structure reference set.

    The subset of concepts that are bone fractures with a site that is a member of the lateralizable body structure reference set can be determined by the following expression constraint:

    < 125605004 |Fracture of bone| : 363698007 |Finding site| = ^ 723264001 |Lateralizable body structure reference set|The resulting FHIR request:

    GET [fhir]/ValueSet/$validate-code?system=http://snomed.info/sct&code=1551001&url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs=ecl/<125605004: 363698007=^723264001

    Encoded URL

    GET [fhir]/ValueSet/$validate-code?system=http%3A%2F%2Fsnomed.info%2Fsct&amp;amp;code=1551001&amp;url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_vs%3Decl%2F%3C125605004%3A%0A363698007%3D%5E723264001

    Example 4

    Test if fracture of femur (thigh bone), 71620000 |Fracture of femur|, is a bone fracture with a site that is a member of the lateralizable body structure reference set

    GET [fhir]/ValueSet/$validate-code?system=http://snomed.info/sct&code=71620000&url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs=ecl/<125605004: 363698007=^723264001

    Encoded URL

    • Returns a JSON representation of data about whether the concept is included in the set.

    • result: true, if the concept is included and false if the concept is not included

    • display: the display term for the concept

    • With the data from the 2020-01-31 International release

    • Example 3

      • result: false

    • Example 4

      • result: True

    Test which of a specific set of concepts conform to an expression constraint

    The /ValueSet/$validate-code operation only supports testing whether a single concept conforms to an expression constraint. Therefore, to determine which members of a specified set of concepts conform to an expression constraint, a dedication expression constraint needs to be designed to enable this test. In this case, each member of the set of candidates is included in the expression constraint as shown below:

    ([intensionalDefinition])AND([candidate1] OR [candidate2] OR [candidate3] OR ...[candidateN])

    The following general request template will test which of the candidates matches the expression constraint represented in the [intensionalDefinition]

    GET [fhir]/ValueSet/$expand?system=http://snomed.info/sct&code=[conceptId]&url=[versionURI]?fhir_vs=ecl/[expressionConstraint]

    Example 5: Test which of the following concepts is a bone fracture with a site that is a member of the lateralizable body structure reference set

    • 263172003 |Fracture of mandible|

    • 71620000 |Fracture of femur|

    • 1551001 |Osteomyelitis of femur|

    • 37449000 |Open fracture of ulna|

    (< : = ^ ) and ( or or or )The resulting FHIR request:


    Encoded URL

    Returns a JSON representation of data about each of the candidate concepts that conform to the expression constraint.

    The data returned for each concept includes:

    • code: the conceptId of the reference set member

    • display: the preferred term for the reference set member

    Also returns the total number of concepts satisfying the expression constraint.

    Note: If none of the candidate concepts which are tested for membership are included in the reference set, the service will return 0 results.

    The request in Example 5 shows that the following two concepts conform to the expression constraint:

    • 71620000 |Fracture of femur|

    • 37449000 |Open fracture of ulna|

    Returns a row of data containing the conceptId and term for each concept that conforms to the constraint.

    If the expression constraint is invalid, no rows are returned.

    This and the following service examples can also use the following alternative procedure calls:

    The procedure eclQueryCount() sets a count output parameter with the number of concepts that match the constraint.

    call eclQueryCount([expressionConstraint],@count)

    The procedure eclSelect() returns the concepts that match the constraint in a specified style. Styles include: exp (expression with preferred term), expfsn (expression with FSN), pref (id, preferred term), fsn (id,FSN), allsyn (id,synonym - one row per synonym).

    call eclSelect([expressionConstraint],[style])

    The procedure eclGetIds() outputs the concept identifiers to rows in the table config_resultsets with keyed by by a specified setId. This allows other queries or procedures to access the results.

    call eclSelect([expressionConstraint],[setId])

    Test if a specific concept conforms to an expression constraint

    call eclQuery(([expressionConstraint]) and ([conceptId]))

    for example

    call eclQuery("(<125605004=^723264001) AND (71620000)")

    If the concept conforms to the constraint, this returns a row of data containing that conceptId and its term. If it does not conform, no rows are returned.

    Test which of a set of specified concepts conform to an expression constraint

    call eclQuery("(<125605004:363698007=^723264001) AND (71620000) or (15510011551001) or (37449000)")

    Returns the conceptId and term for concepts in the set that conform to the expression constraint.

    GET [snowstorm]/snomed-ct/[branchPath]/concepts?activeFilter=true&ecl=[expressionConstraint]
    GET [snowstorm]/MAIN/2020-01-31/concepts?activeFilter=true&ecl=<125605004:363698007=^723264001
    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&amp;ecl=%3C125605004%3A363698007%3D%5E723264001
    GET [snowstorm]/MAIN/2020-01-31/concepts?activeFilter=true&ecl=<125605004:363698007!=^723264001
    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&amp;ecl=%3C125605004%3A363698007%21%3D%5E723264001
    GET [fhir]/ValueSet/$expand?url=[versionURI]?fhir_vs=ecl/[expressionConstraint]
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs=ecl/<125605004: 363698007=^723264001
    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_vs%3Decl%2F%3C125605004%3A%0A363698007%3D%5E723264001
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs=ecl/<125605004: 363698007!=^723264001
    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_vs%3Decl%2F%3C125605004%3A%0A363698007%21%3D%5E723264001
    SELECT call eclQuery([expressionConstraint])
    call eclQuery("<125605004|Fracture of bone|:
    363698007|Finding site| = ^723264001|Lateralizable body structure reference set|")
    call eclQuery("<125605004|Fracture of bone|:
    363698007|Finding site| = ^723264001|Lateralizable body structure reference set|")
    Support EHR Data Entry
    EHR Reporting and Analytics
    Reference Set Editing
    Get and Test Concept Subtypes and Supertypes
    Get and Test Reference Set Membership
    HL7
    www.hl7.org
    SNOMED CT - SQL Practical Guide
    Appendix A: Building the SNOMED CT Example Database
    https://github.com/IHTSDO/snowstorm/issues/145#issue-676721969
    125605004 |Fracture of bone|
    363698007 |Finding site|
    723264001 |Lateralizable body structure reference set|
    125605004 |Fracture of bone|
    363698007 |Finding site|
    723264001 |Lateralizable body structure reference set|
    125605004 |Fracture of bone|
    363698007 |Finding site|
    723264001 |Lateralizable body structure reference set|
    125605004 |Fracture of bone|
    363698007 |Finding site|
    723264001 |Lateralizable body structure reference set|
    IETF RFC1738

    Terminology Service Types

    This section describes services required to enable effective use of SNOMED CT. The guide does not mandate a particular way to meet these requirements. In some cases, a single terminology service API call may address several of the requirements identified in this section of the guide. In other cases, multiple API calls may be required to address a single requirement.

    display: "Fracture of femur"

    723264001 |Lateralizable body structure reference set|
    1551001 |Osteomyelitis of femur|
    125605004 |Fracture of bone|
    363698007 |Finding site|
    723264001 |Lateralizable body structure reference set|
    263172003 |Fracture of mandible|
    71620000 |Fracture of femur|
    1551001 |Osteomyelitis of femur|
    37449000 |Open fracture of ulna|
    GET [snowstorm]/MAIN/2020-01-31/concepts?ecl=(<125605004: 363698007=^723264001) and (1551001)
    GET [snowstorm]/MAIN%2F2020-01-31/concepts?ecl=%28%3C125605004%3A+363698007%3D%5E723264001%29+and+%281551001%29
    GET [fhir]/ValueSet/$validate-code?system=http%3A%2F%2Fsnomed.info%2Fsct&amp;amp;code=71620000&amp;url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_vs%3Decl%2F%3C125605004%3A%0A363698007%3D%5E723264001
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs=ecl/(<125605004: 363698007=^723264001) and (263172003 or 71620000 or 1551001 or 37449000)
    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_vs%3Decl%2F%28%3C125605004%3A%0A363698007%3D%5E723264001%29+and+%28263172003+or+71620000+or+1551001+or+37449000%29

  • Select Edition and Version
    Get a Concept, Description or Relationship
    Get Terms for a Concept
    Get Definition of a Concept
    Get and Test Concept Subtypes and Supertypes
    Get and Test Reference Set Membership
    Validate and Apply Expression Constraints
    Find Concepts
    Identify Changes to the Terminology
    Get Data from a Reference Set
    Get History Data
    Get Mapping Data
    Get Concept Model Rules
    Validate Concept Definitions and Expressions
    Test Expression Subsumption
    Provide Feedback
    Simple Reference Set

    Get Mapping Data

    Overview

    Mapping is the process of converting data from one code system, classification, or terminology to another code system, classification, or terminology.

    Notes

    • The mapping process includes the preparation and maintenance of resources used for converting data.

    • SNOMED CT mapping resources are distributed as mapping reference sets.

    The SNOMED CT reference set design provides a common foundation on which mapping resources that meet different requirements can be built. The guidance in this section relates to the general approaches to accessing data in a mapping reference set. The table below provides reference to specific mapping reference set types and supporting documentation related to the use of those reference sets.

    Map Reference Sets and Documentation

    Map type
    Description
    Reference Set File Format

    Terminology services should be able to provide access to sets of maps based either on the SNOMED CT concept or a code from the other code system.

    • The concept involved in the map is represented by the referencedComponentId. As noted in , access to reference set data using a combination of refsetId and referencedComponentId is a general requirement.

    • The other code is generally in a column referred to as mapTarget1. Support for access to maps using a combination of refsetId and mapTarget is therefore also required.

    The required services are listed in the table below. Additional requirements should be considered for cases where the map refers to an expression rather than a single concept.

    The services described in this section are limited to accessing the relevant map data. In simple cases, this may be sufficient to enable mapping. However, in other cases the services will provide client applications with options to display to the user and/or processable rules to be tested against other data to determine the appropriate map.

    Service Name and Status
    Input
    Output
    • Use Cases

    Service Name
    API Call
    Result
    Service Name
    API Call
    Result
    Service Name
    SQL Query
    Result

    Get a Concept, Description or Relationship

    The terminology content of SNOMED CT is represented by three types of uniquely identified components:

    • A concept is a clinical idea to which a unique concept identifier has been assigned.

    • A description is an association between a human-readable phrase (term) and a particular SNOMED CT concept.

    • A relationship is an association between a source concept and a destination concept.

    Each of these components is associated with a set of attributes that support interpretation of the component at a given point in time. The data structures of the components and the associations between them are documented in the

    Maps including additional data to represent attribute-value combinations, correlation and source of original code

    Supports maps where some codes in the other code system represent a combination of and attribute with a value (e.g. finding site appendix). Also supports maps where the correlation between source and target needs to be specified and where there are intellectual property reasons for recording that either the SNOMED CT or other code were the original representations of the mapped meaning.

    Map to SNOMED CT with Correlation and Origin Reference Set

    Maps to SNOMED CT expressions

    Supports maps from another code systems where the use of a SNOMED CT expression may capture the meaning of that code more accurately than can be achieved with a single concept.

    Code to Expression Reference Set

    Get maps based on combinations of refsetId,referencedComponentIdand mapTarget

    • Identifier of concept

    • Other code

    • Edition and version

    • Reference set identifier

    All map data associated with maps in the specified reference set in which the referencedComponentId matches the specified concept identifier and the mapTarget matches the other code.

    Property

    Description

    mapGroup

    An integer grouping a set of maps. One map should be chosen from each group.

    mapPriority

    The order in which map within a group should be checked.

    mapRule

    A machine-readable rule, that determines if a map applies.

    mapAdvice

    Advice to assist manual selection map from a group.

    mapTarget

    The target code from the other coding scheme (if this map is chosen based on the rule or advice).

    correlationId

    |Representing the correlation between the concept and the target code.

    mapCategoryId

    Represents the map category that applies to this map.

    Get maps based on combinations of refsetId and mapTarget

    Example 6. Map from ICD-O code "8090/3" to SNOMED CT concepts


    Encoded URL

    Example 7. Maps from NHS Clinical Terms to a SNOMED CT concept


    Encoded URL

    Returns a JSON representation of the data in active rows in the specified mapping reference set with a mapTarget that matches the specified otherCode. This returns the same data as noted above.

    Example 6. Reverses the map shown in example 1. In this case it returns records showing several concepts that map to the this ICD-O code. As these are simple map with no rules, this result indicates that all these concepts map to the same less specific ICD-O code.

    Example 7 . Maps from NHS CTV3 codes (previously used in the UK) to SNOMED CT concepts. In this case the map returns a single map from any specified CTV3 code to the closes matching SNOMED CT concept.

    Warning

    The ICD-10 map is a unidirectional map from SNOMED CT concept to ICD-10 codes. The mapGroup, mapPriority, mapRule, mapAdvice and mapCategoryId properties of complex and extended apply to the set of maps from a SNOMED CT concept to a mapTarget. These rules cannot be interpreted if maps are accessed for specified targetCode. Therefore, this service should not be used to access maps of this type.

    Get maps based on combinations of refsetId, referencedComponentId and mapTarget

    Example 8. Finds any maps from to ICD-10 code S06.90


    Encoded URL

    Returns a JSON representation of the data in active rows in the specified mapping reference set with a referencedComponentId that matches the specified conceptId and a mapTarget that matches the specified code from the other code system.

    Example 8 . Could be used either or both of the following:

    1. Test if there is a map between the SNOMED CT concept "Closed skull fracture with intracranial injury" and the ICD-10 code S06.9 "Unspecified intracranial injury".

    2. Provide access to the associated mapping rule, advice and correlation data for any maps between these two codes.

    mapAdvice

    Advice to assist manual selection map from a group.

    mapTarget

    The target code from the other coding scheme (if this map is chosen based on the rule or advice).

    correlationId

    |Representing the correlation between the concept and the target code.

    mapCategoryId

    Represents the map category that applies to this map.

    Get maps based on combinations of refsetId, referencedComponentId and mapTarget

    Example 8. Finds any maps from to ICD-10 code S06.90

    Example 9. Finds any maps from to ICD-10 codes in the S06 chapter

    Returns rows of data from the specified mapping reference set with a referencedComponentId that matches the specified conceptId and a mapTarget that matches the specified code in the other code system.

    Example 9. provides an additional option, which may be useful code systems such as ICD-10 in which part of the code represents represent chapters or subdivision. It allows a search for a map from a concept to any code in a specified chapter.

    Simple map

    Supports one to one maps to or from another code system

    Simple Map Reference Set

    ICD classification maps

    Supports maps from SNOMED CT to ICD-10 classifications. Enables mapping to different codes based on rules and priorities. Also allows maps from a single code to combinations of codes.

    Complex and Extended Map from SNOMED CT Reference Sets

    Get maps based on combinations of refsetId and referencedComponentId

    • Identifier of concept to be mapped to target scheme

    • Edition and version Reference set identifier

    • Optional: Language/dialect2

    All map data associated with maps in the specified reference set in which the referencedComponentId matches the specified concept identifier.

    Gets maps from SNOMED CT to another code system, if the map data supports mapping in that direction.

    Get maps based on combinations of refsetId and mapTarget

    • Other code to be mapped to SNOMED CT.

    • Edition and version

    • Reference set identifier

    • Optional: Language/dialect2

    Get maps based on combinations of refsetId and referencedComponentId

    GET [snowstorm]/[branchPath]/members?referenceSet=[refsetid]&referencedComponentId=[conceptId]&active=true

    Example 1. ICD-O Map for 1338007 | Basal cell carcinoma (morphologic abnormality)|

    GET [snowstorm]/MAIN/2020-01-31/members?referenceSet=446608001&referencedComponentId=1338007&active=true

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=446608001&amp;amp;referencedComponentId=1338007&amp;active=true

    Example 2. ICD-10 Map for 74400008 | Appendicitis|

    GET [snowstorm]/MAIN/2020-01-31/members?referenceSet=447562003&referencedComponentId=74400008&active=true

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=447562003&amp;amp;referencedComponentId=74400008&amp;active=true

    Example 3. ICD-10 Map for 196607008 | Esophageal ulcer due to aspirin|

    GET [snowstorm]/MAIN/2020-01-31/members?referenceSet=447562003&referencedComponentId=196607008&active=true

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=447562003&amp;amp;referencedComponentId=196607008&amp;active=true

    Example 4. ICD-10 Map for 32398004 | Bronchitis|

    GET [snowstorm]/MAIN/2020-01-31/members?referenceSet=447562003&referencedComponentId=32398004&active=true

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=447562003&amp;amp;referencedComponentId=32398004&amp;active=true

    Example 5. ICD-10 Map for 111613008 | Closed skull fracture with intracranial injury|

    GET [snowstorm]/MAIN/2020-01-31/members?referenceSet=447562003&referencedComponentId=111613008&active=true

    Returns a JSON representation of the data in active rows in the specified mapping reference set with a referencedComponentId that matches the specified conceptId.

    The examples illustrate the following points Example 1. A concept that maps to a single ICD-O code in a simple map refset. Example 2. A concept that maps to a single ICD-10 classification code in a complex/extended map refset. Example 3. A concept that maps to a combination of two classification codes (there are two map groups and each contains a single map row with priority 1) Example 4. A concept that has a single map group containing two rows. The row with priority 1 has a rule that requires the patient age to be less than or equal to 15 years. If that rule is not matched the row with map priority 2 applies as it contains the rule "OTHERWISE". Example 5. A concept that, like example 2, contains two map groups. However, in the case it each of those maps also include specific human readable advice "... MAPPED FOLLOWING WHO GUIDANCE | POSSIBLE REQUIREMENT FOR AN EXTERNAL CAUSE CODE"

    The data returned for each refset member of an extended map (e.g. as used in examples 2-5) includes the following mapping data as subproperties of the additionalFields property:

    Property

    Description

    mapGroup

    An integer grouping a set of maps. One map should be chosen from each group.

    mapPriority

    The order in which map within a group should be checked.

    mapRule

    Get maps based on combinations of refsetId and referencedComponentId

    GET [fhir]/ConceptMap/$translate?code=[componentId] &system=http://snomed.info/sct&source=[sourceCodeSystem]?fhir_vs&target=[sourceCodeSystem]&url=[version]?fhir_cm=[refesetId]

    Example 1. ICD-O Map for 1338007 | Basal cell carcinoma (morphologic abnormality)|

    GET [fhir]/ConceptMap/$translate?code=1338007&system=http://snomed.info/sct &source=http://snomed.info/sct?fhir_vs &target=http://snomed.info/sct?fhir_vs &url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_cm=446608001

    Encoded URL

    GET [fhir]/ConceptMap/$translate?code=1338007&amp;amp;amp;amp;system=http%3A%2F%2Fsnomed.info%2Fsct+&amp;amp;amp;source=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs+&amp;amp;target=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs+&amp;url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_cm%3D446608001%0A

    Example 2. ICD-10 Map for 74400008 | Appendicitis|

    GET [fhir]/ConceptMap/$translate?code=74400008&system=http://snomed.info/sct&source=http://snomed.info/sct?fhir_vs &target=http://hl7.org/fhir/sid/icd-10&url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_cm=447562003

    Encoded URL

    GET [fhir]/ConceptMap/$translate?code=74400008&system=http://snomed.info/sct&source=http://snomed.info/sct?fhir_vs &target=http://hl7.org/fhir/sid/icd-10&url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_cm=447562003

    Example 3. ICD-10 Map for 196607008 | Esophageal ulcer due to aspirin|

    GET [fhir]/ConceptMap/$translate?code=196607008&system=http://snomed.info/sct&source=http://snomed.info/sct?fhir_vs &target=http://hl7.org/fhir/sid/icd-10&url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_cm=447562003

    Encoded URL

    GET [fhir]/ConceptMap/$translate?code=196607008&amp;amp;amp;amp;system=http%3A%2F%2Fsnomed.info%2Fsct&amp;amp;amp;source=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs+&amp;amp;target=http%3A%2F%2Fhl7.org%2Ffhir%2Fsid%2Ficd-10&amp;url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_cm%3D447562003

    Example 4. ICD-10 Map for 32398004 | Bronchitis|

    GET [fhir]/ConceptMap/$translate?code=32398004&system=http://snomed.info/sct&source=http://snomed.info/sct?fhir_vs &target=http://hl7.org/fhir/sid/icd-10&url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_cm=447562003

    Encoded URL

    GET [fhir]/ConceptMap/$translate?code=32398004&amp;amp;amp;amp;system=http%3A%2F%2Fsnomed.info%2Fsct&amp;amp;amp;source=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs+&amp;amp;target=http%3A%2F%2Fhl7.org%2Ffhir%2Fsid%2Ficd-10&amp;url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_cm%3D447562003

    Returns a JSON representation of data about each of the target components.

    The data returned for each concept includes:

    • boolean: True if the concept could be translated successfully. The value can only be true if at least one returned match

    • match: Each match represents data for the map or associated target. Note that there may be multiple matches, where each element represents a mapTarget. For each mapTarget, following data is provided

    • system: the codesystem of the mapTarget

    • code: The identifier of the mapTarget

    Request response

    Be aware that the FHIR TS API only provides information about the mapTarget. However, no additional map data represented in the map reference set is provided. This service is therefore sufficient to represent simple maps, but data required to interpret complex maps is not made available.

    Example 1. A concept that maps to a single ICD-O code in a simple map refset.

    Example 2. A concept that maps to a single ICD-10 classification code in a complex/extended map refset.

    Example 3. A concept that maps to a combination of two classification codes (there are two map groups and each contains a single map row with priority 1)

    Example 4. A concept that has a single map group containing two rows. For this map, a rule will determine which target should be chosen. Please note that the response does not show the rules as they are stated in the map reference set.

    Get maps based on combinations of refsetId and mapTarget

    N/A

    Get maps based on combinations of refsetId and referencedComponentId

    SELECT * FROM snap_refset_extendedmap WHERE active=1 AND refsetId=[refsetId] AND referencedComponentId=[conceptId];

    Example 1. ICD-O Map for 1338007 | Basal cell carcinoma (morphologic abnormality)|

    SELECT * FROM snap_refset_simplemap    WHERE active=1 AND refsetId=446608001 AND referencedComponentId=1338007

    Example 2. ICD-10 Map for 74400008 | Appendicitis|

    SELECT * FROM snap_refset_extendedmap WHERE active=1 AND refsetId=447562003 AND referencedComponentId=74400008

    Example 3. ICD-10 Map for 196607008 | Esophageal ulcer due to aspirin|

    SELECT * FROM snap_refset_extendedmap WHERE active=1 AND refsetId=447562003 AND referencedComponentId=196607008

    Example 4. ICD-10 Map for 32398004 | Bronchitis|

    SELECT * FROM snap_refset_extendedmap WHERE active=1 AND refsetId=447562003 AND referencedComponentId=32398004;

    Example 5. ICD-10 Map for 111613008 | Closed skull fracture with intracranial injury|

    SELECT * FROM snap_refset_extendedmap WHERE active=1 AND refsetId=447562003 AND referencedComponentId=111613008;

    Alternative approach using a stored procedure. This does not require the specific map reference set type to be identified.

    -- Alternative that also shows the terms associated-- with identifiers in the map records
    
    CALL snap_members([refsetId],[conceptId]);

    Returns rows of data from the specified mapping reference set with a referencedComponentId that matches the specified conceptId.

    Get maps based on combinations of refsetId and mapTarget

    SELECT * FROM snap_refset_extendedmap    WHERE active=1 AND refsetId=[refsetId] AND mapTarget=[otherCode];

    Example 6. Map from ICD-O code "8090/3" to SNOMED CT concepts

    SELECT * FROM snap_refset_extendedmap    WHERE active=1 AND refsetId=446608001 AND mapTarget="8090/3";

    Example 7. Maps from NHS Clinical Terms to a SNOMED CT concept

    SELECT * FROM snap_refset_extendedmap    WHERE active=1 AND refsetId=900000000000497000    AND mapTarget="Xa9C4";

    Requirements and Options

    Required Services

    Interdependencies

    Required By

    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).

    Snowstorm API

    FHIR API

    MySQL Example Database

    Get Data from a Reference Set
    Mapping Data to or from or from Another Code System
    Select Edition and Version
    Get Data from a Reference Set
    Provide Feedback

    All map data associated with maps in the specified reference set in which the mapTarget matches the specified other code.

    A machine-readable rule, that determines if a map applies.

    The FHIR TS API does not support retrieval of map data based on a specific mapTarget

    Returns rows of data from the specified mapping reference set with a mapTarget that matches the specified code in the other code system.

    .

    Getting data associated with identified concepts, descriptions or relationships is a fundamental requirement that must be met by any SNOMED CT terminology services provider. The required services are listed in the table below.

    Service Name and Status
    Input
    Output

    Get concept by identifier

    REQUIRED

    • Edition and version

    • A concept identifier

    • Optional: Language/dialect

    • Concept not found: Return appropriate error message.

    • Concept found: Return data associated with the concept.

    Get description by identifier

    REQUIRED

    • Edition and version

    • A description identifier

    • Other terminology services

      • All except Select Edition and Version.

    • Use cases

      • Explore and Review SNOMED CT

    • Service Types

      • Select Edition and Version

    Service Name
    API Call
    Result

    Get concept by identifier

    for example


    Encoded URL

    Returns a JSON representation of data related to the specified concept.

    The data returned:

    • Represents all the current data in the concept file row for the identified concept

    • Also includes the fully specified name and preferred term but does not include other synonyms

    Get description by identifier

    for example


    Encoded URL

    Service Name
    API Call
    Result

    Get SNOMED CT concept by identifier

    for example

    Returns a JSON representation of information about the identified concept

    The data returned includes:

    • The effectiveTime and moduleId of the concept

    • Terms associated with descriptions as a display designations of the concept

    • A representation of the subtype relationships of the concept

    Service Name
    SQL Query
    Result

    Get concept by identifier

    for example

    Returns a row of data from the concept release file for the specified concept.

    Get description by identifier

    for example

    Provide Feedback

    Overview

    Requirements and Options

    Services Required

    Interdependencies

    Required By

    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 ).

    Snowstorm API

    In the Snowstorm service requests [snowstorm] should be replaced by the URL to the Snowstorm server endpoint.

    FHIR API

    In the FHIR service requests [fhir] should be replaced by the URL to the FHIR terminology server endpoint. FHIR® is a registered trademarks of ().

    SQL Illustration

    The SNOMED CT MySQL example database is not designed as a terminology server and is not intended for use in a live system . However, it is referenced in this guide as an illustration that some readers may find helpful. For more information about the SNOMED CT example database see the SNOMED CT - SQL Practical Guide.

    SNOMED CT Release File Specifications

    Optional: Language/dialect2

    Gets maps from SNOMED CT to another code system, if the map data supports mapping in that direction.

    There are two situations in which this can be useful:

    • To test whether a map exists between a concept and a specific code in the other code system.

    • To access information about maps between a concept and a specific code in another code system.

    111613008 | Closed skull fracture with intracranial injury|
    111613008 | Closed skull fracture with intracranial injury|
    111613008 | Closed skull fracture with intracranial injury|
    Includes the definition status but does not include the stated or inferred definition of the concept
    .
    • Description not found: Return appropriate error message.

    • Description found: Return data associated with the description.

    Get relationship by identifier

    REQUIRED

    • Edition and version

    • A relationship identifier.

    • Optional: Language/dialect1

    • Relationship not found: Return appropriate error message.

    • Relationship found: Return data associated with the relationship conforming at least to the minimum set specified below:

      • Minimum: All data for the identified relationship in the snapshot view of the requested edition and version.

      • Optional additional items:

        • Preferred term and/or fully specified name for referenced concepts in a specified language

        • Other data associated with the referenced concepts.

    Returns a JSON representation of data related to the specified description.

    The data returned:

    • Represents all the current data in the description file row for the identified description

    • Also includes the language acceptability data for the description derived from each of the language reference sets present in the specified edition

    • Also includes human readable symbolic names for concept enumerations (e.g. " type ": "SYNONYM", "caseSignificance": "CASE_INSENSITIVE" )

    Get relationship by identifier

    for example


    Encoded URL

    Returns a JSON representation of data related to the specified relationship.

    The data returned:

    • Represents all the current data in the relationship file row for the identified relationship

    • Also includes the fully specified name and preferred term for the source, type and target concepts

    Returns a row of data from the description release file for the specified description.

    Get relationships by identifier

    for example

    Returns a row of data from the relationship release file for the specified relationship.

    Support EHR Data Entry
    EHR Reporting and Analytics
    Reference Set Editing
    Support Terminology Authoring and Review
    IETF RFC1738
    HL7
    www.hl7.org
    GET [snowstorm]/[branchPath]/members?referenceSet=[refsetid]&mapTarget=[otherCode]&active=true
    GET [snowstorm]/MAIN/2020-01-31/members?referenceSet=446608001&mapTarget=8090/3&active=true
    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=446608001&amp;amp;mapTarget=8090%2F3&amp;active=true
    GET [snowstorm]/MAIN/2020-01-31/members?referenceSet=900000000000497000&mapTarget=Xa9C4&active=true
    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=900000000000497000&amp;amp;mapTarget=Xa9C4&amp;active=true
    GET [snowstorm]/[branchPath]/members?referenceSet=[refsetid]&referencedComponentId=[conceptId]&mapTarget=[otherCode]&active=true
    GET [snowstorm]/MAIN/2020-01-31/members?referenceSet=447562003&referencedComponentId=111613008&mapTarget=S06.90&active=true
    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=447562003&amp;amp;amp;referencedComponentId=111613008&amp;amp;mapTarget=S06.90&amp;active=true
    SELECT * FROM snap_refset_extendedmap    WHERE active=1 AND refsetId=[refsetId] AND referencedComponentId=[conceptId] AND mapTarget=[otherCode]
    SELECT * FROM snap_refset_extendedmap    WHERE active=1 AND refsetId=447562003 AND referencedComponentId=111613008 AND mapTarget="S06.90"
    SELECT * FROM snap_refset_extendedmap    WHERE active=1 AND refsetId=447562003    AND referencedComponentId=111613008 AND mapTarget like "S06.%"
    GET [snowstorm]/[branchPath]/concepts/[relationshipId]
    GET [snowstorm]/MAIN%2F2020-01-31/relationships/3303602028
    GET [snowstorm]/MAIN%2F2020-01-31/relationships/3303602028
    SELECT * FROM snap_relationship WHERE id=[relationshipId]
    SELECT * FROM snap_relationship WHERE id=3303602028
    GET [snowstorm]/[branchPath]/concepts/[conceptId]
    GET [snowstorm]/MAIN%2F2020-01-31/concepts/6025007
    GET [snowstorm]/MAIN%2F2020-01-31/concepts/6025007
    GET [snowstorm]/[branchPath]/descriptions/[descriptionId]
    GET [snowstorm]/MAIN%2F2020-01-31/descriptions/2156578010
    GET [snowstorm]/MAIN%2F2020-01-31/descriptions/2156578010
    GET [fhir]/CodeSystem/$lookup?system=http://snomed.info/sct &code=[conceptId]&_format=json
    GET [fhir]/CodeSystem/$lookup?system=http://snomed.info/sct &code=6025007&_format=json
    SELECT * FROM snap_concept WHERE id=[conceptId]
    SELECT * FROM snap_concept WHERE id=6025007
    SELECT * FROM snap_description WHERE id=[descriptionId]
    SELECT * FROM snap_description WHERE id=2156578010

    Get History Data

    Overview

    With each new release version of SNOMED CT there are requirements to manage changes in the terminology. One key element of this was covered by the requirements in section Identify Changes to the Terminology. However, in addition to this there is a requirement access data that indicates the reasons for each of those changes and data that, where possible, provides links to active content that replaces components that have been made inactive. This data is distributed in historical reference sets.

    An historical reference set is a reference set that provides information about concepts or descriptions that have been inactivated.

    Notes

    • There are two types of historical reference sets :

      • Inactivation Reference Sets which indicate the reason for inactivation of a particular component.

      • Historical Association Reference Sets which associate inactive concepts with one or more active concepts that represent the same, similar or a possible meaning of an inactive concept.

    As noted in section it is important to identify concepts and descriptions that have been inactivated since an earlier version. Once this has been done:

    • Information about the reasons for inactivation of each description should be accessed from the

    • Information about the reasons for inactivation of each concept should be accessed from the

    • Associations between each inactivated concepts and active concepts which represent similar meanings must be accessed from one of the < subtypes.

    The required services are listed in the following table.

    Service Name and Status
    Input
    Output
    • Use Cases

    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 ).

    Service Name
    API Call 2
    Result
    Service Name
    API Call
    Result
    Service Name
    SQL Query
    Result

    Get historical associations between an inactive concept and one or more active concepts

    • Edition and version Identifier of an inactive concept

    • Optional: Language/dialect 1

    Identifiers and term(s) of related active concept(s) and the nature of the historical association between the inactive and active concept.

    Get historical associations between an inactive concept and one or more active concepts

    for example


    Encoded URL

    Returns a JSON representation of the historical association(s) of the specified inactive concept.

    Each reference set member returned represents a historical association of the inactive concept with an active concept:

    • The refsetId indicates the specific historical reference set(s) in which associations are found. This represents the nature of the association.

      • The preferred term and fully specified name associated with the refsetId describe the association. These terms can be looked up using Snowstorm services listed in

    Get historical associations between an inactive concept and one or more active concepts

    The FHIR TS API supports retrieval of targets for specific SNOMED CT reference sets. Please refer to this document for detailed guidance: . Thus, the ConceptMap/$translate operation enables the retrieval of targets for a specific referenced component.

    for example,


    Encoded URL

    Returns a JSON representation of data about each of the target components.

    The data returned for each concept includes:

    • boolean: True if the concept could be translated successfully. The value can only be true if at least one returned match

    • match: Each match represents data for the map or associated target. Note that there may be multiple matches, where each element represents a mapTarget. For each mapTarget, following data is provided

    • system: the codesystem of the mapTarget

    Columns

    Description

    id

    Identifier of the inactivated description.

    effectiveTime

    Effective time of the row that inactivated the description

    active

    Active state of description. Should always be zero (0)

    conceptid

    Identifier of the concept to which the description applies

    term

    Term of the inactivated description

    concept_fsn

    The fully specified name of the concept.

    concept_active

    Active state of the concept.

    reason

    The reason for inactivation represented by the preferred term associated with the valueId concept in the relevant row of the description inactivation reference set.

    Get reason for concept inactivation & historical associations

    Returns one or more rows of data for each concept inactivated after the deltaStartTime up to and including the deltaEndTime. Each row contains the following columns:

    id, effectiveTime, active, definitionStatusId, FSN, reason, assoc_type, ref_conceptId, ref_concept_FSN

    Note that in the case of a concept that has been inactivated due to ambiguity, there will usually be two or more rows in the results, one for each possible meaning represented by an active concepts. However, in some cases it is possible that only one of the possible meanings is represented by an active concept

    Columns

    Description

    id

    Identifier of the inactivated concept

    effectiveTime

    Effective time of the row that inactivated the concept

    active

    Active state of concept. Should always be zero (0)

    definitionStatusId

    Definition status of the inactivated concept

    FSN

    Fully specified name of the inactivated concept

    reason

    The reason for inactivation represented by the preferred term associated with the valueId concept in the relevant row of the concept inactivation reference set.

    assoc_type

    The preferred term for the name of the association reference set containing the association between the inactive and active concept.

    ref_conceptId

    The identifier of the active concept (or one of the active concepts) with which the inactive concept is associated.

    ref_concept_FSN

    The fully specified name of the active concept with which the inactive concept is associated.

    definitionStatusId

    Definition status of the inactivated concept

    FSN

    Fully specified name of the inactivated concept

    reason

    The reason for inactivation represented by the preferred term associated with the valueId concept in the relevant row of the concept inactivation reference set.

    assoc_type

    The preferred term for the name of the association reference set containing the association between the inactive and active concept.

    ref_conceptId

    The identifier of the active concept (or one of the active concepts) with which the inactive concept is associated.

    ref_concept_FSN

    The fully specified name of the active concept with which the inactive concept is associated.

    conceptid

    Identifier of the concept to which the description applies

    term

    Term of the inactivated description

    concept_fsn

    The fully specified name of the concept.

    concept_active

    Active state of the concept.

    reason

    The reason for inactivation represented by the preferred term associated with the valueId concept in the relevant row of the description inactivation reference set.

    Get reason for description inactivation

    • Edition and version Identifier of an inactive description

    • Optional: Language/dialect1

    Identifier and term representing the reason for inactivation of the description.

    Get reason for concept inactivation

    • Edition and version Identifier of an inactive concept

    • Optional: Language/dialect1

    Get reason for description inactivation

    GET [snowstorm]/[branchPath]/members?active=true&referenceSet=900000000000490003|Description inactivation indicator attribute value reference set |&referencedComponentId=[inactiveDescriptionId]

    for example

    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&referenceSet=900000000000490003|Description inactivation indicator attribute value reference set |&referencedComponentId=78334016

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;amp;referenceSet=900000000000490003%7CDescription+inactivation+indicator+attribute+value+reference+set+%7C&amp;referencedComponentId=78334016

    Returns a JSON representation of data related to the specified description.

    A single reference set member is returned and the targetComponentId refers to a concept that indicates the reason for inactivation of the concept:

    • The referencedComponentId returned is the inactive concept to which the inactivation reason applies.

    • The additionalFields / valueId refers to the concept that indicates the reason for inactivation.

      • The preferred term and fully specified name associated with the valueId describe the reason for inactivation. These terms can be looked up using Snowstorm services listed in .

    Get reason for concept inactivation

    GET [snowstorm]/[branchPath]/members?active=true&referenceSet=900000000000489007|Concept inactivation indicator attribute value reference set|&referencedComponentId=[inactiveConceptId]

    for example

    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referenceSet=900000000000489007|Concept inactivation indicator attribute value reference set|&referencedComponentId=20559007

    Encoded URL

    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;amp;referenceSet=900000000000489007%7CConcept+inactivation+indicator+attribute+value+reference+set%7C&amp;referencedComponentId=20559007

    Get reason for description inactivation

    N/A

    The FHIR TS API does not provide a service for this purpose

    Get reason for concept inactivation

    N/A

    Get reason for description inactivation

    CALL setDeltaRange(1,[deltaStartTime], [deltaEndTime]);
    SELECT * FROM delta_inactive_descriptions;

    For example:

    CALL setDeltaRange(1,'2019-07-31', '2020-01-31');
    SELECT * FROM delta_inactive_descriptions;

    Returns a row of data for each description inactivated after the deltaStartTime up to and including the deltaEndTime. Each row contains the following columns:

    Columns

    Description

    id

    Identifier of the inactivated concept

    effectiveTime

    Effective time of the row that inactivated the concept

    active

    Columns

    Description

    id

    Identifier of the inactivated description.

    effectiveTime

    Effective time of the row that inactivated the description

    active

    Requirements and Options

    Services Required

    Interdependencies

    Required By

    Depends On

    Service Examples

    Snowstorm API

    FHIR API

    MySQL Example Database

    Identify Changes to the Terminology
    900000000000490003 | Description inactivation indicator attribute value reference set|
    900000000000489007 | Concept inactivation indicator attribute value reference set|
    900000000000522004 | Historical association reference set|
    Manage Impact of Changes on EHR Applications
    Manage Impact of Changes on Extensions
    Select Edition and Version
    Identify Changes to the Terminology
    Get Data from a Reference Set
    IETF RFC1738
    Provide Feedback

    Identifier and term representing the reason for inactivation of the concept.

    Returns a JSON representation of data related to the specified concept.

    A single reference set member is returned and the targetComponentId refers to a concept that indicates the reason for inactivation of the concept:

    • The referencedComponentId returned is the inactive concept to which the inactivation reason applies.

    • The additionalFields / valueId refers to the concept that indicates the reason for inactivation.

      • The preferred term and fully specified name associated with the valueId describe the reason for inactivation. These terms can be looked up using Snowstorm services listed in

    The FHIR TS API does not provide a service for this purpose

    Active state of concept. Should always be zero (0)

    Active state of description. Should always be zero (0)

    If required, the refsetId returned can looked up using the get concept service to find the preferred term or fully specified name of the association reference set.
  • The referencedComponentId returned is the inactive concept to which the association applies.

  • The additionalFields / targetComponentId represents associated active concept.

  • In the case of an ambiguous concept, each reference set member represents one possible meaning of the inactive concept.

  • code: The identifier of the mapTarget

  • The example shows the retrieval of the active replacement for the inactive concept 134811001 |Anaesthetist (occupation)|. The historical association reference set is the 900000000000527005 |SAME AS association reference set (foundation metadata concept)|, and the request result shows the concept Id of the active concept 88189002 |Anesthesiologist (occupation)|.

    GET [snowstorm]/[branchPath]/members?active=true&referenceSet=<900000000000522004|Historical association reference set|&referencedComponentId=[inactiveConceptId]
    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referenceSet=<900000000000522004|Historical association reference set|&referencedComponentId=20559007
    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;amp;referenceSet=%3C900000000000522004%7CHistorical+association+reference+set%7C&amp;referencedComponentId=20559007
    GET [fhir]/ConceptMap/$translate?code=[componentId] &system=http://snomed.info/sct &source=http://snomed.info/sct?fhir_vs &target=http://snomed.info/sct?fhir_vs &url=[version]?fhir_cm=[refesetId]
    GET [snowstorm]/ConceptMap/$translate?code=134811001&system=http://snomed.info/sct&source=http://snomed.info/sct?fhir_vs&target=http://snomed.info/sct?fhir_vs&url=http://snomed.info/sct?fhir_cm=900000000000527005
    GET [snowstorm]/ConceptMap/$translate?code=134811001&amp;amp;amp;amp;system=http%3A%2F%2Fsnomed.info%2Fsct&amp;amp;amp;source=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs&amp;amp;target=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs&amp;url=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_cm%3D900000000000527005
    4.3 Get Terms for a Concept: Table 2 Snowstorm API
    Get Terms for a Concept
    https://www.hl7.org/fhir/snomedct.html
    Get Terms for a Concept

    Get Concept Model Rules

    Overview

    The SNOMED CT concept model is the set of rules that determines the permitted sets of relationships between particular types of concepts.

    Notes

    • The concept model specifies the attributes that can be applied to concepts in particular domains and the ranges of permitted values for each attribute. There are additional rules on the cardinality and grouping of particular types of relationships.

    Concept model rules are represented in a machine readable form by the members of the following four reference set types:

    • MRCM Domain Reference Set

      • Each row in this reference set defines a concept model domain. Each domain is a set of concepts which the concept model permits to be defined or refined, using a particular set of attributes and ranges.

    • MRCM Attribute Domain Reference Set

      • Each row in this reference set specifies an concept model attribute that can be used to represent a characteristic of the meaning of a concept or the nature of a refinement.

    • MRCM Attribute Range Reference Set

      • Each row in this reference set defines a concept model range that defines a set of values that the concept model permits to be applied to a specific attribute.

    • MRCM Module Scope Reference Set

      • The members of this reference set specify the set of MRCM reference sets that should be applied to concepts a specified SNOMED CT module.

    For full details of these reference set and the ways in which the rules are represented in these reference sets, refer to the SNOMED CT Machine Readable Concept Model (MRCM) specification and guide.

    Access to concept model rules is required to support a range of different practical uses including those identified in the 'Interdependencies' section on this page. The general techniques for accessing the data are the same as those for other references sets. However, interpretation of the data requires access to related data in each of the MRCM reference set types. To illustrate this the requirements are listed in the table below and service examples are presented in a logical interrelated order.

    Service Name and Status
    Input
    Output
    • Other Services

    • Use Cases

    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 ).

    Service Name
    API Call 2
    Result
    Service Name
    API Call 3
    Result
    Service Name
    SQL Query
    Result

    Notes

    • Language and/or dialect should be specified if the service returns terms associated with referenced concepts.

    • In the Snowstorm service requests [snowstorm] should be replaced by the URL to the Snowstorm server endpoint.

    • In the FHIR service requests [fhir] should be replaced by the URL to the FHIR terminology server endpoint. FHIR® is a registered trademarks of ().

    • The SNOMED CT MySQL example database is not designed as a terminology server and is not intended for use in a live system . It is referenced in this guide as an illustration that some readers may find helpful. For more information about the SNOMED CT example database see the

    Get the set of attribute rules applicable to an identified concept

    SNOMED CT Edition and Version The conceptId for which the attribute rules are to be identified.

    An indication of whether domains applicable to proximal primitive definitions are to be included. Content type option - one of the following concept identifiers: - 723593002

    All new precoordinated SNOMED CT content

    Get the range of values applicable to a specified attribute

    SNOMED CT Edition and Version The attributeId for which values are to be identified. Content type options (see previous service) The id of the concept to which the attribute is being applied (or the moduleId of the module to which concept belongs) are also required unless provided by internal services.

    Each rule should include the content of all the additional data columns in the MRCM Attribute Range reference set.

    EHR Data Entry

  • EHR Data Entry Design

  • EHR Reporting and Analytics

  • Support Terminology Authoring and Review

  • Get and Test Reference Set Membership

  • Validate and Apply Expression Constraints

  • Get Data from a Reference Set

  • Get the set of attributes applicable to a concept in a specified domain or set of domains

    For example


    Encoded URL

    Returns a JSON representation of data related to each for the attributes applicable to specified concept.

    The data returned is filtered so it only includes data relevant to in the specified contentType.

    The data returned includes information from all the columns in the Attribute Domain reference set.

    • It also includes terms associated with the attribute.

    • The contentTypeId and ruleStrengthId are represented by human readable tokenized strings rather than the conceptId.

    Get the range of values applicable to a specified attribute

    Snowstorm does not provide a specific service for returning the attribute range constraint applicable to a concept model attribute. However, it does support access to the relevant data in two ways. Firstly the general service for access to refset members as (see ) can be as illustrated here. Additionally, the Snowstorm service shown in the next row provides a way to carry out a search that is constrained to the permitted set of values for an attribute.

    For example


    Encoded URL

    Returns a JSON representation of data related to the specified attribute range.

    The range data is returned in the following properties of the additionalFields object:

    • rangeConstraint

    • attributeRule

    • contentTypeId

    Find values that are within the range or a specified attribute

    For example


    Encoded URL

    Returns a JSON representation of the search results constrained by the rangeConstraint.

    • The data returned is in the same form as documented in the section.

    Get the domain or set of domains that include a specified concept

    Example 1. Get the domains that include the concept

    Example 2. Get the domains that include the concept

    Example 3. Get the proximal primitive domains that include the concept

    This procedure returns two values.

    • domainId - the most specific domain that includes the specified concept.

    • domainList - a comma separated list of all the domains that include the specified concept.

    Example 1 returns the following set of domains:

    • domainId: 723264001

    Get the set of attributes applicable to a concept in a specified domain or set of domains

    Example 1. Get the attributes applicable to the concept when using postcoordination

    Example 2. Get the attributes and attribute constraints applicable to the concept when using postcoordination.

    The getMrcmAttributeRanges procedure generates rows in the config_mrcmrulesets table. It returns a rulesetKey which can be used to query the generated rows. These rows contain not only the attributes but also range constraints.

    Both examples get the attributes applicable to the same concept but the results returned by the select queries vary in content.

    Example 1 returns the attributeId and preferred terms for each attribute applicable to the specified concept in the context specified by the proximal primitive and content type settings.

    Example 2 returns all valid combinations of attributes and attribute range constraints applicable to the specified concept specified in the context specified by the proximal primitive and content type settings.

    Get the range of values applicable to a specified attribute

    As noted above, the getMrcmAttributeRanges procedure returns the attribute ranges of all attributes applicable to a concept. However, it is also possible to return the attribute range for specific attribute.

    Example. Get all the attribute range constraints applicable to the concept when using postcoordination

    Returns the rangeConstraint for the attribute and the the contentTypeId and ruleStrengthId. In some cases more than one row may be returned where there are rules with different strengths or applicable to different subsumed contentTypes.

    . For instructions on how to build the example database refer to
    .

    Get the refsetId of specific type of MRCM reference set applicable to concepts in an identified module

    SNOMED CT Edition and Version

    The conceptId representing the moduleId

    The MRCM reference set type (mrcmDomain, mrcmAttributeDomain or mrcmAttributeRange)

    The identifier of the specific MRCM reference set applicable to concept in the specified module.

    Client applications do not require access to this data. However, it is required as an internal service to enable other MRCM services.

    Get the domain or set of domains that include a specified concept

    SNOMED CT Edition and Version

    The conceptId for which the domains are to be identified.

    An indication of whether domains applicable to proximal primitive definitions are to be included.

    The conceptId can be used to get the required moduleId and then, using the service above, the appropriate MRCM Domain reference set can be identified.

    The general process for identifying the domains that include a specified concept is as follows:

    • Identify the top-level domain that subsumes the concept.

    • Identify each of the domains that is a child or descendant of that top level domain.

    Get the set of reference sets applicable to concepts in an identified module

    This service is supported internally and used by the services below. The relevant data is also directly accessible at the API using the general service used to access refset members as described in Get Data from a Reference Set.

    [snowstorm]/snomed-ct/[branchPath]/members?referenceSet=[MrcmModuleScopeRefsetId]&referencedComponentId=[moduleId]&active=true

    For example

    [snowstorm]/snomed-ct/MAIN/2020-01-31/members?referenceSet=723563008&referencedComponentId=900000000000207008&active=true

    Encoded URL

    [snowstorm]/snomed-ct/MAIN%2F2020-01-31/members?referenceSet=723563008&amp;amp;referencedComponentId=900000000000207008&amp;active=true

    JSON representation of three refset members each of which refers to one of the MRCM reference sets for concepts in the specified module.

    • The MRCM reference set references is represented by the additionalFields. mrcmRuleRefsetId property.

    Get the domain or set of domains that include a specified concept

    This service is supported internally and used by the services below. However, it is not directly accessible at the API.

    Get concept model rules

    N/A

    No FHIR terminology services are available to provide detailed information about SNOMED CT concept model rules.

    Get the set of reference sets applicable to concepts in an identified module

    SELECT mrcmRuleRefsetId,refsetType FROM snap_refset_mrcmmodulescope m JOIN config_refsets r ON r.refsetId=m.mrcmRuleRefsetId WHERE active=1 AND refsetId=723563008    AND referenceComponentId=[moduleId];

    For example to get the MRCM refsetIds for 900000000000207008 | SNOMED CT core module|

    SELECT mrcmRuleRefsetId,refsetType FROM snap_refset_mrcmmodulescope m JOIN config_refsets r ON r.refsetId=m.mrcmRuleRefsetId WHERE active=1 AND m.refsetId=723563008    AND referencedComponentId=900000000000207008

    Alternative approach to get refsetId for a specific MRCM refset for a specific module 900000000000207008 | SNOMED CT core module|

    The refsetIds and reference set types of the three MRCM references sets that apply to the specified module.

    Get the refsetId of specific type of MRCM reference set applicable to concepts in an identified module

    SELECT getMrcmRefsetId([moduleId],[refsetType]);

    The MRCM refsetType can be specified either by a single letter (D, A or R) or the full name (mrcmDomain, mrcmAttributeDomain or mrcmAttributeRange).

    The first example illustrates use of the full name while the others use the abbreviated style.

    SELECT getMrcmRefsetId(900000000000207008,"mrcmDomain");
    SELECT getMrcmRefsetId(900000000000207008,"A");
    SELECT getMrcmRefsetId(900000000000207008,"R");

    Notes

    • An attribute is assigned a value (attribute value pair) when used in the definition of a concept or in a postcoordinated expression.

    • The attributes that can be used in definitions or refinements are represented by a concepts that are subtypes of the concept 410662002 | Concept model attribute (attribute)| .

    • The SNOMED CT concept model specifies:

      • The concept model domains which each specific attribute can be applied; and

      • The concept model range of values that can be applied to each specific attribute.

    Requirements and Options

    Client applications do not require access to this data. However, it is required as an internal service to enable other MRCM services.

    Services Required

    Interdependencies

    Required By

    Depends On

    Service Examples

    Snowstorm API

    FHIR API

    MySQL Example Database

    Validate Concept Definitions and Expressions
    Test Expression Subsumption
    Select Edition and Version
    Get a Concept, Description or Relationship
    Get Definition of a Concept
    Get and Test Concept Subtypes and Supertypes
    IETF RFC1738
    HL7
    www.hl7.org
    Provide Feedback

    The identifiers of the domains to which the identified concept belongs.

    Each function call returns a single refsetId.

    SNOMED CT - SQL Practical Guide
    Appendix A: Building the SNOMED CT Example Database
    ruleStrengthId

    domainList: 123037004,91723000,723264001

    • 123037004 | Body structure|

    • 91723000 | Anatomical structure|

    • 723264001 | Lateralizable body structure reference set|

    Example 2 returns the following set of domains

    • domainId: 386053000

    • domainList: 71388002,386053000

      • 71388002 | Procedure|

      • 386053000 | Evaluation procedure|

    Example 3 returns the following set of proximal primitive domains

    • domainList: 71388002,386053000,387713003,433590000

    • 71388002 | Procedure|

    • 386053000 | Evaluation procedure|

    • 387713003 | Surgical procedure|

    The concept is included the top-level domain that subsumes the concept and any of its child and descendant domains that which have expression constraints to which it conforms.

    • The expression constraint tested depends proximal primitive indicator value

      • False: Conformance with the domainConstraint is required.

      • True: Conformance with the proximalPrimitiveConstraint is required.

    [snowstorm]/snomed-ct/mrcm/[branchPath]/domain-attributes?parentIds=427019001&amp;amp;proximalPrimitiveModeling=%5Btrue%7Cfalse%5D&amp;contentType=%5Bcontent-type%5D%09
    [snowstorm]/snomed-ct/mrcm/MAIN/2020-01-31/domain-attributes?parentIds=427019001&proximalPrimitiveModeling=false&contentType=POSTCOORDINATED
    [snowstorm]/snomed-ct/mrcm/MAIN%2F2020-01-31/domain-attributes?parentIds=427019001&amp;amp;proximalPrimitiveModeling=false&amp;contentType=POSTCOORDINATED
    [snowstorm]/snomed-ct/[branchPath]/members?referenceSet=[MrcmAttributeRangeRefsetId]&referencedComponentId=[attributeId]&active=true&contentType=[contentType]
    [snowstorm]/snomed-ct/MAIN/2020-01-31/members?referenceSet=723562003&referencedComponentId=260870009&active=true&contentType=POSTCOORDINATED
    [snowstorm]/snomed-ct/MAIN%2F2020-01-31/members?referenceSet=723562003&amp;amp;amp;referencedComponentId=260870009&amp;amp;active=true&amp;contentType=POSTCOORDINATED
    [snowstorm]/snomed-ct/mrcm/[branchPath]/attribute-values/260870009?contentType=POSTCOORDINATED&termPrefix=[searchTerm]
    [snowstorm]/snomed-ct/mrcm/MAIN/2020-01-31/attribute-values/260870009?contentType=POSTCOORDINATED&termPrefix=urg
    [snowstorm]/snomed-ct/mrcm/MAIN%2F2020-01-31/attribute-values/260870009?contentType=POSTCOORDINATED&amp;termPrefix=urg
    CALL getMrcmDomains([conceptId],[proxPrim],@domainId, @domainList);
    -- Following line shows the results
    SELECT @domainId,@domainList;
    CALL getMrcmDomains(71341001,0,@domainId, @domainList);
    -- Following line shows the results
    SELECT @domainId, @domainList;
    CALL getMrcmDomains(241075002,0,@domainId, @domainList);
    -- Following line shows the results
    SELECT @domainId, @domainList;
    CALL getMrcmDomains(241075002,1,@domainId, @domainList);
    -- Following line shows the results
    SELECT @domainId, @domainList;
    CALL getMrcmAttributeRanges([conceptId],[proxPrim],[contentTypeKey],@ruleSetKey);
    -- Following statement shows the attribute ids and terms
    SELECT DISTINCT `attributeId`,`term`
      FROM `config_mrcmrulesets` `c`
      JOIN `snap_pref` `p` ON `c`.`attributeId`=`p`.`conceptId`
      WHERE `rulesetKey`=@rulesetKey;
    CALL getMrcmAttributeRanges(71341001,0,'pos',@ruleSetKey);
    -- Following statement shows the attribute ids and terms
    SELECT DISTINCT `attributeId`,`term`
      FROM `config_mrcmrulesets` `c`
      JOIN `snap_pref` `p` ON `c`.`attributeId`=`p`.`conceptId`
      WHERE `rulesetKey`=@rulesetKey;
    CALL getMrcmAttributeRanges(71341001,0,'pos',@ruleSetKey);
    -- Following statement shows the attribute ids and terms
    SELECT `attributeId`,`grouped`, `attributeCardinality`,
    `attributeInGroupCardinality`, `attributeContentTypeId`,
    `attributeRuleStrengthId`, `rangeConstraint`,
    `rangeContentTypeId`, `rangeRuleStrengthId`
      FROM `config_mrcmrulesets` WHERE `rulesetKey`=@rulesetKey;CALL getMrcmDomains(241075002,0,@domainId, @domainList);
    -- Following line shows the results
    SELECT @domainId, @domainList;
    SET @attributeId=[attributeId];
    SET @contentTypeIdList=[contentTypeIdList];
    SET @moduleId=[moduleId];
    SELECT  `rangeConstraint`, `contentTypeId`, `ruleStrengthId`
      FROM `snap_refset_mrcmattributerange`
      WHERE `refsetId`= getMrcmRefsetId(@moduleId,"R");
      AND `r`.`active`=1
      AND FIND_IN_SET(`r`.`contentTypeId`,@contentTypeIdList)>0;
    SET @attributeId=260870009;
    SET @contentTypeIdList="723596005,723594008";
    SET @moduleId=900000000000207008;
    SELECT `rangeConstraint`, `contentTypeId`, `ruleStrengthId`
      FROM `snap_refset_mrcmattributerange`
      WHERE `refsetId`= getMrcmRefsetId(@moduleId,"R") AND `referencedComponentId`=@attributeId AND `active`=1  AND FIND_IN_SET(`contentTypeId`,@contentTypeIdList)>0;

    Client applications do not require access to this data. However, it is required as an internal service to enable the service service following MRCM services.

    The required internal services above are used to identify the domains that include the concept.

    The selected set of attribute domain rules. Conformance with the rangeConstraint expression is determined by applying the expression constraint to a specific value. The rangeConstraint can also be used filter the range of permitted refinements to the value of that attribute in postcoordinated expression.

    The other MRCM services described below use this function to determine which reference set to use to access domain, attribute and range constraint information.

    4.10 Get Data from a Reference Set
    Find Concepts
    71341001 | Bone structure of femur|
    241075002 | Plain X-ray of femur|
    241075002 | Plain X-ray of femur|
    71341001 | Bone structure of femur|
    71341001 | Bone structure of femur|
    71341001 | Bone structure of femur|

    The procedure adds also adds a row to the config_resultsets table for each of the domains. This makes it easier for the services below to access to look up the attribute and range constraints for the set of domains applicable to a specified concept.

    433590000 | Administration of substance via specific route|