# FHIR vs HL7 v2: differenze pratiche

> Messaggi HL7 v2 e risorse FHIR a confronto per sviluppatori: formato, trasporto, lo stesso risultato di laboratorio in entrambi, insidie di traduzione e dove Anpheros accetta v2.

Source: https://developers.anpheros.com/it/guides/fhir-vs-hl7-v2

**HL7 v2 è il formato di messaggi che i sistemi ospedalieri si scambiano dalla fine degli anni '80 — eventi delimitati da pipe come "paziente ammesso" o "risultato di laboratorio pronto" inviati tra sistemi tramite una connessione di rete — mentre HL7 FHIR è uno standard API web in cui le applicazioni leggono e scrivono risorse come Patient e Observation tramite HTTPS in JSON.** Non sono alternative che si scelgono una volta per tutte: la maggior parte degli ospedali funziona ancora internamente con v2, le nuove applicazioni e le API rivolte ai pazienti utilizzano FHIR, e il lavoro di integrazione spesso consiste nel tradurre l'uno nell'altro. Questa pagina li confronta sui punti che contano quando si scrive codice, mostra gli stessi dati in entrambi e spiega dove Anpheros accetta v2.

## Affiancamento

| | HL7 v2 | HL7 FHIR R4 |
|---|---|---|
| Stile | Messaggi attivati da eventi (ammissione, ordine, risultato) | Risorse che crei, leggi, aggiorni, cerchi |
| Formato | Segmenti di testo separati da interruzioni di riga, campi da `\|`, componenti da `^` | JSON (o XML) |
| Trasporto | Solitamente MLLP su TCP all'interno della rete ospedaliera | HTTPS REST |
| Query | Limitata; i sistemi principalmente inviano dati | Parametri di ricerca, `_include`, cronologia |
| Sicurezza | Livello di rete (VPN, collegamenti privati) | OAuth 2.0 / SMART on FHIR, TLS, scope |
| Flessibilità | Molti campi opzionali e segmenti Z locali; ogni interfaccia viene negoziata | Risorse di base più profili (US Core, IPS, IG europei) |
| Utenti tipici | Sistemi EHR, di laboratorio, di radiologia, di fatturazione all'interno di un ospedale | App, API di accesso per pazienti, scambio inter-organizzativo, AI |

I messaggi v2 più comuni:

| Messaggio | Significato | Risorse FHIR più vicine |
|---|---|---|
| ADT^A01, A03, A08 | Ammissione, dimissione, aggiornamento paziente | `Patient`, `Encounter` |
| ORM / OML | Ordinare un test | `ServiceRequest` |
| ORU^R01 | Risultato pronto | `Observation`, `DiagnosticReport` |
| SIU | Pianificazione | `Appointment` |
| MDM | Documento | `DocumentReference` |

## Lo stesso risultato di laboratorio in entrambi

Una riga di risultato ORU^R01 (segmento OBX):

```
OBX|1|NM|2093-3^Cholesterol^LN||212|mg/dL|<200|H|||F|||20261002074500
```

Lo stesso risultato come Observation HL7 FHIR R4, come Anpheros lo memorizza dopo aver importato quel messaggio:

```json
{
  "resourceType": "Observation",
  "status": "final",
  "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "laboratory"}]}],
  "code": {"coding": [{"system": "http://loinc.org", "code": "2093-3", "display": "Cholesterol [Mass/volume] in Serum or Plasma"}], "text": "Cholesterol"},
  "effectiveDateTime": "2026-10-02T07:45:00Z",
  "valueQuantity": {"value": 212.0, "unit": "mg/dL"},
  "interpretation": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation", "code": "H"}]}],
  "referenceRange": [{"high": {"value": 200.0, "unit": "mg/dL"}}]
}
```

