# HL7 v2 e FHIR para painéis clínicos

> De uma mensagem de laboratório HL7 v2 ORU^R01 para um bloco de painel: Observações FHIR com intervalos e sinalizadores, webhooks assinados, sem duplicados — e por que isto não é monitorização à cabeceira.

Source: https://developers.anpheros.com/pt/guides/clinical-dashboard-hl7-fhir

**Um painel clínico necessita de resultados como dados estruturados e codificados no momento em que são reportados — teste, valor, unidade, intervalo de referência e sinalizador — não PDFs que tem de ler.** Os laboratórios ainda enviam a maioria dos resultados como mensagens HL7 v2 ORU^R01, enquanto os painéis são mais fáceis de construir com Observações FHIR R4. O Anpheros situa-se entre os dois: um sistema laboratorial publica a mensagem HL7 v2 (ou um relatório CSV ou JSON) via HTTPS, cada resultado torna-se uma Observação FHIR com o seu código (LOINC quando o laboratório o envia), valor e intervalo de referência, e um webhook assinado informa o seu painel que chegaram novos resultados.

<!-- visual:dashboard-pipeline -->

## O que o painel recebe

Cada segmento OBX da mensagem torna-se uma Observação de laboratório:

| Campo OBX v2 HL7 | Observação FHIR R4 | No painel |
|---|---|---|
| Código do teste OBX-3 | `code` (LOINC quando o laboratório o envia; um código local é mantido como o código do laboratório) | Nome do teste; LOINC torna-o comparável entre laboratórios |
| Valor OBX-5, unidade OBX-6 | `valueQuantity` (unidade UCUM) | O número e a sua unidade |
| Intervalo de referência OBX-7 | `referenceRange` | A faixa normal |
| Sinal de anormalidade OBX-8 | `interpretation` (H, L, …) | O sinal vermelho ou azul |
| Tempo OBX-14 | `effectiveDateTime` | Quando a amostra foi recolhida |

<!-- visual:dashboard-mock -->

## Importar uma mensagem e reagir a ela

Envie a mensagem para um paciente que criou (ou para o qual tem uma autorização):

```ts
import { readFile } from 'node:fs/promises';
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });   // a sandbox key, sk_test_…
const message = await readFile('oru_r01.hl7', 'utf8');
const result = await anpheros.labs.importHl7(patientId, message, { sourceSystem: 'lab-lis' });
console.log(result);   // created, skipped and unmapped counts
```

Em seguida, deixe a plataforma chamar o seu backend do dashboard em vez de o sondar:

```ts
await anpheros.webhooks.create('https://dashboard.example.org/anpheros/hook', { events: ['resource.created'] });
```

Cada entrega é assinada (verifique-a com `verifyWebhookSignature` do SDK) e é retentada se o seu servidor não responder. O evento transporta o tipo de recurso, o id e o paciente; leia as novas Observações e atualize o bloco. Relatórios reenviados são ignorados, pelo que um laboratório que retransmite em caso de timeout não cria linhas duplicadas no ecrã.

## Escolher HL7 v2 ou FHIR para cada ligação

| Ligação | Utilização | Porquê |
|---|---|---|
| Laboratório → camada de dados | HL7 v2 ORU^R01 (ou CSV/JSON) | O que os sistemas de laboratório já emitem; sem alterações do seu lado |
| Camada de dados → dashboard | FHIR R4 Observation + webhooks | JSON codificado e versionado que o seu front-end pode ler diretamente |
| Dashboard → outras aplicações | FHIR R4, sob o consentimento do paciente | Um padrão para todos os consumidores |

## O que isto não é

- **Não é um feed de monitor de cabeceira.** O Anpheros aceita relatórios de laboratório via HTTPS. Não recebe formas de onda contínuas ou fluxos de dispositivos de monitores de cuidados intensivos, e não é um sistema de alarmes: alertas que afetam os cuidados necessitam de um sistema clínico certificado.
- **Não é um motor de interface MLLP.** As mensagens chegam via HTTPS; se o seu laboratório só fala MLLP sobre TCP, um motor de interface à frente reencaminha-as.
- **Um tipo de mensagem HL7 v2.** São aceites resultados de laboratório ORU^R01; encomendas (ORM/OML) e mensagens ADT não são.

## Perguntas Frequentes

### Pode um dashboard ler resultados de laboratório HL7 v2 diretamente?
Pode, mas cada dashboard necessita então do seu próprio parser HL7 v2, mapeamento de código e desduplicação. Converter uma vez em Observações FHIR R4 com códigos LOINC dá a cada ecrã os mesmos dados limpos.

### Quão rápido os resultados importados chegam ao dashboard?
O pedido de importação retorna quando as Observações são armazenadas, e um webhook `resource.created` é enfileirado para cada uma delas ao mesmo tempo. A entrega é tentada novamente se o seu endpoint estiver indisponível.

### Como são sinalizados os resultados anormais?
OBX-8 torna-se o `interpretation` da Observação (por exemplo, H ou L) e OBX-7 o seu `referenceRange`, para que o dashboard possa mostrar tanto o sinalizador como a banda normal.

### O Anpheros suporta monitorização de UCI?
Não. Armazena resultados de laboratório e clínicos e notifica os seus sistemas sobre novos dados; a monitorização contínua à cabeceira da cama e alarmes clínicos permanecem com dispositivos médicos certificados.

<!-- visual:cta-dashboard -->

## Relacionado

- [API de resultados laboratoriais: HL7 v2, FHIR e LOINC](https://developers.anpheros.com/pt/guides/lab-results-api)
- [Como importar resultados laboratoriais para um registo FHIR](https://developers.anpheros.com/pt/guides/import-lab-results-fhir)
- [Conector de laboratório](https://developers.anpheros.com/pt/guides/lab-connector): a referência do endpoint
- [FHIR vs HL7 v2: diferenças práticas](https://developers.anpheros.com/pt/guides/fhir-vs-hl7-v2)
- [Monitorização remota de pacientes com FHIR](https://developers.anpheros.com/pt/guides/remote-patient-monitoring-fhir)
- [Webhooks](https://developers.anpheros.com/pt/guides/webhooks)
