Si el flujo ADT es la columna vertebral de una interfaz hospitalaria, el flujo de resultados ORU es su sistema nervioso. El mensaje ORU^R01 (Resultado de Observacion No Solicitado) es la forma en que un sistema de informacion de laboratorio (LIS), un laboratorio de referencia, un analizador de microbiologia o una estacion de cardiologia devuelve los resultados terminados al EHR solicitante. Cuando construyes o actualizas una interfaz de laboratorio, lo primero que necesitas es un suministro de mensajes de prueba ORU^R01 validos que ejerciten cada tipo de resultado que vera tu receptor — quimica numerica, micro codificada, narrativas textuales y el temido resultado corregido. Esta guia explica la estructura ORU^R01 tal como la define el estandar HL7 Version 2.5.1 (Capitulo 7, Notificacion de Observaciones) y luego muestra como producir datos de prueba sin PHI con nuestro Generador de Mensajes HL7 e inspeccionarlos segmento a segmento en el Visor HL7.
La jerarquia del mensaje ORU^R01
ORU^R01 no es una lista plana de segmentos — es una jerarquia anidada, y la mayoria de los errores de interfaz surgen de tratarla como plana. HL7 v2.5.1 Capitulo 7 define la estructura abstracta del mensaje como un grupo PATIENT_RESULT repetible, cada uno con un grupo PATIENT opcional (PID, PV1 opcional) y uno o mas grupos ORDER_OBSERVATION. Cada ORDER_OBSERVATION contiene un OBR (la orden/bateria) seguido de uno o mas grupos OBSERVATION, cada uno formado por un OBX (un unico resultado) con notas NTE opcionales.
La consecuencia practica — la regla que todo desarrollador de interfaces LIS aprende a la fuerza — es que OBR es el padre y OBX es el hijo. Un unico hemograma completo (CBC) produce un OBR y aproximadamente una docena de filas OBX (leucocitos, eritrocitos, hemoglobina, hematocrito, plaquetas y la formula diferencial). Un panel que combina una bateria de quimica con una de hematologia produce dos segmentos OBR bajo un PID, cada uno con su propio grupo de resultados OBX. Los receptores que aplanan esta estructura atribuyen resultados a la orden equivocada y generan informes clinicamente peligrosos.
El ORU^R01 valido minimo
El mensaje mas pequeno que un receptor conforme deberia aceptar contiene MSH, PID, OBR y un OBX:
MSH|^~\&|LAB_LIS|MAIN_LAB|EHR_APP|HOSP|20260730081500||ORU^R01|MSG000042|P|2.5.1 PID|||TEST000042^^^HOSPMRN^MR||TEST^PATIENT^A||19000101|U OBR|1|ORD000042|FILL000042|CBC^Complete Blood Count^L|||20260730080000 OBX|1|NM|6690-2^Leukocytes^LN||7.4|10*3/uL|4.0-11.0|N|||F
Ese unico OBX dice: resultado numero 1, tipo de dato NM (numerico), identificador de observacion LOINC 6690-2 (leucocitos/WBC), valor 7.4, unidades 10*3/uL, rango de referencia 4.0-11.0, interpretacion N (normal), estado del resultado F (final). Cada componente de ese OBX es un caso de prueba esperando a ocurrir.
OBX-2 — el tipo de valor lo es todo
OBX-2 (Tipo de Valor) le dice al receptor como interpretar OBX-5. Equivocarse aqui es el defecto ORU mas comun. La tabla de tipos de dato de HL7 v2.5.1 (Capitulo 2A) define los valores que tu suite de pruebas debe cubrir:
NM— Numerico. El caballo de batalla de la quimica y la hematologia. OBX-5 es un numero simple; OBX-6 lleva las unidades, OBX-7 el rango de referencia.ST— String. Texto libre corto, p. ej. una descripcion de muestra o un cualitativo "Positivo".TX— Text. Narrativa mas larga, usada por microbiologia y anatomia patologica para interpretaciones de formato libre. Puede contener saltos de linea codificados como\.br\.CE/CWE— Codificado con excepciones. Un resultado codificado como la identificacion de un organismo (SNOMEDo codigo local). CWE reemplazo a CE en 2.5.1 y es preferible para interfaces nuevas.SN— Numerico Estructurado. Para resultados como>^1000o10^-^20(rangos e inecuaciones) que un NM simple no puede representar.
Un conjunto de pruebas robusto envia un OBX de cada tipo a traves del receptor y confirma que lo almacena y muestra correctamente. El fallo clasico en produccion: un analizador reporta un titulo como >1:640 usando SN, el receptor solo se probo con NM, y o rechaza el mensaje o trunca silenciosamente el valor a 640 — un resultado clinicamente erroneo. Genera un ejemplo SN deliberadamente y observa que hace tu receptor con el.
Codificar OBX-3 con LOINC
OBX-3 (Identificador de Observacion) es el nombre codificado de la prueba. El programa estadounidense Meaningful Use y la regulacion de certificacion ONC (45 CFR 170.205) obligan a usar LOINC para las observaciones de resultados de laboratorio, asi que tus datos de prueba deben usar codigos LOINC reales en el formato codigo^texto^LN, donde LN es el identificador del sistema de codigos registrado en HL7 para LOINC. Ejemplos tomados de la base de datos oficial LOINC (Regenstrief Institute):
2345-7^Glucose^LN— glucosa serica.2160-0^Creatinine^LN— creatinina serica.718-7^Hemoglobin^LN— hemoglobina.2951-2^Sodium^LN— sodio serico.
Muchas interfaces reales aplican doble codificacion, colocando el codigo local del LIS en la segunda triada de OBX-3. Un mensaje de prueba completo incluye tanto el codigo LOINC como un codigo local para que puedas verificar que el receptor mapea correctamente cuando su propio catalogo se indexa por codigos locales en lugar de por LOINC.

