Only this pageAll pages
Powered by GitBook
1 of 42

SNOMED CT Terminology Services Guide

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Appendixes

Loading...

Loading...

Loading...

Terminology Service Providers

Terminology Service Requirements

Terminology service providers should refer to the following sections of this guide for statements of requirements that their services should meet when accessing SNOMED CT:

  • Terminology Service Users

    • Outlines user requirements for high-performance services that provide appropriate access to SNOMED CT.

    • Outlines requirements from the perspective of healthcare applications that consume terminology services.

    • Provides examples of practical use cases involving access to SNOMED CT that an application may need to complete. For each of these use cases, it identifies one or more of the required terminology services that can be used to complete the required activity.

    • Describes specific terminology services or functions that are required to enable effective use of SNOMED CT.

Clinical systems can be effectively implemented using a service oriented architecture, in which the terminology services are designed as an independent software component, accessible via an API (Application Programming Interface) gateway. This enables the other system components to access the key services without being affected by changes to the way these services are implemented.

When designing terminology services for SNOMED CT, it is important to utilize the sophisticated design features of the terminology, as this will support its effective use. When designing terminology services to support a range of different terminologies, it is important to consider the commonality between these terminologies. The table below summarizes some of the advantages and disadvantages of designing terminology services that only work with SNOMED CT, compared with designing services that can also enable access to terminologies or code systems. It also identifies advantages and disadvantages of supporting one or more interfaces through which applications can access SNOMED CT and/or other terminologies.

The following tables outline key design choices for terminology services, focusing on the types of terminologies supported and the interfaces provided. Each option includes potential advantages and disadvantages from the perspective of service design, helping organizations assess trade-offs between specialization, interoperability, and maintainability. These options can inform procurement decisions, integration strategies, and long-term terminology management planning.

Option
Notes
Option
Notes

Multiple interfaces

Example: Snowstorm supports both its native REST API and FHIR API. ✅ Advantage: Combines benefits of SNOMED-specific and general-purpose interfaces. ❌ Disadvantage: Increased maintenance burden; differences in behavior, performance, or output may exist between interfaces.

SNOMED CT only

A terminology service provider may develop and deliver services that are specific to SNOMED CT. ✅ Advantage: Services can be tailored to the structure and features of SNOMED CT. ❌ Disadvantage: May be less attractive to organizations seeking broader terminology support.

SNOMED CT and other code systems

A provider may support access to SNOMED CT along with other terminologies, code systems, or classifications. ✅ Advantage: Single solution for customers needing access to multiple terminologies. ❌ Disadvantage: Risk of underutilizing SNOMED CT-specific features.

Proprietary interface

A provider may define a custom interface to access SNOMED CT and/or other terminologies. ✅ Advantage: Interface can be optimized for specific service features. ❌ Disadvantages: • Application providers may resist supporting multiple proprietary interfaces. • Vendor lock-in risk makes switching providers difficult.

SNOMED CT-specific interface

Example: SNOMED International's Snowstorm API. ✅ Advantage: Allows services optimized for SNOMED CT features. ❌ Disadvantage: Requires app providers to use separate interfaces for other code systems.

General-purpose interface

Example: FHIR Terminology Service API. ✅ Advantages: • Uniform interface for accessing multiple code systems. • Easier to switch between service implementations. ❌ Disadvantage: May not support full optimization for SNOMED CT features.

Support for Different Terminologies and Interfaces

Terminology Service Design Options

Terminologies Supported

Terminology Service Interfaces Supported

Healthcare Application Providers
Terminology Service Use Cases
Terminology Service Types
Provide Feedback

Introduction

Background

SNOMED CT is a clinically validated, semantically rich, controlled terminology. SNOMED CT is comprised of concepts with human-readable descriptions and a hierarchical structure supported by machine-readable logic-based definitions. SNOMED CT is used within electronic health records to support data capture, retrieval, and subsequent analysis and reuse for a range of purposes. The SNOMED CT design also includes features that support multilingual terms, subsets, maps to other codes systems, formal constraint specifications and comprehensive history tracking.

When implemented in software applications, SNOMED CT can represent clinically relevant information consistently, reliably and comprehensively as an integral part of electronic health records. This requires effective access to terminology content in ways that leverage the features of the terminology. A terminology service is a software function that interfaces with and provides access to information from one or more representations of a terminology.

Some services described in this guide are also applicable to other code systems, classifications and terminologies. However, delivery of the full set of benefits of SNOMED CT also requires terminology services that access and make effective use of features that are specific to SNOMED CT.

Purpose

The purpose of this document is to identify and describe the terminology services required to support effective access to the content and features of SNOMED CT. The guide also outlines approaches to delivery for some of the most important services. In some cases, more extensive details of service requirements and delivery options are provided by reference to other SNOMED CT documents or appendixes to this document. Where appropriate, this document may also include practical illustrations of a service by reference to specifications of existing tools or interfaces.

The content of this guide is primarily focused on the terminology service requirements of applications that enable the use of SNOMED CT for clinical purposes. This include electronic health record applications that enable entry, viewing, and reporting of clinical data. It also includes applications that support clinical data analytics and decision support. Some services and use cases mentioned in the guide are also relevant to terminology content authoring. However, it is important to note that the scope of this guide does not cover the full set of requirements for terminology development, authoring, and distribution services.

This guide is designed to be of value and interest to the following audience groups:

  • Consumers of SNOMED CT terminology services :

    • Procurers and implementers of healthcare applications

      • People involved in procuring and/or deploying applications that enable entry, viewing, reporting, and analysis of healthcare data coded using SNOMED CT

The needs of each of these audience groups vary, and as a result, the sections likely to be of most interests to each of these audience groups are noted in the Document Structure section below

This document is organized into five main chapters:

  • introduces the definition of SNOMED CT terminology services, it describes the general terminology service categories, and it presents three key roles with an interest in SNOMED CT terminology services and provides notes on issues relevant to each role.

  • outlines the practical use cases for terminology services.

  • describes the different types of terminology services required to enable effective use of SNOMED CT.

Terminology Data Storage and Access

SNOMED CT terminology data is distributed in release packages containing tab-delimited release files that conform to the . All release files follow a consistent design pattern with the following key features:

  • A versioning mechanism, which tracks additions, changes, and inactivations made in each release. This versioning mechanism enables terminology services to access the full history of every SNOMED CT component and reference set member.

  • A limited range of data types, all of which are rendered as text in release files.

