Mirth: sobrescribir el objeto MSG con contenido en un objeto XML
Pregunta
La tarea es enviar un objeto XML de Channel-A a Channel-B
<MyMessage>
<ID>42</ID>
<hl7v2>
MSH|^~\&|LAB|....
PID|1|....
</hl7v2>
</MyMessage>
Los pasos de la comunicación del canal:
- En el transformador fuente del canal-B, extraiga el contenido HL7V2
- Sobrescribe el objeto MSG actual en el canal-B con el contenido extraído
- Continuar en los otros transformadores de origen del canal-B y esperar hacer referencia
msg['PID']['PID.5']
como normal.
La buena noticia es que puedo extraer la 'carga útil' de HL7V2 en una variable. El problema o la dificultad es restablecer el msg
objeto, o cualquier otro objeto para poder hacer referencia a las propiedades de HL7 como se esperaba.
Cuando creo una nueva variable con el SerializerFactory.getHL7Serializer
, se envuelve con las etiquetas <HL7Message>
.
channelMap.put('MessageID', msg['ID']); //successful
channelMap.put('v2payload',msg['HL7v2']); //also looks good
var v2Msg = SerializerFactory.getHL7Serializer(false,false,true).toXML(msg['HL7v2']);
channelMap.put('v2Msg', v2Msg );
Enlace a la imagen de tamaño completo
Pregunta: ¿Tiene alguna sugerencia sobre cómo sobrescribir el objeto MSG?
¿Cómo puedo comenzar a hacer referencia al MSG como tal?
msg['PID']['PID.5']
Condiciones actuales
- El tipo de entrada del canal de recepción es XML
- La necesidad es extraer todas las propiedades de ese objeto XML; ID es una base de datos PK que se utilizará más adelante en el destino.
Solución
Lamento que mi respuesta original estuviera empantanada con las peculiaridades de mi propio escenario. He reelaborado y probado para asegurarme de que esto funcione en su escenario.
Envío del canal: envuelve el HL7 sin procesar en su estructura XML y reenvía a un canal llamado Recibexml. He codificado esto en el transformador de origen, pero debe codificarlo donde funcione para usted.
var wrappedHL7 = <MyMessage><ID>123</ID>
<hl7v2>{messageObject.getRawData()}</hl7v2>
</MyMessage>;
router.routeMessage("ReceiveXML", wrappedHL7);
Recibir canal: extrae el HL7 del XML, lo convierte en XML y asigna nuevamente al objeto MSG. He codificado esto en el filtro de origen, por lo tanto, "devuelve verdadero";
msg = new XML(SerializerFactory.getHL7Serializer(false,false,true).toXML(msg['hl7v2'].toString()));
return true;
Otros consejos
Todo lo que tiene que hacer es colocar su mensaje XML entrante en el área de la plantilla de entrada en la alegría y luego usar el árbol de mensajes para arrastrar y soltar la información del XML que necesita a la sección JavaScript del conector.