Mirth: sovrascrivendo oggetto msg con contenuto nella un oggetto XML
Domanda
Il compito è quello di inviare un oggetto XML da Canale-A a canale-B
<MyMessage>
<ID>42</ID>
<hl7v2>
MSH|^~\&|LAB|....
PID|1|....
</hl7v2>
</MyMessage>
Le fasi del canale di comunicazione:
- trasformatore sorgente del canale-B, estrarre il contenuto HL7v2
- sovrascrivere l'oggetto msg corrente a canale-B con i contenuti estratti
- continua negli altri trasformatori sorgente del canale-B e in attesa di fare riferimento a
msg['PID']['PID.5']
come normale.
La buona notizia è che posso estrarre l'HL7v2 'payload' in una variabile. Il problema o difficoltà è resettare l'oggetto msg
, o qualsiasi altro oggetto per poter fare riferimento alle proprietà HL7 come previsto.
Quando creo una nuova variabile con il SerializerFactory.getHL7Serializer
, avvolge con il tag <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 );
collegamento immagine full size al
Domanda :? Avete qualche suggerimento su come sovrascrivere l'oggetto msg
Come posso iniziare riferimento alla msg in quanto tale:
msg['PID']['PID.5']
Condizioni attuali
- tipo di ingresso del canale di ricezione è XML
- la necessità è quella di prendere estrarre tutti i oggetti di tale oggetto XML; ID è un PK banca dati da utilizzare successivamente nella destinazione.
Soluzione
Mi dispiace la mia risposta originale è stato impantanato con le peculiarità del mio scenario. Ho rielaborato e testato per garantire che questo funziona nel vostro scenario.
L'invio di Canale - avvolge l'HL7 grezzo in uno struttura XML, e in avanti ad un canale chiamato ReceiveXML. Ho codificato questo nel trasformatore di origine, ma si dovrebbe codificarlo in cui funziona per voi.
var wrappedHL7 = <MyMessage><ID>123</ID>
<hl7v2>{messageObject.getRawData()}</hl7v2>
</MyMessage>;
router.routeMessage("ReceiveXML", wrappedHL7);
Ricezione Canale - estrae il HL7 dal XML, lo converte in XML e assegna di nuovo all'oggetto msg. Ho codificato questo nel filtro di origine - da qui "return true;"
msg = new XML(SerializerFactory.getHL7Serializer(false,false,true).toXML(msg['hl7v2'].toString()));
return true;
Altri suggerimenti
Tutto quello che dovete fare è mettere il vostro messaggio XML in entrata nella zona modello in entrata nella gioia e quindi utilizzare l'albero messaggio di trascinare e rilasciare le informazioni dal XML che è necessario per la sezione javascript del connettore.