Terminologia

Servidores de terminologia FHIR explicados: $lookup, $validate-code, $expand, $translate e $subsumes, com pedidos

Servidor de terminologia com sistemas de códigos (SNOMED CT, LOINC, ICD-10), valores e mapas. Responde a perguntas via FHIR. Veja operações, exemplos, servidores (tx.fhir.org, Ontoserver, Snowstorm, HAPI) e uso em aplicações.

por Publicado 7 min de leitura

Resposta curta: um servidor de terminologia é um servidor FHIR especializado em códigos. Armazena CodeSystems (SNOMED CT, LOINC, ICD-10, UCUM, tabelas próprias da HL7), ValueSets (conjuntos nomeados para um propósito: códigos de sinais vitais, substâncias de alergia) e ConceptMaps (traduções entre sistemas), e responde através de operações padrão: $lookup (o que significa este código?), $validate-code (este código é permitido aqui?), $expand (liste os códigos neste conjunto de valores, opcionalmente filtrados por texto), $translate (qual é este código noutro sistema?) e $subsumes (A é um tipo de B?). As aplicações chamam-no em vez de enviarem cópias de terminologias, que são grandes, licenciadas e atualizadas várias vezes por ano.

Os recursos

Um servidor de terminologia FHIR funciona com três recursos. CodeSystem declara um sistema de códigos por URL canónico e versão, com os seus conceitos ou uma nota de que o conteúdo está noutro local; ValueSet define um subconjunto de códigos com um propósito específico através de regras de composição e uma expansão opcional calculada; ConceptMap regista relações de origem para destino entre sistemas com uma equivalência para cada mapeamento.

  • CodeSystem declara um sistema pelo seu URL canónico (http://snomed.info/sct, http://loinc.org, http://hl7.org/fhir/sid/icd-10), a sua versão, e ou os seus conceitos ou uma declaração de que o conteúdo é mantido noutro local (content: not-present para sistemas licenciados).
  • ValueSet tem uma compose (regras: incluir todos os códigos de um sistema, códigos específicos, ou um filtro como descendentes de 404684003 Clinical finding) e, quando computado, uma expansion (a lista real). As ligações em perfis apontam para conjuntos de valores; veja Perfis e extensões FHIR.
  • ConceptMap contém relações fonte → alvo com uma equivalência (equivalent, wider, narrower, inexact, unmatched) e dependências opcionais, para mapas como SNOMED CT para ICD-10 ou códigos locais de um laboratório para LOINC.

As operações, com pedidos

Um servidor de terminologia FHIR responde a cinco operações padrão: $lookup devolve o significado de um código, $validate-code verifica se um código pertence a um sistema ou conjunto de valores, $expand lista os códigos num conjunto de valores, opcionalmente filtrados por texto, $translate converte um código para outro sistema através de um ConceptMap, e $subsumes testa se um conceito é um tipo de outro.

$lookup: detalhes de um código.

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

Retorna um recurso Parameters com display ("Hemoglobin A1c/Hemoglobin.total in Blood"), designações noutras línguas e propriedades (para LOINC os seis eixos; para SNOMED CT os pais e relações definidoras).

$validate-code: o código está no sistema, ou no conjunto de valores?

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

Retorna result: true com o display, ou false com uma mensagem. Servidores que validam recursos chamam isto para cada elemento ligado.

$expand: os códigos num conjunto de valores, com filtragem de texto para caixas de pesquisa.

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

Retorna o ValueSet com uma lista expansion.contains: código, sistema, display. É assim que a pesquisa de diagnósticos de um EHR funciona contra SNOMED CT sem manter 360.000 conceitos localmente.

$translate: atravessa uma fronteira de 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

Retorna as correspondências com a sua equivalência. A mesma operação serve mapas SNOMED CT → ICD-10 onde o servidor os hospeda.

$subsumes: questões de hierarquia.

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

Responde subsumes (diabetes mellitus é um ancestral de diabetes tipo 2), subsumed-by, equivalent ou not-subsumed. O suporte à decisão usa-o para perguntar esta condição é algum tipo de diabetes? sem listar cada subtipo.

As respostas são recursos Parameters: uma lista de partes nomeadas, não um objeto simples, o que surpreende os chamadores de primeira vez.

Servidores que irá encontrar

Os servidores de terminologia mais encontrados na prática são tx.fhir.org, o servidor de referência público da HL7 usado pelo seu validador; Ontoserver da CSIRO, um servidor comercial por trás de vários programas nacionais; Snowstorm da SNOMED International, de código aberto e nativo para SNOMED CT; servidores FHIR gerais como HAPI FHIR e Firely Server com operações de terminologia; e servidores nacionais geridos por agências de saúde.

Servidor Quem Notas
tx.fhir.org HL7 (referência) Público, usado pelo validador HL7 e IG Publisher; LOINC, SNOMED CT (onde licenciado), tabelas HL7, UCUM. Não para tráfego de produção
Ontoserver CSIRO (Austrália) Comercial; usado por programas nacionais (Austrália, UK NHS Ontology Server, Países Baixos, Bélgica); SNOMED CT completo com consultas ECL
Snowstorm SNOMED International Código aberto; nativo SNOMED CT com uma API FHIR; potencia o navegador oficial
HAPI FHIR, Firely Server, Microsoft/Google/AWS FHIR services Fornecedores Servidores FHIR gerais com operações de terminologia; carregue os seus próprios sistemas de código
Servidores nacionais Ministérios e agências de saúde Frequentemente Ontoserver ou Snowstorm com a edição nacional e conjuntos de valores locais

O conteúdo é a parte difícil: SNOMED CT requer uma licença fora dos países membros, LOINC requer a aceitação dos seus termos, as variantes nacionais do ICD-10 têm a sua própria distribuição. Um servidor dá-lhe as operações; ainda obtém e carrega o conteúdo legalmente.

Como as aplicações usam um

As aplicações usam um servidor de terminologia para validar códigos e unidades no momento da escrita, para alimentar caixas de pesquisa através de $expand com um filtro de texto e um conjunto de valores, para exibir nomes oficiais através de $lookup, para mapear códigos locais para LOINC ou SNOMED CT para ICD-10 através de $translate, e para raciocinar sobre hierarquias através de $subsumes e da Expression Constraint Language do SNOMED CT.

  • Validação ao escrever: rejeitar uma Observation cujo código LOINC não existe ou cuja unidade não é UCUM, com uma mensagem que nomeia o problema.
  • Caixas de pesquisa: $expand com filter para seletores de diagnóstico, procedimento e medicação, com âmbito por um conjunto de valores para que os clínicos vejam apenas conceitos relevantes.
  • Exibição: $lookup para mostrar o nome oficial e traduções em vez de armazenar strings de exibição que ficam desatualizadas.
  • Mapeamento: $translate para transformar códigos de laboratório locais em LOINC na importação (como mapear códigos de laboratório locais para LOINC) ou SNOMED CT em ICD-10 para relatórios (SNOMED CT vs ICD-10).
  • Raciocínio: $subsumes e a Expression Constraint Language (ECL) do SNOMED, suportada por Ontoserver e Snowstorm através de filtros $expand, para definir coortes e regras por hierarquia.

Armazene em cache agressivamente (a terminologia muda duas vezes por ano, não duas vezes por dia), fixe versões em produção e trate uma interrupção do servidor como validação degradada em vez de uma razão para rejeitar todas as escritas.

Em Anpheros

A Plataforma Anpheros valida os códigos LOINC e as unidades UCUM que aceita para observações e os códigos ATC para medicamentos contra a terminologia que distribui (um subconjunto LOINC e o índice ATC da OMS), e documenta a sua API de terminologia no site do desenvolvedor. Para navegação completa em SNOMED CT ou ICD-10, aponta para os navegadores oficiais em vez de redistribuir conteúdo licenciado.

Páginas relacionadas

Fontes

Perguntas frequentes

Preciso de um servidor de terminologia para usar FHIR?

Não para um sistema pequeno com uma lista de códigos fixa. Assim que validar códigos de sistemas grandes, oferecer pesquisa clínica ou traduzir entre sistemas, um servidor de terminologia poupa-lhe o trabalho de enviar e atualizar as terminologias.

Posso usar tx.fhir.org em produção?

Não. É o servidor de referência da HL7 para ferramentas de validação e testes, sem garantias de serviço e com restrições de licença em algum conteúdo. Execute o seu próprio ou use um nacional ou comercial.

O que é ECL?

A Expression Constraint Language do SNOMED CT, uma sintaxe de consulta para conjuntos de conceitos (por exemplo << 73211009 para diabetes e todos os seus subtipos). Servidores que a suportam aceitam ECL em filtros ValueSet e $expand.

Como sei qual a versão do SNOMED CT que um servidor tem?

Pergunte ao CodeSystem (GET /CodeSystem?url=http://snomed.info/sct) e leia a sua versão, que codifica a edição e a data de lançamento (por exemplo http://snomed.info/sct/900000000000207008/version/20260301). Fixe-a nos seus pedidos quando os resultados devem ser reproduzíveis.

Anpheros Platform

Experimente grátis no sandbox

Sua primeira chamada FHIR em 5 minutos. Uma API HL7 FHIR R4 com o consentimento do paciente integrado: experimente na sandbox e depois conecte a sua própria app ou sistema clínico.

Grátis · 30 pacientes sintéticos · sem cartão

Este guia é meramente informativo e não substitui aconselhamento médico. Para decisões sobre a sua saúde, fale com o seu médico. Em uma emergência, ligue para o número de emergência local (112 na Europa).
Escrito por
A equipa Anpheros

A Anpheros desenvolve um registo médico que o doente controla e pode partilhar com qualquer clínica, numa plataforma HL7 FHIR R4, sediada na UE. Estes guias ajudam-no a compreender e organizar a sua saúde; não substituem o seu médico.

Sobre a Anpheros →