OBX-8 — banderas de anormalidad y enrutamiento clinico
OBX-8 (Banderas de Anormalidad) impulsa las alertas clinicas. La tabla 0078 de HL7 v2.5.1 define los valores permitidos: N normal, L bajo, H alto, LL criticamente bajo (panico bajo), HH criticamente alto (panico alto), A anormal (para resultados no numericos) y AA muy anormal. El manejo de valores criticos es la ruta de mayor riesgo de cualquier interfaz de laboratorio porque un valor de panico no detectado puede ser mortal, asi que tu conjunto de pruebas debe incluir:
- Un resultado normal (
N) — linea base, confirma que no hay alertas espurias. - Un resultado alto (
H) — confirma que el receptor lo marca visualmente pero no dispara una alerta critica. - Un resultado critico-alto (
HH) — por ejemplo un potasio de 7.2 mmol/L marcadoHH— y verifica que el receptor active su flujo de notificacion de resultado critico. - Un anormal codificado (
A) — para un cultivo positivo, para confirmar el marcado no numerico.
Envia un OBX deliberadamente critico y observa toda la cadena descendente: el resultado llega a la bandeja del medico como urgente, arranca el flujo de reconocimiento de valor critico de lazo cerrado, localiza al clinico de guardia? Este es exactamente el tipo de comportamiento clinico que las pruebas unitarias no pueden cubrir y que solo la inyeccion ORU de extremo a extremo puede validar.
OBX-11 y OBR-25 — estado del resultado
El estado es donde las interfaces de laboratorio se vuelven genuinamente sutiles. OBX-11 (Estado del Resultado de la Observacion) y OBR-25 (Estado del Resultado) toman valores de la tabla 0085 de HL7 v2.5.1. Los valores que importan para las pruebas son P (preliminar), F (final), C (correccion de un resultado previamente final) y X (resultados no obtenibles / cancelados). El ciclo de preliminar a final es fundamental: un resultado de quimica puede liberarse como P mientras aun esta en el analizador, y reenviarse como F cuando lo verifica un tecnologo.
El resultado corregido — la prueba que todos se saltan
El estado C (correccion) es el escenario ORU menos probado y el mas peligroso cuando falla. Cuando un laboratorio enmienda un resultado — por ejemplo una glucosa reportada primero como 95 que en realidad era 950 por un error de dilucion — reenvia el OBX con OBX-11 fijado en C y el valor corregido. Un receptor correcto reemplaza el resultado previo y lo marca visiblemente como corregido; un receptor defectuoso lo agrega como un segundo resultado, dejando en la historia tanto el valor erroneo como el correcto sin indicar cual es el vigente. Construye una secuencia deliberada — un resultado F seguido minutos despues de un resultado C para el mismo numero filler de OBR y el mismo codigo OBX-3 — y verifica que tu EHR muestre exactamente un valor vigente, claramente marcado como corregido. Esta es la prueba de correccion de mayor prioridad para cualquier interfaz de laboratorio y esta estrechamente ligada al ida-y-vuelta del ACK que tambien debes verificar; consulta nuestra guia complementaria sobre depurar fallos de ACK en HL7 para confirmar que el mensaje corregido realmente fue aceptado y no descartado en silencio.
Vincular la orden — OBR-2, OBR-3 y el numero filler
Para que un resultado se adjunte a la orden correcta en el EHR, OBR-2 (Numero de Orden del Solicitante) y OBR-3 (Numero de Orden del Ejecutor) deben reproducir los valores de la orden original (el ORM^O01 u OML^O21 que envio el EHR). El numero filler lo asigna el laboratorio y es la clave duradera que une los resultados preliminar, final y corregido a la misma observacion logica. Los datos de prueba que usan numeros filler inconsistentes a lo largo de una secuencia P→F→C produciran resultados huerfanos en el EHR aunque cada mensaje individual sea estructuralmente perfecto. Manten OBR-3 estable a lo largo del ciclo de vida, igual que mantienes PID-3 y PV1-19 estables en una secuencia ADT — la misma disciplina del "hilo de oro" descrita en nuestra guia de mensajes de prueba HL7 ADT para testing de interfaces aplica al flujo de resultados.
Construir un mensaje multi-resultado realista
Un panel metabolico basico (BMP) representativo ejercita la relacion padre-hijo OBR-OBX con varios resultados numericos bajo una sola bateria:
MSH|^~\&|LAB_LIS|MAIN_LAB|EHR_APP|HOSP|20260730081500||ORU^R01|MSG000043|P|2.5.1 PID|||TEST000043^^^HOSPMRN^MR||TEST^PATIENT^B||19000101|F OBR|1|ORD000043|FILL000043|BMP^Basic Metabolic Panel^L|||20260730080000|||||||||1001^DOCTOR^TEST|||||||||F OBX|1|NM|2345-7^Glucose^LN||95|mg/dL|70-99|N|||F OBX|2|NM|2160-0^Creatinine^LN||1.1|mg/dL|0.6-1.3|N|||F OBX|3|NM|2951-2^Sodium^LN||128|mmol/L|136-145|L|||F OBX|4|NM|6298-4^Potassium^LN||7.2|mmol/L|3.5-5.1|HH|||F
Observa OBX-3 (sodio) marcado L y OBX-4 (potasio 7.2) marcado HH — ese unico mensaje prueba simultaneamente resultados normales, un resultado bajo limitrofe y un resultado critico-alto, todos adjuntos a una sola bateria. Inyectalo en tu canal de pruebas y verifica que los cuatro resultados caigan bajo la misma orden BMP con las banderas correctas y que el potasio dispare el flujo critico.
Generar datos de prueba limpios
Abre el Generador de Mensajes HL7, elige ORU^R01 en el desplegable de evento desencadenante y haz clic en "Rellenar con datos de ejemplo" para poblar MSH, PID, OBR y OBX con valores obviamente sinteticos (TEST^PATIENT, MRN TEST000042, fecha de nacimiento 19000101). Ajusta OBX-2 para probar cada tipo de valor, edita OBX-8 para inyectar banderas de anormalidad y cambia OBX-11 a C para construir tu escenario de resultado corregido. La vista previa se actualiza en vivo y cada mensaje se parsea limpiamente con nuestro parser HL7, asi que cualquier fallo que veas aguas abajo es un problema semantico genuino del receptor — exactamente lo que la validacion de interfaces debe revelar.
Antes de enviar, haz clic en "Abrir en el Visor HL7" para inspeccionar el mensaje en el Visor HL7. El visor renderiza la jerarquia OBR/OBX de forma explicita, asi que puedes confirmar de un vistazo que tus filas OBX estan bajo el OBR correcto y que las posiciones de campo coinciden con la especificacion v2.5.1 antes de que un solo byte llegue a tu motor de integracion. Construye una pequena biblioteca de estos mensajes — uno por tipo de valor, uno por estado, uno critico, uno corregido — y tendras una suite de regresion que detecta los defectos de interfaz de laboratorio que de verdad danan a los pacientes.