Page History
Overview
The recommended approach for implementing the IPS Terminology within a software application is to use a terminology server. In a service-oriented architecture, software like Electronic Health Records and Data Analytics tools can delegate all terminology operations to a terminology server. The IPS Terminology can be loaded into Snowstorm, the open-source terminology server developed by SNOMED International.
- Download the IPS Terminology
- Download the Terminology Server
- Load the IPS Terminology into Snowstorm
- Access the IPS Terminology via the FHIR API
- Use the IPS Terminology in a software application
- Store IPS Terminology codes in FHIR resources
- Update the IPS Terminology to a New Version
- Request New Content for the IPS Terminology
Anchor 3a 3a
a. Download the IPS Terminology
Before you can start using the IPS Terminology, you must first download the IPS Terminology package from the IPS Terminology website. The IPS Terminology package uses the same format as
Downloading the IPS Terminology
The IPS Terminology is available in XXXXX. The package follows the RF2 (Release format 2) release file specification. Being an extraction from However, the IPS Terminology package is a subset of the complete SNOMED CT international release, this package containing only includes active content components in the SNAPSHOT release format and . It does not include historical content or , complete metadata values. All these , or stated Description Logic axiom definitions. All these features are available in any complete SNOMED CT Edition.
Download the The IPS Terminology's RF2 zip package with the RF2 release, it will be used for importing into in the terminology server in the following steps.
Downloading the Terminology Server
import process described below, using Snowstorm as an example. Please refer to your terminology server documentation for further instructions.
Anchor | ||||
---|---|---|---|---|
|
Snowstorm is an Snowstorm is the open-source terminology server developed and maintained by SNOMED International and will be used as an example in this guide. A similar process can be followed with other compatible terminology servers, please refer to each terminology server user's guide for specific instructions on installing and loading RF2 packages. D. To download the most recent release of Snowstorm from the , please visit Snowstorm's GitHub repository releases page, and follow the installation instructions.
...
Anchor | ||||
---|---|---|---|---|
|
...
into Snowstorm
The IPS Terminology package is prepared designed to be loaded into an empty Snowstorm instance, instead of the complete International Edition of SNOMED CTterminology server instance. Follow the same standard steps described described in the Snowstorm configuration guide to create a code system and import the IPS Terminology contentpackage into the MAIN branch as the only terminology in the Snowstorm instance.
After the import process is complete, the IPS terminology data Terminology content will be available for access through the terminology server API's APIs.
...
Anchor | ||||
---|---|---|---|---|
|
Snowstorm offers a standard FHIR API that implements the HL7 FHIR Terminology Module specification. This provides access to the terminology using FHIR Operations and returning content structured as FHIR Resources, the full specification of the SNOMED CT representation in FHIR is available in the FHIR documentation.
Base URL
The terminology server API will be exposed in through the server that the Snowstorm instance is running (. For example, if the server is using port 8080 on your local machine - i.e.)
Then the base URL for the FHIR API would be:
FHIR Operations
The FHIR terminology services API can support a range of common implementation use cases, including powering searches in a user interface, filtering content for specific clinical fields (by applying an ECL constraint to the terms entered by the user), and restricting results to a particular clinical domain (e.g., diseases, procedures, substances). In the following sections, we explain some common FHIR terminology operations that can be used for these implementation purposes.
CodeSystem.$lookup
The FHIR CodeSystem lookup operation returns information about a concept (e.g. definition status and descriptions) based on the given SNOMED CT concept identifier (code). For exampleAccessing this URL via a web browser will default to the server API documentation site (i.e.):
This page contains all the API calls that can be used to interact with the terminology server. Browsers like the one provided by SNOMED International use these calls to present the terminology content to the user. Clinical or analytics tools can use the same APIs to leverage the power of the IPS Terminology to support queries and run ECL Expressions.
For example, this URL uses the getConcept method of the API, providing a search string and an ECL constraint, displaying all the procedures that include words that start with the string "append":
https://snowstorm.ihtsdotools.org/snowstorm/snomed-ct/MAIN/concepts?activeFilter=true&term=append&ecl=%3C%3C%2071388002%20%7CProcedure%20(procedure)%7C&offset=0&limit=50
In this case, the search criteria are sent in the "term" and "ecl" URL Query parameters. The Swagger documentation is a guide to all the available API calls, parameters, and return formats.
The parameters include the "system" (i.e. "sct") and the "code" to look for (e.g. "900000000000508004"). One of the use cases for the lookup operation is to retrieve terms and properties for a concept id received from another system.
CodeSystem.$validate-code
The validate-code operation is used to validate if a code is included in the given code system. For example:
The parameters include the "system" (i.e. "sct") and the "code" to validate (e.g. "155574008"). One example of a use case for validation is to check if a given conceptId is a valid SNOMED CT concept.
ValueSet.$expand
The expand operation retrieves a list of concepts that are part of a value set, with the option of filtering by a text string. For example:
http://localhost:8080/fhir/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/%3C%2071388002&count=20&includeDesignations=true&filter=append |
---|
In this example, the URL parameters include an implicit value set (i.e. "fhir_vs=ecl/") defined using an ECL Expression, with a text filter using the "filter" parameter (i.e. "filter=append"). The example above will find the procedures ("< 71388002"), which match the search string "append".
Examples
The following example URLs use the public Snowstorm API provided by SNOMED International. Please click on these links to see an example of each response.
- Lookup: https://snowstorm.snomedtools.org/fhir/CodeSystem/$lookup?system=http://snomed.info/sct&code=900000000000508004
- Validate: https://snowstorm.snomedtools.org/fhir/CodeSystem/$validate-code?system=http://snomed.info/sct&code=155574008
- Expand: https://snowstorm.snomedtools.org/fhir/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/%3C%2071388002&count=20&includeDesignations=true&filter=append
Anchor 3e 3e
e. Use the
...
IPS Terminology in a software application
Using a terminology server is the recommended approach to the integration of the IPS Terminology in a software application. In a service-oriented architecture, software like Electronic Health Records and Data Analytics tools can offload all terminology operations on a terminology server. Consuming the APIS like the one described before, it's possible to allow the user to the HL7 FHIR terminology services API, as described in the previous section, a clinical application can enable the user to search for clinical elements in the IPS Terminology, constraining the search for . The search can be constrained to a specific domain , like (e.g. Conditions or Procedures, ) using the ECL Languagequery language.
An example of data entry fields bound to the IPS terminology can be seen on this demo page:
For example, as shown below, a Procedure data entry field can be bound to the procedure codes in the IPS terminology using the ECL query "< 71388002 |Procedure|" in a ValueSet.$expand operation. Note: The ECL query is shown in its terse, percent-encoded form within the URL below (i.e. "%3C%2071388002")
http://localhost:8080/fhir/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/%3C%2071388002&count=20&includeDesignations=true&filter=append |
---|
This API call (which includes the term filter "append") can be used to create a user interface similar to this one:
The terminology code system and code system version used to refer to the IPS Terminology are shown below:
- Code system
- coding.system = "http://snomed.info/sct"
- Code system version
- coding.version = "http://snomed.info/sub/999991001000101"
- coding.version = "http://snomed.info/sub/999991001000101/version/<publicationDate>"
- e.g., "http://snomed.info/sub/999991001000101/version/20220430"
...
If a terminology server is not available, it 's is possible to use the IPS Free Set (available at XXXXXX), but create a plain list from the RF2 files, but the most advanced features described in this guide (e.g., like concept hierarchies or ECL constraints will not be available.
Updating to new versions of the IPS Terminology
and ECL queries) are not supported by the HL7 IPS Free Set. Users without access to a terminology server can also browse the IPS Terminology and execute ECL queries (for design-time use) in the IPS Terminology browser provided by SNOMED International.
Anchor | ||||
---|---|---|---|---|
|
f. Store IPS Terminology codes in FHIR resources
The FHIR IPS Implementation Guide describes the FHIR resources that are collected into an IPS bundle. Some data elements in these resources use the datatype "CodeableConcept" and are bound to a SNOMED CT value set. These data elements can be populated with codes from the IPS Terminology via a Terminology Server. For example, a response for a ValueSet.$expand operation, which selects all procedures, may look like this:
The "expansion.contains" property lists all the matches, and each one includes the necessary values for populating a CodableConcept data element. For example, this might be used to populate the "code" data element in a FHIR Procedure resource.
The CodableConcept data type uses a Coding property to represent the details of the concept. Using SNOMED CT, the properties "System", "Code" and "Display" of a Coding should always be completed. For example, this is a fragment of a FHIR Procedure resource instance:
The "version" property of the Coding data type is optional and can be completed if this value is obtained from the terminology server.
Anchor | ||||
---|---|---|---|---|
|
g. Update the IPS Terminology to a New Version
As SNOMED CT evolvesThe IPS Terminology is updated annually, following the evolution of SNOMED CT and the HL7 FHIR Terminology binding specifications. In each release, some concepts might be inactivated, and some new concepts may appear. Only active concepts are represented in the IPS Terminology, and the A full SNOMED CT edition will include the complete history tracking of these changes, including inactive content and historical associations with proposed replacements. However, is available in the complete edition of SNOMED CT.With each new release, it's necessary any future versions of the IPS Terminology will include only the content that is active at the time of release. Therefore, to update the IPS Terminology in the Snowstorm terminology server.
XXXXXXXXXXXXXXXXXXXXXX
- What do you do if you want codes added to the IPS?
, it is necessary to remove all indices and reimport the new IPS content.
To do this using the command-line tool of Snowstorm, the import parameters should include "–delete-indices":
java -Xms2g -Xmx4g -jar target/snowstorm*.jar --delete-indices --import=<Absolute-path-of-SNOMED-CT-RF2-zip> |
---|
If the Snowstorm instance is updated to a complete SNOMED CT edition, the first import should delete indexes in the same way. However, the second and subsequent import of a complete SNOMED CT edition can be performed as usual. These will result in incremental updates since the previous edition.
Anchor | ||||
---|---|---|---|---|
|
H. Request New Content for
...
the IPS Terminology
The content of the IPS Terminology is defined by the terminology bindings decided in created by the HL7 FHIR IPS group. The IPS Terminology will be updated to match new versions of this terminology binding definitions. All inquiries about the content of the IPS Terminology should be directed to : XXXXXXXXXXXXX info@snomed.org or support@snomed.org.