Campo per campo: OBX-3 diventa `code`, OBX-5 e OBX-6 diventano `valueQuantity`, OBX-7 `referenceRange`, OBX-8 `interpretation`, OBX-11 `status`, OBX-14 `effectiveDateTime`. HL7 pubblica una [guida all'implementazione HL7 Version 2 to FHIR](https://build.fhir.org/ig/HL7/v2-to-fhir/) ufficiale con mappature per segmenti, tipi di dati e vocabolari.

## Dove le traduzioni vanno storte

- **Fusi orari.** I timestamp v2 come `20261002074500` spesso non riportano alcun offset; è necessario conoscere il fuso orario del mittente. FHIR richiede un fuso orario ogni volta che è presente un'ora. (Anpheros legge un'ora v2 senza fuso orario come UTC; inviare l'offset se disponibile.)
- **Codici locali.** Molti laboratori inseriscono i propri codici in OBX-3 invece di LOINC. Una buona traduzione mantiene il codice locale e lo mappa a LOINC quando possibile, invece di scartarlo.
- **Invii ripetuti.** I mittenti v2 ritrasmettono in caso di timeout. Senza un identificatore stabile per ogni risultato, un archivio FHIR si riempie di duplicati.
- **Tutto opzionale.** Lo stesso campo può essere vuoto, ripetuto o utilizzato in modo diverso da due mittenti. Validare il lato FHIR; il [validatore FHIR R4](https://developers.anpheros.com/tools/fhir-validator) mostra cosa manca in una risorsa tradotta.
- **Correzioni.** Lo stato del risultato v2 `C` (corretto) dovrebbe aggiornare l'Observation esistente e mantenerne la cronologia, non crearne una seconda.

## Quando usare cosa

- **All'interno di un ospedale, tra sistemi esistenti:** v2 è solitamente ciò che i sistemi utilizzano. Un integration engine instrada e trasforma i messaggi.
- **Costruzione di un'app, un API di accesso per il paziente o qualsiasi cosa che attraversi le organizzazioni:** FHIR, con OAuth e consenso.
- **Alimentazione di AI o analytics:** FHIR, perché è interrogabile, codificato e versionato.
- **Entrambi:** il pattern comune nel mondo reale — ricevere v2 dal laboratorio o dall'EHR, memorizzare FHIR, servire FHIR alle applicazioni.

## Dove si inserisce Anpheros

Anpheros memorizza le cartelle cliniche come FHIR R4 e accetta un tipo di messaggio HL7 v2: **ORU^R01 risultati di laboratorio**, inviato tramite HTTPS al [connettore di laboratorio](https://developers.anpheros.com/it/guides/lab-connector) (`POST /v1/patients/{id}/labs/import` con `Content-Type: x-application/hl7-v2+er7`). Ogni OBX diventa un'Osservazione di laboratorio con codice LOINC, intervallo di riferimento e interpretazione; l'ID del report viene conservato nella provenienza e i report inviati nuovamente vengono saltati. Un risultato corretto (OBX-11 = `C`) con un nuovo valore viene memorizzato come nuova Osservazione con stato `amended`; l'originale rimane invariato, quindi se la tua sorgente invia correzioni, contrassegna l'Osservazione precedente `entered-in-error` o aggiornala tramite l'API FHIR. Un esempio pratico è [Lab results API](https://developers.anpheros.com/it/guides/lab-results-api).

Non accetta altri messaggi v2 (ADT, ordini, pianificazione), non ascolta su MLLP e non invia v2. Per questi, un motore di integrazione davanti ad Anpheros traduce in FHIR e scrive tramite l'API.

## Domande frequenti

### FHIR sta sostituendo HL7 v2?
Non a breve. v2 rimane la spina dorsale della maggior parte degli ospedali perché funziona ed è integrato nei sistemi esistenti. FHIR sta crescendo attorno ad esso — nelle app, nell'accesso ai pazienti e nello scambio tra organizzazioni — e i due coesistono, spesso con traduzione tra di loro.

### Cos'è MLLP?
Minimal Lower Layer Protocol: un modo semplice per incapsulare messaggi v2 su una connessione TCP, con caratteri di inizio e fine attorno a ciascun messaggio e un acknowledgement (ACK) di ritorno. FHIR utilizza invece HTTPS.

### Posso convertire automaticamente i messaggi HL7 v2 in FHIR?
Per lo più. La guida all'implementazione v2-to-FHIR di HL7 fornisce mappature standard e i motori di integrazione le implementano. Aspettati lavoro manuale per codici locali, segmenti Z, fusi orari e come ciascun mittente utilizza i campi opzionali.

### Anpheros accetta HL7 v2?
Sì, per i risultati di laboratorio: i messaggi ORU^R01 inviati tramite HTTPS al connettore di laboratorio diventano FHIR Observations. Altri tipi di messaggi v2 e connessioni MLLP non sono supportati.

## Correlati

- [Mappatura da HL7 v2 a FHIR](https://developers.anpheros.com/it/guides/hl7-v2-to-fhir-mapping): mappatura di segmenti e campi, e un convertitore
- [API per 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)
- [Interoperabilità dei dati sanitari](https://developers.anpheros.com/it/guides/interoperability)
- [DICOM vs FHIR: dati di imaging e dati clinici](https://developers.anpheros.com/it/guides/dicom-vs-fhir)
- [Piattaforma FHIR](https://developers.anpheros.com/it/guides/fhir)
