ValueSet

fhir technical technical fhirinteroperabilityhealthcare
Source: HL7 System: http://hl7.org/fhir Code: ValueSet Reviewed: 30/12/2025 License: CC-BY-4.0

ValueSet

One-sentence definition: A FHIR ValueSet is a resource that defines a curated set of codes drawn from one or more code systems, used by profiles to constrain what coded values are valid for a specific element — the mechanism by which FHIR enforces controlled vocabularies.

Full Definition

FHIR resources contain many elements that hold coded values: a Condition’s clinical status, an Observation’s category, a MedicationRequest’s route of administration. Without constraints, any code from any system could appear in these elements — which would make data uninterpretable across systems. ValueSets solve this by specifying exactly which codes are acceptable for a given use.

A ValueSet is itself a FHIR resource with an identity (URL, version, name) and a definition of its membership. The membership can be defined by enumeration (list specific codes), by inclusion of an entire code system, by filter (e.g., all SNOMED CT concepts that are descendants of a given concept), or by composition of multiple code systems. At runtime, the set of codes defined by a ValueSet is made concrete through expansion — the process of resolving the definition into an actual list of codes, usually performed by a terminology server.

Profiles bind ValueSets to specific elements using one of four binding strengths: required (only listed codes are valid), extensible (use a listed code if one applies; use another only if none fits), preferred (use a listed code if possible), or example (the binding is illustrative only).

Context and Usage

Where This Term Appears

  • Profiles and StructureDefinitions: Every coded element in a profile has a ValueSet binding that specifies acceptable codes
  • Terminology servers: The $expand operation resolves a ValueSet definition into the full list of codes it contains
  • Validators: FHIR validators check that coded values in resources match the ValueSet bound to that element
  • Implementation guides: IGs publish ValueSets as conformance resources alongside their profiles

Common Usage Examples

In conversation: “The Observation.category element is bound to the FHIR observation category ValueSet — you need to use one of those codes or the validator will reject it.”

In documentation: “Implementations SHALL use codes from the US Core Condition Code ValueSet for Condition.code, which includes ICD-10-CM and SNOMED CT.”

Relationship to Other Terms

  • FHIR — the standard that defines ValueSet as a core terminology resource
  • Profile — profiles bind ValueSets to specific elements to constrain valid coded values
  • StructureDefinition — the resource that encodes ValueSet bindings within a profile
  • LOINC — a common source code system for ValueSets covering observations
  • SNOMED CT — a common source code system for ValueSets covering clinical concepts
  • Terminology Server — the service that expands and validates ValueSets at runtime

Common Misconceptions

Misconception: ValueSet and CodeSystem Are the Same Thing

  • Incorrect belief: A ValueSet and a CodeSystem are interchangeable terms for a list of medical codes.
  • Reality: A CodeSystem defines codes and their meanings (LOINC, SNOMED CT, ICD-10 are code systems). A ValueSet selects a subset of codes from one or more code systems for a specific purpose. The same LOINC code might appear in many different ValueSets, each used for a different element or use case.
  • Why it matters: Confusing them leads to mistakes in IG authoring — such as binding an element to a CodeSystem URL instead of a ValueSet URL, which is invalid.

Misconception: An Extensible Binding Means Any Code Is Acceptable

  • Incorrect belief: An extensible binding is essentially optional — implementers can use any code they want.
  • Reality: Extensible means use a code from the bound ValueSet if one applies. Only if no listed code adequately covers the concept should an implementation use a code from outside the ValueSet. This is a conditional permission, not a blanket override.
  • Why it matters: Overusing the extensibility escape hatch — sending non-ValueSet codes when a listed code would work — undermines interoperability in exactly the scenarios where terminology standards are most important.

Why ValueSets Matter

ValueSets are what make coded data interoperable. A FHIR resource that carries a condition code is only useful if the receiving system can interpret that code. ValueSet bindings create the expectation that specific, shared coding systems will be used — and validators enforce that expectation. Without ValueSets, FHIR resources would be structurally consistent but terminologically incoherent.

For how ValueSets are authored, expanded, and validated — and how binding strengths affect conformance, see the canonical reference → FHIR Terminology

Cross-References

  • FHIR — the standard that defines ValueSet as a core terminology resource
  • Profile — profiles bind ValueSets to specific elements to constrain valid coded values
  • LOINC — a common source code system for ValueSets covering observations
  • SNOMED CT — a common source code system for ValueSets covering clinical concepts
  • Terminology Server — the service that expands and validates ValueSets at runtime

Last reviewed: December 30, 2025 Definition authority: HL7 International Content status: Canonical reference