Spec reference: https://hl7.org/fhir/terminology-module.html
- 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, optionaldisplay)CodeableConcept: one or more codings + optional plain text
Binding strength (how strict is “allowed”?)
When a profile binds a coded element to a ValueSet, it declares a strength:| Strength | Meaning (simplified) |
|---|---|
required | Must use a code in the ValueSet |
extensible | Should use a code in the ValueSet; if you can’t, you may use another code |
preferred | Best effort; not an error if you don’t |
example | Informational only |
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”
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.
TLQ links
- API reference: Type operations
- Server guide: Operations
- Server guide: Packages
- Related learning: Search, Validation
Next
- How conformance uses terminology: Validation
- How constraints are authored: Profiles
- ValueSet: https://hl7.org/fhir/valueset.html
- CodeSystem: https://hl7.org/fhir/codesystem.html