Download Contenido Contenido Tareas al enfocar una interface
Document related concepts
no text concepts found
Transcript
18/09/2013 Contenido 1. 2. Introducción a HL7 v2.X 3. 4. Jornada HL7 HL7 Argentina CAIS, Córdoba Argentina JORNADA HL7 SAN LUIS 5. 1 © 2005-2012, HL7 Argentina Recordatorio / Objetivos Documentación de HL7 v2 Cómo leer el estándar: capítulos Eventos disparadores Estructura de mensajes. Sintaxis abstracta JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 2 Recordatorio Contenido Tareas al enfocar una interface 1. 1. 2. 3. 4. 5. Elementos de V2: campos, segmentos, separadores, opcionalidad Tipos de Datos Vocabulario en HL7 V2.X ACK y reporte de errores Herramientas, Interfaces, Motores 2. 3. 4. 5. 6. 7. JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 3 Entender los requerimientos de interoperabilidad Definir para cada caso el estándar aplicable y los artefactos (mensajes, llamadas, documentos) requeridos Trabajar el vocabulario Especificar el entorno de comunicaciones Determinar el movimiento de datos a artefacto y viceversa. Construir la interface Documentar la implementacion JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 4 1 18/09/2013 Objetivos Objetivos de este módulo Conocer 1. el ALCANCE del estándar: para qué puede usarse. Entender la MECANICA del intercambio de mensajes Poder ESCRIBIR un encabezado de mensaje HL7 (y algún otro fragmento) Poder LEER un mensaje HL7 V2.X y “entenderlo”. Conocer superficialmente los TIPOS DE DATOS de HL7 V2.X JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina Alcance 5 Una vez que entendimos los requerimientos de interoperabilidad: ¿qué requerimientos de los que encontramos nos puede cubrir el estándar HL7 V2.x? 1. Documentación de HL7 v2 2. Cómo leer el estándar: capítulos 6 © 2005-2012, HL7 Argentina JORNADA HL7 SAN LUIS Alcance Alcance ¿Qué significa siete en HL7? – para la versión 2x Un protocolo para el intercambio de información clínica Qué significa HL7 Qué es HL7 v2.x Entorno de comunicaciones Dominios o capítulos Función Communicación 7 6 5 4 3 2 1 Aplicación HL7 Presentación Sesión Transporte Red Enlace Física Arquitectura de comunicaciones del modelo ISO-OSI JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 7 JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 8 2 18/09/2013 Alcance Alcance ¿Qué es HL7 v2.x? Es un protocolo para el intercambio de información clínica a través de mensajes NO Entorno de comunicaciones El estándar HL7 asume que el entorno de comunicaciones proveerá lo siguiente: NO es una estructura de datos o especificación de base de datos NO es una arquitectura para diseñar aplicaciones hospitalarias NO Trasmisión sin errores. Las aplicaciones pueden asumir que recibirán correctamente toda cadena de bytes trasmitida. Esto implica el chequeo de errores es realizado en un nivel inferior. Conversión de caracteres. En el caso de que diferentes máquinas utilicen distintas representaciones de caracteres (ej. ASCII-EBCDIC) será el entorno de comunicaciones el que realice esta tarea. Largo del mensaje. HL7 no especifica ninguna restricción al largo de un mensaje. es una especificación para un ruteador de mensajes JORNADA HL7 SAN LUIS es una aplicación 9 © 2005-2012, HL7 Argentina 10 © 2005-2012, HL7 Argentina Alcance Alcance ¿Que representa un capítulo? Pero, ¿cómo hago? El capítulo 2 define como se codifican y decodifican los mensajes. El resto de los capítulos representa el trabajo de un comité técnico sobre un área de la informática en salud. Este trabajo es aprobado posteriormente por el consenso de todos los miembros de HL7. Este comité (al que puede ingresar cualquier miembro) es el responsable de incorporar agregados o cambios. El capítulo contiene la información requerida para implementar mensajes referidos al área en cuestión y referencias al contenido de otros capítulos. Ejemplo: ’TURNOS’ refiere obviamente a Pacientes, pero agrega contenido propio. JORNADA HL7 SAN LUIS JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 11 ¿Cómo saber que mi requerimiento está cubierto por HL7 V2.x? ¿El dominio está cubierto por alguno de los capítulos? Veamos la lista de capítulos (la tienen en el apéndice 2) JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 12 3 18/09/2013 Alcance Alcance Ejercicio 1 Ejercicio 1 para cada grupo Determinar para cada uno de estos requerimientos basados en el Caso Clínico, los actores, y que capítulo(s) de la versión 2.x utilizaría para resolverlo. El caso clínico está en el Apéndice 1. JORNADA HL7 SAN LUIS 13 © 2005-2012, HL7 Argentina 1-Enviar datos de admisión desde el sistema de admisión al sistema de diagnóstico por imágenes. 2-Enviar solicitud de exámen de laboratorio desde el CPOE al LIS 3-Enviar resultados de química clínica , hematología y microbiologia del laboratorio a la HCE. 5-Enviar recetas desde el CPOE al sistema de farmacia 6-Enviar interconsulta y pedido de turno desde la HCE al sistema del infectólogo en el centro de referencia. 7-Enviar solicitud de autorización ante la cobertura de salud del paciente al sistema de autorización electrónica. 8-Enviar notificación electrónica al sistema del Ministerio de Salud JORNADA HL7 SAN LUIS 14 © 2005-2012, HL7 Argentina Alcance Alcance Cómo leer el estándar Conocer profundamente el capítulo 2 (control). Alcance (por eso existe la Certificación Internacional en HL7 v2.x ‘Control’: el dominio de ‘Control’ permite entender con facilidad el resto del estándar. Cada capítulo contiene los elementos requeridos para armar mensajes referidos al área en cuestión: 1. introducción / alcance 2. eventos 3. definiciones de mensajes 4. ejemplos 5. temas pendientes de resolución JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina Una vez definido el o los capítulos involucrados, debo definir los eventos disparadores que generan mensajes y cuáles debo utilizar. (Siempre y cuando decida utilizar mensajería HL7 V2, veremos más adelante el tipo de decisiones involucradas) 15 JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 16 4 18/09/2013 Eventos disparadores Eventos disparadores Paradigmas de respuestas HL7 Modelo básico de transacciones HL7 Sistema B RECIBE MENSAJE ORM msgEvento Evento disparador disparador ENVIA RESPUESTA ACK (opt) ENVIA MENSAJE Sistema B Sistema A RECIBE RESPUESTA Evento disparador ORR (opt) RED Sistema A Aceptar ACK (opt) 17 © 2005-2012, HL7 Argentina JORNADA HL7 SAN LUIS JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 18 Eventos disparadores Eventos disparadores Ejemplo de evento disparador Ejercicio 2 Cuándo Un evento A01 es enviado cuando se realiza el ingreso/admisión del paciente. Definir qué eventos disparadores y que tipos de mensajes deberían enviarse para cada caso del Ejercicio 1. Escribirlo en la forma MENSAJE^EVENTO (Ver lista de mensajes en el apéndice 3) Qué Normalmente, esta información es ingresada por el sistema de admisión de pacientes e informada al resto de los sistemas que conforman la organización Uso Por ejemplo, un evento A01 puede ser usado para notificar al sistema de Laboratorio que un paciente ha sido admitido y al que se le puede fehacientemente solicitar estudios. JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 19 JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 20 5 18/09/2013 Elementos de Mensajes HL7 V2.X Elementos de Mensajes HL7 V2.X ¿Qué es un mensaje HL7 abstracto? MSH|^~\&|NSI||LAB||20010827120759||ADT^A01|NSI1|P|2.3|||| AL<cr> EVN|A01|18000101000000<cr> PID|1||60719^^^^HI|26690949^^^^DNI|TORRALBA^AIDA||1978011 3000000|F|||POTOSI 4032 108^^CAPITAL FEDERAL^^1899<cr> NK1|1|CAMUS^ALBERTO|PAD|RIVADAVIA 253|42539686<cr> PV1|1|I|301|R|||1436^PEREZ^JORGE^ALBERTO|1026^LOPEZ^NORBE RTO|998^GARCIA^ALEJANDRO|M|||A|4|A0|N|1026^LOPEZ^NORBER TO|OB|H0100240|||||||||||||||||ALV||||||||2001082309513 0|20010823102455<cr> IN1|1|INT^^HI|2^^^^HI~347^^^^NSI|PLAN DE SALUD<cr> Describe los Datos Cuándo son enviados Y cuales son las condiciones de error Pero NO describe la cadena de Bytes que conforman el mensaje. Un mensaje es la unidad transferida entre sistemas informáticos. Esta compuesto de por un grupo de segmentos en una secuencia definida. El primer segmento (MSH) identifica el tipo de mensaje y el evento disparador que hizo que el mensaje sea enviado. JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 21 JORNADA HL7 SAN LUIS Elementos de Mensajes HL7 V2.X Elementos de Mensajes HL7 V2.X Ejemplo de mensaje HL7 abstracto [...] opcional, {...} permite repetirse (ADT^A01) MSH EVN PID [ PD1 ] [{ NK1 }] PV1 [ PV2 ] [{ DB1 }] [{ ALG }] [{ DG1 }] [ DRG ] [{ PR1 [{ ROL }] }] [{ GT1 }] [{ IN1 [ IN2 ] [ IN3 ] }] [ ACC ] JORNADA HL7 SAN LUIS Encabezado de Mensaje Tipo de evento Identificación del paciente Datos adicionales demográficos Familiares a cargo Información del episodio Información adicional del episodio Información de discapacidades Información sobre alergias Diagnóstico Grupo relacionado de Diagnóstico Procedimento Rol Segmentos Características de los segmentos Un segmento HL7 es una agrupación de campos. Los segmentos dentro de un mensaje: Pueden ser REQUERIDOS u OPCIONALES Pueden ocurrir UNA SOLA VEZ o permitir REPETICIONES Se identifican por un código único de tres caracteres denominado ‘SEGMENT ID’ Garante Datos de la obra social Datos de la obra social - Addicionales Datos de la obra social - Addicionales HL7 permite en cada implementación definir segmentos específicos para intercambiar información no prevista Información de Accidente © 2005-2012, HL7 Argentina 22 © 2005-2012, HL7 Argentina 23 Segmentos Z.. JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 24 6 18/09/2013 Elementos de Mensajes HL7 V2.X Elementos de Mensajes HL7 V2.X Especificación de segmentos El segmento PV1 es utilizado por las aplicaciones de registración y admisión para comunicar la información específica de la visita del paciente SEQ … … LEN DT 2 1 IS CLASS 3 80 PL PATIENT LOC 4 2 ADMISSION TYPE OPT R O IS RP# TBL# ITEM# 0004 Definición de segmento PV1 • PV1 - Atributos del “Patient Visit Segment” ELEMENT NAME 00132 PATIENT 00133 ASSIGNED 0007 00134 O 3.3.3.0 PV1 field definitions ; 3.3.3.2 Patient class (IS) 00132 Definition: This field is used by systems to categorize patients by site. It does not have a consistent industry-wide definition. It is subject to site-specific variations. Refer to user-defined table 0004 - Patient class for suggested values. JORNADA HL7 SAN LUIS 25 © 2005-2012, HL7 Argentina LEN DT OPT 1 4 SI O 2 1 IS R 3 80 PL RP/# TBL# ITEM# ELEMENT NAME 00131 Set ID - PV1 0004 00132 Patient Class 0007 00134 Admission Type O 00133 Assigned Patient Location 4 2 IS O 5 20 CX O 6 80 PL O 7 60 XCN O Y 0010 00137 Attending Doctor 8 60 XCN O Y 0010 00138 Referring Doctor Y 0010 00139 Consulting Doctor 0069 00140 Hospital Service 00135 Preadmit Number 00136 Prior Patient Location 9 60 XCN O 10 3 IS O 11 80 PL O 12 2 IS O 0087 00142 Preadmit Test Indicator 13 2 IS O 0092 00143 Readmission Indicator 14 3 IS O 15 2 IS O 16 2 IS O 17 60 XCN O 18 2 IS O JORNADA HL7 SAN LUIS 00141 Temporary Location 0023 00144 Admit Source Y 0009 00145 Ambulatory Status 0099 00146 VIP Indicator Y 0010 00147 Admitting Doctor 0018 00148 Patient Type 26 © 2005-2012, HL7 Argentina Elementos de Mensajes HL7 V2.X Elementos de Mensajes HL7 V2.X Campos Caracteres de Codificación Campo Un campo es una cadena de caracteres definida por un tipo de datos de HL7. El apendice A del estándar, el diccionario de datos, brinda un listado alfabético de los campos, listados de codificación recomendada, y una referencia cruzada de los campos contra los segmentos 3.3.2.5 Patient name (XPN) 00108 Components: <family name (ST)> ^ <given name (ST)> ^ <middle initial or name (ST)> ^ <suffix (e.g., JR or III) (ST)> ^ <prefix (e.g., DR) (ST)> ^ <degree (e.g., MD) (ST)> ^ <name type code (ID) > JORNADA HL7 SAN LUIS SEQ © 2005-2012, HL7 Argentina 27 Delimitadores: | ^ ˜ \ & <CR> Al construir un mensaje, se utilizan determinados caracteres como DELIMITADORES Terminador de Segmento <CR> (ASCII 13) Separador de Campo | (ASCII 124) Separador de Componente ^ (ASCII 94) Separador de Subcomponente & (ASCII 38) Caracter de Repetición ~ (ASCII 126) Caracter de Escape \ Son JORNADA HL7 SAN LUIS (ASCII 92) “modificables”, excepto <CR> © 2005-2012, HL7 Argentina 28 7 18/09/2013 Elementos de Mensajes HL7 V2.X Elementos de Mensajes HL7 V2.X Resumen de Elementos HL7 V2.X Resumen de Opcionalidad HL7 V2.X mensaje: formado por segmentos separados entre sí por <CR>. segmento: formado por campos separados por el separador de campos (|1) campo: formado por uno o más componentes separados por el separador de componentes (^1) y es de un tipo de datos específico. componente: formado por uno o más subcomponentes separados por el separador de subcomponentes (&1) Un segmento puede ser opcional o repetitivo. Ejemplo: “Diagnóstico(s)” Un campo puede ser opcional o repetitivo. Ejemplo: “Teléfono(s)” Un componente de un campo puede ser opcional. Ejemplo: ‘Inicial Media de Nombre” Un subcomponente de un componente puede ser opcional. Ejemplo: “Grado de precisión de la fecha” 1 (puede ser modificado) JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 29 JORNADA HL7 SAN LUIS Mensaje Abstracto Tabla de atributos para cada segmento Def. de Tipos de Datos Narrativa para cada atributo 30 Tipos de Datos Elementos de Mensajes HL7 V2.X Resumen de Elementos (del mensaje al atributo) © 2005-2012, HL7 Argentina Tipos de Datos Alfanuméricos (ST,TX,FT) Numéricos (CQ,MO,NM,SI,SN) Identificadores (ID,IS,HD,EI,RP,PL,PT) Fecha/Hora (DT,TM,TS) Valores Codificados (CE,CF,CK,CN,CX,XCN) Genéricos (CM) Forma de Onda (CD,MA,NA,ED) Precios (CP) Finanzas (FC) Consultas extendidas (QSC,QIP,RCD) Archivos maestros (DLN,JCC,VH) Registros médicos (PPN) Series temporales (DR,RI,TQ) Datos Demográficos (AD,PN,TN,XAD,XPN,XON,XTN) XPN data type: <family name (ST)> ^ <given name (ST)> ^ <middle initial or name (ST)> ^ <suffix (e.g., JR or III) (ST)> ^ <prefix (e.g., DR) (ST)> ^ <degree (e.g., MD) (ST)> ^ <name type code (ID) > JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 31 JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 32 8 18/09/2013 Tipos de Datos Tipos de Datos Alfanuméricos ST Tipos de Datos – STRING TX Cadena de caracteres Justificado a izquierda con espacios a derecha opcionales. Se acepta cualquier caracter ASCII imprimible JORNADA HL7 SAN LUIS Alfanuméricos © 2005-2012, HL7 Argentina – TEXT Texto Texto 33 preparado para su visualización o impresión JORNADA HL7 SAN LUIS Tipos de Datos Alfanuméricos FT © 2005-2012, HL7 Argentina 34 Tipos de Datos Tipos de Datos Tipos de Datos Numéricos Tipos de Datos Numéricos – TEXT Texto formateado CQ MO Este tipo de datos se derivo del TX permitiendo la inserción de instrucciones de formateo embebidas NM SI SN JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 35 JORNADA HL7 SAN LUIS (cantidad compuesta) (dinero) (numérico) (id de secuencia) (numérico estructurado) © 2005-2012, HL7 Argentina 36 9 18/09/2013 Tipos de Datos Tipos de Datos Numéricos Tipos de Datos Numéricos CQ – Cantidad compuesta Cantidad con unidades Numéricos MO El primer componente es la cantidad, el segundo la unidad en la cual se expresa la cantidad. Tipos de Datos Numéricos – Dinero Tipo de dato para dinero. El primer componente es la cantidad y el segundo la denominación de la moneda <cantidad (NM)>^<unidad (CE)> |123.7^kg| JORNADA HL7 SAN LUIS |99.50^USD| |150^lb&&ANSI+| © 2005-2012, HL7 Argentina 37 JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina Tipos de Datos Numéricos 38 Tipos de Datos Tipos de Datos Numéricos Numéricos SN NM – Numérico Tipo de dato numérico Tipos de Datos Numéricos – Números estructurados Ejemplos: Un número representado por caracteres ASCII numéricos con un signo y punto decimal opcional. |>^100| |^100^-^200| |^1^:^128| |-1233.22| Mayor que 100 Entre 100 y 200 Título 1:128 (resultado de serología) SI |^2^+| – Id de Secuencia Positivo “2 cruces” (respuesta categ.) Un entero positivo |1233| JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 39 JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 40 10 18/09/2013 Tipos de Datos Tipos de Datos Tipos de Datos Fecha / Hora Tablas DT: Fecha -YYYY[MM[DD]] Permite impresión (solo año, solo año/mes) Tablas TM: Hora HH[MM[SS[.S[S[S]]]]]][+/-ZZZZ] Time Stamp YYYY[MM[DD[HH[MM[SS[.S[S[S]]]]]]]][+/-ZZZZ] ^ <grado de precision] Permite especificar el tiempo preciso del evento, con hora y fecha 41 © 2005-2012, HL7 Argentina JORNADA HL7 SAN LUIS definidas por HL7 definidas por el usuario Identificadores ID IS HD EI RP PL PT Siempre en formato de 24 hs, permite especificar diferencia con tiempo universal coordinado (Greenwich) TS: Tablas e Identificadores HL7 provee tablas para utilizar en los mensajes Valor para tablas definidas por HL7 Valor para tablas definidas por el usuario Denominador Jerárquico (Hierarchic Designator) Idenficador de Entidad Puntero de referencia Ubicación de Paciente Tipo de Procesamiento Tipos de Datos Tipos de Datos Ejemplos de tablas Tablas definidas por el usuario User 0002 Marital Status 0002 0002 PID-16, NK114, GT1-32, IN2-44 A D Ejemplos de tablas Tablas definidas por HL7 HL7 0027 Priority OM4-13 Separated 0027 S Stat (do immediately) Divorced 0027 A R As soon as possible (a priority lower than stat) Routine 0002 M Married 0027 0002 S Single 0027 P 0002 W Widowed 0027 T JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 42 © 2005-2012, HL7 Argentina JORNADA HL7 SAN LUIS 43 JORNADA HL7 SAN LUIS Preoperative (to be done prior to surgery) Timing critical (do as near as possible to requested time) © 2005-2012, HL7 Argentina 44 11 18/09/2013 Tipos de Datos Identificadores Identificadores ID Tipos de Datos – Valor codificado por HL7 Debe ser elegida de una lista definida por HL7 Ejemplo : Sexo : F/M/O/U IS Identificadores Identificadores HD – Hierachic Designator (Denominador Jerárquico) EI – Identificador de Entidad <identificador de entidad (ST)>^ <ID de namespace (IS)> ^ <ID universal (ST)> ^ <Tipo ID universal (ID)> – Valor codificado por el USUARIO Debe ser elegida de una lista definida por las partes que consensuan una implementacion determinada Ejemplo : Religión © 2005-2012, HL7 Argentina JORNADA HL7 SAN LUIS 45 El Identificador de entidad es único dentro del objeto definido por los componentes 2 a 4 © 2005-2012, HL7 Argentina JORNADA HL7 SAN LUIS Tipos de Datos Tipos de Datos Punteros de referencia Identificadores RP – Puntero de Referencia Tipos de datos referenciados: TIFF DICOM JOT ISDN JPEG HTML JORNADA HL7 SAN LUIS - PICT - FAX - BASIC - PostScript - GIF - RTF © 2005-2012, HL7 Argentina Ejemplo: Ubicación de personas PL – Ubicación de personas Lógicamente el orden es: Este tipo de datos transmite informacion acerca de datos almacenados en otro sistema. <pointer (ST)>^<application ID(HD)> ^<type of data(ID)>^<subtype(ID) 46 1 Tipo de ubicacion de persona 2 Conjunto de edificios (facility) 3 Edificio 4 Piso 5 Sector (Sala, etc. -Point of Care) 6 Habitación 7 Cama 8 Descripción de Ubicación 9 Estado de Ubicación El orden sintáctico es: <point of care (IS)> ^ <room (IS)> ^ <bed (IS)> ^ <facility (HD)> ^ <location status (IS)> ^ <person location type (IS)> ^ <building (IS)> ^ <floor (IS)> ^ <location description (ST)> PV1|1|I|01-02^11^23| 47 JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 48 12 18/09/2013 Tipos de Datos PT – Tipo de Procesamiento Tipos de Datos Tipos de Datos <processing ID (ID)> ^ <processing type (ID)> Tipos de Datos CE- Elementos codificados Elementos codificados con valores formateados CK- Compuesto con digito verificador CN- Número compuesto CX- Número compuesto con digito verificador XCN-Número compuesto extendido CF- Processing ID: D=Debug P=Producción T=Prueba/Capacitación Processing Mode: A=Archivo R=Restore I=Carga Inicial JORNADA HL7 SAN LUIS Valores Codificados CWE Codificados CNE 49 © 2005-2012, HL7 Argentina con Excepciones Codificados sin Excepciones JORNADA HL7 SAN LUIS Vocabulario en v 2.x ACK y reporte de errores Vocabulario en v 2.x Secuencia de intercambio de mensajes 1. El sistema emisor construye un mensaje HL7 basado en datos de la aplicación y lo envía al sistema receptor. Tablas HL7 (se ‘guardan’ o se ‘codifican’) Campos codificados (prácticas, diagnósticos, sexo administrativo, tipo de muestra, etc.) Identificadores de entidades (personas, pacientes, médicos, prestadores, hospitales, servicios, etc.) Posibilidad de usar el cap. 8 para compartir tablas maestras o cualquier otra estrategia. © 2005-2012, HL7 Argentina Reglas de proceso Paso ¿Dónde se presentan ‘problemas de vocabulario’? JORNADA HL7 SAN LUIS 50 © 2005-2012, HL7 Argentina 51 Paso 2. El sistema receptor recibe el mensaje y U a) Valida sintácticamente el mensaje de acuerdo a reglas de iniciación basadas en el segmento MSH. Si falla envía un mensaje de rechazo al emisor; si no continua ... b) Pasa el mensaje a la aplicación, la cual: 1) crea un mensaje de respuesta, o 2) crea un mensaje de error, o 3) crea un mensaje de rechazo. c) Envía el mensaje de respuesta, error o rechazo. JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 52 13 18/09/2013 ACK y reporte de errores Encabezado del mensaje - Segmento MSH Campo Notas MSH-3-sending application MSH-4-sending facility MSH-5-receiving application MSH-6-receiving facility MSH-7-date/time of message MSH-9-message type MSH-10-message control ID Mensaje ACK – Respuesta general Mensaje de uso general para indicar un acuse de recibo de un mensaje. Indica si hubo o no un error al procesar el mensaje. Este campo no es utilizado en la lógica de procesamiento del protocolo HL7. Es opcional. ACK General acknowledgment Chapter Identificador único de mensaje utilizado para responder al mensaje inicial. MSH MSA [ ERR ] Message Header Message acknowledgment Error 2 2 2 MSH-11-processing ID MSH-12-version ID MSH-13-sequence number MSH-14-continuation pointer JORNADA HL7 SAN LUIS ACK y reporte de errores 53 © 2005-2012, HL7 Argentina JORNADA HL7 SAN LUIS ACK y reporte de errores ACK y reporte de errores Reglas mínimas de validación Criterios mínimos a validar en la recepción de mensajes: valor del campo MSH-9-message type debe ser el de un tipo de mensaje reconocido por la aplicación receptora. El valor del campo MSH-12-version ID (versión de HL7) debe ser la apropiada. El valor del campo MSH-11-processing ID (Producción /Prueba/Debug) debe ser corresponder la aplicación receptora. 54 © 2005-2012, HL7 Argentina Procesamiento de la aplicación Procesamiento de mensajes a nivel aplicación: El Una vez que la validación inicial del protocolo, analizando el encabezado MSH, se ha realizado se ejecuta una de las siguientes acciones: En caso de que cualquiera de falle, se rechaza el mensaje y se crea un mensaje ACK, con AR en el campo MSA-1-acknowledgement code JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 55 1) Se procesa satisfactoriamente el mensaje, generando una respuesta con el valor AA en MSA-1ack code. 2) Se crea una respuesta de error, proveyendo la información del error y el valor AE en el campo MSA-1 3) Falla al procesar el mensaje (Rechazo) por razones ajenas al contenido o formato (Caída del sistema, error interno, etc). Enviandose un mensaje con el valor AR © 2005-2012, HL7 Argentina en LUIS el campo MSA-1 JORNADA HL7 SAN 56 14 18/09/2013 ACK y reporte de errores Especificación del tipo de respuesta En cada envío de un mensaje se puede especificar el campo MSH-15-Accept acknowledgment type Mensaje: MSH|^~\&|NSI||LAB||20010827120759||ADT^A01|NSI1|P|2. 3||||AL<cr> EVN|A01|18000101000000<cr> PID|1||60719^^^^HI|26690949^^^^DNI|TORRALBA^AIDA||19 780113000000|F|||POTOSI 4032 108^^CAPITAL FEDERAL^^1899<cr> NK1|1|CAMUS^ALBERTO|PAD|RIVADAVIA 253|42539686<cr> PV1|1|I|12^301^1211|R|||1436^PEREZ^JORGE^ALBERTO|102 6^LOPEZ^NORBERTO|998^GARCIA^ALEJANDRO|M|||A|4|A0|N |1026^LOPEZ^NORBERTO|OB|H0100240|||||||||||||||||A LV||||||||20010823095130|20010823102455<cr> IN1|1|INT^^HI|2^^^^HI~347^^^^NSI|PLAN DE SALUD<cr> Este campo identifica las condiciones de requerimiento de mensajes de respuesta. Este campo es requerido para el modo extendido. Valor AL NE ER SU JORNADA HL7 SAN LUIS satisfactorio Descripción Siempre requiere respuesta Nunca requiere respuesta Unicamente ante un error Unicamente cuando es © 2005-2012, HL7 Argentina Ejercicio 04 57 JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 58 Herramientas, interfaces, motores Ejercicio 04 Herramientas, interfaces y motores Del mensaje del enunciado, definir y justificar: Grupo 1: ¿Que tipo de mensaje es, y para qué se usa?. ¿Qué aplicación envió el mensaje y a qué hora? Grupo 2: ¿Cuál es la identificación del paciente?. ¿Cuál es el teléfono de su pariente cercano a cargo.? Grupo 3: ¿Quién es el médico que atiende al paciente?. ¿Dónde se encuentra internado el paciente? Grupo 4: ¿Cuál es la cobertura del paciente?. ¿En que direccion vive?. ¿Cuándo fue internado? Grupo 5: ¿Con qué número de episodio se internó el paciente?. ¿Cual es su apellido? Grupo 6: ¿Qué médicos están involucrados? ¿En qué roles? ¿Que edad tiene el paciente? Grupo 7: ¿En qué caso hay que contestar a este mensaje? ¿Que aplicación debe recibirlo? ¿Cual es el separador de subcomponentes? JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 59 Hay que tomar decisiones acerca de herramientas para: Generación de mensajes (cómo y cuándo partir de nuestros datos y llegar a generar el texto del mensaje) Decodificación de mensajes (que hacer cuando se recibe un mensaje y como mapear los datos obtenidos a nuestro sistema) Enviar y recibir los mensajes (bajo nivel, ruteo de mensajes) Control, registro y auditoria (¿que pasa cuando la interface no funciona? ¿que pasa cuando un mensaje no llega? ¿que pasa si queremos revisar el contenido de un mensaje enviado previamente?) JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 60 15 18/09/2013 Herramientas, interfaces, motores Herramientas, interfaces, motores Desarrollo propio Generación/Decodificación de Mensajes Los mensajes no son otra cosa que cadenas de caracteres. Opciones: Desarrollo propio Open source Componentes comerciales Middleware JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina Axioma: Podemos agregar a cualquier aplicación existente en cualquier plataforma utilizando cualquier lenguaje de programación la capacidad de generar mensajes HL7. Desventaja: Caro en tiempo de desarrollo, pruebas y validación. Posibilidades de error. Es muy dificil programar un parser, a menos que sea limitado en alcance (específico para algunos capítulos, eventos y uso de los mismos) Ventajas: Libertad, Independencia, Posibilidad de re-uso posterior. 61 JORNADA HL7 SAN LUIS Herramientas, interfaces, motores © 2005-2012, HL7 Argentina 62 Herramientas, interfaces, motores Herramientas de uso libre (v2.x) Componentes comerciales Hay disponibles diversos componentes comerciales para generación y decodificación de mensajes V2 HAPI : Interface HL7 open source (2.1 a 2.6) http://hl7api.sourceforge.net/ Algunos de ellos (no es publicidad, es información): Chameleon www.Interfaceware.com Neointegrate www.neotool.com IDK Interface Engine www.linktools.com Symphonia www.orionhealth.com En general permiten agregar componentes que generan objetos para integrar con programas en Visual Studio, Java, etc o permiten mapear directamente los datos recibidos en mensajes a la base de datos. Desventaja: $$ gastados comprando el producto, capacitación, pruebas y validación. Dependencia posterior del proveedor según la flexibilidad del producto. Costo de licencia run-time (si es que existe). Ventajas: Aprovechamiento más veloz. No nos preocupamos por ‘la interface’. MIRTH (Connect/Results/Match) (2.x, V3, CDA, xml en gral, DICOM) http://www.mirthcorp.com/community/overview (Hay más pero son las mas usadas) JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 63 JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 64 16 18/09/2013 Herramientas, interfaces, motores Herramientas, interfaces, motores Middleware específico Se encargan de todos los aspectos de la integración : comunicación, registro, codificación y decodificación. Big Guys: Biztalk (Microsoft) Herramientas de Envío/Recepción Desarrollo propio Componentes http://www.microsoft.com/biztalk/en/us/accelerator-hl7.aspx Healthcare Transaction Base HTB (Oracle) http://www.oracle.com/solutions/integration/health.h tml Sun (Componentes para BPEL) Open/Source Colas de mensajería (permiten ruteo, persistencia, etc) © 2005-2012, HL7 Argentina 65 Los mismos vendedores de componentes comerciales ofrecen soluciones para envío y/o recepción JORNADA HL7 SAN LUIS Es bastante sencillo desarrollar una interface de bajo nivel a través de TCP (MLLP) También se pueden implementar a través de e-mail y web services. Vienen en general con soluciones MLLP MQSeries (IBM) MSMQ (Microsoft) Advanced Queueing (Oracle) Java Queue JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 66 Herramientas, interfaces, motores Motores de Mensajería Los motores de mensajería son productos de middleware específico para HL7 destinados a las grandes instalaciones (hospitales, financiadores). Tienen en cuenta ruteo, registro, auditoría, traducción entre versiones (2.3->2.4, etc.), transposición de mensajes (transformar un mensaje en otro), etc. JORNADA HL7 SAN LUIS © 2005-2012, HL7 Argentina 67 17