Terminology and FHIR

Learning objectives
  1. Explain how terminology enables health data interoperability.
    Standard terminology allows data to move across systems while maintaining shared meaning.
  2. Identify use cases for terminology in research.
    Use cases include helping researchers automatically build cohorts and aggregating data across different systems or institutions.
  3. 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.
Relevant roles:
  • Investigator
  • Informaticist
  • Software Engineer
  • Clinician Scientist/Trainee

Terminology is critical for interoperability between clinical systems, representing “concepts in an unambiguous manner between a sender and receiver of information” (2017).

Terminology in health informatics consists of mappings between concepts and codes that are defined within a code system.

Definitions
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 EJ40 refers 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:

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.org for LOINC, or an OID like 2.16.840.1.113883.6.1 (which also represents LOINC)

  • Version

  • 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 of a CodeSystem FHIR resource:

{
  "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..."
    }]
  }]
}

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:

{
  "resourceType" : "ValueSet",
  "id" : "example-cpt-all",
  "text" : {
    "status" : "generated",
    "div" : "..."
  },
  "url" : "http://hl7.org/fhir/ValueSet/example-cpt-all",
  "identifier" : [{
    "system" : "urn:ietf:rfc:3986",
    "value" : "urn:oid:2.16.840.1.113883.4.642.3.3138"
  }],
  "version" : "5.0.0-cibuild",
  "name" : "AllCPTCodes",
  "title" : "All CPT codes",
  "status" : "active",
  "experimental" : true,
  "date" : "2015-03-12",
  "publisher" : "Health Level Seven International (Vocabulary)",
  "description" : "A value set that includes all CPT codes",
  "useContext" : [{
    "code" : {
      "system" : "http://example.org/fhir/CodeSystem/use-contexts",
      "code" : "species"
    },
    "valueCodeableConcept" : {
      "coding" : [{
        "system" : "http://snomed.info/sct",
        "code" : "337915000",
        "display" : "Homo sapiens (organism)"
      }]
    }
  }],
  "jurisdiction" : [{
    "coding" : [{
      "system" : "urn:iso:std:iso:3166",
      "code" : "US"
    }]
  }],
  "copyright" : "CPT Copyright © 2014 American Medical Association. All rights reserved.",
  "compose" : {
    "include" : [{
      "system" : "http://www.ama-assn.org/go/cpt"
    }]
  }
}

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

2017. https://www.himss.org/terminology-standards.
CDC. 2018. https://www.cdc.gov/vaccines/programs/iis/code-sets.html.
International, SMONED. n.d. SNOMED International. https://www.snomed.org/five-step-briefing.
MedicalBillingandCoding. 2023. “ICD-10-CM.” MedicalBillingandCoding.org. https://www.medicalbillingandcoding.org/icd-10-cm/.
NIH. n.d. Product, Program, and Project Descriptions. https://www.nlm.nih.gov/research/umls/rxnorm/overview.html.
Regenstrief. n.d.a. LOINC. https://loinc.org/get-started/.
———. n.d.b. LOINC. https://loinc.org/get-started/loinc-term-basics/.

Footnotes

  1. The ConceptMap FHIR resource supports mapping concepts across code systems. See below for details.↩︎

  2. Semantic interoperability is the term used by informaticists to describe systems that can exchange data with “unambiguous, shared meaning.”↩︎

  3. SNOMED CT relationship types are defined by SNOMED concepts. In this case, “Component” is represented by the SNOMED CT code 246093002 .↩︎

  4. Adapted from SNOMED CT - Georgia Tech - Health Informatics in the Cloud (YouTube).↩︎