Terminologie

Serveurs de terminologie FHIR expliqués : $lookup, $validate-code, $expand, $translate et $subsumes, avec des exemples de requêtes

Serveur de terminologie : systèmes de codage (SNOMED CT, LOINC, ICD-10), valeurs, cartes de concepts. Opérations FHIR pour interroger les codes. Exemples, serveurs (tx.fhir.org, Ontoserver, Snowstorm, HAPI) et usages applicatifs.

par Publié 7 min de lecture

Réponse courte : un serveur de terminologie est un serveur FHIR spécialisé dans les codes. Il stocke les CodeSystems (SNOMED CT, LOINC, ICD-10, UCUM, tables propres à HL7), les ValueSets (ensembles nommés pour un objectif : codes des signes vitaux, substances allergènes) et les ConceptMaps (traductions entre systèmes), et répond via des opérations standard : $lookup (que signifie ce code ?), $validate-code (ce code est-il autorisé ici ?), $expand (lister les codes de cet ensemble de valeurs, éventuellement filtrés par texte), $translate (que signifie ce code dans cet autre système ?) et $subsumes (A est-il une sorte de B ?). Les applications l'appellent au lieu d'expédier des copies de terminologies, qui sont volumineuses, sous licence et mises à jour plusieurs fois par an.

Les ressources

