flowchart BT
accTitle: Diagram showing how an example SNOMED CT concept (413643004 "Beta-hemolytic Streptococcus, group") is related to other SNOMED CT concepts.
A{{SNOMED - CT Concept}}
B[Clinical Finding<br/><code>404684003</code>]
C[Body Structure<br/><code>123037004</code>]
D[Both Kidneys<br/><code>17373004</code>]
E[Acute post-streptococcal glomerulonephritis<br/><code>68544003</code>]
F[Organism<br/><code>410607006</code>]
G[Beta-hemolytic Streptococcus, group A<br/><code>413643004</code>]
B --> |is a|A
F --> |is a|A
F --> |is a|B
G --> |is a|F
G --> |Causative agent|E
E --> |Finding site|D
D --> |is a|C
C --> |is a|B
C --> |is a|A
Terminology and FHIR
-
Explain how terminology enables health data interoperability.
Standard terminology allows data to move across systems while maintaining shared meaning.
-
Identify use cases for terminology in research.
Use cases include helping researchers automatically build cohorts and aggregating data across different systems or institutions.
-
Understand how CodeSystems, ValueSets, and ConceptMaps are used in FHIR.
CodeSystems define a specific terminology and its concepts; ValueSets identify a subset of relevant concepts from one or more code systems; ConceptMaps map one set of concepts onto another.
Terminology is critical for interoperability between clinical systems, representing “concepts in an unambiguous manner between a sender and receiver of information” [1].
Terminology in health informatics consists of mappings between concepts and codes that are defined within a code system.
- Concept
-
A mental representation of a real or abstract thing.
For example, a disease state (like “type 2 diabetes”) or medical procedure (like “bilateral hip replacement”) are both concepts.
- Code
-
A series of letters, numbers, or symbols assigned to a concept for identification or classification.
Codes are machine-readable, allowing systems to unambiguously identify the related concept.
For example, the ICD-11 code
EJ40refers to the concept “Sunburn”. - Code system
-
A predefined, limited list of concepts and their corresponding codes. Code systems often include metadata like relationships between concepts and detailed human-readable descriptions.
ICD-11 is an example of a code system.
Other names for code systems include “coding systems” or “controlled vocabularies”.
The same concept may appear in multiple code systems. Implementers create mappings to relate concepts that exist in different code systems.1
1 Terminology’s importance for research
Using standard terminologies allows researchers to access, exchange, organize, and utilize health data in a consistent and reliable way.
For example, using a standard terminology for conditions in a problem list lets systems build cohorts based on the presence or absence of a specific set of conditions.
Standard terminology also lets applications combine data from multiple systems and institutions, though implementers must still ensure concept meanings are used consistently.2
FHIR supports defining code systems, mapping between them, and “binding” a FHIR data element to a specific subset of concepts from selected code systems.
3 Terminology in FHIR
There are three key FHIR resources for terminology:
- CodeSystem resource: Describes a code system, its concepts, and the codes identifying the concepts. E.g., the LOINC code system.
- ValueSet resource: Specifies a specific set of codes from code system(s). E.g., LOINC concepts identifying types of cancer staging systems.
- ConceptMap resource: Identifies relationships between sets of concepts. E.g., Mapping from SNOMED CT to ICD-10
We review these resources in detail below.
3.1 CodeSystem resource details
The CodeSystem FHIR resource defines an organized, managed collection of concepts that belong to a given terminology system. The CodeSystem resource represents properties of standard terminologies (like LOINC and ICD-10) in a computable format. These properties include:
- The canonical identifier for the code system (typically a URL like
http://loinc.orgfor LOINC, or an OID like2.16.840.1.113883.6.1(which also represents LOINC) - Version of the code system
- The concepts defined by the code system
- Publication metadata like a human-readable description, copyright information, and publication date
- Properties of the code system, such as concept permanence, case-sensitivity, and if it defines a compositional grammar.
Here’s an example, ficticious CodeSystem FHIR resource from the FHIR specification:
{
"resourceType" : "CodeSystem",
"id" : "example",
"meta" : {
"profile" : ["http://hl7.org/fhir/StructureDefinition/shareablecodesystem"]
},
"text" : {
"status" : "additional",
"div" : "..."
},
"url" : "http://hl7.org/fhir/CodeSystem/example",
"identifier" : [{
"system" : "urn:ietf:rfc:3986",
"value" : "urn:oid:2.16.840.1.113883.4.642.4.1827"
},
{
"system" : "http://acme.com/identifiers/codesystems",
"value" : "internal-cholesterol-inl"
}],
"version" : "5.0.0-cibuild",
"name" : "ACMECholCodesBlood",
"title" : "ACME Codes for Cholesterol in Serum/Plasma",
"status" : "draft",
"experimental" : true,
"date" : "2016-01-28",
"publisher" : "Acme Co",
"contact" : [{
"name" : "FHIR project team",
"telecom" : [{
"system" : "url",
"value" : "http://hl7.org/fhir"
}]
}],
"description" : "This is an example code system that includes all the ACME codes for serum/plasma cholesterol from v2.36.",
"caseSensitive" : true,
"content" : "complete",
"filter" : [{
"code" : "acme-plasma",
"description" : "An internal filter used to select codes that are only used with plasma",
"operator" : ["="],
"value" : "the value of this filter is either 'true' or 'false'"
}],
"concept" : [{
"code" : "chol-mmol",
"display" : "SChol (mmol/L)",
"definition" : "Serum Cholesterol, in mmol/L",
"designation" : [{
"use" : {
"system" : "http://acme.com/config/fhir/codesystems/internal",
"code" : "internal-label"
},
"value" : "From ACME POC Testing"
}]
},
{
"code" : "chol-mass",
"display" : "SChol (mg/L)",
"definition" : "Serum Cholesterol, in mg/L",
"designation" : [{
"use" : {
"system" : "http://acme.com/config/fhir/codesystems/internal",
"code" : "internal-label"
},
"value" : "From Paragon Labs"
}]
},
{
"code" : "chol",
"display" : "SChol",
"definition" : "Serum Cholesterol",
"designation" : [{
"use" : {
"system" : "http://acme.com/config/fhir/codesystems/internal",
"code" : "internal-label"
},
"value" : "Obdurate Labs uses this with both kinds of units..."
}]
}]
}This fictitious code system defines three codes for serum/plasma cholesterol:
| Code | Display Text | Definition |
|---|---|---|
chol-mmol |
SChol (mmol/L) | Serum Cholesterol, in mmol/L |
chol-mass |
SChol (mg/L) | Serum Cholesterol, in mg/L |
chol |
SChol | Serum Cholesterol |
Note that all of the common code systems listed above (LOINC, SNOMED-CT, etc.) are listed as “external” code systems in the FHIR specification. This means that their codes and descriptions are not published in FHIR format inside the FHIR specification, and the contents of these code systems can change over time – sometimes frequently – as codes are modified to meet real-world implementation needs. In contrast, internal code systems like Medication Status are published in FHIR format and are only changed when the FHIR specification is updated.
The easiest way to get external code systems in FHIR format is to query a terminology service like tx.fhir.org. (Note that this terminology service is maintained by the FHIR community and is not guaranteed to be perfectly in sync with the canonical list of codes for a given code system. If you notice issues, you can ask for help on chat.fhir.org; see more in the FHIR Community & Documentation module.)
You can query tx.fhir.org or another terminology service if you know the code system’s URI. For example, CVX is identified by http://hl7.org/fhir/sid/cvx, so its contents can be requested from tx.fhir.org by visiting https://tx.fhir.org/r4/CodeSystem?url=http://hl7.org/fhir/sid/cvx.
Research applications
Potential research applications include:
- Identifying which code system a given code comes from.
- Looking up the concept definition or other metadata associated with a given code.
- Using concept relationship metadata to reason about or filter data.
3.2 ValueSet resource details
The ValueSet FHIR resource “specifies a set of codes drawn from one or more code systems, intended for use in a particular context.” ValueSets don’t refer directly to CodeSystems; rather, they identify the relevant CodeSystem by its URI.
Here’s an example of a ValueSet FHIR resource for coding how tumor size is measured in the oncology domain:
{
"resourceType" : "ValueSet",
"id" : "mcode-tumor-size-method-vs",
"extension" : [{
"url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
"valueInteger" : 3
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
"valueCode" : "cic"
}],
"url" : "http://hl7.org/fhir/us/mcode/ValueSet/mcode-tumor-size-method-vs",
"identifier" : [{
"system" : "urn:ietf:rfc:3986",
"value" : "urn:oid:2.16.840.1.113883.4.642.40.15.48.95"
}],
"version" : "4.0.0",
"name" : "TumorSizeMethodVS",
"title" : "Tumor Size Method Value Set",
"status" : "active",
"experimental" : false,
"date" : "2025-02-16T20:00:57+00:00",
"publisher" : "HL7 International / Clinical Interoperability Council",
"contact" : [{
"name" : "HL7 International / Clinical Interoperability Council",
"telecom" : [{
"system" : "url",
"value" : "http://www.hl7.org/Special/committees/cic"
},
{
"system" : "email",
"value" : "ciclist@lists.HL7.org"
}]
}],
"description" : "Code for methods of measuring tumor size, including physical examination, pathology, and imaging.",
"jurisdiction" : [{
"coding" : [{
"system" : "urn:iso:std:iso:3166",
"code" : "US",
"display" : "United States of America"
}]
}],
"copyright" : "This value set includes content from SNOMED CT, which is copyright © 2002+ International Health Terminology Standards Development Organisation (IHTSDO), and distributed by agreement between IHTSDO and HL7. Implementer use of SNOMED CT is not covered by this agreement",
"compose" : {
"include" : [{
"system" : "http://snomed.info/sct",
"concept" : [{
"code" : "787377000",
"display" : "Gross examination and sampling of tissue specimen (procedure)"
},
{
"code" : "104157003",
"display" : "Light microscopy (procedure)"
},
{
"code" : "5880005",
"display" : "Physical examination procedure (procedure)"
},
{
"code" : "16310003",
"display" : "Diagnostic ultrasonography (procedure)"
},
{
"code" : "113091000",
"display" : "Magnetic resonance imaging (procedure)"
},
{
"code" : "77477000",
"display" : "Computerized axial tomography (procedure)"
},
{
"code" : "82918005",
"display" : "Positron emission tomography (procedure)"
},
{
"code" : "363680008",
"display" : "Radiographic imaging procedure (procedure)"
},
{
"code" : "363679005",
"display" : "Imaging (procedure)"
}]
}]
}
}This ValueSet identifies the following codes:
- Pathology
- Macroscopic size from pathology report is represented by SCT
787377000(“Gross examination and sampling of tissue specimen (procedure)”)- Microscopic size from pathology report is represented by SCT
104157003(“Light microscopy (procedure)”)- Physical exam, represented by SCT
5880005(“Physical examination procedure (procedure)”)- Diagnostic imaging
- Imaging modalities commonly used for tumor sizing
- X-ray represented by SCT
363680008(“Physical examination procedure (procedure)”)- Ultrasound represented by SCT
16310003(“Diagnostic ultrasonography (procedure)”)- Magnetic Resonance Imaging (MRI) represented by SCT
113091000(“Magnetic resonance imaging (procedure)”)- Computerized axial tomography (CAT) represented by SCT
77477000(“Computerized axial tomography (procedure)”)- Positron emission tomograph (PET) represented by SCT
82918005(“Positron emission tomography (procedure)”)- Imaging modalities that are less commonly used for tumor sizing
- Imaging represented by SCT
363679005(“Imaging (procedure)”)
As you can see, this value set identifies a specific subset of the SNOMED-CT code system that is relevant to the stated use case of “methods of measuring tumor size, including physical examination, pathology, and imaging.” This can then be used to constrain a FHIR data element to only include these codes, allowing systems and users accessing that data element to have a known set of possible values.
Research applications
Potential research applications include:
- Curating a list of concepts for use in a particular context.
- Identifying a specific set of concepts from specific code systems allowed in a data element.
- Validating that FHIR-formatted data have only the expected codes.
3.3 ConceptMap
The ConceptMap FHIR resource maps a set of concepts to other concepts. The example below maps SNOMED CT to ICD-10 using an instance of the ConceptMap resource:
{
"resourceType" : "ConceptMap",
"id" : "103",
"text" : {
"status" : "extensions",
"div" : "..."
},
"url" : "http://hl7.org/fhir/ConceptMap/103",
"identifier" : [{
"system" : "urn:ietf:rfc:3986",
"value" : "urn:oid:2.16.840.1.113883.4.642.14.7"
},
{
"system" : "urn:ietf:rfc:3986",
"value" : "urn:uuid:53cd62ee-033e-414c-9f58-3ca97b5ffc3b"
}],
"version" : "5.0.0-cibuild",
"name" : "SNOMEDCTToICD10CMMappingsForFractureOfUlna",
"title" : "SNOMED CT to ICD-10-CM mappings for fracture of ulna",
"status" : "draft",
"experimental" : true,
"date" : "2012-06-13",
"publisher" : "HL7, Inc",
"contact" : [{
"name" : "FHIR project team (example)",
"telecom" : [{
"system" : "url",
"value" : "http://hl7.org/fhir"
}]
}],
"description" : "Example rule-based mappings between SNOMED CT to ICD-10-CM for fracture of ulna",
"jurisdiction" : [{
"coding" : [{
"system" : "http://unstats.un.org/unsd/methods/m49/m49.htm",
"code" : "840",
"display" : "United States of America"
}]
}],
"purpose" : "Show example rule based mappings",
"copyright" : "Creative Commons 0",
"sourceScopeCanonical" : "http://snomed.info/sct?fhir_vs",
"group" : [{
"source" : "http://snomed.info/sct",
"target" : "http://hl7.org/fhir/sid/icd-10-cm",
"element" : [{
"code" : "263204007",
"target" : [{
"code" : "S52.209A",
"relationship" : "source-is-broader-than-target",
"comment" : "The target mapping to ICD-10-CM is 'source-is-broader-than-target', since additional patient data on the encounter (initial vs. subsequent) and fracture type is required for a valid ICD-10-CM mapping."
}]
},
{
"code" : "263204007",
"target" : [{
"code" : "S52.209D",
"relationship" : "source-is-broader-than-target",
"comment" : "The target mapping to ICD-10-CM is 'source-is-broader-than-target', since additional patient data on the encounter (initial vs. subsequent), fracture type and healing (for subsequent encounter) is required for a valid ICD-10-CM mapping."
}]
}]
}]
}Research applications
Potential research applications include:
- Creating mappings between two different code systems (e.g., mapping ICD-9 codes in historical records to ICD-10).
- Mapping a custom code system (e.g., custom diagnosis codes for a hospital) to a standardized code system for multi-hospital data aggregation.
References
Footnotes
The ConceptMap FHIR resource supports mapping concepts across code systems. See below for details.↩︎
Semantic interoperability is the term used by informaticists to describe systems that can exchange data with “unambiguous, shared meaning.”↩︎
SNOMED CT relationship types are defined by SNOMED concepts. In this case, “Component” is represented by the SNOMED CT code
246093002.↩︎Adapted from SNOMED CT - Georgia Tech - Health Informatics in the Cloud (YouTube).↩︎