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 );

alt text 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.
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top