Módulo 13 · Lección 2 de 6
HL7 v2: admisiones, peticiones y resultados
Cómo se construye un mensaje HL7 v2, qué eventos ADT avisan de ingresos y altas, y cómo viajan peticiones y resultados con ORM, OML y ORU.
- 30 min
- 6 fuentes
- 9 tarjetas
- Actualizada el 26 de octubre de 2026
HL7 v2 es la lengua franca de los hospitales: mensajes de texto, línea a línea, que salen cuando ocurre algo. Un ingreso dispara un mensaje ADT; una petición de analítica, un OML u ORM; un resultado validado, un ORU. Entender su anatomía (segmentos, campos y delimitadores) y sus eventos permite leer casi cualquier interfaz hospitalaria. Su gran debilidad es la variación: cada implementación lo interpreta a su manera.
Un estándar nacido de los eventos
HL7 v2 fue el primer estándar de intercambio de HL7 y es uno de los más adoptados, sobre todo en el ámbito hospitalario 5. La versión 2.9 del estándar data de 2019 1.
Su idea central es el evento disparador. El estándar parte de que un hecho real crea la necesidad de que los datos fluyan: «a patient is admitted» o que el resultado de una observación esté disponible 1. Cuando el sistema que registra el hecho envía la información por su cuenta, el intercambio se llama actualización no solicitada 1. El receptor responde con un acuse.
Cada mensaje tiene un tipo (ADT, ORU…) y un evento (A01, R01…). Un tipo puede ir con muchos eventos, pero un evento pertenece a un solo tipo 1. La lista oficial de eventos es la tabla HL7 0003 2.
Anatomía de un mensaje
Un mensaje es texto. Cada línea es un segmento, que empieza por un identificador de tres caracteres y termina con un retorno de carro 1. Dentro del segmento, los campos se separan con delimitadores declarados en la propia cabecera 1:
| Carácter | Función |
|---|---|
| | Separa campos, y el identificador del segmento de su primer campo |
^ | Separa componentes dentro de un campo (apellido^nombre) |
~ | Separa repeticiones de un campo (varios identificadores) |
\ | Carácter de escape |
& | Separa subcomponentes |
Son los valores recomendados por HL7; el campo de cabecera «Encoding Characters» declara los que usa cada mensaje 1. Los segmentos más frecuentes son estos 3:
| Segmento | Nombre | Qué lleva |
|---|---|---|
MSH | Message Header | Emisor, receptor, fecha, tipo y evento, identificador del mensaje, versión |
EVN | Event Type | Datos del evento: cuándo ocurrió y quién lo registró |
PID | Patient Identification | Identificadores, nombre, fecha de nacimiento, sexo, domicilio |
PV1 | Patient Visit | Episodio: clase (ingresado, ambulatorio), ubicación, médico responsable |
ORC | Common Order | Datos comunes de la petición: números de orden, estado, peticionario |
OBR | Observation Request | Qué prueba se pide o se informa |
OBX | Observation/Result | Un resultado: código, valor, unidad, rango, estado |
MSA | Message Acknowledgment | Respuesta al mensaje recibido |
MRG | Merge Patient Information | Identificador antiguo en una fusión de pacientes |
ADT: el pulso del hospital
Los mensajes ADT (admission, discharge, transfer) avisan de todo lo que le pasa al paciente en el centro. Son los que más circulan: casi todos los sistemas necesitan saber quién está ingresado y dónde. Estos son los eventos más habituales, con su nombre oficial 2:
| Evento | Nombre en la tabla 0003 | Cuándo se dispara |
|---|---|---|
A01 | Admit/visit notification | Ingreso hospitalario |
A02 | Transfer a patient | Cambio de unidad o de cama |
A03 | Discharge/end visit | Alta o fin de visita |
A04 | Register a patient | Registro de un paciente ambulatorio o de urgencias |
A08 | Update patient information | Cambio de datos del paciente o del episodio |
A11 / A13 | Cancel admit / Cancel discharge | Anulación de un ingreso o de un alta registrados por error |
A28 / A31 | Add / Update person information | Alta o cambio de la persona, sin episodio |
A40 | Merge patient - patient identifier list | Fusión de dos historias de la misma persona |
Un ingreso, inventado y simplificado, se vería así:
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
Se lee así: el sistema de admisión avisa al laboratorio de un ingreso (ADT^A01). La paciente tiene dos identificadores: su número de historia del centro y uno de ámbito sanitario, separados por ~. Está ingresada (I) en medicina interna, habitación 305, cama B, con el episodio EPI778899. Los datos son ficticios.
Los eventos de anulación y de fusión son los más delicados. Si un sistema recibe el A01 pero se pierde el A11 que lo anula, tendrá un paciente fantasma ingresado. Si no procesa un A40, los resultados quedarán repartidos entre dos historias.
Peticiones: ORM y OML
Pedir una prueba también es un evento. La tabla 0003 recoge dos familias 2:
ORM^O01, «Order message»: la petición general, válida para muchos tipos de servicio.OML^O21, «Laboratory order», yOML^O33, para varias peticiones sobre una misma muestra: los mensajes específicos de laboratorio.
Ambos están en la guía oficial que traduce v2 a FHIR, como «General Order Message» y «Laboratory order» 4. En una petición, el segmento ORC lleva los datos comunes de la orden y OBR la prueba concreta; en laboratorio, el segmento SPM describe la muestra 3.
La clave de una petición son sus dos números: el del peticionario (placer), que asigna quien pide, y el del ejecutor (filler), que asigna el departamento que la realiza. Ambos viajan en el mensaje y permiten casar después el resultado con lo que se pidió. Cómo se reparten esos papeles en radiología lo fija el perfil IHE que se ve en la lección de DICOM.
Resultados: ORU
Cuando el resultado está listo, el sistema departamental lo envía con ORU^R01, «Unsolicited transmission of an observation message» 2. Un OBR identifica la prueba y le siguen tantos OBX como valores tenga:
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
El OBX dice: valor numérico (NM), 132 mg/dL, rango de referencia 70-110, marcado como alto (H) y final (F). Fíjese en el código de la prueba: GLU con el sufijo L, de «local». Es el código interno del laboratorio. Otro centro no sabría qué significa sin una tabla de equivalencias o sin un código estándar como los de LOINC, que se ven en la última lección.
ORU sirve para mucho más que el laboratorio: la misma estructura transporta constantes vitales de monitores, informes de anatomía patológica o resultados de microbiología.
Acuses, transporte y dialectos
Cada mensaje recibe un acuse (ACK). En el modo original del estándar, el campo MSA-1 vale AA si el receptor procesó bien el mensaje, AE si encontró un error en su contenido y AR si lo rechazó por motivos ajenos al contenido, como un sistema caído 1. El emisor debe decidir si reintenta 1.
Para el transporte por red se usa habitualmente el protocolo mínimo de capa inferior, MLLP, que los perfiles IHE de dispositivos dan por defecto 6.
Y aquí llega el problema. HL7 v2 permite extensiones mediante segmentos Z, cuyo significado es opaco sin una explicación previa del emisor 5. Muchos elementos son opcionales y se usan solo en circunstancias limitadas 5. Por eso HL7 reconoce que uno de los mayores retos de v2 es la variación de implementación 5. En la práctica, cada interfaz necesita su especificación pactada: qué eventos, qué campos y con qué códigos.
Caso práctico
En admisión se registra por error el ingreso de un paciente en la cama equivocada y, a los cinco minutos, se corrige con un traslado. Mientras tanto, la farmacia ya ha preparado la medicación para la cama original.
El sistema de admisión emitió un A01 y después un A02 2. Si el motor de integración entregó ambos en orden, la farmacia ve el traslado y redirige la medicación. Si el A02 se quedó en una cola porque el sistema de farmacia rechazó el mensaje con AR 1, la unidad original recibirá una medicación que no le toca.
Por eso los hospitales vigilan las colas de mensajes ADT como un indicador de seguridad del paciente, y no solo como un asunto técnico.
Qué implica para los sistemas
| Mensaje | Quién lo emite | Quién lo consume | Dato crítico |
|---|---|---|---|
ADT (A01-A40) | Gestión de pacientes del HIS | Laboratorio, imagen, farmacia, dietética, facturación, historia clínica | Identificadores del paciente y número de episodio |
ORM / OML | Petición electrónica de la historia clínica | Sistema departamental (laboratorio, imagen) | Número del peticionario, prueba pedida, prioridad |
ORU | Sistema departamental o pasarela de equipos | Historia clínica, sistemas de alertas, repositorios | Código de la prueba, valor, unidad, estado final o preliminar |
ACK | Cada receptor | El emisor o el motor | Aceptación o error, para reintentar o alertar |
Tarjetas de esta lección (9)
- HL7 v2
- Estándar de mensajería de HL7 basado en eventos: un hecho asistencial dispara un mensaje de texto, formado por segmentos y campos separados por delimitadores, hacia los sistemas interesados.
- Evento disparador
- Hecho real (un ingreso, un resultado disponible) que crea la necesidad de enviar datos a otros sistemas. En HL7 v2 se codifica en la tabla 0003, por ejemplo A01 o R01.
- Segmento
- Línea de un mensaje HL7 v2 que agrupa datos de un tema, identificada por tres caracteres: MSH (cabecera), PID (paciente), PV1 (visita), OBX (resultado).
- ADT
- Admission, discharge and transfer: familia de mensajes HL7 v2 que comunica ingresos, altas, traslados, registros y cambios de datos del paciente.
- ORU
- Mensaje HL7 v2 de observaciones no solicitadas: el sistema que produce un resultado lo envía sin que se lo pidan (evento R01).
- OML
- Mensaje HL7 v2 específico para peticiones de laboratorio (eventos O21 y O33, entre otros).
- ORM
- Mensaje HL7 v2 de petición general (evento O01), usado históricamente para pedir pruebas y servicios a otros departamentos.
- ACK
- Mensaje de acuse de recibo de HL7 v2. Su segmento MSA dice si el receptor aceptó (AA), encontró un error (AE) o rechazó (AR) el mensaje.
- Segmento Z
- Segmento propio que una implementación añade a HL7 v2 para datos no previstos por el estándar. Su significado solo lo conoce quien lo pactó.
Fuentes
- 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