Testers and evaluators of specific healthcare applications

  • End-users responsible for testing or evaluating applications that enable entry, viewing, reporting, and analysis of healthcare data coded using SNOMED CT

  • Providers of healthcare applications that use SNOMED CT:

    • People involved in designing, developing, or maintaining applications that enable entry, viewing, reporting, and analysis of healthcare data coded using SNOMED CT

  • Providers of SNOMED CT terminology services :

    • People involved in designing, developing, maintaining, or delivery of terminology services that include support of access to SNOMED CT

  • Service Implementation Considerations provides practical information regarding the use of the SNOMED CT release files to meet specific terminology service requirements.

    Scope

    Audience

    Document Structure

    Terminology Services Overview
    Terminology Service Use Cases
    Terminology Service Types
    Provide Feedback

    Use of the Unicode UTF-8 character set for the string data type, to support the inclusion of the full range of Unicode characters.

    Data from the files in SNOMED CT release packages needs to be loaded into a datastore that can be accessed by terminology services. The design of this datastore is a key design decision for developers of terminology services since it will determine the capabilities and performance characteristics of those services.

    General requirements for the datastore design include:

    • It must enable the representation of all the information contained in all release files types in the SNOMED CT release package(s) imported

    • It must support the terminology services that are marked as Required in the subsections of Terminology Service Types

    • It must deliver scalable optimization of terminology services required by the use cases in Terminology Service Use Cases that the server is designed to support1.

    Different technical options are available for implementing terminology services, for example, using a relational database, other database options (such as Graph databases), or using predefined services accessible via an API (for example SNOMED International's Snowstorm).

    Provide Feedback

    SNOMED CT Release Files Specification

    Terminology Service Categories

    SNOMED CT terminology services can be subdivided into categories based on the following two defining characteristics:

    1. Access requirements : Does the service need to update the terminology?

    2. User interface requirements : Does the service include its own user interface controls?

    Access Requirements

    The following table describes the distinction between terminology services that provide read-only access to the terminology and those that also allow the terminology to be updated. Practical requirements for using SNOMED CT to enter, display, and report clinical data can be met by read-only terminology services. Services that are able to update the terminology are only required by those involved in the development, maintenance, or customization of the terminology.

    Characteristic
    Description
    Additional Notes

    The image below illustrates the association between the different types of terminology services and record services.

    The table below differentiates between services based on whether the service includes user interface components, in addition to its application programming interface. Terminology services that do not include user interface components are capable of delivering a full range of essential terminology services but they require the client application to provide the user interface components to interact with those services. Terminology services that include user interface components have the potential to simplify client application development and configuration. Some examples of potentially beneficial terminology services with user interfaces are noted in the table below.

    Section notes the need for combinations of the terminology services identified in to address each use case. Most of these use cases also need interfaces to allow users to interact and access the results of those services. However, the detailed specification of the user interface functionality of these combined services is beyond the scope of the current version of this guide.

    Characteristic
    Description
    Additional Notes

    The following tables provide examples of services in each of the four categories defined by applying the terminology access and user interface criteria.

    User Interface
    Examples
    User Interface
    Examples

    Read-Only

    Read-only terminology services enable access to SNOMED CT content and features.

    These services meet requirements for practical use of SNOMED CT including collecting, displaying, communicating, and analyzing SNOMED CT coded data.

    Add-Update

    Add-update terminology services can add, modify, or inactivate SNOMED CT components and/or reference set members.

    These services include functions that support terminology authoring, maintenance, and distribution. A full suite of development services meets the requirements of organizations responsible for creating and maintaining a SNOMED CT edition, or a SNOMED CT extension containing additional clinical concepts. Limited sets of development services can meet the requirements of organizations responsible for a SNOMED CT extension that consists only of reference sets representing subsets, maps, or data that is used to customize the terminology to meet specific purposes.

    No UI

    Terminology services that only provide access to SNOMED CT through an API.

    Client applications using these services are responsible for providing any user interfaces required to enable practical use of these services. Client-developed user interfaces can be closely integrated with the look and feel of the client application UI. They limit dependency on a specific terminology service provider, as services without a UI have less variability and are more likely to include shared, common features.

    UI

    Terminology services that, in addition to an API, also provide a user interface through which users can interact with the terminology.

    Services in this category range from individual terminology-bound UI controls to fully functioning tools that enable viewing or editing the terminology. User interface controls included as part of the terminology service may facilitate more rapid development and can be useful when client applications have limited requirements for SNOMED CT searching and display. Examples: • Terminology search control (Use Case 3.2 – Support EHR Data Entry):

    – Text search with constraints set by data entry – Display results to support selection of appropriate concepts – Option to add postcoordinated refinements • Report and analysis query development tool (Use Case 3.4 – EHR Reporting and Analytics): – Enables creation of valid expression constraints or SNOMED CT queries

    No UI

    • Get details of a concept using its concept ID. • Search for concepts based on term search criteria or expression constraints. • Retrieve reference set data (e.g., subset membership, language acceptability, maps, history). • Test if a set of concepts or expressions is subsumed by a specified concept or expression constraint.

    UI

    • SNOMED CT browser that allows exploration and supports API-based integration with applications. • Terminology-bound UI controls (e.g., dropdown lists populated via reference sets or constraints). • Tools to analyze records containing SNOMED CT-coded data.

    No UI

    • Create new SNOMED CT concepts. • Add or modify axioms for defining concepts. • Classify SNOMED CT content to infer relationships. • Add descriptions to concepts. • Inactivate concepts or descriptions. • Create new reference sets of specific types. • Add members to reference sets.

    UI

    • SNOMED CT authoring tools for creating concepts with full descriptions and axioms. • Tools for maintaining subsets as reference sets. • Translation tools to manage language-specific descriptions and acceptability settings. • Mapping tools to develop and maintain crosswalks to other terminologies or code systems.

    Terminology Access Requirements

    User Interface Requirements

    User Interface Inclusion

    Terminology Service Category Examples

    Read-Only Access

    Add-Update Access

    Many of the general use cases identified in can be met in different ways by different combinations of the terminology services detailed in with user interface components or forms. Therefore, detailed specifications of the specific functionality of combined terminology services would inevitably be either incomplete or overly restrictive.

    Furthermore, user interfaces presented by a combined terminology service will typically need to be integrated with client applications. Client applications may adopt different user interface styles and these styles may evolve overtime. Therefore, flexibility in the design of the user interface through which a service is accessed may be preferable to a rigid detailed specification of each type of service.

    Depending on feedback from readers, consideration will be given to providing more guidance on combined terminology services in future versions of this guide.

    Terminology Service Use Cases
    Terminology Service Types
    Provide Feedback
    Examples of Terminology services and Record services and their associations.
    Terminology Service Use Cases
    Terminology Service Types

    Service Implementation Considerations

    SNOMED CT is made available to license holders in release packages containing sets of files that represent SNOMED CT components and. The content of these files provides the source data to which a terminology service provides access. This chapter provides guidance on how the structure and content of different release packages should be accessed and used to enable desired services. This chapter is important for those designing, developing, and maintaining terminology services, as they require a thorough understanding of the structure and content of different release packages and the release files they contain.

    Provide Feedback

    Test Expression Subsumption

    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

    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 Get and Test Concept Subtypes and Supertypes and Validate and Apply Expression Constraints. However, in this case the first step is to determine the meaning of the expression relative to existing defined concepts.

    Requirements and Options

    The required services are listed in the table below.

    Services Required

    Service Name and Status
    Input
    Output
    • Use Cases

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

      • (if stored data includes post-coordinated expressions)

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

    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 .

    Test subsumption of an expression minimal 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 (to be added)

    MySQL Example Database

    EHR Data Entry
    EHR Reporting and Analytics
    Select Edition and Version
    Get Definition of a Concept
    Get and Test Concept Subtypes and Supertypes
    HL7
    www.hl7.org
    Provide Feedback
    Validate and Apply Expression Constraints
    SNOMED CT - SQL Practical Guide
    Appendix A: Building the SNOMED CT Example Database
    IETF RFC1738

    Terminology Service Users

    Terminology Server Users include

    • End-Users

    • People involved in procurement

    End-Users

    The end users of SNOMED CT terminology services include healthcare professionals and other people who enter, view, report, and analyze healthcare data coded using SNOMED CT. Terminology services may sound like a technical matter of little interest to users but the quality and performance of these services can make a big difference to the usability of a healthcare application. Poorly implemented terminology services can make it hard to locate appropriate concepts, distracting, and frustrating health professionals as they struggle to enter notes. The end result is likely to be incomplete records or inaccurate recording due to the inability to find the correct concept. In contrast, well-designed terminology services used effectively by healthcare applications facilitate rapid and accurate entry of clinical data. This not only assists the delivery of patient care but also provides a valuable source of information for communication, reporting, and valuable analysis.

    Terminology services that enable rapid searches for concepts in relevant areas of the SNOMED CT hierarchy are a key factor in facilitating accurate data entry and minimizing the risk of errors. When creating task-oriented forms or templates for data entry it is even more important to use search techniques that pinpoint the correct concepts, because any errors in a template will inevitably be duplicated by records created using that template.

    Terminology services also need to support data retrieval for retrieval, analysis, and decision support. This requires terminology services that can examine the definition of a concept and determine if it meets the criteria specified in a query or expression constraint. A terminology service that supports rapid evaluation of these types of queries can be a key factor in facilitating the delivery of essential reports and valuable analytics.

    Most end-users are unlikely to have a direct role in the development or selection of terminology services. However, those who are involved in designing, procuring, and implementing these services should recognize the importance of ensuring a positive end-user experience for people whose day-to-day work requires frequent access to SNOMED CT.

    Organizations procuring applications that require access to SNOMED CT should carefully evaluate the way that the application provides access to terminology content and features. This evaluation should consider practical usability and also the flexibility of the underlying design. It should also consider the context of the existing technical architecture, as this will drive the type of service being procured.

    To facilitate the assessment of the way an application interacts with SNOMED CT, the following steps are recommended:

    1. Identify user activities that involve interaction with the terminology

      • It may be helpful to refer to the list of use cases in to assist the identification of specific activities that are relevant to the application being procured

    2. Identify groups of users that regularly undertake each of the identified activities

    Another important point to consider when procuring a solution that requires access to SNOMED CT. is the way (or ways) in which the solution provides access to the terminology. A solution may include built-in terminology services, it may provide an interface to terminology services from a specific provider, or it may offer options to use terminology services from different providers who support a common interface. The table below outlines the advantages and disadvantages of each of these options from the perspective of a procuring organization.

    Option
    Advantages for Procuring Organization
    Disadvantages for Procuring Organization

    Request representatives of the affected groups of users to assist with the evaluation of those activities

    • Those involved in this evaluation may find it useful to refer to the use cases in Terminology Service Use Cases and the specific service requirements which may suggest a particular factor underlying any issues they experience

    Application uses terminology services provided by a specified third party

    • Application provider is responsible for maintaining compatibility of their application with the chosen terminology services interface

    • Potential for reuse of terminology services by other applications

    • Dependent on the quality of the specified terminology services and its future maintenance

    • Option for other applications to use the services is limited to those able to use the interface provided by the chosen terminology services

    • Risk of non-alignment between SNOMED CT editions/versions in terminology services used by different applications

    Application supports use of terminology services that offer an interface that conforms to a published specification

    • Application provider is responsible for maintaining compatibility of their application with the chosen terminology services interface

    • Choice of terminology services may allow reuse of terminology services already used in the organization

    • Choice of terminology services may allow migration to enhanced terminology services offered by a different provider

    • Possible differences in performance, functionality, and results between different implementations of a chosen terminology services interface

    • Separate support arrangement for terminology services may make responsibility for errors or performance issues less clear

    • Option for other applications to use the services may be limited by the chosen interface specification

    Application configurable to support use of a specified range of terminology services

    • Application provider is responsible for maintaining compatibility of their application with the chosen terminology services interfaces

    • Choice of terminology services may allow the reuse of terminology services already used in the organization

    • Choice of terminology services may allow migration to enhanced terminology services offered by a different provider

    • Separate support arrangement for terminology services may make responsibility for errors or performance issues less clear

    • Option for other applications to use the services may be limited by the chosen interface specification

    Application includes built-in functions for the terminology services it requires

    • Integrated solution without external dependencies

    • Potential for optimization of specific terminology services needed by the application

    • Single source for support

    • Dependent on the quality of the application provider's solution and its future maintenance

    • No option to select an enhanced set of terminology services from a specialist provider

    • Risk of non-alignment between SNOMED CT editions/versions in terminology services used by different applications

    Application uses terminology services provided by the same organization but independent from the application

    • Purpose-built solution matched to the application

    • Single source for support

    • Potential for reuse of terminology services by other applications

    Procurement

    Evaluating the Usability of Terminology Services

    Evaluating Application Options for Access to Terminology Services

    Table: Options for Application Access to Terminology Services - Procuring Organization Perspective

    Terminology Service Use Cases
    Provide Feedback
    • Dependent on the quality of the application provider's terminology services and its future maintenance

    • No option to select an enhanced set of terminology services from a specialist provider

    • Option for other applications to use the services is limited to those able to use the interface provided by the application vendor

    Terminology Services Overview

    This chapter defines SNOMED CT terminology services, and it describes the general terminology service categories. Furthermore, it presents three key roles with an interest in SNOMED CT terminology services including end-users and those involved in the procurement of healthcare applications.

    SNOMED CT terminology services are defined as a set of software functions that interface with and provide effective access to the content and features of one or more SNOMED CT editions.

    • Each terminology service is a software function that interfaces with and provides access to information from one or more representations of a terminology.

    • The software application that provides

    Risk of non-alignment between SNOMED CT editions/versions in terminology services used by different applications

    Future options for reuse of terminology services by other applications that support the same published interface specification

  • Future options to switch to another provider of terminology services that conform to the same published interface specification

  • Future options for the reuse of terminology services by other applications that support the same published interface specification

  • Future options to switch to another provider of terminology services that conform to the same published interface specification

  • SNOMED CT terminology services
    is known as a SNOMED CT terminology server.
  • While terminology services may be applicable to several different terminologies, applications that provide SNOMED CT terminology services, should support access to the specific design features of SNOMED CT. These include the subtype hierarchy, description logic concept definitions, reference sets and expression constraints.

    • Find a concept based on a set of search criteria. The criteria may include text to be matched against terms associated with the concept and constraints requiring a concept to be a subtype of an identified concept or a member of an identified reference set.

    • Show the preferred term associated with an identified concept.

    Provide Feedback

    Terminology Services Definition

    Notes

    Examples

    Terminology Service Use Cases

    This section describes practical use cases which require the use of specific terminology services.

    Overview of Use Cases

    The following use cases are covered in this section:

    • Explore and Review SNOMED CT - Terminology services required for SNOMED CT browsers and exploration tools

    • Support EHR Data Entry - Services needed for electronic health record data entry with SNOMED CT

    • - Services for displaying SNOMED CT concepts in EHR systems

    • - Services required for reporting and analytics using SNOMED CT

    • - Services for creating and editing SNOMED CT reference sets

    • - Services for applying mapping reference sets between code systems

    • - Services for managing terminology changes and versioning

    • - Services to support terminology authoring and review processes

    Notes on the attributes used in the tables of this page:

    *Status: Applications designed to address this use case must support the practical requirements marked as Required. Support for the practical requirements marked as Optional is recommended as these provide enhanced functionality that may be required by some users.

    *Required Services: In most cases, a reference to a subsection of Terminology Service Types, implies a requirement for all services marked as Required in that subsection. However, where a reference is followed by a bulleted list, that list specifies the specific terminology services required. Some of the specific services listed as required for an Optional practical requirement may be marked as Recommended in the referenced subsection.

    *Dependencies: This columns contains references to services on which a Required Terminology Service depends. This column does not restate dependencies on services listed as required service or additional dependencies for essential requirements listed in earlier rows.

    A full list of the dependencies of each terminology service is provided in the relevant subsection of .

    Display EHR Data
    EHR Reporting and Analytics
    Reference Set Editing
    Apply Mapping Reference Sets
    Terminology Change Management
    Support Terminology Authoring and Review
    Provide Feedback

    Terminology Service Roles

    This section identifies three roles with an interest in SNOMED CT terminology services. The perspective of each of these roles is summarized with notes on general issues that those in particular roles should consider and references to relevant sections in the guide. The roles considered are as follows:

    • Terminology Service Users

    • Healthcare Application Providers

    SNOMED CT Terminology Services Guide

    The Terminology Services Guide describes the terminology services required to support effective access to the content and features of SNOMED CT. This guide primarily focuses on the terminology service requirements of applications that enable the use of SNOMED CT for clinical purposes.



    Terminology Service Types
    Terminology Service Providers
    Provide Feedback

    © Copyright 2026 International Health Terminology Standards Development Organisation, all rights reserved.

    This document is a publication of International Health Terminology Standards Development Organisation, trading as SNOMED International. SNOMED International owns and maintains SNOMED CT®.

    Any modification of this document (including without limitation the removal or modification of this notice) is prohibited without the express written permission of SNOMED International. This document may be subject to updates. Always use the latest version of this document published by SNOMED International. This can be viewed online and downloaded by following the links on the front page or cover of this document.

    SNOMED®, SNOMED CT® and IHTSDO® are registered trademarks of International Health Terminology Standards Development Organisation. SNOMED CT® licensing information is available at . For more information about SNOMED International and SNOMED International Membership, please refer to or contact us at .

    Provide Feedback

    Enabling Access to Editions and Versions

    Two key factors determine the ability of an instance of a terminology server to provide access to a particular SNOMED CT versioned edition. Firstly, the data that forms part of that versioned edition must be loaded into a data store that the terminology service is able to access. Secondly, unless the terminology server only has access to one versioned edition, the terminology server must allow the edition and version to be specified by the client application (see Select Edition and Version).

    The table below shows some of the different ways in which a terminology server may be designed and configured to enable access to a specific SNOMED CT edition or versioned edition Most of the options in the table require the client application to select the edition and version to which they require access.

    Enabling Edition and Versioned Edition Access

    Versioned Edition Accessibility
    Description
    Versioned Edition Selection
    Notes
    • The current version(s) used by its client applications

    • The version(s) its client applications were using prior to their most recent updates.

    Any versions of a single edition| A specific instance of a terminology server has access a datastore that contains the data required to access any version of a single edition.| Referring to a server instance implicitly identifies the edition.Any version of that edition can be selected by specifying the effective time for a snapshot.| Recommended for client applications that are processing, reporting, or analyzing data collected using a range of different versions of a single edition. Specific versions of several editions| A specific instance of a terminology server accesses a datastore that only contains data for several specific versions of a several editions. The edition and version can be selected from those available.| Recommended for client applications that require access to multiple editions.

    Any versions of several editions| A specific instance of a terminology server has access a datastore that contains data from the most recent full release for several editions. The edition can be selected from those available.Any version of the selected edition can be selected by specifying the effective time for a snapshot.| Recommended for client applications that are processing, reporting or analyzing data collected with using a range of different versions of more than one edition.

    The table below summarizes the recommended ways to identify a SNOMED CT edition or versioned edition using a URI.

    Method
    Terminology Resource
    General form and example
    Notes

    Apply Mapping Reference Sets

    This section considers the terminology services required to apply a mapping reference set to map data between SNOMED CT and another code system.

    A mapping reference set is a reference set designed to support the process of mapping data from one code system, classification, or terminology to another code system, classification, or terminology.

    In practice, these terminology services only get the relevant mapping data for the source concept (or source code in the other code system). The relevant mapping data may be one or more rows from the mapping reference set. If there are no rows, this implies that there are no maps from the source code. Otherwise, the rows of returned mapping data must be parsed using the rules applicable to the particular map to determine the result. These rules are found in the mapping guide associated with the particular map or mapping reference set type. For example, the mapping rules for the SNOMED International ICD-10 map are documented in the .

    The following table shows a summary of the services required to support effective use of a mapping reference set.

    Example:

    The {versionDate} is the effectiveTime of the set of module dependency reference set rows for this version of this edition. This is formally represented using the format YYYYMMDD (see Time data type).

    Uniform Resource Identifiers

    Edition

    Example:

    The SNOMED CT URI Standard defines globally unique identifiers for a wider range of terminology components. These URIs include the {moduleId} and {versionDate} noted above (see URI Standard section 2.1 URIs for Editions and Versions). Note: The URI http://snomed.info/sct/731000124108/version/20200301 refers to the 2020-01-31 version of the US Edition, which is formally defined to include the 731000124108 | US National Library of Medicine maintained module | and the two International Edition modules on which it depends (900000000000207008 | SNOMED CT core module | and 900000000000012004 | SNOMED CT model component module |).

    Versioned Edition

    Examples:

    —

    Other Options

    Edition

    Key, path or alias for an edition Example:

    A less formal approach that provides a more meaningful representation of the edition and version can be used. The example shown here is currently used by the Snowstorm terminology server to refer to the US Edition of SNOMED CT. Note: This Snowstorm path refers to an extended version of the formally defined US edition. In addition to the formally defined content noted above, it also includes the 5991000124107 | SNOMED CT to ICD-10-CM rule-based mapping module | and several other additional modules distributed by SNOMED International in separate release packages. The inclusion of these additional extension modules creates an extended versioned edition (see 5.2.2 Enabling Access to Extended Editions).

    Versioned Edition

    Combination key, path, or alias with the version date Example:

    —

    Fixed versioned edition

    A specific instance of a terminology server accesses a datastore that only contains data for a single versioned edition.

    Referring to a server instance implicitly identifies the edition and version.

    Specific versions of a single edition

    A specific instance of a terminology server accesses a datastore that only contains data for several specific versions of a single edition.

    Referring to a server instance implicitly identifies the edition. The version can be selected from those available.

    Recommended minimum for client applications only requiring access to a single edition.The accessible versions should include:

    Module identifier and version date

    Edition

    {moduleId}

    Example:

    900000000000207008

    The {moduleId} is an SCTID that identifies the edition. It does this by referring to the moduleId of the most dependent module in the edition. The other modules in the edition are specified by the module dependencies of that module.

    Identifying SNOMED CT Editions and Versioned Editions

    Provide Feedback

    Version

    Practical Requirement
    Required Services
    Dependencies

    Enable the selection of SNOMED CT edition and version to be used. REQUIRED

    N/A

    Get maps for a specified concept in an identified map reference set REQUIRED

    • Get maps based on combinations of refsetId and referencedComponentId

    Get maps for a specified code in another code system in an identified map reference set REQUIRED

    • Get maps based on combinations of refsetId and mapTarget

    N/A

    Provide Feedback

    Notes

    • There are several types of mapping reference set each of these supports different types of mapping.

      • Simple Map from SNOMED CT Reference Sets and Simple Map to SNOMED CT Reference Sets support one-to-one maps from or to SNOMED CT.

      • Complex and Extended Map from SNOMED CT Reference Sets support maps where additional information is required to determine the correct mapping from SNOMED CT to a statistical classification such as ICD-10.

      • Maps which have a requirement to indicate the degree of correlation between a SNOMED CT concept and other codes. (See Map Reference Sets which use "correlation" within their type / name.)

      • Code to Expression Reference Sets support maps from other code systems in cases where some or all the source codes may need to be represented by a postcoordinated expression.

    SNOMED International provides an online Mapping Tool that can be used to access maps that it distributes. This tool enables guests to view the maps (see https://mapping.ihtsdotools.org/).

    Services Required to Access Mapping Data

    ICD-10 Mapping Technical Guide

    When applying a mapping reference set it is important to note that most mapping reference sets are designed to be unidirectional and will not produce reliable results when used to map codes in the opposite direction.

    http://snomed.org/licensing
    http://www.snomed.org
    info@snomed.org
    Introduction
    Terminology Services Overview
    Terminology Service Use Cases
    Terminology Service Types
    Service Implementation Considerations
    Appendixes

    Support Terminology Authoring and Review

    This section identifies terminology services required to support the authoring and review of SNOMED CT content. This includes the creation and editing of concepts, descriptions, relationships, and reference sets. The terminology services described in this section are primarily used by terminology authors and reviewers working in terminology development environments. However, some of these services may also be used by applications that need to validate terminology content or provide terminology editing capabilities.

    Services Required to Support Terminology Authoring and Review

    The table below shows a summary of the terminology services required to support terminology authoring and review processes.

    Practical Requirement
    Required Services
    Dependencies

    Reference Set Editing

    A reference set is a standard format for maintaining and distributing a set of references to SNOMED CT components.

    The reference set mechanism provides a standard extensible mechanism that can be used to customize SNOMED CT to meet a wide range of practical use cases. Detailed information about reference sets is provided in the and in the

    The table below shows a summary of the terminology services required to support reference set creation and editing.

    Practical Requirement
    Required Services
    Dependencies

    Appendix A: Summary of Types and Use Cases

    This section summarizes the main types of terminology service requirements. For each requirement type, typical use cases are identified, along with how terminology services are applied to those use cases.

    Required Terminology Services
    Use Cases
    Application to Use Cases

    EHR Reporting and Analytics

    The design of SNOMED CT facilitates the use of a range of powerful reporting and analytic techniques. For more information about the applications of these techniques, please see the guide to . The same techniques can also be employed to support clinical decision support as described in the guide to Decision Support with SNOMED CT.

    The table below shows a summary of the terminology services required to support reporting and analytics.

    Practical Requirement
    Required Services
    Dependendies

    Display EHR Data

    Data stored in an electronic health record (EHR) that includes SNOMED CT concepts or expressions may also include a human readable term associated with each concept identifier. In this case, EHR data can be displayed without using any terminology services. However, as shown in the table below there are several situations in which it may be necessary to lookup and display a term rather than relying upon a term stored in the rec.

    The table below shows a summary of the services required to support display of EHR data including looked up terms.

    Reason
    Notes

    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.

    Enable the selection of SNOMED CT edition and version to be used. REQUIRED

    Select Edition and Version

    N/A

    Get concepts, descriptions, and relationships for review and editing. REQUIRED

    Get a Concept, Description or Relationship

    N/A

    Get terms for concepts to display in terminology editing interfaces. REQUIRED

    Get Terms for a Concept

    N/A

    Get concept definitions for review and validation. REQUIRED

    Get Definition of a Concept

    N/A

    Test concept subsumption relationships during authoring and review. REQUIRED

    Get and Test Concept Subtypes and Supertypes

    N/A

    Test reference set membership during authoring and review. REQUIRED

    Get and Test Reference Set Membership

    N/A

    Validate expression constraints during authoring and review. REQUIRED

    Validate and Apply Expression Constraints

    N/A

    Find concepts for use in terminology authoring and review. REQUIRED

    Find Concepts

    N/A

    Get concept model rules to ensure proper authoring. REQUIRED

    Get Concept Model Rules

    N/A

    Validate concept definitions and expressions during authoring. REQUIRED

    Validate Concept Definitions and Expressions

    N/A

    Test expression subsumption during authoring and review. OPTIONAL

    Test Expression Subsumption

    N/A

    Get reference set data for review and editing. OPTIONAL

    Get Data from a Reference Set

    N/A

    Get mapping data for review and editing. OPTIONAL

    Get Mapping Data

    N/A

    Note: The terminology services described in this section provide the foundation for terminology authoring and review. However, actual terminology editing applications typically require additional functionality beyond these services, such as:

    • User interface components for editing terminology content

    • Workflow management for authoring and review processes

    • Version control and change tracking

    • Integration with terminology classification engines

    • Export and import capabilities for terminology content

    These additional capabilities are outside the scope of this guide and are typically provided by specialized terminology authoring tools.

    Provide Feedback
    Select Edition and Version
    Get Mapping Data
    Get Data from a Reference Set
    Get Mapping Data
    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

    Select Edition and Version
    Get a Concept, Description or Relationship

    Get a Concept, Description, or Relationship

    - Explore and review SNOMED CT - EHR data entry - EHR data entry design - EHR reporting and analytics - Reference set editing - Terminology authoring and review

    Retrieve specified concepts to explore their descriptions, definitions, and hierarchy position; record data in an EHR; constrain UI templates; add concepts to reports or subsets; select attributes and values for authoring.

    Get Terms for a Concept

    - Explore and review SNOMED CT - EHR data entry design - EHR data entry - Display EHR data - Reporting and analytics - Authoring and review

    Display terms in search results, hierarchies, UI templates, EHR data displays, human-readable reports, and concept definitions.

    Get Definition of a Concept

    - Explore and review SNOMED CT - Authoring and review

    Display inferred definitions from relationships and stated definitions from OWL axioms. Show both in authoring environments.

    Get and Test Concept Subtypes and Supertypes

    - Explore and review SNOMED CT - EHR data entry design - EHR data entry - Reporting and analytics

    Display hierarchy views, apply subtype constraints in templates, constrain searches for entry, and apply subsumption tests in queries.

    Get and Test Reference Set Membership

    - EHR data entry design - EHR data entry - Reporting and analytics - Reference set editing

    Constrain searches by reference set membership, list reference set members for entry, and apply membership tests in queries and subset editing.

    Validate and Apply Expression Constraints

    - EHR data entry design - EHR data entry - Reporting and analytics - Reference set editing

    Apply expression constraints in templates, searches, reports, and analytics. Define subsets using intentional definitions.

    Find Concepts

    - Explore and review SNOMED CT - EHR data entry - EHR data entry design - Reporting and analytics - Authoring and review

    Search for concepts to display, enter, include in templates, use in reports/queries, or define new concepts.

    Identify Changes to the Terminology

    - Terminology change management - Manage impact of changes on EHR apps - Manage impact on extensions

    Identify added/changed/inactivated components, review inactive concepts in templates, records, and queries, and assess extension dependencies.

    Get Data from a Reference Set

    - Explore and review SNOMED CT

    Retrieve acceptability of descriptions in language reference sets.

    Get History Data

    - Terminology change management - Manage impact on EHR apps - Manage impact on extensions

    Identify inactivation reasons, retrieve replacements via historical associations, produce human-readable change reports, and support impact analysis.

    Get Mapping Data

    - Mapping data to/from another code system

    Retrieve maps for concepts in a specified map reference set.

    Get Concept Model Rules

    - EHR data entry - EHR data entry design - Reporting and analytics - Authoring and review

    Constrain and validate refinements during data entry, NLP, template design, reporting queries, and concept definitions.

    Validate Concept Definitions and Expressions

    - EHR data entry - EHR data entry design

    Record and validate expressions when no single concept matches. Create templates that record expressions.

    Test Expression Subsumption

    - EHR data entry - Reporting and analytics

    Apply subsumption tests in queries and include subsumed or equivalent expressions in reports.

    This guide primarily focuses on read-only terminology services without a user interface.

    • Applicable to all healthcare applications that require access to SNOMED CT.

    • Add-update services are only needed by those maintaining editions/extensions, which is a smaller audience.

    • Update services are interdependent and require complex version control and validation, making them unsuitable for generalized documentation here.

    • Detailed functionality of authoring tools is provided separately with those tools.

    • Services without a UI can be reused flexibly across different applications.

    • Applications can present SNOMED CT data in their own design styles while reusing the same terminology services.

    • UI-based terminology services are essentially composites of general services + UI components, with many possible combinations that cannot all be documented.

    • Instead, this guide notes general examples of binding terminology services to UI controls.

    Provide Feedback

    Select Edition and Version

    All

    Terminology Service Requirement Types

    Summary of Requirement Types

    Required unless the server only hosts one edition and version. These settings are applied before or as part of a service request.

    Focus on Read-Only Services

    Why Read-Only?

    Why No User Interface?

    {versionDate}
    20200131
    http://snomed.info/sct/{moduleId}
    http://snomed.info/sct/900000000000207008
    http://snomed.info/sct/{moduleId}/version/{versionDate}
    http://snomed.info/sct/900000000000207008/version/20200131
    http://snomed.info/sct/731000124108/version/20200301
    {server-url}/MAIN/SNOMEDCT-US
    {server-url}/MAIN/SNOMEDCT-US/2020-03-01

    Enable the selection of SNOMED CT edition and version to be used. REQUIRED

    N/A

    Get concepts or descriptions that are members of a reference set

    • In the case of a description, this includes the human-readable term for this refset member REQUIRED

    • Get a description

    N/A

    Get terms for concepts to use in human-readable descriptions of:

    • The current reference set

    • Concepts that are members of a reference set REQUIRED

    N/A

    Apply concept subsumption tests to identify candidate concepts for addition to or removal from a reference set. REQUIRED

    N/A

    Apply reference set membership criteria to identify:

    • Current members of the reference set being edited

    • Candidate concepts for addition to or removal from a reference set REQUIRED

    N/A

    Create and apply an expression constraint query:

    • as an intensional definition of reference set membership; or

    • to identify candidate concepts for addition to or removal from a reference set.

    • Get all concepts that conform to an expression constraint

    N/A

    Find concepts:

    • to find the id of a named reference set to be edited

    • to be added to or removed from a reference set; or

    • to be included in intensional definition of a reference set REQUIRED

    N/A

    Get reference set member data (i.e. data of reference sets that extend on the simple type reference set, e.g. data from map type reference sets, association type reference sets etc.) OPTIONAL

    N/A

    Update reference set member data OPTIONAL

    Reference set type-specific functionality

    N/A

    Provide Feedback

    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 and other systems codes, classifications, or knowledge resources.

    Services Required to Support Reference Set Creation and Editing

    SNOMED CT Reference Sets Guide
    SNOMED CT Release File Specifications.

    N/A

    Get terms for concepts to use in human readable representations of:

    • Query specifications

    • Reports and analytics results

    REQUIRED

    N/A

    Apply concept subsumption tests as part of a reporting or analytics query REQUIRED

    N/A

    Apply reference set membership criteria as part of a reporting or analytics query REQUIRED

    N/A

    Validate expression constraints REQUIRED

    • Validate an expression constraint

    N/A

    Apply an expression constraint query as part of a reporting or analytics query REQUIRED

    • Get all concepts that conform to an expression constraint

    N/A

    Find concepts to include in a reporting or analytics query including:

    • Concept identifiers for use in expression constraints and queries including:

      • Reference set identifiers for reference set membership tests

      • Supertypes for subsumption tests

    • Get concepts using constrained term searches

    • Create queries that are consistent with concept model rules

    N/A

    Include subsumed or equivalent expressions in the results of a reporting or analytics query

    OPTIONAL

    N/A

    Provide Feedback

    Services Required to Support EHR Reporting and Analytics

    Data Analytics with SNOMED CT

    Enable the selection of SNOMED CT edition and version to be used. REQUIRED

    To display the preferred term or fully specified name of a concept in the following situations:

    • If a record entry contains a concept identifier without an associated term

    It is good practice to store the selected term as well as the concept identifier but this is not mandatory.

    • If a communication contains a concept identifier without an associated term

    It is good practice to communicate the selected term as well as the concept identifier but this is not mandatory. In some cases, the design of a message or interchange format may not support the inclusion of terms for all concept identifiers. This may be a particular issue when postcoordinated expressions are communicated as some interchange formats may not support the inclusion of terms for each concept identifier in an expression.

    • If the synonym in a record entry or communication is ambiguous

    The term stored or communicated may be appropriate to the concept but may not be sufficiently clear.

    • For example, the term "fundus" is a valid synonym for four different concepts. Looking up the fully specified name for the concept identifier allows the display of term that removes this ambiguity.

    To display the preferred term for a concept in a familiar language:

    • If the term stored or communicated is in an unfamiliar language

    The term stored or communicated may be in a language that the user does not understand. If the concept is also included in the edition used by the viewer, it should be possible to display the term in the viewers own language.

    To confirm that a term linked to a concept identifier is a valid:

    • If there is a requirement for quality assurance validation

    Even when a term is stored or communicated with a concept identifier, it may be useful to confirm that the term included is associated with that concept identifier.

    Practical Requirement
    Required Services
    Dependencies

    Enable the selection of SNOMED CT edition and version to be used REQUIRED

    N/A

    Display terms for the concepts in EHR record entries and communications REQUIRED

    Provide Feedback

    Reasons for Looking Up Terms when Displaying EHR Data

    Services Required to Enable Display of EHR Data

    REQUIRED
    SNOMED CT concepts
    Select Edition and Version
    Get a Concept, Description or Relationship
    Get Terms for a Concept
    Get and Test Concept Subtypes and Supertypes
    Get and Test Reference Set Membership
    Validate and Apply Expression Constraints
    Find Concepts
    Get Data from a Reference Set

    Attributes and value ranges for using in expression constraints and queries

    REQUIRED

    Select Edition and Version
    Get Terms for a Concept
    Get and Test Concept Subtypes and Supertypes
    Get and Test Reference Set Membership
    Validate and Apply Expression Constraints
    Validate and Apply Expression Constraints
    Find Concepts
    Get Concept Model Rules
    Test Expression Subsumption

    N/A

    Select Edition and Version
    Get Terms for a Concept

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

    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.

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

    Appendix C - Videos

    This playlist brings together all videos on searching and data capture using SNOMED CT from the SNOMED International Implementation Course. The videos introduce key concepts, practical implementation considerations, and real-world examples to help you understand how SNOMED CT can be applied to support terminology services.

    Open playlist on YouTube:

    👉 Click here to view the full playlist on YouTube

    If you would like the full e-learning experience, you can enroll in the , which is self-paced and allows you to mix and match topics of interest. The course is free for participants from SNOMED International Member countries.

    How to navigate the playlist in GitBook

    When a YouTube playlist is embedded in GitBook, only one video is shown on the page at a time, but all playlist videos are still available.

    • Use the forward () and back () arrows on the video player to move between videos in the playlist

    Get Data from a Reference Set

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

    • 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:

    Healthcare Application Providers

    Application providers should refer to the following sections of this guide for statements of terminology service requirements that need to be met for effective access to SNOMED CT.

      • Which notes user requirements for high performance services that provide appropriate access to SNOMED CT.

    Appendix B: Editions, Versions and Extensions

    This appendix explains the different types of SNOMED CT editions, versions, and extensions. It also outlines the requirements for terminology services and applications that use them.


    • Terminology service providers must deliver services that can load data from SNOMED CT release packages that conform to the Release File Specifications.

      • They must enable client applications to access the content of a selected SNOMED CT versioned edition.

    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

    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.

    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

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

    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 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&referencedComponentId=1338007&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&referencedComponentId=74400008&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&referencedComponentId=196607008&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

    Example 5. ICD-10 Map for

    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

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

    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&system=http%3A%2F%2Fsnomed.info%2Fsct+&source=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs+&target=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs+&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&system=http%3A%2F%2Fsnomed.info%2Fsct&source=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs+&target=http%3A%2F%2Fhl7.org%2Ffhir%2Fsid%2Ficd-10&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

    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

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

    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";

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

    Map Reference Sets and Documentation

    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

    Complex and Extended Map from SNOMED CT Reference Sets

    Explore and Review SNOMED CT
  • 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

    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.

    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

    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

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

    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.

    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

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

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

    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.

    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 Concept Subtypes and Supertypes
    Get and Test Reference Set Membership
    Validate and Apply Expression Constraints
    Expression Constraint Language
    Validate and Apply Expression Constraints
    Select Edition and Version
    Get a Concept, Description or Relationship
    Get Terms for 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
    Get Definition of a Concept

    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 Get and Test Reference Set Membership. 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:

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

    • Get Definition of a Concept requires access to the owlExpression in the OWL axiom reference set 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:

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

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

    • Get Concept Model Rules 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

    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.

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

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

    • Other Services

      • Get Terms for a Concept

      • Get Definition of a Concept

      • Get History Data

      • Get Mapping Data

      • Get Concept Model Rules

    • Select Edition and Version

    • Get and Test Reference Set Membership

    Service Name
    API Call 2
    Result

    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

    Service Name
    API Call
    Result

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

    Service Name
    SQL Query
    Result

    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.

    Provide Feedback

    Overview

    Notes

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

    Snowstorm API

    FHIR API

    MySQL Example Database

    Terminology Service Types
    • Which describes specific terminology services or functions that are required to enable effective use of SNOMED CT

  • Terminology Service Use Cases

    • Which provides examples of practical use cases involving access to SNOMED CT that an application may need to complete. For each of these use cases it identifies one or more of the required terminology services that can be used to complete the required activity.

  • As noted in the following section, these requirements can be met either directly by the application or by use of SNOMED CT terminology services accessed through an API.

    Applications that require access to SNOMED CT are direct users of SNOMED CT terminology services. Organizations that design, develop, supply and support those applications can enable access to SNOMED CT in several different ways. The main options are identified in the table below with notes on the advantages and disadvantages of each option from the perspective of the application provider.

    The first two options shown in the table require the application provider to also develop and maintain terminology services. Application providers considering those options should also take a look at the notes on the Terminology Services Provider Role.

    Terminology Services Option
    Advantages for Application Provider
    Disadvantages for Application Provider

    Application includes built-in functions for the terminology services it requires

    • Integrated approach may simplify installation.

    • No external dependency on third parties for supply or support of terminology service.

    • Application provider must create, maintain, and support terminology services.

    • Must keep pace with changes to SNOMED CT that affect user requirements.

    • Must enable access to appropriate SNOMED CT edition versions for each customer.

    Application uses a defined interface to terminology services provided by the same organization

    • Purpose-built terminology server matched to application requirements.

    • No external dependency on third parties.

    • Potential to license terminology services for use with other applications.

    Provide Feedback

    Addressing Terminology Service Requirements

    Terminology Service Users

    Application Options for Access to Terminology Services

    Table: Options for Application Access to Terminology Services - Application Provider Perspective

    They should also enable access to extended versioned editions that include additional modules compatible with the selected edition.

  • They must provide access to data identifying which versioned edition (or extended versioned edition) is currently being accessed.

  • Terminology service users must ensure that the services they procure can be configured to access the SNOMED CT versioned editions (or extended editions) required by their organization, specialty, or national authority.

  • Healthcare application providers must ensure that applications:

    • Support access to configurable terminology services that can provide the required editions.

    • Track the history of the edition or extension in use, since this may affect data interpretation and analysis.

  • A SNOMED CT edition is a complete set of SNOMED CT components and reference set members that either belong to an identified module, or to one of the modules on which that module depends.


    • The module that defines the scope of an edition is called the focus module.

    • All editions (except the International Edition) combine one or more extension modules with the International Edition.

    • A complete edition may be prepared and released by SNOMED International, a National Release Center, or an Affiliate.

    • Dependencies between modules are recorded in the Module Dependency Reference Set.

    • Editions can be identified using a Uniform Resource Identifier (URI) as defined in the URI Standard.


    Edition Type
    Definition
    Notes

    International Edition

    The set of SNOMED CT components and reference set members that belong to the International focus module or its dependencies.

    Includes foundational content required by all other modules. The focus module is currently the SNOMED CT core module, with SNOMED CT model component module as a dependency. Can be supplemented by national or affiliate extensions.

    Member / National Edition

    A set of components and reference set members that belong to a focus module defined by a National Release Center (NRC) or its dependencies.

    NRCs may produce multiple editions. Typically combines a national focus module with the International Edition and other required extensions. Distributed as part of a National Release.


    Provide Feedback

    Requirements

    Notes on Editions

    Edition Types

    SNOMED CT Implementation Course

    Importing Release File Data

    Importing and Validating Release Files

    When working with SNOMED CT, it is critical to ensure that release packages are correctly validated and imported. Proper validation safeguards data integrity and ensures that terminology services, applications, and users can rely on accurate and consistent content. This section outlines the general integrity checks required for all release packages, additional checks for extensions, and the requirements for importing release files.


    General Release Package Integrity Checks

    To validate the integrity of SNOMED CT release packages:

    • Consistency of distribution files

      • All imported files must be from the same release.

      • The set of files must be complete and include all mandatory components.

    • Delta releases

      • Previously imported data must be from the version immediately prior to the delta release being imported.

    • Snapshot or full releases

      • Pre-existing data must be removed before import, or

      • The process must overwrite duplicates so that:

    • Component identifiers

      • Must have a valid partition identifier for the type of component.

      • Must include a valid check-digit.

    • Field constraints

      • All fields must comply with data type, size, and value constraints defined in the Release File Specifications.

    • Concept integrity

      • All concepts must have at least two active descriptions:

        • One Synonym (900000000000013009).

    • Other consistency checks

      • May be applied as needed to ensure overall data integrity.


    When importing an extension, additional checks must be performed to ensure proper installation and compatibility:

    • Recognition and approval

      • The extension must be recognized and formally approved by an appropriate authority.

    • Compatibility


    Terminology service providers must ensure that terminology services provide access to all the data in selected versioned views of a selected SNOMED CT edition.

    • Applies to all editions and versioned views the service can access.

    • Data must support the purposes defined in the SNOMED CT Release File Specifications, though storage format does not need to match the release file structures exactly.

    • The simplest approach is to import all files from the full release and/or snapshot release of the required edition.


    Exception
    Notes

    The data structure of each release file is defined in the SNOMED CT Release File Specifications:

    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.

    May be less attractive to organizations already using a terminology server.
    • Must create, maintain, and support terminology services.

    • Must keep up with terminology changes affecting user requirements.

    • Must ensure customer access to correct SNOMED CT editions.

    • May be less attractive to customers already using a different terminology server.

    Application uses terminology services provided by a specified third party

    • No need to build or maintain terminology services.

    • Less burden to track SNOMED CT developments (managed by server).

    • Less responsibility for managing edition/version access.

    • Must support application integration with chosen third-party terminology services.

    • External dependency on the third-party provider.

    • Risk of support conflicts between application and terminology server.

    • Development limitations if the terminology server doesn’t evolve with SNOMED CT.

    • May be less attractive to organizations using a different terminology server.

    Application supports use of terminology services that offer an interface that conforms to a published specification

    • No need to build or maintain terminology services.

    • Less responsibility for SNOMED CT updates or edition/version management.

    • May appeal to organizations using that interface.

    • Enables migration to alternate providers if current service is discontinued or inadequate.

    • Must support interface integration with third-party services.

    • Performance or result variability across implementations using the same interface.

    • External dependency for support.

    • Support conflicts possible (origin of issue unclear).

    • Risk of stagnation if the server doesn't evolve to meet application needs.

    Application configurable to support use of a specified range of terminology services

    • No need to build or maintain terminology services.

    • Less burden to follow SNOMED CT changes (server responsibility).

    • May appeal to organizations already using supported terminology services.

    • Enables migration to other services if current one is discontinued or underperforms.

    • Must support multiple interfaces to third-party services.

    • Result inconsistency across supported terminology services.

    • External dependency on terminology service providers.

    • Support conflicts possible.

    • Development may be limited by server responsiveness to SNOMED CT changes.

    Affiliate Edition

    A set of components and reference set members that belong to a focus module created by an Affiliate Licensee with an allocated namespace, or its dependencies.

    May extend the International Edition or a National Edition.

    Extended Edition

    A SNOMED CT edition to which additional modules have been added.

    Used to add modules containing maps, subsets, or other derivatives. Dependencies must be satisfied. Additional modules may include reference sets, metadata concepts, and subtype relationships, but not new clinical concepts, descriptions, or relationships.

    Versioned Edition

    A SNOMED CT edition that is published on a specific date.

    International releases occur twice a year (January and July). National extensions often follow, with some delays. Some extensions (e.g., medication-related) may release more frequently.

    Extended Versioned Edition

    A versioned edition with additional modules added.

    Must satisfy all module dependencies. Additional modules may include reference sets, metadata concepts, and subtype relationships, but not new concepts, descriptions, relationships, or OWL members.

    A snapshot import does not contain obsolete rows.
  • A full release import matches the full release exactly.

  • One Fully Specified Name (900000000000003001).
  • All active concepts (except the root concept 138875005 | SNOMED CT Concept|) must have at least one active Is a relationship (116680003).

  • The extension must be based on, or supported by, the currently installed version of the International Edition.

  • Required versions of other dependent extensions must already be installed (or be part of the same import process).

  • Module dependencies

    • All dependencies of the extension module must be listed in the Module Dependency Reference Set.

    • Each dependency row must:

      • Match the extension’s moduleId.

      • Have a sourceEffectiveTime that matches the current version of the extension.

      • Reference the correct dependent modules and target effective times.

  • Component validation

    • All components must have a valid moduleId for the extension.

    • All component identifiers must:

      • Be unique per effectiveTime.

      • Have a valid partition identifier.

      • Use a namespace identifier appropriate to the extension provider.

      • Include a valid check-digit.

    • All fields must meet data type, size, and value constraints.

  • Where this is not possible, alternative sources may be used (see below).

    Importing delta data between two versions from a full release

    Import only rows where: • effectiveTime > start date • effectiveTime ≤ end date. If multiple rows exist for the same id, import only the most recent.

    Importing edition data from a multi-edition release package

    Import only rows where the moduleId matches the edition’s moduleId or the moduleId of a dependent module.

    Importing edition data from multiple release packages

    Import only rows where the moduleId matches the edition or dependent modules. If dependencies are missing, import from additional packages. Avoid duplicates (rows with the same id and effectiveTime).

    Importing snapshot data from a full release (same version)

    Import only rows with the most recent effectiveTime for each unique id. Discard all other rows.

    Importing snapshot data from a full release (later version)

    Discard rows newer than the required version date. From the remaining rows, import only the most recent effectiveTime for each unique id.

    Importing delta data from a full or snapshot release (same version)

    Import only rows with an effectiveTime greater than the previous release date.

    Additional Checks for Extension Release Files

    Importing Release Files

    Alternative Sources for Importing Release Views

    Notes

    https://app.gitbook.com/s/irKbJsZG57nSWZA4GT0M/4-component-release-files-specification
    https://app.gitbook.com/s/irKbJsZG57nSWZA4GT0M/5-reference-set-release-files-specification
    Provide Feedback
    Reference set identifier
  • Optional: Language/dialect2

  • 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|
    111613008 | Closed skull fracture with intracranial injury|
    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)

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

    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.

    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

    https://www.hl7.org/fhir/snomedct.html
    IETF RFC1738
    GET [snowstorm]/MAIN%2F2020-01-31/members?referenceSet=447562003&amp;amp;referencedComponentId=32398004&amp;active=true
    GET [snowstorm]/MAIN/2020-01-31/members?referenceSet=447562003&referencedComponentId=111613008&active=true
    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
    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]/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;
    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).
    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&amp;amp;term=ren+ston&amp;ecl=%3C64572001%7CDisease%7C
    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
    http://hl7.org/fhir/valueset-operation-expand.html
    4
    4
    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 SNOMED CT Release File Specifications.

    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

    • Description not found: Return appropriate error message.

    • Description found: Return data associated with the description.

    • Other terminology services

      • All except Select Edition and Version.

    • Use cases

    • 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

    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

    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

    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

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

    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.

    Includes the definition status but does not include the stated or inferred definition of the concept.
    Also includes human readable symbolic names for concept enumerations (e.g. " type ": "SYNONYM", "caseSignificance": "CASE_INSENSITIVE" )
    A representation of the subtype relationships of the concept

    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.

    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

    Get relationships by identifier

    for example

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

    Explore and Review SNOMED CT
    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]/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

    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

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


    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.

    Explore and Review SNOMED CT

    SNOMED CT browsers and other applications that enable access SNOMED CT concepts allow the content and structure of the terminology to be explored. This exploration can serve many different purposes, ranging from allowing people to get a broad idea of the scope of SNOMED CT to looking for specific concepts that interest them. The same applications can be used to enable a more thorough review of the terminology in a particular specialty area to assess the breadth, depth and applicability of SNOMED CT to a particular set of requirements. Tools that enable visual review of a released SNOMED CT Edition are also valuable for quality assurance and when considering requests for addition or changes to the terminology.

    Practical Requirements and Related Terminology Services

    The table below shows a summary of the terminology services required to support effective exploration and review of SNOMED CT content.

    Practical Requirement
    Status
    Required Services
    Dependencies

    reporting and analytics queries
  • 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.

  • Check whether it existed in the previous release and, if so, its status there (active, inactive, or none).
  • 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 Definition of a Concept
  • 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
    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.

    N/A

    Enable the display of the definition of a concept.

    REQUIRED

    N/A

    Enable the display of the SNOMED CT subtype hierarchy, including supertype parents and subtype children.

    REQUIRED

    • Get subtype children of a concept • Get supertype parents of a concept

    N/A

    Enable concepts to be found by term searches.

    REQUIRED

    • Find concepts by term search only

    N/A

    Enable concepts to be found by constrained term searches.

    OPTIONAL

    • Find concepts by constrained term search

    Details

    Enable the display of an indication of the reference sets of which a specified concept or description is a member.

    OPTIONAL

    N/A

    Enable the display of the acceptability of a specified description in an identified language reference set

    OPTIONAL

    N/A

    Enable the display of reference set data related to a specified reference set member.

    OPTIONAL

    N/A

    Enable the display of all members of a specified reference set and the reference set data related to each member.

    OPTIONAL

    N/A

    Enable the selection of SNOMED CT edition and version to be explored.

    REQUIRED

    Select Edition and Version

    N/A

    Enable concepts to be found by identifier.

    REQUIRED

    Get a Concept, Description or Relationship

    N/A

    Enable the display of terms for any identified concept.

    REQUIRED

    Provide Feedback

    Release Types and Versioned Views

    Importing Release Types

    Requirements

    • Organizations that maintain SNOMED CT edition(s) or extension(s) must distribute one or more release package(s).

      • Each release package must contain a full release for the current version of an edition or extension for which they are responsible.

      • Optionally, each release package may also contain a snapshot release and/or delta release for the same version of the same edition or extension.

    • Terminology service providers must ensure their service can import data from either a full or snapshot release of a selected edition or extension.

      • They should also consider enabling their service to update a previously imported edition or extension using a delta release.

    • Healthcare application providers should ensure that their applications can work with terminology services that support importing and updating SNOMED CT using the available release types.

    • Terminology service users must confirm that the healthcare applications and terminology services they procure:

      • Provide access to the SNOMED CT editions and extensions they require.

      • Support updates to more recent versions of those editions and extensions.


    Release Type
    Description

    The following sections illustrate the differences between delta, full, and snapshot release types across five releases of a simplified example release file.

    Symbol
    Meaning

    • Six components created.

    • Delta, Full, and Snapshot are identical (no previous release).

    Delta, Full, Snapshot:

    id
    effectiveTime
    active
    term
    • Component 3 changed from 3rd → third.

    id
    effectiveTime
    active
    term
    • Components 7 (fourth) and 8 (fifth) added.

    id
    effectiveTime
    active
    term
    • Component 4 inactivated.

    id
    effectiveTime
    active
    term
    • Component 5 inactivated.

    • Component 6 changed to sixth.

    • Component 9 added (seventh).

    id
    effectiveTime
    active
    term
    • All SNOMED CT release packages must include a set of full release files for a SNOMED CT edition or extension.

      • A full release includes the complete history of the content of that edition or extension.

      • This allows a terminology server to enable access to versioned views of the content of this edition or extension as it was at any point between its first release and the current release.


    A versioned view is a set of component versions and reference set member versions defined by the characteristics of their effectiveTime.

    • Versioned views and release types are closely related.

    • A release type is a physical representation of a particular versioned view.

    • Some versioned views are not instantiated as release types, but all valid views of a SNOMED CT edition can be generated from a full release.

    • Includes the most recent version of all components and reference set members at a specified point in time.

    • Uses:

      • The current snapshot view is the most important and is in constant use during daily operations.

    • Includes only rows representing changes to components and reference set members since a specified date or between two dates.

    • Uses:

      • When updating to a new version, delta views identify components that were added, updated, or inactivated between releases.

    • Includes all versions of all components and reference set members in a full release.

    • Uses:

      • Useful for organizations that do not apply every update, but still need to interpret data that references content not in the snapshot view they use.


    View
    Description
    View
    Description

    To enable terminology services to access a full view of a SNOMED CT edition:

    • Import a full release of the edition into an appropriate datastore.

    • To update:

      • Import the latest full release, replacing the old data; or

    To provide access to a snapshot view:

    • Import the current snapshot release; or

    • Selectively import data from the current full release (most recent versions only); or

    • Filter the full view to include only the most recent version of each component before a specified date.

    To update to a new snapshot view:

    • Use any of the above methods to add or replace a snapshot view; or

    • Import the latest delta release and update the snapshot accordingly.

    To provide access to a delta view:

    • Import the delta release for that edition; or

    • Selectively import rows from the full release where effectiveTime is after the previous release date and on or before the current release date; or

    • Filter a full release to generate configurable delta views between arbitrary dates.

    Configurable delta views may include:

    • Only the most recent change to each component within the period, or

    • All changes to each component during that period.

    Get Definition of a Concept

    Overview

    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.

    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.

    Requirements and Options

    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 .

    Service Name and Status
    Input
    Output
    Service Name and Status
    Input
    Output
    • Other Services

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

    Get Terms for a Concept
    Get Definition of a Concept
    Get and Test Concept Subtypes and Supertypes
    Find Concepts
    Find Concepts
    Test Reference Set Membership
    Get Data from a Reference Set
    Get Data from a Reference Set
    Get Data from a Reference Set

    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.

    Validate and Apply Expression Constraints
  • Find Concepts

  • https://github.com/SNOMED-Documents/snomed-terminology-services-guide/blob/main/4%20terminology-service-types/broken-reference/README.md

  • Test Expression Subsumption

  • Use Cases

    • Explore and Review SNOMED CT

    • Support Terminology Authoring and Review

  • -- 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;

    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.

    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.

    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)

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

    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

    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.

    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

    This service is not supported by the FHIR terminology services API

    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;

    Practical Requirements for Access to Concept Definitions

    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

    Get and Test Concept Subtypes and Supertypes
    Get and Test Concept Subtypes and Supertypes
    Get and Test Reference Set Membership
    Select Edition and Version
    Get a Concept, Description or Relationship
    Provide Feedback
    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

    🟥

    Inactivated version of a component

    ◼️

    Not the most recent version (historical row)

    1

    second

    🟩 3

    20010131

    1

    3rd

    🟩 4

    20010131

    1

    forth

    🟩 5

    20010131

    1

    V

    🟩 6

    20010131

    1

    VI

    id
    effectiveTime
    active
    term

    ⚪ 1

    20010131

    1

    first

    ⚪ 2

    id
    effectiveTime
    active
    term

    ⚪ 1

    20010131

    1

    first

    20030131

    1

    fifth

    id
    effectiveTime
    active
    term

    ⚪ 1

    20010131

    1

    first

    id
    effectiveTime
    active
    term

    ⚪ 1

    20010131

    1

    first

    id
    effectiveTime
    active
    term

    ⚪ 1

    20010131

    1

    first

    ⚪ 2

    id
    effectiveTime
    active
    term

    ⚪ 1

    20010131

    1

    first

    20050131

    1

    sixth

    🟩 9

    20050131

    1

    seventh

    id
    effectiveTime
    active
    term

    ⚪ 1

    20010131

    1

    first

    id
    effectiveTime
    active
    term

    ⚪ 1

    20010131

    1

    first

    The extent to which a terminology service supports access to different versioned views may vary.

  • Terminology service providers must:

    • Optimize performance of access to the current snapshot view of a selected edition or extension.

    • Provide access to earlier snapshot views and delta views to support:

      • Analysis of data entered using earlier versions.

      • Terminology change management when updating to newer versions.

  • Healthcare application providers must ensure that their applications can use terminology services that provide access to required versioned views of SNOMED CT.

    • Services that support access to the current snapshot view should be selected and optimized.

    • Services that enable access to a new version of the same edition should also be accessible to manage updates.

    • Access to earlier versions should be available to support analysis of data recorded with content that has since been inactivated.

  • Terminology service users must procure applications and services that:

    • Optimize access to the current snapshot view of the selected versioned edition.

    • Support updates to newer versions.

    • Support analysis of data recorded using content that has since been inactivated.

  • When updating to a new version, access to the earlier snapshot is required to determine the type of change made to each component.
  • When reviewing, analyzing, or reporting older data, snapshot views from the relevant time may help interpret unexpected variations.

  • Access to earlier full views may be required for forensic review or anomaly resolution.

    All snapshot views of a range of different editions

    Supports snapshot views for multiple editions. ✅ Meets requirements for data entry, display, change management, retrospective data analysis, and access to modules from any supported edition.

    Configurable delta views across multiple editions

    Shows changes between two points across one or more editions. Useful in cases where multiple editions are in use.

    Import the latest delta release and append it to the existing full release data.

    Full

    Release files contain every version of every component and reference set member ever released. Enables access to any snapshot view and comparisons between releases.

    Snapshot

    Release files contain only the most recent version of every component and reference set member as at the release date. Enables access to the current release snapshot and comparison of changes between snapshots.

    Delta

    Release files contain only rows representing versions created since the previous release date. Supports incremental updates to full or snapshot data and reviewing changes between releases.

    ⚪

    Unchanged component (still active and unchanged in this release)

    🟩

    New component added in this release

    🟨

    Updated version of an existing component

    🟩 1

    20010131

    1

    first

    🟩 2

    🟨 3

    20020131

    1

    third

    🟩 7

    20030131

    1

    fourth

    🟥 4

    20040131

    0

    forth

    🟥 5

    20050131

    0

    V

    Single snapshot view of an edition

    Supports only one preset snapshot view (the current version). The server is reconfigured when updating to a newer version. ✅ Meets requirements for current data entry and display. ❌ Does not meet requirements for change management, retrospective data analysis, or access to modules outside the edition.

    Multiple snapshot views of an edition

    Supports snapshot views for a limited set of versions (e.g., current and previous). Versions can be specified in requests. ✅ Meets requirements for data entry, display, and change management. ⚠️ Partially meets requirements for retrospective data analysis. ❌ Does not meet requirements for access to modules outside the edition.

    All snapshot views of an edition

    Supports snapshot views for any point in time within an edition. ✅ Meets requirements for data entry, display, change management, and retrospective data analysis. ❌ Does not meet requirements for modules outside the edition.

    Single delta view (current vs. previous version)

    Shows changes between the current version and the previous version of an edition. Useful for reviewing the most recent changes. Also requires access to the snapshot of the previous release.

    Multiple delta views (between adjacent versions)

    Shows changes between earlier releases (each version vs. its predecessor). Useful for reviewing historical changes and addressing issues retrospectively. Requires access to the snapshot view prior to each delta.

    Configurable delta views (between any two dates)

    Flexible solution showing changes between any two specified points. Requires access to a full release. Supports identifying all changes within the period. May include one or all changes for each component.

    Release Type Characteristics and Uses

    Note: Delta files have been removed from the SNOMED International release package, Managed Service Extensions and Derivative packages. Instead, a Delta Generation Tool is available to create deltas between two fixed release dates.

    If the release package does not include a snapshot release or delta release, equivalent views can be derived from the full release.

    Comparing the Content of Different Release Types

    Key to Symbols

    Release 20010131 — First release

    Release 20020131 — Second release

    Release 20030131 — Third release

    Release 20040131 — Fourth release

    Release 20050131 — Fifth release

    Supporting Versioned Views

    Requirements

    Types of Versioned Views

    Snapshot view

    Delta view

    Full view

    Terminology Service Versioned View Options

    Snapshot views that may be supported

    Delta views that may be supported

    Creating and Updating Versioned Views

    Full views

    Snapshot views

    Delta views

    Provide Feedback

    20010131

    🟩 8

    🟨 6

    Get and Test Concept Subtypes and Supertypes

    4.5 Get and Test Concept Subtypes and Supertypes

    Overview

    The inferred definition of each concept includes a set of one or more subtype relationships relationships.

    A subtype relationship is a relationship that asserts that a concept is a subtype of another concept.

    • Subtype relationships are represented by relationship type 116680003 | is a| .

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

    • Subtype relationships are transitive. Each individual subtype relationship links a concept to a supertype parent concept. That concept will also have one or more subtype relationships to its own supertype parents.

    • These transitive chains of subtype relationships link every active concept to a set of supertype ancestors and eventually to the .

    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
    • Other Services

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

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

    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.

    20010131

    1

    second

    ◼️ 3

    20010131

    1

    3rd

    🟨 3

    20020131

    1

    third

    ⚪ 4

    20010131

    1

    forth

    ⚪ 5

    20010131

    1

    V

    ⚪ 6

    20010131

    1

    VI

    ⚪ 2

    20010131

    1

    second

    🟨 3

    20020131

    1

    third

    ⚪ 4

    20010131

    1

    forth

    ⚪ 5

    20010131

    1

    V

    ⚪ 6

    20010131

    1

    VI

    ⚪ 2

    20010131

    1

    second

    ◼️ 3

    20010131

    1

    3rd

    🟨 3

    20020131

    1

    third

    ⚪ 4

    20010131

    1

    forth

    ⚪ 5

    20010131

    1

    V

    ⚪ 6

    20010131

    1

    VI

    🟩 7

    20030131

    1

    fourth

    🟩 8

    20030131

    1

    fifth

    ⚪ 2

    20010131

    1

    second

    🟨 3

    20020131

    1

    third

    ⚪ 4

    20010131

    1

    forth

    ⚪ 5

    20010131

    1

    V

    ⚪ 6

    20010131

    1

    VI

    🟩 7

    20030131

    1

    fourth

    🟩 8

    20030131

    1

    fifth

    20010131

    1

    second

    ◼️ 3

    20010131

    1

    3rd

    🟨 3

    20020131

    1

    third

    ⚪ 4

    20010131

    1

    forth

    🟥 4

    20040131

    0

    forth

    ⚪ 5

    20010131

    1

    V

    ⚪ 6

    20010131

    1

    VI

    ⚪ 7

    20030131

    1

    fourth

    ⚪ 8

    20030131

    1

    fifth

    ⚪ 2

    20010131

    1

    second

    🟨 3

    20020131

    1

    third

    🟥 4

    20040131

    0

    forth

    ⚪ 5

    20010131

    1

    V

    ⚪ 6

    20010131

    1

    VI

    ⚪ 7

    20030131

    1

    fourth

    ⚪ 8

    20030131

    1

    fifth

    ⚪ 2

    20010131

    1

    second

    ◼️ 3

    20010131

    1

    3rd

    🟨 3

    20020131

    1

    third

    ⚪ 4

    20010131

    1

    forth

    🟥 4

    20040131

    0

    forth

    ⚪ 5

    20010131

    1

    V

    🟥 5

    20050131

    0

    V

    ⚪ 6

    20010131

    1

    VI

    🟨 6

    20050131

    1

    sixth

    ⚪ 7

    20030131

    1

    fourth

    ⚪ 8

    20030131

    1

    fifth

    🟩 9

    20050131

    1

    seventh

    ⚪ 2

    20010131

    1

    second

    🟨 3

    20020131

    1

    third

    🟥 4

    20040131

    0

    forth

    🟥 5

    20050131

    0

    V

    🟨 6

    20050131

    1

    sixth

    ⚪ 7

    20030131

    1

    fourth

    ⚪ 8

    20030131

    1

    fifth

    🟩 9

    20050131

    1

    seventh

    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.

    Validate Concept Definitions and Expressions
  • Test Expression Subsumption

  • Use Cases

    • Explore and Review SNOMED CT

    • EHR Data Entry

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

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

    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

    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.

    Get supertype ancestors of a concept

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

    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

    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.

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

    • 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 children of a concept

    GET [snowstorm]/browser/[branch]/concepts/[conceptId]/children

    for example

    GET [snowstorm]/browser/MAIN/2020-01-31/concepts/80146002/children

    Encoded URL

    GET [snowstorm]/browser/MAIN%2F2020-01-31/concepts/80146002/children

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

    The data returned for each concept includes:

    • 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

    GET [snowstorm]/browser/[branch]/concepts/[conceptId]/parents

    for example

    GET [snowstorm]/browser/MAIN/2020-01-31/concepts/80146002/parents

    Encoded URL

    GET [snowstorm]/browser/MAIN%2F2020-01-31/concepts/80146002/parents

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

    The data returned for each concept includes:

    • All concept release file data

    • The preferred term and fully specified name.

    Also returns the total number of parent concepts.

    Get subtype children of a concept

    FHIR does not provide a specific operation for this service, but the SNOMED CT Expression Constraint Language supports that retrieval of the direct children of SNOMED CT concept, and can thus be used to enable this service through the ValueSet/$expand operation.

    GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/<![predicateSupertypeId]&count=10

    for example:

    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/<!26322001&count=10

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

    The data returned for each concept includes:

    • 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:

    • count to restrict the number of children returned.

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

    Get supertype parents of a concept

    FHIR does not provide a specific operation for this service, but the SNOMED CT Expression Constraint Language supports that retrieval of the direct parents of SNOMED CT concept, and can thus be used to enable this service through the ValueSet/$expand operation.

    GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/>![predicateSubtypeId]&count=10

    for example:

    GET [fhir]/ValueSet/$expand?url=[editionURI/versionURI]?fhir_vs=ecl/>!26322001&count=10

    Returns a JSON representation of data about each of the 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 children of a concept

    SELECT id,term FROM snap_rel_child_fsn    WHERE conceptId=[conceptId]

    for example

    SELECT id,term FROM snap_rel_child_fsn    WHERE conceptId=80146002

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

    • 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

    SELECT id,term FROM snap_rel_parent_fsn WHERE conceptId=[conceptId]

    for example

    SELECT id,term FROM snap_rel_parent_fsn WHERE conceptId=80146002

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

    • 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

    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 root concept|
    Validate and Apply Expression Constraints
    Find Concepts
    Select Edition and Version
    Get a Concept, Description or Relationship
    Get Definition of a Concept
    Expression Constraint Language syntax
    Provide Feedback

    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

    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

    • 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):

        • 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

    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

    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

    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

    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

    Optimizing Searches
    Search for Words within in Any Order
    Optimize Display of Search Results
    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).

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

    • The property total with value 0.

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

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

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

    not-subsumed indicates that there is no subsumption relationship between the concepts provided as values for codeA and codeB
    EHR Reporting and Analytics
    Validate and Apply Expression Constraints
    SNOMED CT Expression Constraint Language
    An identifier that can be used to select that development branch using
  • Optionally:

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

  • Notes
    Notes
    Enabling Access to Extended Editions
    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]/codesystems/[branchPath]
    GET [snowstorm]/codesystems/MAIN/2020-01-31
    GET [snowstorm]/codesystems/MAIN%2F2020-01-31

    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

    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

    Identifier and term representing the reason for inactivation of the concept.

    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

    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

    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

    The FHIR TS API does not provide a service for this purpose

    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

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

    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)

    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

    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:

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

    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.

  • system: the codesystem of the mapTarget

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

    4.3 Get Terms for a Concept: Table 2 Snowstorm API
    Get Terms for a Concept
    Get Terms for a Concept
    https://www.hl7.org/fhir/snomedct.html
    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
    Specifying value set bindings that constrain the values that can be entered in a particular data entry context.
  • 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

    • 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

    • Other Services

      • Find Concepts

      • Validate Concept Definitions and Expressions

    • Use Cases

    • Select Edition and Version

    • Get a Concept, Description or Relationship

    • Get Terms for 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

    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 data

    • The preferred term and fully specified name.

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

    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

    < : != ^


    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

    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

    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.

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

    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.


    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

    Terminology Change Management

    The following sections present terminology services use cases related to the management of terminology changes.

    Access Details of Terminology Changes

    SNOMED CT has rich versioning mechanism that retains the full history of changes to every component and reference set member. As a result, it is possible to review the content of the terminology as it was at any time in the past and to make comparisons between two versions. In addition to tracking the state of the terminology at specific times in the past, the versioning mechanism also provides and indication of the reason for inactivation of each concept or description. In the case of concepts, there is also data linking inactive concepts to active concepts that may be used to replace them.

    Services Required to Access Details of Terminology Changes

    The following table shows the terminology services required to access each of these different types of versioning data.

    Practical Requirement
    Required Services
    Dependencies

    The services described in 'Access Details of Terminology Changes' get versioning data related to the addition, modification, or inactivation of individual terminology components. Many practical uses of this data require interpretation of the overall effect of a combination of changes to a concept. Therefore, it may be useful to integrate versioning data in ways that facilitate a review of the impact of these changes. A possible way to achieve this is illustrated by the data model in the diagram below

    A data structure of this type could be used to assist the identification of changes relevant to managing the impact of changes on EHR applications and Extensions in two ways:

    • By generating a human-readable version of the change data for use in manual review of existing data

    • As a computer processable resource from which queries can be generated to search records, user interface templates, reporting, and analytics queries and extensions for references for changed or inactivated concepts and descriptions.

    Each instance of the Component Version Data object represents the previous and new states of an identified concept, description, relationship or OWL axiom reference set member that has been added, changed, inactivated or reactivated between two specified versions of the same edition.

    Component Version Data Object

    Details of the data items in the example Component Version Data object are shown in the following table.

    Data Item
    Notes

    There is an instance of the Full Concept Version Data object for each concept to which one or more of the following conditions applies:

    • The concept has been added, changed, inactivated or reactivated

    • OWL axioms or relationships that contribute to the stated and/or inferred definition of the concept have been added, changed, inactivated or reactivated

    • Descriptions associated with the concept have been added, changed, inactivated or reactivated

    Each instance of the Full Concept Version Data object represents the previous and new state of a concept including all its active descriptions (with relevant language acceptability data), all its active relationships and all associated active OWL axioms.

    Full Concept Version Data Object

    Details of the data items in this object are shown in the following table.

    Data Item
    Notes

    The table below summarizes change management issues that may affect and EHR application when moving to a new version of a SNOMED CT edition. It also outlines approaches to checking for and resolving issues of different types.

    Change Type
    Significance
    Risks
    Factors Affecting Risk Level and Likely Impact
    Change Management Actions
    Step
    Input
    Output Description
    Output Name
    Output Name
    Description
    Impact
    Recommended Action

    The following table summarizes change management issues that may affect and EHR application when moving to a new version of a SNOMED CT edition. It also outlines approaches to checking for and resolving issues of different types.

    Change Type
    Significance
    Examples of Potential Impact
    Change Management Actions

    Get Terms for a Concept

    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.

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

    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.

    Encoded URL

    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.

    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

    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

    Test if osteomyelitis of femur is a bone fracture with a site that is a member of the lateralizable body structure reference set (< : = ^ ) 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|

    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


    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

    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|

    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 [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
    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|")
    call eclQueryCount([expressionConstraint],@count)
    call eclSelect([expressionConstraint],[style])
    call eclSelect([expressionConstraint],[setId])
    Test Expression Subsumption
    Support EHR Data Entry
    EHR Reporting and Analytics
    Get Definition of a Concept
    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|
    5
    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
    GET [snowstorm]/MAIN%2F2020-01-31/concepts?activeFilter=true&amp;ecl=%3C125605004%3A363698007%21%3D%5E723264001
    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%2F900000000000207008%2Fversion%2F20200131%3Ffhir_vs%3Decl%2F%3C125605004%3A%0A363698007%21%3D%5E723264001
    Reference Set Editing

    N/A

    Identify descriptions that have been inactivated between the specified versions. REQUIRED

    • Description

    • Get description by identifier

    Get inactivation reason for each inactive description REQUIRED

    • Description inactivation reference set

    N/A

    Get changes to inferred definitions OPTIONAL

    • Relationship

    • Get inferred necessary normal form definition of a concept

    • Get relationship by identifier

    Get changes to stated definitions OPTIONAL

    • OWL reference set

    • Get stated definition of a concept

    • OWL reference set

    newComponentData

    The ComponentData for the identified component in the snapshot release of the later of the two versions being compared.

    ComponentData refers to a representation of the data in the relevant release file row for the identified concept, description, relationship or OWL axiom.

    • In the case of a description, the ComponentData should also include the acceptability values for that description in the language reference sets of that snapshot release.

    previousComponentData

    Represents the release file data for the identified component in the earlier of the two versions being compared.

    • Empty if the component was not present in the earlier version of the release file.

    reason

    Only applicable to concepts and descriptions that are active in the previousComponentData view and inactive in the newComponentData view:

    • In the case of a concept, the reason for inactivation as represented in the concept inactivation reference set.

    • In the case of a description, the reason for inactivation as represented in the description inactivation reference set.

    alternatives

    Only applicable to concepts that inactive in the newComponentData view:

    • An array of historically associated concepts derived by selecting active rows from most recent snapshot view the historical association reference sets with a referenceComponentId that matches the identifier of the concept.

    • Each element of the array should include the refsetId, which indicates the type of association, and the targetComponentId, which refers to associated concept.

    conceptId

    The identifier of the concept with which this component is associated. This provides a link to the id of the relevant Complete Concept Version Data.

    • In the case of a concept, this is the same as the id (i.e. same as the id data item above).

    • In the case of a description, this is the conceptId.

    Language reference set rows that specify the acceptability of an associated description have been added, changed, inactivated or reactivated.

    Addition of a concept

    MODERATE

    Inconsistent reporting and analytics may occur if a new concept is omitted from reporting query criteria.

    • Risk is higher when queries use fixed reference sets or lists. • Hierarchy-based queries are more likely to include relevant new concepts.

    • Review and revise reporting query criteria to ensure they include the new concepts where appropriate.

    Inactivation of a concept

    HIGH

    Inactive concepts may still be referenced by UI bindings, causing errors: • Inactive concept might still be selectable (serious error) • Or it might be blocked entirely, making it impossible to enter needed data.

    • High risk with fixed value sets or individual concept lists. • Lower risk when using hierarchy-based constraints (which auto-exclude inactive concepts).

    • Identify UI bindings referencing inactive concepts. • Replace references with active concepts using historical associations. • Ensure updates only apply to new entries to preserve legal record integrity.

    Inactivation of a concept

    HIGH

    Inactive concepts in query criteria can significantly change query results.

    • High risk if used in subsumption constraints. • Lower risk if referenced directly.

    • Check and revise query criteria that reference inactivated concepts. • Adjust queries to continue delivering intended results.

    Inactivation of a concept

    HIGH

    Inactive concepts may still exist in EHR records from earlier data entry. These will no longer be subsumed or included in relevant queries.

    • Especially problematic if concept was inactivated due to ambiguity (no direct replacement).

    • Options: – Explicitly include the inactive concept in queries – Create reference sets of formerly-included inactive concepts – Use historical associations to extend subsumption – Accept exclusion where appropriate – Add mapped active concept (as a supplement, not a replacement)

    Change to a concept

    NONE

    Only definitionStatusId can change, indicating redefinition. Not significant by itself.

    -

    -

    Addition of a description

    LOW

    New display term added. Minimal impact unless tied to inactivation or changes in acceptability.

    • If preferred/acceptable terms are removed, the new term may need to be adopted. • By default, preferred term in target language is displayed.

    • Evaluate whether the new description should be used in data entry templates or reports. • Existing records remain unaffected.

    Change to a description

    LOW

    Term or caseSignificanceId might change. May affect display consistency.

    • QA rules limit term changes. • Display logic might be impacted.

    • Review and update data entry templates or reports that display the changed term. • Ensure correct casing per caseSignificanceId. Note: Stored records typically should not be changed.

    Inactivation of a description

    HIGH

    Inactivated descriptions can't be used as display terms for data entry or reporting.

    • Especially impactful if no acceptable alternative term is defined in the language reference set.

    • Replace use of inactive terms in UI and reporting templates with preferred or acceptable alternatives. • Don't retroactively modify stored records.

    Change to acceptability of a description

    MODERATE

    Description that is no longer acceptable in a language/dialect should not be used as display term.

    • Impacts systems with multilingual language bindings.

    • Review language reference sets used by the system. • Ensure display terms remain acceptable/preferred.

    Changes to relationships or OWL expressions

    MODERATE

    These changes alter concept definitions, which may impact expression constraints and queries.

    • Queries based on subsumption or logical definitions may behave differently.

    • Review all expression constraints, value sets, and queries. • Revalidate and adjust per guidance in Tables 3.7.3-2 and 3.7.3-3.

    Changes to reference set members

    MODERATE

    Additions or inactivations of members may change inclusion in queries and templates.

    • Can affect data entry templates, reporting outputs, or analytics logic.

    • Review impacted reference sets. • Update expression constraints or queries accordingly.

    Edition to be used after planned update

    V2-snapshot

    Apply the Expression Constraint (ECL) to each version to identify subsets of concepts that conform to the constraint

    V1-snapshot

    Set of concepts in V1-snapshot that conform to the ECL

    V1-ECL-result

    V2-snapshot

    Set of concepts in V2-snapshot that conform to the ECL

    V2-ECL-result

    Compare the subsets to identify concepts that conform in one version but not the other

    V1-ECL-result

    Concepts in V1-ECL-result but not in V2-ECL-result

    V1-ECL-only

    V2-ECL-result

    Concepts in V2-ECL-result but not in V1-ECL-result

    V2-ECL-only

    Subdivide V1-only concepts by active status in the new version

    V1-ECL-only

    Concepts in V1-ECL-only that are active in V2-snapshot

    V1-ECL-only-V2-active

    V1-ECL-only

    Concepts in V1-ECL-only that are inactive in V2-snapshot

    V1-ECL-only-V2-inactive

    Subdivide V2-only concepts by status in or absence from the old version

    V2-ECL-only

    Concepts in V2-ECL-only that are active in V1-snapshot

    V2-ECL-only-V1-active

    V2-ECL-only

    Concepts in V2-ECL-only that are inactive in V1-snapshot

    V2-ECL-only-V1-inactive

    V2-ECL-only

    Concepts in V2-ECL-only that are absent from V1-snapshot

    V2-ECL-only-V1-absent

    LOW

    If this subset contains any concepts, be aware that this may affect result of rerunning an earlier reports or analytics on retrospective data. However, in most cases no action is required.

    V2-ECL-only-V1-active

    Concepts that only conform to the ECL in V2 although they are active in both versions. Retrospective reports will now include concepts that were previously excluded from the report.

    HIGH

    Concepts in this subset will be included in reports or analytics performed after upgrading to the new version but would not have been included when using the current version.

    This may be due to an revision of concept definitions or addition of concepts to a reference set. Assuming these changes were intentional improvements the revised result should be more accurate and more complete.

    In some cases, this type of change may have unintended consequences. Therefore a review of the context in which these constraints are used is recommended. If necessary the constraint can then be refined to exclude some or all of the added concepts.

    V1-ECL-only-V2-active

    Concepts that only conform to the ECL in V1 although they are active in both versions. Retrospective reports will now exclude concepts that were included in the report.

    HIGH

    Concepts in this subset will be excluded from reports or analytics performed after upgrading to the new version but would have been included when using the current version.

    This may be due to an revision of concept definitions or removal of concepts from a reference set. Assuming these changes were intentional improvements the revised result should be more accurate.

    In some cases, this type of change may have unintended consequences. Therefore a review of the context in which these constraints are used is recommended. If necessary the constraint can then be refined to specifically include some or all of the excluded concepts.

    V1-ECL-only-V2-inactive

    Concepts that only conform to the ECL in V1 that are inactive in V2. In this case, inactivation of the concept means that retrospective reports will exclude these concepts that were previously included in the report.

    MODERATE

    Concepts in this subset will be excluded from reports or analytics performed after upgrading to the new version but would have been included when using the current version.

    In this case, the reason for exclusion is that the concept is inactive rather than being a direct consequence of the constraint. There are two ways to enable an inactive concept to conform to a constraint. A direct reference to a concept identifier or a reference to the members or a reference set that includes that concept.

    MODERATE

    A new concept may be a supertype of an extension concept. Classification may infer new subtype relationships. But if the extension's definition lacks necessary axioms, the new relationship won't be inferred.

    Review new concepts to identify if they should subsume any extension concepts. If so, update the extension concept's definition with additional axioms to support accurate classification.

    MODERATE

    If the extension includes a language reference set, additions are required for acceptability of new concept descriptions.

    Add necessary descriptions in the relevant language/dialect. Update the language reference set to include the new fully specified name and preferred term.

    Inactivation of a concept

    HIGH

    A component or reference set member in the extension may reference an inactivated concept in the base module.

    Concept definitions must not reference inactive concepts. • Remove inactive concept references from OWL expressions and active relationships. • Descriptions may still reference inactive concepts for display purposes.

    HIGH

    Reference sets like OWL or Mapping sets must be reviewed.

    Inactivate or replace refset members that refer to inactive concepts. Update OWL reference set rows. Reclassify to confirm no active relationships point to inactive concepts.

    Addition of a description

    NONE

    No impact unless the extension uses a language reference set.

    -

    MODERATE

    A new description may need to be reflected in the extension's language reference set.

    Consider adding the new description as an acceptable term in the extension's language refset.

    Inactivation of a description

    LOW

    References to inactivated descriptions in refsets may be affected.

    Review and update reference sets that refer to now-inactive descriptions.

    MODERATE

    If the description is referred to in a language reference set as a preferred term or FSN, updates are required.

    • Inactivate reference set members pointing to inactive descriptions. • If the inactivated term was "preferred", add a new active preferred description of the same type. • Do not overwrite inactive descriptions — add replacements.

    Changes to concept definitions

    NONE

    No impact unless the extension contains additional clinical concepts.

    -

    HIGH

    Changes to the base module's concept model or specific definitions may affect extension definitions.

    • Review and update impacted extension concept definitions. • Align with changes in the base module. • Reclassify to maintain consistency.

    Enable the selection of SNOMED CT edition and the versions of that edition to be compared REQUIRED

    Select Edition and Version

    N/A

    Identify concepts that have been added, changed or inactivated between the specified versions. REQUIRED

    Identify Changes to the Terminology

    • Concept

    Get a Concept, Description or Relationship

    • Get concept by identifier

    Get inactivation reason for each inactivated concept REQUIRED

    Get History Data

    • Concept inactivation reference set

    Get Data from a Reference Set

    Identify concepts that are candidates to replace each inactivated concept REQUIRED

    componentType

    Indicates whether the component is a concept, description, relationship (part of the inferred view of the concept definition), or OWL axiom (part of the stated view of the concept definition).

    action

    Indicates the nature of the change:

    • added : This component was not present in previous release

    • changed : The active value is unchanged and change has been made to a data value

    • inactivated : The active value of the component has been changed from 1 to 0

    • reactivated : The active value of the component has been changed from 0 to 1

    id

    The identifier of the concept, description, relationship or OWL axiom reference set member.

    id

    The identifier of a concept that has been affected directly or indirectly by updates between two specified versions of the same edition.

    newFullConceptData

    A representation of the FullConceptData for the identified concept in the snapshot release of the later of the two versions being compared.

    FullConceptData represents all pertinent active release file entries that describe and define a specific concept.

    • This includes all the data in:

      • the row of the concept snapshot release file with the relevant id value.

      • all active rows of the description snapshot release file with a conceptId value matching the identifier of the concept and for each of these descriptions

        • and all active rows of the language reference set snapshot release file with the a referencedComponentId value matching the identifier of that description

      • all active rows of the relationship snapshot release file with a sourceId value matching the identifier of the concept.

      • all active rows of the OWL reference set snapshot release file with refsetId and a referencedComponentId value matching the identifier of the concept.

    • The data should be represented in a way that supports the data structures of all of the above data components. For example, the data could be represented as the string serialization of a JSON object combining representations of each of the different data items.

    previousFullConceptData

    A representation of the FullConceptData for the identified concept in the snapshot release of the earlier of the two versions being compared.

    • Empty if this concept was not present in the earlier release.

    Addition of a concept

    MODERATE

    The new concept may not be available in some data entry contexts. Although all new concepts will be available for ad-hoc searches, it may not be possible to enter a new concept in data entry fields with tightly defined value set bindings.

    • Risk is higher if the value set binding specifies members of a reference set or individual concepts. • Hierarchy-based constraints are more likely to include new concepts automatically.

    Identify snapshot views of two versions of the same SNOMED CT edition

    Current edition

    Edition in use before planned update

    V1-snapshot

    V2-ECL-only-V1-absent

    New concepts in V2 release that were not present in V1.

    • Inclusion of these concepts will not affect retrospective reports or analytics because the new concepts could not have been used previously.

    • Inclusion of these new concepts is appropriate as they conform to the stated constraint.

    NONE

    None

    V2-ECL-only-V1-inactive

    Addition of a concept

    MODERATE

    A new concept in a module on which the extension depends may have the same meaning as an existing concept in the extension.

    Consider inactivating the extension concept and create a historical association from it to the new concept in the base module.

    Integrate and Interpret Versioning Data

    Full Concept Version Data

    Manage Impact of Changes on EHR Applications

    Impact of Version Updates on EHR Applications

    Comparing Results of Applying an Expression Constraint to Two Versions of a SNOMED CT Edition

    Check the content of the five sets of concepts generated by the last two steps using the notes in the following table.

    Evaluation of Differences between ECL Results

    Manage Impact of Changes on Extensions

    The changes outlined in this section must be applied when an extension module is updated to align with the new versions of the modules on which it depends. Before an updated extension module is released, updates must also be made to its module dependencies. Please refer to the Extensions Practical Guide for more detailed information about extension modules and the Module Dependency Reference Set.

    Impact of Version Updates on Extensions

    Provide Feedback
    Example Data Model for Integrated Versioning Data

    • Historical association reference sets

    • Review newly added concepts, especially those in frequently used hierarchies. • Consider if new concepts should be added to reference sets, search constraints, UI bindings, or queries. Recommendation: Use hierarchy constraints rather than fixed concept lists to reduce manual maintenance.

    New edition

    It is unusual for concepts to be reactivated so this set will usually be empty.

    Concepts reactivated in V2 release after being inactive in V1 release. However, in theory this could alter the result of retrospective reports because reactivation of the concept causes these concepts to be included whereas previously they were excluded.

  • 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

      • 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

    The required services are listed in the table below.

    Service Name and Status
    Input
    Output

    Get fully specified name of a concept

    • 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

    Get preferred term of a concept

    • 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

    • Use Cases

      • Explore and Review SNOMED CT

      • Support EHR Data Entry

    • Service Types

      • Select Edition and Version

    Service Name
    API Call
    Result

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

    for example


    Encoded URL

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

    for example


    Encoded URL

    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

    Service Name
    API Call
    Result

    Get all descriptions for a concept

    for example

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

    Service Name
    API Call
    Result

    Get fully specified name of a concept

    for example

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

    Get preferred term of a concept

    for example

    Returns the preferred term of a specified concept and its caseSignificanceId

    Provide Feedback

    Overview

    Requirements and Options

    The services described in 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.

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

    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 .

    Support EHR Data Entry

    An electronic health record (EHR) that represents clinical information using SNOMED CT must support efficient entry of data accurately coded as SNOMED CT concepts and/or expressions. Data entry approaches need to be tailored to fit the needs of different healthcare professionals in a variety of clinical situations. However, the end results of different data entry techniques must be record entries that are consistent and comparable. The following sections outline the ways in which terminology services can be used to support the design and application of effective data entry techniques.

    This section provides a general introduction to the terminology service requirements related to EHR data entry. It outlines the rationale for the following sections on data entry design and practical data entry.

    Readers of this section of the guide are advised to read the following sections of the

    • - describes effective ways to optimize SNOMED CT searches.

    result: True
  • display: "Fracture of femur"

  • 125605004 |Fracture of bone|
    363698007 |Finding site|
    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 the fully specified name of a concept in US English (or in a specified language reference set).

    REQUIRED

    Optional:
    • typeId (which will always be 900000000000207008 | fully specified name| )

    • languageCode

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

    REQUIRED

    Optional:
    • typeId (which will always be 900000000000013009 | synonym| )

    • languageCode

    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:

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

    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.

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

      • 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

    • Edition and version

    • Concept identifier

    • Filters

      • Active

      • TypeId

      • Language code

      • Language refset identifier

      • Language refset acceptability

    • 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

    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.

    Display EHR Data
    EHR Reporting and Analytics
    Support Terminology Authoring and Review
    Get a Concept, Description or Relationship
    Get a Concept, Description or Relationship
    Get a Concept, Description or Relationship
    Get Data from a Reference Set
    IETF RFC1738
    SNOMED CT - SQL Practical Guide
    GET [snowstorm]/MAIN%2F2020-01-31/concepts?ecl=%28%3C125605004%3A+363698007%3D%5E723264001%29+and+%2871620000%29
    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://snomed.info/sct&code=71620000&url=http://snomed.info/sct/900000000000207008/version/20200131?fhir_vs=ecl/<125605004: 363698007=^723264001
    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 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');
    GET [snowstorm]/[branchPath]/concepts/[conceptId]
    GET [snowstorm]/MAIN/2020-01-31/concepts/6025007
    GET [snowstorm]/MAIN%2F2020-01-31/concepts/6025007
    GET [snowstorm]/[branchPath]/concepts/[conceptId]/descriptions
    GET [snowstorm]/MAIN/2020-01-31/concepts/6025007/descriptions
    GET [snowstorm]/MAIN%2F2020-01-31/concepts/6025007/descriptions
    GET [fhir]/CodeSystem/$lookup?system=http://snomed.info/sct&code=[conceptId]
    GET [fhir]/CodeSystem/$lookup?system=http://snomed.info/sct&code=6025007
    SELECT term,caseSignificanceId FROM snap_fsn WHERE conceptId=[conceptId]
    SELECT term,caseSignificanceId FROM snap_fsn WHERE conceptId=6025007
    SELECT term,caseSignificanceId FROM snap_pref WHERE conceptId=[conceptId]
    SELECT term,caseSignificanceId FROM snap_pref WHERE conceptId=6025007
    The data should be represented in a way that supports the data structure of the specified componentType. For example, the data could be represented as the string serialization of a JSON object.
    In the case of a relationship, this is the sourceId.
  • In the case of an OWL axiom, this is the referencedComponentId.

  • 733073007 | OWL axiom reference set|
    Get History Data
    Identify Changes to the Terminology
    Get a Concept, Description, or Relationship
    Get History Data
    Identify Changes to the Terminology
    Get Definition of a Concept
    Get a Concept, Description or Relationship
    Identify Changes to the Terminology
    Get Definition of a Concept
    Get Data from a Reference Set

    Optimize Display of Search Results- provides guidance on ordering and structuring lists of search results.

  • EHR Data Entry Overview - describes a range of techniques that facilitate the effective recording of SNOMED CT concepts or expressions in health records.

  • Entry of data into an Electronic Health Record (EHR) requires access to services that enable the user to rapidly locate and select the concepts and terms that need to recorded. There are a wide range of different EHR data entry scenarios determined by the type of healthcare encounter and the reason for that encounter. A typical data entry scenario involves recording data in different data entry contexts. The data entry contexts are typically distinguished by section headings (e.g. "Surgical History"), individual data item labels (e.g. "Initial Diagnosis") and in some case by specific questions with a limited range of answers (e.g. "Family history of heart disease?" with values "Yes", "No" or "Unknown").

    Data entry design needs to take account of data entry context for two reasons.

    1. The range of concepts that can rationally be entered is determined by the data entry context.

      1. The table below illustrates this point with examples of three data entry contexts. In each of these contexts, there are constraints on the range of SNOMED CT concepts that it is rational to enter.

    2. The interpretation of concepts or other data entered may be affected by the data entry context.

      1. The table below provides examples of ways in which the data entry context can affect the interpretation of recorded data. To ensure appropriate interpretation, relevant information about the data entry context must be stored with or linked to the data entered.

    Initial Diagnosis on an Encounter or Admission Form

    A healthcare professional assesses an unconscious person in the emergency room and concludes that the patient is suffering from effects of alcohol. To enter this initial diagnosis they type "alcohol".

    An unconstrained search for "alcohol" will find a concept with the term | Alcohol| and may show that at the top of a search list. The problem is that this term is a synonym for the 53041004 | Alcohol (substance)| . While a substance may be relevant to the patient's condition a substance is not a valid diagnosis.

    A search for the term ""alcohol" constrained to subtypes of 64572001 | Disease (disorder)| avoids this error and results a shorter, more appropriate list including concepts such as 25702006 | Alcohol intoxication| .

    Field
    Content

    Constraints on Values

    A concept recorded in this data entry context should be a subtype of `64572001

    Interpretation of Recorded Data

    The fact that this is an "Initial diagnosis" context must be captured to ensure accurate interpretation.

    Surgical History as Part of Past Medical History

    A past history of an appendectomy could be recorded in different ways including:

    • Using the concept 428251008 | history of appendectomy| ; or

    • Using the concept 80146002 | appendectomy| with an indication that this was reported by the patient as having been done in the past.

    Field
    Content

    Constraints on Values

    A concept recorded in this data entry context could either be:

    • A subtype of ; or,

    • A subtype of with an indication that this is past history.

    Interpretation of Recorded Data

    The "Past History" data entry context needs to be captured so that the record can be appropriately interpreted. It must be possible to distinguish a past history record of a procedure from a contemporaneous record of the same procedure.

    Symptom Checklist with Yes or No Options

    A question about whether a patient has a sore throat would be linked to the concept 162397003 | sore throat| .

    • If the patient answers "yes" then 162397003 | sore throat| is added to the patient's record.

    • If the patient answers "no" then no entry is added to the record (see notes on alternatives in next column).

    Field
    Content

    Constraints on Values

    Each question should be bound to a concept that represents the relevant symptom. These concepts should be subtypes of .

    The simplest way to represent the "yes" and "no" answers to a question like this is to record the relevant finding concept if the answer is "yes" and not to create a record if the answer is "no". However, where the answer "no" has clinical significance, alternative approaches discussed in the next column may be preferable.

    Interpretation of Recorded Data

    The simple approach suggested in the previous column does not explicitly record negative answers. However, in many cases, a negative response has its own significance and does need to be recorded.

    • For example, knowing that the patient responded "no" to the question "have you had any pain in the chest?".

    Similarly, there may be questions that have 3 alternative answers (e.g. "yes", "no", "don't know"). In these cases, an approach is needed to distinguish between the available responses.

    This section identifies terminology services required to support the design of data entry forms and templates that incorporate terminology bindings. The objective of these templates is to facilitate the entry of appropriate concepts (or expressions) into electronic health records.

    As noted in the previous section, there are a variety of different EHR data entry contexts and each context logically constrains the range of concepts that can be used. This logical constraint can be formally specified using a value set binding represented as an expression constraint. Similarly, the data entry context may affect the meaning of data entered and this can be formally specified using a meaning binding represented by an expression or expression constraint.

    A well designed template can simplify data entry and improve data quality by limiting the range of concepts available to those appropriate to a particular data entry context. The table below provides examples of some practical uses of templates with terminology bindings.

    Data entry templates can also be used to combine and structure related data items, or to enable addition of refinements a selected concept. Different requirements can be met by a common template structure with different terminology bindings. In other cases, a more complex template may be required containing a collection of data items with different value set bindings. Similarly, a meaning binding may be applied to an individual template or to a collection of templates that share a similar interpretation (e.g. past medical history entries). Terminology bound templates that are designed to meet the needs of different data entry contexts can be combined into a more complex template that supports a complete data entry scenario.

    Practical Uses of Terminology Binding in a Data Entry Template

    The following table shows a summary of the terminology services required to enable terminology bindings to be created and edited when developing user interface templates for health record data entry.

    Practical Use
    Examples

    To specify a concept or expression to that is added to the record entry when a particular data entry option is selected

    • To specify that the concept should be added to record entry when an item in a check list of medical conditions is marked as true.

    To constrain the range of concepts that can be entered into a specific data entry field

    • To limit the range of concepts that can be entered in "surgical procedure" field to:

      • Subtypes of ; or

      • Members of a locally defined reference set containing surgical procedures carried out in particular department.

    To support the structured entry of specific refinements relevant to a selected concept

    • To specify a template that includes questions about general findings followed by prompts for the site of the finding and/or other features.

      • The template also specifies how the refinement should be represented. Options include:

        • A record containing several named data items { symptom: location: } ; or

    Services Required for EHR User Interface Template Editing

    Practical Requirement
    Status
    Required Terminology Services
    Dependencies

    Select the SNOMED CT edition and version to be used.

    REQUIRED

    N/A

    This section identifies the terminology services required to support practical entry of EHR data containing SNOMED CT concepts and expressions. It assumes that templates with appropriate terminology bindings have been created and applied using data entry design techniques identified in the section on EHR Data Entry Design.

    The following table shows a summary of the terminology services required to support the most common types of EHR Data Entry. These service requirements are also sufficient to entry of postcoordinated expressions provided that these expressions are created using a specific predefined template.

    Practical Requirement
    Status
    Required Services
    Dependencies

    Select the SNOMED CT edition and version to be used for data entry.

    REQUIRED

    N/A

    Enable a concept, and where appropriate an associated term, to be recorded in response to the selection of a particular user interface option.

    Data entry methods that generate adhoc postcoordinated expressions, without a specific predefined template, have additional requirements for access to the concept definitions and the concept model rules. For example, a user interface control could be designed to respond to the selection of a SNOMED CT concept by displaying options that allow a user to select one or more attributes applicable to the concept's domain. The user could then be prompted for values for each selected attribute allowing them to refine the meaning of the selected concept. Another technique involves natural language processing (NLP) identifying the primary focus concept and any relevant refinements stated in a passage of text.

    Additional terminology service requirements for these techniques are summarized in the following table, and documented in the postcoordination guide.

    Practical Requirement
    Status (for adhoc postcoordination)
    Required Services
    Dependencies

    Enable access to the definition of a selected concept.

    REQUIRED

    N/A

    Provide Feedback

    EHR Data Entry Overview

    Background Reading

    Practical Guides
    Optimizing Searches

    Data Entry Context

    Examples

    Subsequent investigations may refute the initial diagnosis, so it should not be assumed the patient had the condition.

    However, it may still be relevant: • As rationale for initial treatment and investigation • For audit, administration, and research purposes

    The definitions of concepts that are subtypes of formally represent the past history context by including the attribute = . If subtypes of are to be used to record surgical history, these record entries must include an explicit indication of the past history context.

    In either case, it may also be useful to indicate the source of the information (e.g. reported by the patient, derived from the original record) and actual or approximate date of the procedure.

    Options for representing answers such as "yes", "no" and "don't know" include:

    1. A postcoordinated expression using the SNOMED CT situation with explicit context model with the symptom represented as the and the answers represented as values of the attribute (e.g "yes" = , "no" = , and "don't know" = .

    EHR Data Entry Design

    EHR Data Entry

    Terminology Services Required for EHR Data Entry

    Additional Terminology Services Required for Ad hoc Postcoordinated Data Entry

    To specify the concepts to be displayed in a short drop-down list from which an item may be selected.

    An expression such as: 10601006 | Pain| :{ 363698007 | Finding site| = 85151006 | left hand| }

    A simplified representation of the situation model in which only the finding context values are recorded - e.g. "yes" = 410515003 known present, "no" = 410516002 known absent, and "don't know" = 261665006 unknown.
  • A simplified representation of the situation model in which the associated finding is used for "yes" and the finding context is used for "no" and "don't know". For example, "Yes" = 162397003 | sore throat| , "no" = 410516002 known absent and "don't know" = 261665006 unknown.

  • To support the entry of any refinement permitted by the concept model (or a constrained version of the concept model)

    • To specify a template that allows a clinical finding to be refined using any attributes that are valid in the clinical finding concept model.

      • The refined concept would be represented as an expression.

    Create or edit a user interface template or control that records specific concepts in EHR depending on user selections

    REQUIRED

    Find Concepts

    N/A

    Create or edit a user interface template including expression constraints that limit permitted values that can be entered through a specific data entry control

    REQUIRED

    Validate and Apply Expression Constraints

    N/A

    Create or edit a user interface template or control that records a specific expression in an EHR depending on user selections (in cases where no specific concept matches the required meaning)

    OPTIONAL

    Validate Concept Definitions and Expressions

    N/A

    Get attributes that can be applied to an identified concept

    OPTIONAL

    Get Concept Model Rules

    N/A

    Get the range of values that can be applied to an identified attribute

    OPTIONAL

    Get Concept Model Rules

    N/A

    REQUIRED

    Get a Concept, Description or Relationship

    Get Terms for a Concept

    N/A

    Display appropriate terms in search results, user interface lists, checkboxes, radio buttons and any other user interface controls in which options are represented by concept identifiers.

    REQUIRED

    Get Terms for a Concept

    N/A

    Enable term searches to be constrained by value set bindings specified for each data entry field.

    REQUIRED

    Find Concepts

    Details*

    Enable term searches to be constrained by simple constraints specified by the user to narrow a search.

    OPTIONAL

    Find Concepts

    Details*

    Enable searches for attribute refinements to be automatically constrained by the appropriate concept model range constraint.

    OPTIONAL

    Get Definition of a Concept Find Concepts Get Concept Model Rules

    • Get the range of values applicable to a specified attribute

    Details*

    Enable the display of the definition of a selected concept.

    OPTIONAL

    Get Definition of a Concept

    N/A

    Enable the display of supertype parents and subtype children of selected items in a search result list.

    OPTIONAL

    Get and Test Concept Subtypes and Supertypes

    • Get supertype parents of a concept

    • Get subtype children of a concept

    N/A

    Enable the validation of a generated postcoordinated expression prior to adding it to a record entry.

    OPTIONAL

    Validate Concept Definitions and Expressions

    • Validate expression

    N/A

    Enable the identification of attributes that can be applied to a selected concept.

    REQUIRED

    Get Concept Model Rules

    • Get the set of attribute rules applicable to an identified concept

    N/A

    Enable the identification of the range of values that can be applied to a selected attribute.

    REQUIRED

    Get Definition of a Concept

    Get Concept Model Rules

    • Get the range of values applicable to a specified attribute

    N/A

    Enable the validation of a generated postcoordinated expression prior to adding it to a record entry.

    OPTIONAL

    Validate Concept Definitions and Expressions

    • Validate expression

    N/A

    161615003 | History of surgery (situation)|
    387713003 | Surgical procedure (procedure)|
    404684003 | Clinical finding|
    195967001 | asthma|
    387713003 | Surgical procedure|
    10601006 | Pain|
    85151006 | left hand|
    Select Edition and Version
    Select Edition and Version
    Get Definition of a Concept
    161615003 | History of surgery (situation)|
    408731000 | Temporal context|
    410513005 | In the past|
    387713003 | Surgical procedure (procedure)|
    1
    246090004 | Associated finding|
    408729009 | finding context|
    410515003 known present
    410516002 known absent
    261665006 unknown

    Validate Concept Definitions and Expressions

    Overview

    Concept Definitions

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

    Concept Definition Validation Requirements

    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.

    Service Requirements for Concept Definition Validation

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

    Example

    Example (with terms)

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

    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 should support expression validation.

    Services Required

    Service Name and Status
    Input
    Response

    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.

    Get and Test Reference Set Membership

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

    • 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:

    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

  • Validate expression

    RECOMMENDED

    • Edition and Version

    • Expression to be validated

    • Optional: Language/dialect1

    • 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:

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

    Transform invalid expression

    OPTIONAL

    • Edition and Version

    • Invalid candidate expression for adjustment

    • Structurally adjusted valid expression

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

    SNOMED CT Expressions

    Expression Validation Requirements

    Requirements and Options

    Interdependencies

    Required By

    Depends On

    Service Examples

    Snowstorm API

    FHIR API

    MySQL Example Database

    Notes

    description logic classifier
    postcoordinated expressions
    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
    Provide Feedback
    4.4 Get Definition of a Concept
    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

    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 SNOMED CT Expression Constraint Language (ECL). Terminology service requirements for accessing expression constraints are described in Validate and Apply Expression Constraints.

    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 Get Data from a Reference Set .

    Service Name and Status
    Input
    Output

    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

    • If the candidate concept or description is a member of the reference set: TRUE

    • Otherwise: FALSE

    • Other Services

      • Validate and Apply Expression Constraints

      • Find Concepts

    • Use Cases

    • Select Edition and Version

    Service Name
    API Call
    Result

    Get all members of a specified reference set

    for example


    Encoded URL

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

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

    for example this call returns true


    Encoded URL

    while the next call returns false


    Encoded URL

    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.

    Service Name
    API Call 5
    Result

    Get all members of a specified reference set

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

    for example

    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

    Test if a concept is a member of specified reference set

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

    for example


    Encoded URL

    *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:

    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.

    Service Name
    SQL Query 6
    Result

    Get all members of a specified reference set

    for example

    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

    for example

    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.


    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.

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

    • 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

    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

    This example returns all active members of the . 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 .

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

    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.
    GET [snowstorm]/[branch]/members?active=true&referenceSet=[refsetId]
    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referenceSet=723264001
    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;referenceSet=723264001
    GET [snowstorm]/[branch]/members?active=true&referencedComponentId=[candidateId]&referenceSet=[refsetId]
    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referencedComponentId=53120007&referenceSet=723264001
    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;amp;referencedComponentId=53120007&amp;referenceSet=723264001
    GET [snowstorm]/MAIN/2020-01-31/members?active=true&referencedComponentId=80891009&referenceSet=723264001
    GET [snowstorm]/MAIN%2F2020-01-31/members?active=true&amp;amp;referencedComponentId=80891009&amp;referenceSet=723264001
    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
    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs%3Drefset%2F721144007&amp;count=10
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=refset/[refsetId]&count=10
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/^[refsetId] AND [predicateConceptId]
    GET [fhir]/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/^721144007 AND 734009000
    GET [fhir]/ValueSet/$expand?url=http%3A%2F%2Fsnomed.info%2Fsct%3Ffhir_vs%3Decl%2F%5E721144007+AND+734009000
    ^[refsetId] AND ([predicateConceptId_1] OR [predicateConceptId_2].... OR [predicateConceptId_n])
    SELECT referencedComponentId FROM snap_refset_simple
    WHERE active=1 AND refsetId=[refsetId]
    SELECT referencedComponentId FROM snap_refset_simple
    WHERE active=1 AND refsetId=723264001
    
    SELECT count(referencedComponentId)
    FROM snap_refset_simple
    WHERE active=1 AND refsetId=[refsetId] AND referencedComponentId=[candidateComponentId]
    SELECT referencedComponentId FROM snap_refset_simple
    WHERE active=1 AND refsetId=723264001
    Support EHR Data Entry
    Reference Set Editing
    Get Data from a Reference Set
    HL7
    www.hl7.org
    SNOMED CT - SQL Practical Guide
    Appendix A: Building the SNOMED CT Example Database
    723264001 | Lateralizable body structure reference set|
    53120007 | Upper limb structure|
    80891009 | Heart structure|
    SNOMED CT Expression Constraint Language
    IETF RFC1738
    723264001 | Lateralizable body structure reference set|

    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

    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

    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 members of this reference set specify the set of MRCM reference sets that should be applied to concepts a specified SNOMED CT module.

    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.

    Use Cases
    • EHR Data Entry

    • EHR Data Entry Design

    • EHR Reporting and Analytics

  • 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

    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:

    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.

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

    The identifiers of the domains to which the identified concept belongs.

    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.

    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");

    Each function call returns a single refsetId.

    The other MRCM services described below use this function to determine which reference set to use to access domain, attribute and range constraint information.

    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
    IETF RFC1738
    HL7
    www.hl7.org
    Provide Feedback
    Get and Test Concept Subtypes and Supertypes
    contentTypeId
  • ruleStrengthId

  • domainId: 723264001
  • domainList: 123037004,91723000,723264001

    • 123037004 | Body structure|

    • 91723000 | Anatomical structure|

  • Example 2 returns the following set of domains

    • domainId: 386053000

    • domainList: 71388002,386053000

      • 71388002 | Procedure|

    Example 3 returns the following set of proximal primitive domains

    • domainList: 71388002,386053000,387713003,433590000

    • 71388002 | Procedure|

    • 386053000 | Evaluation procedure|

    Identify each of the domains that is a child or descendant of that top level domain.
  • 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;

    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.

    Support Terminology Authoring and Review
    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.

    723264001 | Lateralizable body structure reference set|
    386053000 | Evaluation procedure|
    387713003 | Surgical procedure|
    433590000 | Administration of substance via specific route|
    Simple Reference Set