Snowstorm
enIHTSDO Snowstorm is an open source terminology server with special support for SNOMED CT. It is built on top of Elasticsearch, with a focus on performance and enterprise scalability.
APIs
Snowstorm has two APIs:
- HL7 FHIR API 🔥
- Implements the Terminology Module
- Recommended for implementers
- Supports SNOMED CT, LOINC, ICD-10, ICD-10-CM and other code systems
- Specialist SNOMED CT API
- Supports the management of SNOMED CT code systems
- Supports the SNOMED CT Browser
- Supports authoring SNOMED CT editions
TermX
TermX utilize Snowstorm SNOMED CT API including
- search,
- management of concepts and descriptions,
- release management,
- import and export.
Learn more about Snowstorm
- SNOMED CT Terminology Services Course Guide.
- Snowstorm @SNOMED eLearning site.
- Snowstorm FHIR API Postman collection.
- The TermX uses public or private Snowstorm API for queries and edition SNOMED data.
- Snowstorm server installation guide.
Import of the SNOMED RF2 files
You can use REST API to upload SNOMED RF2 files.
The example below describes creating International and Estonian editions and uploading RF2 files.
Prerequisites
- Download SNOMED RF2 files from SNOMED MLDS.
If you don’t have acces contact the National Release Center or become a member of SNOMED .
- Ensure that Snowstorm is running.
Import of International Edition
- Start the import process by creating a new import job. You can use Snowstorm Swagger API or curl.
Within Swagger UI openPOST: /imports
the endpoint, insert it into the body
{
"branchPath": "MAIN",
"createCodeSystemVersion": true,
"type": "SNAPSHOT"
}
and press “Try it now”.
Within curl
curl -v -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{
"branchPath": "MAIN",
"createCodeSystemVersion": true,
"type": "SNAPSHOT"
}' 'http://localhost:8080/imports'
Where ‘http://localhost:8080/imports’ is the address of Snowstorm server.
Store the identifier of the import (it will look like this - d0b30d96-3714-443e-99a5-2f282b1f1b0). It will be needed for the next steps.
- Upload SNOMED archive to the Snowstorm.
Within Swagger UI selectPOST imports/archive
the endpoint and specify the import identifier from the previous step and the file name.
Within curl
curl -X POST --header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
-F file=@init/'1. SnomedCT_InternationalRF2_PRODUCTION_20200731T120000Z.zip' \
'http://localhost:8080/imports/<import-id>/archive'
Import of the local edition or extension
- On the Swagger interface in the ‘Code Systems’ section look for the
Create a code system
endpoint.
Use the following in the request to create the CodeSystem.
{
"branchPath": "MAIN/SNOMEDCT-EE",
"shortName": "SNOMEDCT-EE"
}
or within curl
curl -v -X POST --header 'Content-Type: application/json' \
--header 'Accept: application/json' -d '{
"branchPath": "MAIN/SNOMEDCT-EE",
"shortName": "SNOMEDCT-EE"
}' 'http://localhost:8080/codesystems'
- You now need to import the local extension or edition. Create a new import job.
Look for theImport
endpoint in Swagger UI and then create a new import using:
{
"branchPath": "MAIN/SNOMEDCT-EE",
"createCodeSystemVersion": true,
"type": "SNAPSHOT"
}
or use curl
curl -v -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{
"branchPath": "MAIN/SNOMEDCT-EE",
"createCodeSystemVersion": true,
"type": "SNAPSHOT"
}' 'http://localhost:8080/imports'
- Import extension.
Within Swagger UI select POST imports/archive
the endpoint and specify the import identifier from the previous step and the file name.
Within curl
curl -v -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' \
-F file=@SnomedCT_ManagedServiceEE_PRODUCTION_EE1000181_20200530T120000Z.zip \
'http://localhost:8080/imports/<importid>/archive'