Terminologia

Server di terminologia FHIR spiegati: $lookup, $validate-code, $expand, $translate e $subsumes, con richieste

Un server di terminologia contiene sistemi di codici (SNOMED CT, LOINC, ICD-10), value set e concept map e risponde a domande sui codici tramite operazioni FHIR. Cosa fa ogni operazione, esempi di richieste, quali server esistono (tx.fhir.org, Ontoserver, Snowstorm, HAPI) e come le app li utilizzano.

di Pubblicato 7 min di lettura

Risposta breve: un server di terminologia è un server FHIR specializzato in codici. Memorizza CodeSystems (SNOMED CT, LOINC, ICD-10, UCUM, tabelle proprie di HL7), ValueSets (sottoinsiemi nominati per uno scopo: codici dei segni vitali, sostanze allergizzanti) e ConceptMaps (traduzioni tra sistemi), e risponde tramite operazioni standard: $lookup (cosa significa questo codice?), $validate-code (questo codice è permesso qui?), $expand (elenca i codici in questo value set, opzionalmente filtrati per testo), $translate (cos'è questo codice in quell'altro sistema?) e $subsumes (A è un tipo di B?). Le applicazioni lo chiamano invece di spedire copie di terminologie, che sono grandi, soggette a licenza e aggiornate più volte all'anno.

Le risorse

