Mòdul 13 · Lliçó 2 de 6
HL7 v2: admissions, peticions i resultats
Com es construeix un missatge HL7 v2, quins esdeveniments ADT avisen d'ingressos i altes, i com viatgen peticions i resultats amb ORM, OML i ORU.
- 30 min
- 6 fonts
- 9 targetes
- Actualitzada el 26 d'octubre de 2026
HL7 v2 és la llengua franca dels hospitals: missatges de text, línia a línia, que surten quan passa alguna cosa. Un ingrés desencadena un missatge ADT; una petició d'analítica, un OML o un ORM; un resultat validat, un ORU. Entendre'n l'anatomia (segments, camps i delimitadors) i els esdeveniments permet llegir gairebé qualsevol interfície hospitalària. La seva gran debilitat és la variació: cada implementació l'interpreta a la seva manera.
Un estàndard nascut dels esdeveniments
HL7 v2 va ser el primer estàndard d'intercanvi d'HL7 i és un dels més adoptats, sobretot en l'àmbit hospitalari 5. La versió 2.9 de l'estàndard és del 2019 1.
La seva idea central és l'esdeveniment desencadenant. L'estàndard parteix que un fet real crea la necessitat que les dades flueixin: «a patient is admitted» o que el resultat d'una observació estigui disponible 1. Quan el sistema que registra el fet envia la informació pel seu compte, l'intercanvi s'anomena actualització no sol·licitada 1. El receptor respon amb un acusament.
Cada missatge té un tipus (ADT, ORU…) i un esdeveniment (A01, R01…). Un tipus pot anar amb molts esdeveniments, però un esdeveniment pertany a un sol tipus 1. La llista oficial d'esdeveniments és la taula HL7 0003 2.
Anatomia d'un missatge
Un missatge és text. Cada línia és un segment, que comença amb un identificador de tres caràcters i acaba amb un retorn de carro 1. Dins del segment, els camps se separen amb delimitadors declarats a la mateixa capçalera 1:
| Caràcter | Funció |
|---|---|
| | Separa camps, i l'identificador del segment del seu primer camp |
^ | Separa components dins d'un camp (cognom^nom) |
~ | Separa repeticions d'un camp (diversos identificadors) |
\ | Caràcter d'escapament |
& | Separa subcomponents |
Són els valors recomanats per HL7; el camp de capçalera «Encoding Characters» declara els que fa servir cada missatge 1. Els segments més freqüents són aquests 3:
| Segment | Nom | Què porta |
|---|---|---|
MSH | Message Header | Emissor, receptor, data, tipus i esdeveniment, identificador del missatge, versió |
EVN | Event Type | Dades de l'esdeveniment: quan va passar i qui el va registrar |
PID | Patient Identification | Identificadors, nom, data de naixement, sexe, domicili |
PV1 | Patient Visit | Episodi: classe (ingressat, ambulatori), ubicació, metge responsable |
ORC | Common Order | Dades comunes de la petició: números d'ordre, estat, peticionari |
OBR | Observation Request | Quina prova es demana o s'informa |
OBX | Observation/Result | Un resultat: codi, valor, unitat, rang, estat |
MSA | Message Acknowledgment | Resposta al missatge rebut |
MRG | Merge Patient Information | Identificador antic en una fusió de pacients |
ADT: el pols de l'hospital
Els missatges ADT (admission, discharge, transfer) avisen de tot el que li passa al pacient al centre. Són els que més circulen: gairebé tots els sistemes necessiten saber qui està ingressat i on. Aquests són els esdeveniments més habituals, amb el seu nom oficial 2:
| Esdeveniment | Nom a la taula 0003 | Quan es desencadena |
|---|---|---|
A01 | Admit/visit notification | Ingrés hospitalari |
A02 | Transfer a patient | Canvi d'unitat o de llit |
A03 | Discharge/end visit | Alta o fi de visita |
A04 | Register a patient | Registre d'un pacient ambulatori o d'urgències |
A08 | Update patient information | Canvi de dades del pacient o de l'episodi |
A11 / A13 | Cancel admit / Cancel discharge | Anul·lació d'un ingrés o d'una alta registrats per error |
A28 / A31 | Add / Update person information | Alta o canvi de la persona, sense episodi |
A40 | Merge patient - patient identifier list | Fusió de dues històries de la mateixa persona |
Un ingrés, inventat i simplificat, es veuria així:
MSH|^~\&|ADMISION|HOSP01|LAB|HOSP01|20261026083000||ADT^A01^ADT_A01|MSG000123|P|2.5
EVN|A01|20261026082500
PID|1||123456^^^HOSP01^MR~XXXX000000000000^^^SNS^JHN||APELLIDO^NOMBRE||19440312|F
PV1|1|I|MEDINT^305^B|||||||||||||||EPI778899
Es llegeix així: el sistema d'admissió avisa el laboratori d'un ingrés (ADT^A01). La pacient té dos identificadors: el seu número d'història del centre i un d'àmbit sanitari, separats per ~. Està ingressada (I) a medicina interna, habitació 305, llit B, amb l'episodi EPI778899. Les dades són fictícies.
Els esdeveniments d'anul·lació i de fusió són els més delicats. Si un sistema rep l'A01 però es perd l'A11 que l'anul·la, tindrà un pacient fantasma ingressat. Si no processa un A40, els resultats quedaran repartits entre dues històries.
Peticions: ORM i OML
Demanar una prova també és un esdeveniment. La taula 0003 en recull dues famílies 2:
ORM^O01, «Order message»: la petició general, vàlida per a molts tipus de servei.OML^O21, «Laboratory order», iOML^O33, per a diverses peticions sobre una mateixa mostra: els missatges específics de laboratori.
Tots dos són a la guia oficial que tradueix v2 a FHIR, com a «General Order Message» i «Laboratory order» 4. En una petició, el segment ORC porta les dades comunes de l'ordre i OBR la prova concreta; en laboratori, el segment SPM descriu la mostra 3.
La clau d'una petició són els seus dos números: el del peticionari (placer), que assigna qui demana, i el de l'executor (filler), que assigna el departament que la fa. Tots dos viatgen en el missatge i permeten aparellar després el resultat amb el que es va demanar. Com es reparteixen aquests papers en radiologia ho fixa el perfil IHE que es veu a la lliçó de DICOM.
Resultats: ORU
Quan el resultat és a punt, el sistema departamental l'envia amb ORU^R01, «Unsolicited transmission of an observation message» 2. Un OBR identifica la prova i el segueixen tants OBX com valors tingui:
MSH|^~\&|LAB|HOSP01|HCE|HOSP01|20261026113000||ORU^R01^ORU_R01|MSG000456|P|2.5
PID|1||123456^^^HOSP01^MR||APELLIDO^NOMBRE||19440312|F
OBR|1|PET-5521|LAB-99812|GLU^Glucosa^L|||20261026090000|||||||||||||||||F
OBX|1|NM|GLU^Glucosa^L||132|mg/dL|70-110|H|||F
L'OBX diu: valor numèric (NM), 132 mg/dL, rang de referència 70-110, marcat com a alt (H) i final (F). Fixeu-vos en el codi de la prova: GLU amb el sufix L, de «local». És el codi intern del laboratori. Un altre centre no sabria què significa sense una taula d'equivalències o sense un codi estàndard com els de LOINC, que es veuen a l'última lliçó.
ORU serveix per a molt més que el laboratori: la mateixa estructura transporta constants vitals de monitors, informes d'anatomia patològica o resultats de microbiologia.
Acusaments, transport i dialectes
Cada missatge rep un acusament (ACK). En el mode original de l'estàndard, el camp MSA-1 val AA si el receptor ha processat bé el missatge, AE si hi ha trobat un error de contingut i AR si l'ha rebutjat per motius aliens al contingut, com un sistema caigut 1. L'emissor ha de decidir si el torna a intentar 1.
Per al transport per xarxa s'utilitza habitualment el protocol mínim de capa inferior, MLLP, que els perfils IHE de dispositius donen per defecte 6.
I aquí arriba el problema. HL7 v2 permet extensions mitjançant segments Z, el significat dels quals és opac sense una explicació prèvia de l'emissor 5. Molts elements són opcionals i només s'utilitzen en circumstàncies limitades 5. Per això HL7 reconeix que un dels reptes més grans de v2 és la variació d'implementació 5. A la pràctica, cada interfície necessita la seva especificació pactada: quins esdeveniments, quins camps i amb quins codis.
Cas pràctic
A admissions es registra per error l'ingrés d'un pacient al llit equivocat i, al cap de cinc minuts, es corregeix amb un trasllat. Mentrestant, la farmàcia ja ha preparat la medicació per al llit original.
El sistema d'admissió va emetre un A01 i després un A02 2. Si el motor d'integració els va lliurar tots dos en ordre, la farmàcia veu el trasllat i redirigeix la medicació. Si l'A02 s'ha quedat en una cua perquè el sistema de farmàcia ha rebutjat el missatge amb AR 1, la unitat original rebrà una medicació que no li toca.
Per això els hospitals vigilen les cues de missatges ADT com un indicador de seguretat del pacient, i no només com una qüestió tècnica.
Què implica per als sistemes
| Missatge | Qui l'emet | Qui el consumeix | Dada crítica |
|---|---|---|---|
ADT (A01-A40) | Gestió de pacients de l'HIS | Laboratori, imatge, farmàcia, dietètica, facturació, història clínica | Identificadors del pacient i número d'episodi |
ORM / OML | Petició electrònica de la història clínica | Sistema departamental (laboratori, imatge) | Número del peticionari, prova demanada, prioritat |
ORU | Sistema departamental o passarel·la d'equips | Història clínica, sistemes d'alertes, repositoris | Codi de la prova, valor, unitat, estat final o preliminar |
ACK | Cada receptor | L'emissor o el motor | Acceptació o error, per reintentar o alertar |
Targetes d'aquesta lliçó (9)
- HL7 v2
- Estàndard de missatgeria d'HL7 basat en esdeveniments: un fet assistencial desencadena un missatge de text, format per segments i camps separats per delimitadors, cap als sistemes interessats.
- Esdeveniment desencadenant
- Fet real (un ingrés, un resultat disponible) que crea la necessitat d'enviar dades a altres sistemes. A HL7 v2 es codifica a la taula 0003, per exemple A01 o R01.
- Segment
- Línia d'un missatge HL7 v2 que agrupa dades d'un tema, identificada per tres caràcters: MSH (capçalera), PID (pacient), PV1 (visita), OBX (resultat).
- ADT
- Admission, discharge and transfer: família de missatges HL7 v2 que comunica ingressos, altes, trasllats, registres i canvis de dades del pacient.
- ORU
- Missatge HL7 v2 d'observacions no sol·licitades: el sistema que produeix un resultat l'envia sense que l'hi demanin (esdeveniment R01).
- OML
- Missatge HL7 v2 específic per a peticions de laboratori (esdeveniments O21 i O33, entre d'altres).
- ORM
- Missatge HL7 v2 de petició general (esdeveniment O01), usat històricament per demanar proves i serveis a altres departaments.
- ACK
- Missatge d'acusament de recepció d'HL7 v2. El seu segment MSA diu si el receptor ha acceptat (AA), ha trobat un error (AE) o ha rebutjat (AR) el missatge.
- Segment Z
- Segment propi que una implementació afegeix a HL7 v2 per a dades no previstes per l'estàndard. El seu significat només el coneix qui l'ha pactat.
Fonts
- HL7 International — HL7 Version 2+ (sitio de demostración, contenido de ANSI/HL7 V2.9-2019), capítulo 2 «Control»
- HL7 International — HL7 Terminology (THO) v7.4.0: tabla HL7 0003 «Event type»
- HL7 International — HL7 Version 2 to FHIR Implementation Guide 1.0.0 (STU 1): mapas de segmentos
- HL7 International — HL7 Version 2 to FHIR Implementation Guide 1.0.0 (STU 1): mapas de mensajes
- HL7 International — FHIR Release 5: comparación con HL7 v2 (Comparison-v2)
- IHE International — IHE Devices (DEV) Technical Framework, vol. 1, rev. 10.0 (2024): opciones de transporte del perfil DEC