Utilice un nodo GenericHL7Input para recibir mensajes de clientes que conectan con el intermediario utilizando el protocolo MLLP a través de TCP/IP.
Es recomendable utiliza el nodo HL7DFDLInput para aplicaciones nuevas y actualizadas siempre que sea posible, ya que modelo de mensaje DFDL tiene los beneficios siguientes.
Para obtener más información sobre el nodo HL7DFDLInput, consulte Nodo HL7DFDLInput.
El nodo GenericHL7Input escucha en un puerto y, cuando un socket de cliente se conecta al puerto, el socket de servidor crea una conexión para el cliente. Cuando se abre una conexión, se recibe un registro de datos y el final del registro se detecta por la presencia de un delimitador configurable. Si se produce un error al leer datos, por ejemplo si se sobrepasa el tiempo de espera de los datos o se cierra una conexión mientras se esperaba al registro completo, los datos se enviarán al terminal de anomalías (Failure). Si el terminal Anomalía no está conectado, se genera una excepción. Si la propiedad Mecanismo de reintento para el nodo no se establece en Anomalía, el nodo sigue intentándolo hasta que se recuperan los datos o hasta que se sobrepasa el número de reintentos definido por la propiedad Umbral de reintentos.
El nodo GenericHL7Input requiere mensajes que utilizan el protocolo MLLP a través de TCP/IP. Si los bytes iniciales de MLLP no están presentes, el mensaje se envía al terminal Anomalía.
El nodo GenericHL7Input maneja mensajes que están definidos en el dominio MRM. El formato de mensaje HL7 en el conjunto de mensajes conjunto de mensajes de HL7v25P se utiliza para analizar los mensajes. Si se produce un error de análisis, o si los campos de MSH no están presentes, el mensaje se pasa al terminal Anomalía. Para obtener información sobre los conjuntos de mensajes, consulte Visión general de conjuntos de mensajes en la documentación del producto IBM Integration Bus.
Puede configurar el nodo GenericHL7Input para que compruebe la existencia de duplicados. Cada mensaje HL7 entrante tiene un campo MessageControlID en el segmento de cabecera MSH, que identifica al registro. Si la propiedad Comprobar duplicados está seleccionada, todos los identificadores se almacenan en la cola de duplicados con el acuse de recibo (ACK) devuelto al remitente. El identificador de un mensaje entrante se compara con los identificadores guardados para determinar si es un duplicado. Cuando un duplicado se detecta, no se procesa, pero el mismo acuse de recibo que se ha enviado con el primer mensaje se devuelve al remitente. La cola de duplicados se especifica como una propiedad de nodo.
Los identificadores se almacenan en la cola de duplicados para el periodo definido por la propiedad Periodo de tiempo de duplicación. Una vez transcurrido este tiempo, los identificadores se suprimen y los mensajes con el mismo identificador ya no se tratan como duplicados. Debe establecer un tamaño para la cola de duplicados suficiente para contener el número máximo de identificadores de mensajes esperado en el periodo de tiempo establecido.
Si un mensaje entrante no es un duplicado, el mensaje se pasa al terminal de salida del nodo GenericHL7Input para su proceso posterior. Si se detecta un duplicado, el nodo GenericHL7Input devuelve el acuse de recibe al solicitante. Si el informe de duplicados está seleccionado y se detecta un duplicado, el mensaje se pasa al terminal de Anomalía.
Los mensajes se procesan bajo control transaccional. Si se retrotrae el flujo de mensajes, se eliminan los identificadores duplicados añadidos a la cola de identificadores duplicados. Esto permite asegurar que el mensaje se vuelve a someter si no se identifica como duplicado y se procesa como un mensaje nuevo.
Si se produce un error al leer los datos, incluido un tiempo de espera excedido esperando datos o el cierre de una conexión mientras se esperaba al registro completo, los datos se enviarán al terminal de anomalías (Failure). Si el terminal Anomalía no está conectado, se genera una excepción. Si la propiedad Mecanismo de reintento para el nodo no se establece en Anomalía, el nodo sigue intentándolo hasta que se recuperan los datos o hasta que se sobrepasa el número de reintentos definido por la propiedad Umbral de reintentos.
Para obtener información sobre HL7, consulte Health Level Seven International.
El nodo GenericHL7Input se representa en la bandeja Servicio sanitario de la paleta de nodos de flujos de mensajes, y se representa en el IBM Integration Toolkit con el siguiente icono:
Cuando se utiliza un nodo GenericHL7Input en un flujo de mensajes, los mensajes pasados al terminal Out (de salida) contienen mensajes de HL7 con los bytes de MLLP iniciales y finales eliminados. El árbol de mensajes contiene cabeceras MQMD y MQRFH2 de modo que el mensaje se puede escribir directamente en una cola si es necesario. El cuerpo del mensaje contiene un mensaje HL7 en el dominio MRM. El flujo de mensajes es responsable de devolver un acuse de recibo (ACK) al solicitante.
El nodo GenericHL7Input es transaccional. Cuando el flujo de mensajes en el que se utiliza, finaliza satisfactoriamente, todos los mensajes escritos en la transacción se comprometen, incluido el mensaje en la cola que guarda los ID para la detección de duplicados.
Si hay una anomalía en el nodo GenericHL7Input, el mensaje se pasa al terminal Anomalía. LocalEnvironment.HL7 contiene los campos mostrados en la tabla de Entorno siguiente. Estos campos proporcionan información que se utiliza para crear un acuse de recibo negativo (NACK) o crear un mensaje de error.
Campo | Descripción |
---|---|
FlowMilestoneReached | Indica la acción que se toma cuando se produce el error. |
SendNACK | Enviar un acuse de recibo negativo (NACK) de respuesta. |
EndConnection | YES: Cerrar la conexión. NO: No cerrar la conexión. |
HL7RC | Código de retorno de HL7. |
ErrorCondition | Texto de error para incluir en el NACK. |
Si EndConnection se establece en YES, la conexión debe cerrarse. Esta acción se produce cuando el mensaje de entrada no contiene los delimitadores MLLP correctos y se supone por lo tanto que el protocolo MLLP no está soportado.
Los campos HL7RC (Código de retorno de HL7) y ErrorCondition están disponibles para proporcionar información en el NACK que se devuelve al solicitante.
Objetivo de flujo alcanzado | Código de retorno | Texto del error |
---|---|---|
DETECTDUPLICATE | AR | Error de comprobación de duplicados |
PARSE | AE | Error de validación o análisis de MSH de mensaje de entrada |
BUILDACK | AR | Error al crear mensaje de acuse de recibo. (Este error se produce cuando se devuelve un acuse de recibo porque se trata de un mensaje duplicado). |
SENDACK | AR | Error al crear mensaje de acuse de recibo (Este error se produce cuando se devuelve un acuse de recibo porque se trata de un mensaje duplicado). |
DUPLICATEERROR | AR | Anomalía durante la detección de duplicados.
La cola de duplicados está llena. Anomalía durante la detección de duplicados. El proceso del mensaje ha fallado. |
SAVINGDUPDATA | AR | Error al guardar datos duplicados |
DUPLICATE RECORD | AR | Registro duplicado detectado |
El nodo GenericHL7Input es transaccional. Cuando el flujo de mensajes en el que se utiliza, finaliza satisfactoriamente, todos los mensajes escritos en la transacción se comprometen. Si el mensaje finaliza con una excepción que no se ha detectado, todos los mensajes escritos bajo la transacción se retrotraen, incluido el mensaje. Esta acción incluye el mensaje a la cola que guarda los ID para la detección de duplicados. Debe determinar qué mensajes desea que se retrotraigan en estas circunstancias y asegurarse de que otros mensajes, por ejemplo mensajes de error, no se graban bajo la transacción.
Cuando haya añadido una instancia del nodo GenericHL7Input a un flujo de mensajes, podrá configurarlo.
Todas las propiedades obligatorias para las que debe especificar un valor (propiedades que no tienen un valor predeterminado definido) están marcadas con un asterisco.
Terminal | Descripción |
---|---|
Failure (Anomalía) | El terminal de salida al que se direcciona un mensaje si se produce un error. |
Out (de salida) | El terminal de salida al que se direcciona el mensaje si se recupera satisfactoriamente de un recurso externo. |
Catch (de captación) | El terminal de salida al que se direcciona un mensaje si se genera una excepción en sentido descendente y después este nodo la capta. Las excepciones se detectan sólo si este terminal está conectado. |
Las tablas siguientes describen las propiedades del nodo. La columna con la cabecera O indica si la propiedad es obligatoria (marcada con un asterisco si tiene que entrar un valor cuando no hay definido ningún valor predeterminado); la columna con la cabecera C indica si la propiedad es configurable (puede cambiar el valor cuando añade el flujo de mensajes al archivo archivador de intermediario (BAR) para desplegarlo).
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Nombre de nodo | Sí | No | GenericHL7Input | El nombre del nodo. |
Descripción corta | No | No | Una descripción breve del nodo. | |
Descripción larga | No | No | Texto que describe el propósito del nodo en el flujo de mensajes. |
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Comprobar duplicados | Sí | No | Seleccionado | Determina si se detectan mensajes duplicados, según lo determinado por el identificador de
mensaje exclusivo en la cabecera MSH de HL7. Si se detecta un
duplicado, se lleva a cabo la acción siguiente:
|
Informar de duplicados | Sí | Sí | Seleccionado | Determina si los mensajes duplicados que llegan dentro del tiempo especificado generan un mensaje de notificación de error. |
Periodo de tiempo duplicado | No | Sí | 86400 | Define (en segundos) durante cuanto tiempo se conservan los mensajes de identificador antes de
que caduquen. Una vez transcurrido este tiempo, los duplicados no se reconocen y se procesan como de costumbre. El
valor predeterminado (86400) es igual a 24 horas. Esta propiedad es obligatoria si se selecciona Comprobar duplicados. |
Cola de identificadores duplicados | No | No | Define la cola que contiene la lista de ID duplicados actuales contra los que se comprueban los
mensajes de entrada. Esta propiedad es obligatoria si se selecciona Comprobar duplicados. |
|
Bytes MLLP iniciales | Sí | No | 0B | Define el byte inicial que forma parte del protocolo MLLP y que se elimina antes de analizar y procesar el mensaje. |
Enviar acuses de recibo | Sí | Sí | Seleccionado | Determina si se envían mensajes de acuse de recibo cuando se detectan mensajes duplicados. |
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Detalles de conexión | Sí | Sí | 1111 | La conexión TCP/IP para la aplicación de origen en el formato nombre_host:puerto |
Se ha excedido el tiempo de espera de registro de datos (segundos) | Sí | Sí | 60 | El tiempo que va a estar a la escucha un nodo en una conexión a la espera de más datos después de la llegada del primer byte de datos. Puede especificar cualquier cantidad de tiempo en segundos. El valor predeterminado es 60 segundos. Cuando se excede el tiempo especificado, todos los datos disponibles se envían al terminal de anomalías (Failure). |
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Delimitador | Sí | No | Delimitador personalizado | Esta propiedad no se puede editar. |
Bytes MLLP finales | Sí | Sí | 1C0D | Los bytes MLLP finales que se utilizan como un delimitador de registros de HL7. Estos bytes MLLP finales los elimina el nodo GenericHL7Input. |
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Mecanismo de reintento | Sí | No | Intervalo de reintento corto (segundos) | Cómo maneja el nodo una anomalía del flujo. Las opciones válidas son:
|
Intervalo de reintento corto (segundos) | Sí | Sí | 0 | El intervalo, en segundos, entre cada reintento si Umbral de reintentos no es cero. |
Umbral de reintentos | Sí | Sí | 0 | El número de veces que debe reintentarse la transacción de flujos cuando Mecanismo de reintento es Intervalo de reintento corto (segundos). |
Intervalo de reintento largo (segundos) | Sí | Sí | 300 | El intervalo entre reintentos si Mecanismo de reintento es Reintento corto y largo y se ha agotado el umbral de reintentos. |