Skip to main content
Terminology is how FHIR makes coded fields interoperable (LOINC, SNOMED CT, ICD-10, and many more). The spec separates:
  • CodeSystem: “where codes come from” (the universe of codes)
  • ValueSet: “which codes are allowed here” (a subset + rules)

Coding vs CodeableConcept

Many elements use one of these datatypes:
  • Coding: one code from one system (system, code, optional display)
  • CodeableConcept: one or more codings + optional plain text
Example:
{
  "code": {
    "coding": [
      { "system": "http://loinc.org", "code": "29463-7", "display": "Body weight" }
    ],
    "text": "Weight"
  }
}

Binding strength (how strict is “allowed”?)

When a profile binds a coded element to a ValueSet, it declares a strength:
StrengthMeaning (simplified)
requiredMust use a code in the ValueSet
extensibleShould use a code in the ValueSet; if you can’t, you may use another code
preferredBest effort; not an error if you don’t
exampleInformational only
The details matter for validation and interoperability.

Common terminology operations

FHIR defines standard operations for terminology services:
  • ValueSet/$expand: “list the codes in this ValueSet”
  • ValueSet/$validate-code: “is this code in that ValueSet?”
  • CodeSystem/$lookup: “tell me about this code”
  • ConceptMap/$translate: “map this code to a different system”
These are FHIR operations, so they follow the same patterns described in Operations.

Practical tips

  • In FHIR search, token parameters commonly use system|code (e.g. code=http://loinc.org|29463-7). See Search.
  • Terminology is often the difference between “syntactically valid” and “actually interoperable”.
  • IG packages usually ship the ValueSets/CodeSystems you need. See Packages.

Next

This page is coming soon. If you want a quick starting point: