SNOMED CT Implementation Guide for FHIR
0.0.1 - CI Build

SNOMED CT Implementation Guide for FHIR, published by SNOMED on FHIR project group. This is not an authorized publication; it is the continuous build for version 0.0.1). This version is based on the current content of and changes regularly. See the Directory of published versions


Top Tip

  1. Watch out for a URL for the Expand operation that contains an additional question mark (e.g. implicit Value Set syntax); these SHOULD be %-encoded$expand?url=

How can I get a list of CodeSystems installed on a Terminology Server?

This is done with FHIR’s Search operation - [base]/CodeSystem or [base]/CodeSystem/_search. For example,

For details on the extent of support for various CodeSystems (e.g., can it be used in a [base]/ValueSet/$expand), you need to consult the Server’s TerminologyCapabilities statement which is available at [base]/metadata?mode=terminology

(further discussion needed on distinction as to a) whether the code system is present on the server and b) whether it is possible to be used a the substrate for an expansion operation)

What FHIR Servers can I try connecting to?

This page by CSIRO lists a number of servers and sends them requests for valueset expansions:

How do I list all the Editions and Versions of SNOMED Installed on a server?

Note: work needed on the Terminology Capabilities resource to properly answer this question.

Which version of ECL should be implemented?

The latest version of the ECL specification is here []. As an implementer it is ideal if you implement the latest version.

As a client you can look at the TerminologyCapabilities statement to dertermine whether the constraint filter is supported for SNOMED CT. However, there is currently no standard computable mechanism for a server to indicate which version of ECL it supports, nor if it supports ECL-based implicit ValueSets. Furthermore, there is no computable mechanism in FHIR, nor the ECL specification itself, for indicating whether a subset of the full ECL specification is implemented.

All ECL versions

How should historical associations best be accessed?

Concept Map for “SameAs”, accessed via translate operation.[/edition[/version]]?fhir_cm=900000000000527005

Example of AU Map to 11000168105 Australian Register of Therapeutic Goods identifier reference set (foundation metadata concept) (other available AU maps).


Example to find “SameAs” for an inactive concept in the International Edition:


Expected SAME AS association 88189002 Anesthesiologist (occupation)

For other types of historic association see Representing Historical Associations

How to do lookup and expand operations?



Why is my CURL not working?

Watch that running this statement on any unix or mac command line will result in the dollar sign being interpreted as a variable (which probably doesn’t exist!) and the URL will break at that point. Change the “ to ‘ to avoid this.

curl --location --request GET "$expand?"

How can I find out which value sets contain a given concept?

See Section of the FHIR Specification - Searching for codes in Value Sets. In the case of SNOMED CT, this would normally not include any implicit FHIR Value Set that contains an edition and version of the Code System in its entirety.

How can I find out which reference sets contain a given concept?

There is currently no simple and direct means to determine this with the FHIR API.

It is possible to expand the implicit ValueSet of all Reference Sets ( and then to iterate over the resulting codes withe a $validate-code call for the code in question and each implicit ValueSet of the form[sctid]

It has been suggested that reference set membership could be exposed as a property of the code, but this behaviour is not standardised.

In ConceptMap translate what is the difference between system and source/target?

source and target are ValueSet URIs and system is the CodeSystem URI of the code being looked up.

Do I need a CodeSystem resource in order to implement a SNOMED CT ValueSet?

This question came up in relation to an implementer using the Global Patient Set (GPS) in a non-member country. The Code System Resource is required to ensure interoperability between licensed and non-licensed sites. In the later case, using the GPS, the Code System Content Mode should be set to fragment, to indicate that only a subset of the contents of the full Code System are included. However, the Code System URL of that fragment should still be