Un server di terminologia FHIR lavora con tre risorse. CodeSystem dichiara un sistema di codici tramite URL canonico e versione, con i suoi concetti o una nota che il contenuto è conservato altrove; ValueSet definisce un sottoinsieme di codici a scopo specifico tramite regole di composizione e un'espansione opzionale calcolata; ConceptMap registra le relazioni sorgente-destinazione tra sistemi con un'equivalenza per ogni mappatura.

  • CodeSystem dichiara un sistema tramite il suo URL canonico (http://snomed.info/sct, http://loinc.org, http://hl7.org/fhir/sid/icd-10), la sua versione, e o i suoi concetti o un'indicazione che il contenuto è conservato altrove (content: not-present per i sistemi con licenza).
  • ValueSet ha un compose (regole: includi tutti i codici da un sistema, codici specifici, o un filtro come discendenti di 404684003 Clinical finding) e, quando calcolato, un expansion (l'elenco effettivo). I binding nei profili puntano ai value set; vedi Profili ed estensioni FHIR.
  • ConceptMap contiene relazioni sorgente → destinazione con un'equivalenza (equivalent, wider, narrower, inexact, unmatched) e dipendenze opzionali, per mappe come SNOMED CT a ICD-10 o codici locali di un laboratorio a LOINC.

Le operazioni, con richieste

Un server di terminologia FHIR risponde a cinque operazioni standard: $lookup restituisce il significato di un codice, $validate-code verifica se un codice appartiene a un sistema o a un value set, $expand elenca i codici in un value set, opzionalmente filtrati per testo, $translate converte un codice in un altro sistema tramite un ConceptMap, e $subsumes testa se un concetto è un tipo di un altro.

$lookup: dettagli di un codice.

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

Restituisce una risorsa Parameters con display ("Emoglobina A1c/Emoglobina.totale nel Sangue"), designazioni in altre lingue e proprietà (per LOINC i sei assi; per SNOMED CT i genitori e le relazioni definitorie).

$validate-code: il codice è nel sistema, o nel value set?

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

Restituisce result: true con il display, o false con un messaggio. I server che validano le risorse chiamano questa operazione per ogni elemento associato.

$expand: i codici in un value set, con filtro testuale per le caselle di ricerca.

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

Restituisce il ValueSet con un elenco expansion.contains: codice, sistema, display. È così che la ricerca delle diagnosi di un EHR funziona contro SNOMED CT senza mantenere localmente 360.000 concetti.

$translate: attraversa un confine di sistema.

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

Restituisce le corrispondenze con la loro equivalenza. La stessa operazione serve le mappe SNOMED CT → ICD-10 dove il server le ospita.

$subsumes: domande sulla gerarchia.

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

Risponde subsumes (il diabete mellito è un antenato del diabete di tipo 2), subsumed-by, equivalent o not-subsumed. Il supporto decisionale lo usa per chiedere questa condizione è un tipo di diabete? senza elencare ogni sottotipo.

Le risposte sono risorse Parameters: un elenco di parti nominate, non un oggetto semplice, il che sorprende chi chiama per la prima volta.

Server che incontrerai

I server di terminologia più comunemente incontrati nella pratica sono tx.fhir.org, il server di riferimento pubblico di HL7 utilizzato dal suo validatore; Ontoserver di CSIRO, un server commerciale dietro diversi programmi nazionali; Snowstorm di SNOMED International, open source e nativo per SNOMED CT; server FHIR generici come HAPI FHIR e Firely Server con operazioni di terminologia; e server nazionali gestiti da agenzie sanitarie.

Server Chi Note
tx.fhir.org HL7 (riferimento) Pubblico, utilizzato dal validatore HL7 e dall'IG Publisher; LOINC, SNOMED CT (dove concesso in licenza), tabelle HL7, UCUM. Non per traffico di produzione
Ontoserver CSIRO (Australia) Commerciale; utilizzato da programmi nazionali (Australia, UK NHS Ontology Server, Paesi Bassi, Belgio); SNOMED CT completo con query ECL
Snowstorm SNOMED International Open source; nativo SNOMED CT con API FHIR; alimenta il browser ufficiale
HAPI FHIR, Firely Server, servizi FHIR Microsoft/Google/AWS Fornitori Server FHIR generici con operazioni di terminologia; carica tu stesso i code system
Server nazionali Ministeri della salute e agenzie Spesso Ontoserver o Snowstorm con l'edizione nazionale e value set locali

Il contenuto è la parte difficile: SNOMED CT richiede una licenza al di fuori dei paesi membri, LOINC richiede l'accettazione dei suoi termini, le varianti nazionali di ICD-10 hanno la loro distribuzione. Un server ti fornisce le operazioni; devi comunque ottenere e caricare il contenuto legalmente.

Come le applicazioni ne usano uno

Le applicazioni utilizzano un server di terminologia per convalidare codici e unità al momento della scrittura, per alimentare le caselle di ricerca tramite $expand con un filtro di testo e un value set, per visualizzare nomi ufficiali tramite $lookup, per mappare codici locali a LOINC o SNOMED CT a ICD-10 tramite $translate, e per ragionare sulle gerarchie tramite $subsumes e l'Expression Constraint Language di SNOMED CT.

  • Validazione al momento della scrittura: rifiuta un'Osservazione il cui codice LOINC non esiste o la cui unità non è UCUM, con un messaggio che nomina il problema.
  • Caselle di ricerca: $expand con filter per selettori di diagnosi, procedure e farmaci, limitati da un value set in modo che i medici vedano solo concetti pertinenti.
  • Visualizzazione: $lookup per mostrare il nome ufficiale e le traduzioni invece di memorizzare stringhe di visualizzazione che diventano obsolete.
  • Mappatura: $translate per trasformare i codici di laboratorio locali in LOINC all'importazione (come mappare i codici di laboratorio locali a LOINC) o SNOMED CT in ICD-10 per la rendicontazione (SNOMED CT vs ICD-10).
  • Ragionamento: $subsumes e il linguaggio di espressione vincolante (ECL) di SNOMED (supportato da Ontoserver e Snowstorm tramite filtri $expand) per definire coorti e regole per gerarchia.

Esegui una cache aggressiva (la terminologia cambia due volte all'anno, non due volte al giorno), fissa le versioni in produzione e considera un'interruzione del server come una validazione degradata piuttosto che un motivo per rifiutare ogni scrittura.

In Anpheros

Anpheros Platform valida i codici LOINC e le unità UCUM che accetta per le osservazioni e i codici ATC per i farmaci rispetto alla terminologia che distribuisce (un sottoinsieme LOINC e l'indice ATC dell'OMS), e documenta la sua API di terminologia sul sito per sviluppatori. Per la navigazione completa di SNOMED CT o ICD-10, rimanda ai browser ufficiali anziché ridistribuire contenuti concessi in licenza.

Pagine correlate

Fonti

Domande frequenti

Ho bisogno di un server di terminologia per usare FHIR?

Non per un piccolo sistema con un elenco di codici fisso. Non appena validi codici da sistemi grandi, offri ricerca clinica o traduci tra sistemi, un server di terminologia ti evita di spedire e aggiornare le terminologie da solo.

Posso usare tx.fhir.org in produzione?

No. È il server di riferimento di HL7 per gli strumenti di validazione e test, senza garanzie di servizio e con vincoli di licenza su alcuni contenuti. Esegui il tuo server o usane uno nazionale o commerciale.

Cos'è l'ECL?

Il linguaggio di espressione vincolante di SNOMED CT, una sintassi di query per insiemi di concetti (ad esempio << 73211009 per il diabete e tutti i suoi sottotipi). I server che lo supportano accettano ECL nei filtri ValueSet e $expand.

Come faccio a sapere quale versione di SNOMED CT ha un server?

Chiedi al CodeSystem (GET /CodeSystem?url=http://snomed.info/sct) e leggi la sua versione, che codifica l'edizione e la data di rilascio (ad esempio http://snomed.info/sct/900000000000207008/version/20260301). Fissa la versione nelle tue richieste quando i risultati devono essere riproducibili.

Anpheros Platform

Provalo gratis nella sandbox

La tua prima chiamata FHIR in 5 minuti. Un'API HL7 FHIR R4 con il consenso del paziente integrato: provala nella sandbox, poi collega la tua app o il sistema della tua clinica.

Gratis · 30 pazienti sintetici · senza carta

Questa guida è informativa e non sostituisce il consulto medico. Per le decisioni sulla tua salute parla con il tuo medico. In caso di emergenza, chiama il numero di emergenza locale (112 in Europa).
Scritto da
Il team Anpheros

Anpheros sviluppa una cartella clinica che il paziente controlla e può condividere con qualsiasi studio medico, su una piattaforma HL7 FHIR R4, con sede in UE. Queste guide ti aiutano a comprendere e organizzare la tua salute; non sostituiscono il tuo medico.

Chi siamo →