# HL7 v2 e FHIR per dashboard clinici

> Da un messaggio di laboratorio HL7 v2 ORU^R01 a un riquadro del dashboard: Osservazioni FHIR con intervalli e flag, webhook firmati, nessun duplicato — e perché questo non è monitoraggio al letto del paziente.

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

**Un dashboard clinico necessita di risultati come dati strutturati e codificati nel momento in cui vengono segnalati — test, valore, unità, intervallo di riferimento e flag — non PDF che deve leggere.** I laboratori inviano ancora la maggior parte dei risultati come messaggi HL7 v2 ORU^R01, mentre i dashboard sono più facili da costruire su Osservazioni FHIR R4. Anpheros si posiziona tra i due: un sistema di laboratorio pubblica il messaggio HL7 v2 (o un report CSV o JSON) tramite HTTPS, ogni risultato diventa un'Osservazione FHIR con il suo codice (LOINC quando il laboratorio lo invia), valore e intervallo di riferimento, e un webhook firmato comunica al tuo dashboard che sono arrivati nuovi risultati.

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

## Cosa riceve la dashboard

Ogni segmento OBX del messaggio diventa una Osservazione di laboratorio:

| Campo OBX HL7 v2 | Osservazione FHIR R4 | Sulla dashboard |
|---|---|---|
| Codice test OBX-3 | `code` (LOINC quando il laboratorio lo invia; un codice locale viene mantenuto come codice del laboratorio) | Nome del test; LOINC lo rende confrontabile tra laboratori |
| Valore OBX-5, unità OBX-6 | `valueQuantity` (unità UCUM) | Il numero e la sua unità |
| Intervallo di riferimento OBX-7 | `referenceRange` | La banda normale |
| Flag anomalo OBX-8 | `interpretation` (H, L, …) | Il flag rosso o blu |
| Tempo OBX-14 | `effectiveDateTime` | Quando è stato prelevato il campione |

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

## Importa un messaggio e reagisci ad esso

Invia il messaggio per un paziente che hai creato (o per cui detieni una concessione):

```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
```

Quindi lascia che la piattaforma chiami il tuo backend della dashboard invece di interrogarla:

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

Ogni consegna è firmata (verificala con `verifyWebhookSignature` dall'SDK) e ritentata se il tuo server non risponde. L'evento trasporta il tipo di risorsa, l'ID e il paziente; leggi le nuove Osservazioni e aggiorna la tessera. I report rispediti vengono saltati, quindi un laboratorio che ritrasmette in caso di timeout non crea righe duplicate sullo schermo.

## Scegliere HL7 v2 o FHIR per ogni collegamento

| Collegamento | Utilizzo | Motivo |
|---|---|---|
| Laboratorio → livello dati | HL7 v2 ORU^R01 (o CSV/JSON) | Ciò che i sistemi di laboratorio emettono già; nessun cambiamento dalla loro parte |
| Livello dati → dashboard | FHIR R4 Observation + webhooks | JSON codificato e versionato che il tuo front end può leggere direttamente |
| Dashboard → altre app | FHIR R4, sotto il consenso del paziente | Uno standard per ogni consumatore |

## Cosa non è

- **Non è un feed di monitoraggio da letto.** Anpheros accetta referti di laboratorio tramite HTTPS. Non riceve forme d'onda continue o flussi di dati da dispositivi di monitoraggio intensivo e non è un sistema di allarme: gli allarmi che influiscono sulla cura richiedono un sistema clinico certificato.
- **Non è un motore di interfaccia MLLP.** I messaggi arrivano tramite HTTPS; se il tuo laboratorio supporta solo MLLP su TCP, un motore di interfaccia a monte li inoltra.
- **Un solo tipo di messaggio HL7 v2.** Vengono accettati i risultati di laboratorio ORU^R01; ordini (ORM/OML) e messaggi ADT non sono supportati.

## Domande frequenti

### Un dashboard può leggere direttamente i risultati di laboratorio HL7 v2?
Può farlo, ma ogni dashboard necessita quindi del proprio parser HL7 v2, mappatura del codice e de-duplicazione. La conversione una tantum in FHIR R4 Observations con codici LOINC fornisce a ogni schermata gli stessi dati puliti.

### Quanto velocemente i risultati importati raggiungono il dashboard?
La richiesta di importazione restituisce quando le Observations sono memorizzate e un webhook `resource.created` viene accodato per ciascuna di esse contemporaneamente. La consegna viene ritentata se il tuo endpoint non è disponibile.

### Come vengono contrassegnati i risultati anomali?
OBX-8 diventa il `interpretation` dell'Observation (ad esempio H o L) e OBX-7 il suo `referenceRange`, in modo che il dashboard possa mostrare sia il flag che l'intervallo normale.

### Anpheros supporta il monitoraggio in terapia intensiva?
No. Memorizza i risultati di laboratorio e clinici e notifica i tuoi sistemi sui nuovi dati; il monitoraggio continuo al letto del paziente e gli allarmi clinici rimangono con i dispositivi medici certificati.

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

## Correlati

- [API risultati di laboratorio: HL7 v2, FHIR e LOINC](https://developers.anpheros.com/it/guides/lab-results-api)
- [Come importare risultati di laboratorio in un record FHIR](https://developers.anpheros.com/it/guides/import-lab-results-fhir)
- [Connettore di laboratorio](https://developers.anpheros.com/it/guides/lab-connector): il riferimento all'endpoint
- [FHIR vs HL7 v2: differenze pratiche](https://developers.anpheros.com/it/guides/fhir-vs-hl7-v2)
- [Monitoraggio remoto dei pazienti con FHIR](https://developers.anpheros.com/it/guides/remote-patient-monitoring-fhir)
- [Webhook](https://developers.anpheros.com/it/guides/webhooks)
