La Terminology en santé numérique est un aspect très important et complexe. Une grande partie de l'interopérabilité dépend de la précision avec laquelle vous encodez vos données.
La spécification du service de Terminology FHIR fait un excellent travail pour offrir aux développeurs une API simple et directe pour le service de terminologie.
La gestion de la Terminology est un domaine complexe — vous devez maintenir à jour les systèmes de codes externes, comprendre leur structure interne, et fournir des outils de création, de gestion des versions et de publication.
On peut imaginer une architecture avec un serveur FHIR et un service de Terminology séparés. Mais un « bon » serveur FHIR dépend fortement de la Terminology — pour la validation, les recherches et les requêtes de subsomption. Implémenter la spécification complète du service de terminologie dans un serveur FHIR est une tâche considérable. Utiliser un service de terminologie externe rend votre serveur FHIR non autonome. Nous faisons donc face à un compromis :(
Commencez avec le serveur FHIR Aidbox pour le stockage de données, les intégrations, l'analytique en santé et plus encore, ou faites appel à notre équipe pour soutenir vos besoins en développement logiciel.
Création vs utilisation
En regardant de plus près la Terminology FHIR, vous remarquerez peut-être qu'elle peut être décomposée en deux parties — création/gestion et utilisation. Pour les cas de création, vous avez besoin de CodeSystems à jour, d'outils de conception de ValueSets avec un moteur d'expansion, de gestion des versions, etc. Pour l'utilisation, vous travaillerez principalement avec des ValueSets immuables et devrez fournir un filtrage et une recherche efficaces pour la validation.
Pour réduire le couplage entre la Terminology et le serveur FHIR, nous pouvons séparer les responsabilités de la façon suivante :
- Concevoir les ValueSets dans le service de Terminology et les publier sous forme expansée via une API ou un format d'exportation en bloc
- Charger et utiliser les ValueSets sous une forme optimisée dans les serveurs FHIR
Voici les détails techniques de la façon dont nous pouvons procéder.
La ressource Concept
Dans Aidbox, nous divisons le CodeSystem en informations d'en-tête et en un ensemble de ressources Concept (pas encore FHIR :) qui ont une structure similaire à l'élément CodeSystem.concept et au type de données Coding. Cela nous permet de traduire une partie de l'API du service de Terminology en une API FHIR unifiée de type CRUD/recherche sur les ressources Concept.
Nous convertissons les terminologies populaires en un ensemble de ressources Concept, qui peuvent être distribuées sous forme de fichiers ndjson pour une exportation/importation en bloc efficace. Voici un exemple pour LOINC :
- code: 10000-8 ** display: R wave duration in lead AVR ** names: - R wave dur L-AVR - Cardiac - "Durat" - "ECG" .... ** property: ** loinc: ** relatednames2: Cardiac; Durat; ECG; EKG.MEASUREMENTS; ... ** method_typ: EKG ** classtype: '2' ** system: Heart ** time_aspct: Pt ** common_order_rank: '0' ** property: Time ** order_obs: Observation ** unitsrequired: Y ....
Dénormalisation de l'expansion
Si nous ajoutons à la ressource Concept plusieurs liens vers des ValueSets, nous pouvons dénormaliser toutes les expansions complexes de ValueSets comme ceci :
code: 10000-8 system: http://loinc.org**display: R wave duration in lead AVR valueSet: - reference: ValueSet/LL1162-8 - reference: ValueSet/another-vs
L'ensemble des Concepts avec les ValueSets dénormalisés peut être exporté en ndjson via une sorte d'API d'exportation en bloc, puis téléversé dans le serveur FHIR.
Exécution du serveur FHIR
La ressource Concept avec des liens vers les ValueSets peut être utilisée dans le serveur FHIR pour implémenter les opérations d'utilisation de base — avec filtre, validate-code et $lookup — par une API de recherche simple sur les Concepts :
GET /ValueSet/v1/$expand?_filter=x => GET /Concept?vs=v1&display=???/ValueSet/v1/$validate-code?system=???code=??? => /Concept?vs=v1&system=???code=???
Conclusion
Pour simplifier l'utilisation de la Terminology et découpler les serveurs FHIR de la terminologie, nous pouvons introduire un nouveau type de ressource Concept, effectuer toute la création de ValueSets dans le service de terminologie, et exporter/importer en bloc les Concepts dénormalisés (expansés) dans les serveurs FHIR avec une implémentation beaucoup plus simple des opérations de base.
Vos commentaires sont les bienvenus !


![Terminology is fun: CodeableConcept.coding[]](/assets/images/articles/horizontal-5.avif?v=2ef8.mrd)
