ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

ValueSet — Sélection de codes pour un binding

Tout champ FHIR de type code ou CodeableConcept est lié à un ValueSet par un binding. ValueSet est ainsi la pierre angulaire de la terminologie clinique FHIR.

Objet de la ressource

ValueSet sélectionne un sous-ensemble de codes parmi un ou plusieurs CodeSystem, pour être utilisé comme binding par les éléments FHIR (Patient.gender, Observation.code, Condition.severity…). Un ValueSet a deux faces :

  • Définition (compose) — les règles d'appartenance : « tous les codes de SNOMED descendants de 386053000 ».
  • Expansion (expansion) — la liste effective des codes à un instant donné.

L'opération $expand calcule l'expansion à partir de la définition, en tenant compte de la version de chaque CodeSystem (SNOMED 2026-03, LOINC 2.78, etc.).

Champs clés

ChampTypeCardinalitéRôle
urluri0..1URL canonique du ValueSet.
versionstring0..1Version du ValueSet.
namestring0..1Nom machine.
statuscode1..1État de publication.
immutableboolean0..1Le ValueSet ne change-t-il jamais ? Si oui, expansion stable.
composeBackboneElement0..1Règles d'inclusion / exclusion.
compose.includeBackboneElement[]0..*Source(s) à inclure.
compose.include.systemuri0..1URL canonique du CodeSystem source.
compose.include.conceptBackboneElement[]0..*Codes explicitement listés.
compose.include.filterBackboneElement[]0..*Filtre par propriété (ex : « is-a 386053000 »).
compose.include.valueSetcanonical[]0..*Inclusion d'un autre ValueSet.
compose.excludeBackboneElement[]0..*Exclusions.
expansionBackboneElement0..1Liste effective de codes (calculée).
expansion.timestampdateTime1..1Quand l'expansion a été calculée.
expansion.containsBackboneElement[]0..*Codes effectifs.

Binding strength

Dans une StructureDefinition, un binding ValueSet est qualifié par une force (binding strength) :

ForceSens
requiredLe code DOIT venir du ValueSet.
extensibleLe code DEVRAIT venir du ValueSet, sauf si aucun code adapté : alors fournir un texte ou un autre système.
preferredLe ValueSet est recommandé mais non imposé.
exampleLe ValueSet est un exemple, libre.

Exemple JSON

Le ValueSet canonique administrative-gender utilisé pour Patient.gender :

json valueset-administrative-gender.json
{
  "resourceType": "ValueSet",
  "id": "administrative-gender",
  "url": "http://hl7.org/fhir/ValueSet/administrative-gender",
  "version": "5.0.0",
  "name": "AdministrativeGender",
  "title": "AdministrativeGender",
  "status": "active",
  "experimental": false,
  "date": "2026-05-14",
  "publisher": "HL7 International (FHIR Project)",
  "description": "The gender of a person used for administrative purposes.",
  "immutable": true,
  "compose": {
    "include": [{
      "system": "http://hl7.org/fhir/administrative-gender",
      "concept": [
        { "code": "male",    "display": "Male" },
        { "code": "female",  "display": "Female" },
        { "code": "other",   "display": "Other" },
        { "code": "unknown", "display": "Unknown" }
      ]
    }]
  }
}

Opérations $expand et $validate-code

  • GET [base]/ValueSet/123/$expand — calcule l'expansion.
  • GET [base]/ValueSet/$expand?url=http://hl7.org/fhir/ValueSet/administrative-gender — expand par URL canonique.
  • GET [base]/ValueSet/123/$validate-code?code=male&system=http://hl7.org/fhir/administrative-gender — valide qu'un code appartient au ValueSet.

Ces opérations sont décrites par OperationDefinition et exposées par les serveurs de terminologie (TX server) comme tx.fhir.org, Ontoserver, Hapi FHIR.

Pièges courants

  • Confondre url et identifier — l'url est l'URL canonique unique, qui est aussi la cible des bindings.
  • Filter is-a sur un CodeSystem qui n'expose pas la hiérarchie — vérifier CodeSystem.hierarchyMeaning avant d'utiliser un filtre is-a.
  • Expansion sans version de CodeSystem — l'expansion DOIT figer la version (system.version) pour reproductibilité.
  • ValueSet trop large (SNOMED full) — un binding required à un ValueSet de plusieurs millions de codes ralentit toute validation.
  • Code dans concept[] mais hors CodeSystem source — incohérence : le code doit exister dans le CodeSystem cité.

Ressources liées

  • CodeSystem — source de codes utilisés par le ValueSet.
  • ConceptMap — mapping entre deux ValueSet.
  • NamingSystem — identifiants alternatifs des systèmes.
  • StructureDefinition — où les bindings sont déclarés.