HL7 PT FHIR Implementation Guide: Terminologias
1.0.0 - STU1
HL7 PT FHIR Implementation Guide: Terminologias, publicado por HL7 Portugal. Este guia não é uma publicação autorizada; é a compilação contínua para a versão 1.0.0 construída pela FHIR (HL7® FHIR® Standard) CI Build. Esta versão é baseada no conteúdo atual de https://github.com/hl7-pt/terminologias/tree/master e muda regularmente. Veja o Diretório de versões publicadas
Built from commit 987016b6.
As terminologias são um dos pilares do FHIR. Permitem garantir que sistemas diferentes utilizam os mesmos códigos para representar conceitos clínicos, administrativos ou organizacionais. Exemplos:
| Conceito | Código | Sistema | |———–|———-|———-| | Masculino | male | AdministrativeGender | | Diabetes Mellitus | 44054006 | SNOMED CT | | Hemoglobina | 718-7 | LOINC | | Portugal | PRT | ISO 3166 | Sem terminologias normalizadas, cada sistema poderia utilizar valores diferentes:
```text Masculino M Male Homem 1
O objetivo das terminologias é garantir interoperabilidade sem ambiguidades.
Conceitos fundamentais
Existem quatro recursos principais relacionados com terminologias:
Recurso Função CodeSystem Define códigos ValueSet Seleciona códigos permitidos ConceptMap Mapeia códigos entre sistemas NamingSystem Descreve identificadores externos
Na prática, os mais utilizados são:
⸻
CodeSystem
Um CodeSystem define um conjunto de conceitos e respetivos códigos.
Exemplo:
{ "resourceType": "CodeSystem", "url": "https://hl7.pt/fhir/CodeSystem/color", "version": "1.0.0", "status": "active", "content": "complete", "concept": [ { "code": "red", "display": "Red" }, { "code": "blue", "display": "Blue" } ] }
Neste exemplo:
Código Display red Red blue Blue
O CodeSystem é o “dicionário”.
⸻
ValueSet
Um ValueSet define quais os códigos permitidos.
Pode incluir:
Exemplo:
{ "resourceType": "ValueSet", "url": "https://hl7.pt/fhir/ValueSet/warm-colors", "version": "1.0.0", "compose": { "include": [ { "system": "https://hl7.pt/fhir/CodeSystem/color", "concept": [ { "code": "red" } ] } ] } }
Resultado:
red
O ValueSet é uma seleção de códigos.
⸻
Relação entre CodeSystem e ValueSet
CodeSystem ├── red ├── blue ├── green └── yellow ValueSet A ├── red └── yellow ValueSet B ├── blue └── green
Um CodeSystem pode originar vários ValueSets.
⸻
Canonical URLs
Todos os artefactos terminológicos devem possuir URLs estáveis.
Exemplo:
https://hl7.pt/fhir/CodeSystem/color https://hl7.pt/fhir/ValueSet/warm-colors
Estas URLs:
⸻
Versões
A versão é independente do URL.
Correto:
URL: https://hl7.pt/fhir/CodeSystem/color Versão: 1.0.0 2.0.0 3.0.0
Errado:
https://hl7.pt/fhir/CodeSystem/color-v1 https://hl7.pt/fhir/CodeSystem/color-v2
Exemplo:
{ "url": "https://hl7.pt/fhir/CodeSystem/color", "version": "2.0.0" }
⸻
Referenciar versões
Sem versão:
https://hl7.pt/fhir/CodeSystem/color
Com versão:
| https://hl7.pt/fhir/CodeSystem/color | 2.0.0 |
| O caracter | indica a versão. |
⸻
Binding de ValueSets em Profiles
Um dos usos mais frequentes é restringir os valores permitidos num elemento.
Exemplo:
Profile: MyPatient Parent: Patient
Ou utilizando o canonical:
⸻
Tipos de Binding
Required
Só podem ser usados códigos do ValueSet.
⸻
Extensible
Devem ser usados códigos do ValueSet sempre que possível.
⸻
Preferred
Recomendado mas não obrigatório.
⸻
Example
Apenas exemplo.
⸻
Como funciona a validação terminológica
Quando um recurso é validado:
{ "gender": "male" }
O validador verifica:
Se tudo estiver correto:
Validation successful
Caso contrário:
Code not found in ValueSet
⸻
Servidor Terminológico
Um servidor terminológico disponibiliza operações para:
Exemplos:
⸻
tx.hl7.pt (FHIRSmith)
O servidor terminológico da HL7 Portugal disponibiliza funcionalidades FHIR Terminology.
Canonical base:
https://tx.hl7.pt/fhir
⸻
Operação $expand
Expande um ValueSet.
Pedido:
GET [base]/ValueSet/$expand?url=https://hl7.pt/fhir/ValueSet/warm-colors
Exemplo:
GET https://tx.hl7.pt/fhir/ValueSet/$expand?url=https://hl7.pt/fhir/ValueSet/warm-colors
Resposta:
{ "expansion": { "contains": [ { "code": "red", "display": "Red" } ] } }
⸻
Operação $validate-code
Verifica se um código pertence a um ValueSet.
Pedido:
GET [base]/ValueSet/$validate-code ?url=https://hl7.pt/fhir/ValueSet/warm-colors &code=red
Resposta:
{ "result": true }
⸻
Operação $lookup
Obtém informação sobre um conceito.
Pedido:
GET [base]/CodeSystem/$lookup ?system=https://hl7.pt/fhir/CodeSystem/color &code=red
Resposta:
{ "display": "Red" }
⸻
Operação $validate
Valida um recurso completo.
Exemplo:
POST [base]/Bundle/$validate
ou
POST [base]/Patient/$validate
O servidor valida:
⸻
Utilização com o FHIR Validator
O validador oficial pode utilizar servidores terminológicos externos.
Exemplo:
java -jar validator.jar
patient.json
-tx https://tx.hl7.pt/fhir
O parâmetro:
-tx
indica o servidor terminológico.
⸻
Fluxo típico
Excel ↓ CodeSystem ↓ ValueSet ↓ Profile Binding ↓ FHIR Validator ↓ tx.hl7.pt
⸻
Boas práticas
https://hl7.pt/fhir/CodeSystem/my-codes
Não alterar.
url = constante version = variável
Mesmo quando o ValueSet inclui todos os códigos.
(required)
Melhora a interoperabilidade.
CodeSystem ├── 1.0.0 ├── 2.0.0 └── 3.0.0
Permite reproduzir implementações antigas.
Antes de publicar:
para confirmar o comportamento esperado.