Un serveur de terminologie FHIR fonctionne avec trois ressources. CodeSystem déclare un système de codes par URL canonique et version, avec ses concepts ou une note indiquant que le contenu est conservé ailleurs ; ValueSet définit un sous-ensemble de codes à des fins précises par des règles de composition et une expansion calculée optionnelle ; ConceptMap enregistre les relations source-cible entre les systèmes avec une équivalence pour chaque mappage.

  • CodeSystem déclare un système par son URL canonique (http://snomed.info/sct, http://loinc.org, http://hl7.org/fhir/sid/icd-10), sa version, et soit ses concepts, soit une déclaration que le contenu est détenu ailleurs (content: not-present pour les systèmes sous licence).
  • ValueSet a une compose (règles : inclure tous les codes d'un système, des codes spécifiques, ou un filtre tel que descendants de 404684003 Clinical finding) et, une fois calculé, une expansion (la liste réelle). Les liaisons dans les profils pointent vers des ensembles de valeurs ; voir Profils et extensions FHIR.
  • ConceptMap contient les relations source → cible avec une équivalence (equivalent, wider, narrower, inexact, unmatched) et des dépendances optionnelles, pour des cartes telles que SNOMED CT vers ICD-10 ou les codes locaux d'un laboratoire vers LOINC.

Les opérations, avec les requêtes

Un serveur de terminologie FHIR répond à cinq opérations standard : $lookup renvoie la signification d'un code, $validate-code vérifie si un code appartient à un système ou à un ensemble de valeurs, $expand liste les codes d'un ensemble de valeurs, éventuellement filtrés par texte, $translate convertit un code vers un autre système via un ConceptMap, et $subsumes teste si un concept est une sorte d'un autre.

$lookup : détails d'un code.

GET /CodeSystem/$lookup?system=http://loinc.org&code=4548-4

Retourne une ressource Parameters avec display ("Hémoglobine A1c/Hémoglobine.totale dans le sang"), des désignations dans d'autres langues, et des propriétés (pour LOINC les six axes ; pour SNOMED CT les parents et les relations définissantes).

$validate-code : le code est-il dans le système, ou dans l'ensemble de valeurs ?

GET /ValueSet/$validate-code?url=http://hl7.org/fhir/ValueSet/observation-vitalsignresult&system=http://loinc.org&code=8480-6

Retourne result: true avec l'affichage, ou false avec un message. Les serveurs qui valident les ressources appellent ceci pour chaque élément lié.

$expand : les codes d'un ensemble de valeurs, avec filtrage par texte pour les boîtes de recherche.

GET /ValueSet/$expand?url=http://hl7.org/fhir/ValueSet/condition-code&filter=diabetes&count=20

Retourne le ValueSet avec une liste expansion.contains : code, système, affichage. C'est ainsi que la recherche de diagnostics d'un DME fonctionne contre SNOMED CT sans détenir 360 000 concepts localement.

$translate : franchir une frontière de système.

GET /ConceptMap/$translate?url=https://lab.example.org/ConceptMap/local-to-loinc&system=https://lab.example.org/codes&code=GLU&targetsystem=http://loinc.org

Retourne les correspondances avec leur équivalence. La même opération sert les cartes SNOMED CT → ICD-10 où le serveur les héberge.

$subsumes : questions de hiérarchie.

GET /CodeSystem/$subsumes?system=http://snomed.info/sct&codeA=73211009&codeB=44054006

Répond subsumes (le diabète sucré est un ancêtre du diabète de type 2), subsumed-by, equivalent ou not-subsumed. L'aide à la décision l'utilise pour demander cette condition est-elle une sorte de diabète ? sans lister chaque sous-type.

Les réponses sont des ressources Parameters : une liste de parties nommées, pas un objet simple, ce qui surprend les appelants pour la première fois.

Serveurs que vous rencontrerez

Les serveurs de terminologie les plus souvent rencontrés en pratique sont tx.fhir.org, le serveur de référence public de HL7 utilisé par son validateur ; Ontoserver de CSIRO, un serveur commercial derrière plusieurs programmes nationaux ; Snowstorm de SNOMED International, open source et natif SNOMED CT ; les serveurs FHIR généraux tels que HAPI FHIR et Firely Server avec des opérations de terminologie ; et les serveurs nationaux gérés par les agences de santé.

Serveur Qui Notes
tx.fhir.org HL7 (référence) Public, utilisé par l'outil de validation HL7 et l'IG Publisher ; LOINC, SNOMED CT (lorsqu'il est sous licence), tables HL7, UCUM. Pas pour le trafic de production
Ontoserver CSIRO (Australie) Commercial ; utilisé par des programmes nationaux (Australie, UK NHS Ontology Server, Pays-Bas, Belgique) ; SNOMED CT complet avec requêtes ECL
Snowstorm SNOMED International Open source ; natif SNOMED CT avec une API FHIR ; alimente le navigateur officiel
HAPI FHIR, Firely Server, services FHIR Microsoft/Google/AWS Fournisseurs Serveurs FHIR généraux avec opérations de terminologie ; chargez vous-même les systèmes de codes
Serveurs nationaux Ministères et agences de santé Souvent Ontoserver ou Snowstorm avec l'édition nationale et des ensembles de valeurs locaux

Le contenu est la partie difficile : SNOMED CT nécessite une licence en dehors des pays membres, LOINC nécessite d'accepter ses conditions, les variantes nationales d'ICD-10 ont leur propre distribution. Un serveur vous donne les opérations ; vous obtenez et chargez toujours le contenu légalement.

Comment les applications en utilisent un

Les applications utilisent un serveur de terminologie pour valider les codes et les unités au moment de la saisie, pour alimenter les champs de recherche via $expand avec un filtre textuel et un ensemble de valeurs, pour afficher les noms officiels via $lookup, pour mapper les codes locaux à LOINC ou SNOMED CT vers ICD-10 via $translate, et pour raisonner sur les hiérarchies via $subsumes et le langage de contraintes d'expression de SNOMED CT.

  • Validation à l'écriture : rejeter une Observation dont le code LOINC n'existe pas ou dont l'unité n'est pas UCUM, avec un message qui nomme le problème.
  • Boîtes de recherche : $expand avec filter pour les sélecteurs de diagnostics, de procédures et de médicaments, délimités par un ensemble de valeurs afin que les cliniciens ne voient que les concepts pertinents.
  • Affichage : $lookup pour afficher le nom officiel et les traductions au lieu de stocker des chaînes d'affichage qui deviennent obsolètes.
  • Mappage : $translate pour convertir les codes de laboratoire locaux en LOINC lors de l'importation (comment mapper les codes de laboratoire locaux à LOINC) ou SNOMED CT en ICD-10 pour le reporting (SNOMED CT vs ICD-10).
  • Raisonnement : $subsumes et le Langage de Contraintes d'Expression (ECL, pris en charge par Ontoserver et Snowstorm via les filtres $expand) de SNOMED pour définir des cohortes et des règles par hiérarchie.

Mettez en cache agressivement (la terminologie change deux fois par an, pas deux fois par jour), épinglez les versions en production, et considérez une panne de serveur comme une validation dégradée plutôt qu'une raison de rejeter chaque écriture.

Dans Anpheros

Anpheros Platform valide les codes LOINC et les unités UCUM qu'elle accepte pour les observations et les codes ATC pour les médicaments par rapport à la terminologie qu'elle distribue (un sous-ensemble LOINC et l'index ATC de l'OMS), et documente son API de terminologie sur le site développeur. Pour la navigation complète dans SNOMED CT ou ICD-10, elle pointe vers les navigateurs officiels plutôt que de redistribuer du contenu sous licence.

Pages associées

Sources

Questions fréquentes

Ai-je besoin d'un serveur de terminologie pour utiliser FHIR ?

Pas pour un petit système avec une liste de codes fixe. Dès que vous validez des codes de grands systèmes, proposez une recherche clinique ou traduisez entre systèmes, un serveur de terminologie vous évite d'expédier et de mettre à jour les terminologies vous-même.

Puis-je utiliser tx.fhir.org en production ?

Non. C'est le serveur de référence de HL7 pour les outils de validation et les tests, sans garanties de service et avec des contraintes de licence sur certains contenus. Exécutez le vôtre ou utilisez un serveur national ou commercial.

Qu'est-ce que l'ECL ?

Le Langage de Contraintes d'Expression de SNOMED CT, une syntaxe de requête pour des ensembles de concepts (par exemple << 73211009 pour le diabète et tous ses sous-types). Les serveurs qui le prennent en charge acceptent l'ECL dans les filtres ValueSet et $expand.

Comment savoir quelle version de SNOMED CT un serveur possède ?

Demandez le CodeSystem (GET /CodeSystem?url=http://snomed.info/sct) et lisez sa version, qui encode l'édition et la date de publication (par exemple http://snomed.info/sct/900000000000207008/version/20260301). Épinglez-la dans vos requêtes lorsque les résultats doivent être reproductibles.

Anpheros Platform

Essayez gratuitement dans le sandbox

Votre premier appel FHIR en 5 minutes. Une API HL7 FHIR R4 avec le consentement du patient intégré : essayez-la dans le bac à sable, puis connectez votre propre application ou système de clinique.

Gratuit · 30 patients synthétiques · sans carte

Ce guide est informatif et ne remplace pas une consultation médicale. Pour toute décision concernant votre santé, parlez-en à votre médecin. En cas d’urgence, appelez le numéro d’urgence local (112 en Europe).
Rédigé par
L'équipe Anpheros

Anpheros développe un dossier médical que le patient contrôle et peut partager avec n'importe quelle clinique, sur une plateforme HL7 FHIR R4, basée en UE. Ces guides vous aident à comprendre et organiser votre santé ; ils ne remplacent pas votre médecin.

À propos d'Anpheros →