Architect ← Insights

Terminology in FHIR: The Semantic Layer Your Architecture Can't Skip

Terminology is one of the most underestimated complexities in FHIR implementations. FHIR resources define the structural envelope for clinical data, but it is the coded elements inside them — diagnoses coded with ICD-10-CM, procedures with CPT or SNOMED CT, medications with RxNorm, lab observations with LOINC — that carry the semantic meaning required for safe clinical interpretation and cross-system analytics. A FHIR server that accepts syntactically valid resources while permitting arbitrary or inconsistent coded values produces data that is technically interoperable at the transport level and semantically incoherent at the application level. In our experience, this is the failure mode that surfaces last and costs most: everything validates, everything flows, and the analytics team discovers a year later that "diabetes" is represented seventeen different ways.

Three Resources Carry the Whole Semantic Layer

FHIR manages terminology through three resource types, and understanding their division of labor is the foundation of any terminology architecture [2]:

  • CodeSystem declares the existence of a code system and its key properties, and may define part or all of its content. Large external terminologies like SNOMED CT, LOINC, and RxNorm are distributed in their own official formats — a FHIR server can expose them operationally without republishing their full content as resources.
  • ValueSet selects a subset of codes from one or more code systems for a specific context — "body temperature LOINC codes," "diabetes diagnoses." The definition contains selection logic; the expansion is the concrete code list produced by evaluating that logic against specific terminology versions, which is why the same ValueSet can expand differently over time.
  • ConceptMap defines directional relationships from source concepts to target concepts across code systems or value set versions. Directionality matters architecturally: a SNOMED CT-to-ICD-10-CM map built for analytics is not the same artifact as one built for billing, and a translation result does not automatically establish semantic equivalence.

Binding Strength Is a Conformance Constraint, Not a Suggestion

Profiles constrain coded elements by binding them to value sets with one of four strengths — required, extensible, preferred, or example — and a common architectural mistake is treating binding strength as optional guidance [1]. The conformance semantics are precise. With a required binding, the element SHALL contain a code from the bound value set; violations are validation errors, full stop. An extensible binding is subtler and widely misunderstood: if the value set contains an applicable concept for what you're recording, you SHALL use it — codes from outside the value set are permitted only when no concept in the set covers the meaning. That "is there an applicable concept?" test involves clinical judgment, which is why validators typically surface extensible-binding issues as warnings rather than hard errors — but a warning is not a waiver, and data that ignores extensible bindings will fail human conformance review even when it passes automated validation. Preferred bindings carry no conformance expectation (implementations are encouraged, not required, to use them), and example bindings are illustrative only.

The architectural consequence: teams that validate only against required bindings discover their data quality issues late in the integration lifecycle, when downstream consumers — quality measures, analytics, exchange partners — start enforcing the semantics the profile intended all along.

Binding Strengths at a Glance

Strength Conformance Meaning Typical Validator Behavior Architectural Implication
required Code SHALL come from the bound value set Error on violation Enforce at ingestion; non-conformant data must be rejected or remediated
extensible SHALL use a value set code if an applicable concept exists; outside codes only when none applies Warning (applicability requires judgment) Needs governance and mapping review, not just automated validation
preferred Encouraged but not required for conformance Informational at most Adopt where possible; best future-proofing for interoperability
example Illustrative only; no expectations None Treat as documentation, never as a data quality control

Operationalizing Terminology: You Need a Terminology Service

Bindings are only enforceable if something can answer terminology questions at runtime. That something is a terminology service — a FHIR server implementing the terminology operations: $lookup (retrieve a concept's details from a CodeSystem), $validate-code (test whether a code is valid in a code system or value set — far more efficient than expanding and searching, and the only viable approach for effectively unbounded value sets like "all SNOMED CT clinical findings"), $expand (materialize a ValueSet into a concrete code list, with filtering and paging for UI pick-lists), and $translate (evaluate a ConceptMap between systems) [2].

Deployment options range from self-hosting an open-source or commercial terminology server — HAPI FHIR's terminology capabilities, CSIRO's Ontoserver — to consuming a managed service. In the U.S., the NLM's Value Set Authority Center (VSAC) is the official repository for the value sets behind CMS quality measures, exposes a FHIR terminology API [4], and draws from NLM-hosted vocabularies including SNOMED CT, RxNorm, and LOINC (access requires a free UMLS license) [3]. In our experience the deciding factors are terminology licensing, the volume of $validate-code calls your validation pipeline will generate, and whether you need SNOMED CT ECL-level query sophistication or just value set membership checks.

Versioning: The Part Everyone Plans for Last

Terminologies are living artifacts. ICD-10-CM follows an annual U.S. update cycle with changes effective October 1 (and possible April 1 updates), while SNOMED CT, LOINC, and RxNorm each publish on their own regular cadences. Two architectural disciplines follow. First, validate against the version applicable to the data's date, not just the latest release — a diagnosis code can be valid for one date of service and nonexistent in the release covering another. Second, establish a process for updating value set bindings in profiles without breaking existing conformant data: pin expansion versions in your validation infrastructure, regression-test stored data against candidate value set updates before adopting them, and treat terminology releases as scheduled change events with owners — not as background noise that silently shifts what "valid" means in production.

Where CaboLabs Fits

Terminology is where structural interoperability becomes clinical meaning — and it is a discipline CaboLabs has worked in for years across both the FHIR and openEHR ecosystems, where the same challenge appears as terminology bindings in archetypes and templates. CaboLabs helps organizations design terminology architectures: selecting and deploying terminology servers, building value set governance and versioning processes, designing ConceptMaps between local codes and reference terminologies (SNOMED CT, LOINC, ICD-10), and wiring $validate-code enforcement into ingestion pipelines. Our openEHR-native clinical data repository Atomik completes the picture as a standards-based persistence layer where coded clinical data stays queryable and semantically consistent for the long term.

If your FHIR data validates but your analytics don't add up, or you're planning the terminology layer for a new clinical data platform, talk to us at cabolabs.com — semantic coherence is designed, not hoped for.

References & Verifiable Sources

  1. HL7 International: FHIR R4 — Using Codes in Resources (Terminologies) (Official definition of value set bindings and the four binding strengths, including the conformance rules for required and extensible bindings; supports the binding strength section).
  2. HL7 International: FHIR R4 — Terminology Service (Official specification of terminology service functionality built on CodeSystem, ValueSet, and ConceptMap, including the $lookup, $validate-code, $expand, and $translate operations; supports the resources and operations sections).
  3. U.S. National Library of Medicine: Value Set Authority Center (VSAC) (Official NLM repository for value sets drawn from SNOMED CT, RxNorm, LOINC and other vocabularies, including the official versions of CMS eCQM value sets; supports the managed-service option).
  4. U.S. National Library of Medicine: FHIR Terminology Service for VSAC Resources (Official documentation of VSAC's FHIR terminology API, authenticated via a free UMLS license; supports the claim that VSAC is consumable as a FHIR terminology service).

Do you have any questions?

Let us know how we can help you.

Company CaboLabs Health Informatics
Address Juan Paullier 995, Montevideo, Uruguay
Phone +598 99 043 145