Page tree

    TODO: Needs work - these are mostly TB - move to that section?  Or create split here between TS/TB.
    When starting to think about a SNOMED on FHIR implementation, the following questions should be considered:
  • Is the goal (a) homogenous population of resources or (b) permissive guidance to cater for greater flexibility?
  • Do we restrict value sets to ensure that the same information cannot be represented in 2 different ways
  • The same semantics can’t be included in 2 data elements
  • The same semantics can’t be included in 2 resources
  • How widely do we require/recommend SNOMED CT is used across each resource (e.g. vital signs, statuses)
  • Which of these are potentially in scope?
  • Restricting value sets to specific sub-hierarchies
  • New value sets for elements not using SNOMED CT
  • Restricting cardinalities to reduce ambiguity
  • Splicing to align with SNOMED CT concept model
  • Mapping FHIR value sets to SNOMED CT (e.g. status)
  • Defining SNOMED CT templates to support transformations


Referencing a CodeSystem Instance

CodeSystem instances may be referred to in two ways, either using the instance in the URL directly like http://localhost:8080/fhir/CodeSystem/sct_900000000000207008_20200309/$lookup?code=404684003    or by using the system parameter vs http://localhost:8080/fhir/CodeSystem/$lookup?system=http://snomed.info/sct&code=404684003

Either could be used in a GET request. In the CodeSystem endpoint, the Identifier (id) of Code system instance is somewhat arbitrary based on the server implementation, so the parameter approach is considered more transferable and quicker in that you don't need to look up anything first. URIs have been standardized.

In ValueSet implicit expansion the use of a full URI in the url parameter to specify the code system version (saying version here is less confusing than 'instance' which might imply a CodeSystem object) compared to doing that with the system-version parameter  eg http://localhost:8080/fhir/ValueSet/$expand?url=http://snomed.info/sct/45991000052106?fhir_vs=ecl/<<27624003 vs http://localhost:8080/fhir/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=ecl/<<27624003&system-version=http://snomed.info/sct/45991000052106

(Source:  Preferred method to specify system/version - in url address or parameter )


Specifying the version parameter in $translate

In the case of SNOMED, the system will as always be just http://snomed.info/sct   The crucial factor is the location of the map. The edition of the source and target is not important, so the use of the version parameter is prohibited. eg url=http://snomed.info/sct/731000124108/version/20200301?fhir_cm=6011000124106

Ontoserver uses conceptMapVersion for this as well because concept maps that do not use a url in this way also need to be able to specify a version. The working group made the suggestion that the version parameter might be used if the conceptMapVersion is not specified.


(Source: $translate with version )


  • No labels