Come posso elaborare oggetti di risposta nel trasformatore di risposta per il riconoscimento personalizzato in Mirth 3.0?

StackOverflow https://stackoverflow.com//questions/21001790

  •  20-12-2019
  •  | 
  •  

Domanda

Sto usando il mirth 3.0.1.7051.

Attualmente ho 2 canali di lavoro su Mirth 2.2.2.6388.

Channel 1) Test_adt_hl7_to_xml Canale 2) Test_XML_Sender

Canale 1 - riceve un messaggio HL7, lo converte in un XML personalizzato e invialo al canale 2. Canale 2 - riceve un XML Invia a un listener HTTP. Questo funziona con un riconoscimento della risposta XML dall'ascoltatore HTTP. La risposta è in formato XML.

<ADTAck>
    <Status>ERROR</Status>
    <Message>Payload does not contain a value</Message>
</ADTAck>
.

Sono in grado di elaborarlo fino alla domanda di invio. Fino a quando non accendere "code persistenti". Una volta accetta, la risposta verrà sempre messa in coda dalla destinazione come previsto. L'utilizzo della risposta invio non funziona come la risposta è in formato XML.

Ho spostato questi canali a Mith 3.0 per utilizzare il trasformatore di risposta.

Nel trasformatore di risposta ho il seguente codice:

var ResponseMessage = response.getMessage();
logger.info("ResponseMessage: "+ ResponseMessage.toString());
var ResponseXML = new XML(ResponseMessage.toString());
logger.info("Response XML=" + ResponseXML.toString());   
responseMap.put('ACK', ResponseFactory.getSentResponse(ResponseXML));
.

Nel connettore sorgente, in "Impostazioni di risposta-> Risposta", ho selezionato "ACK"

Sono in grado di vedere il contenuto del messaggio dell'oggetto di risposta nei registri. Ma la risposta non lo rende per il canale 1 (test_adt_hl7_to_xml).

Quando metto domanda:

return "My Message response";
.

Nello "Script post processore", ottengo una risposta. Ma non riesco ad accedere all'oggetto di risposta ("ACK") che il "trasformatore di risposta" creato.

Ho letto ogni thread 'risposta' su questo forum. Provato la versione 2.x e ora versione 3. Ma non mi avvicini a una soluzione.

Come posso elaborare correttamente l'oggetto di risposta in modo che il canale 1 riceve la risposta XML?

Molte grazie in anticipo per il tuo aiuto.

È stato utile?

Soluzione 2

La mia soluzione con il mirth v3.01: Sul trasformatore del canale sorgente (TEST_ADT_HL7_TO_XML):

globalMap.put("ADTRESPONSE","");
globalMap.put("ADTRESPONSEREADYFLAG","false");
.

sul trasformatore di risposta del canale finale di risposta (TEST_XML_SENDER) - Aggiorna il flag di risposta.

if (response.getMessage() != '') 
{
    var ResponseMessage = response.getMessage()
    var ResponseXML = new XML(ResponseMessage.toString());
    globalMap.put("ADTRESPONSE",ResponseXML.toString());
    globalMap.put("ADTRESPONSEREADYFLAG","true");
}else{//wait if queued}
.

On the Response End Channel Post-Processor (Test_XML_Sender) - Impostare l'impostazione della risposta su "Post Processor" Scrivi un po 'di ciclo.(usa un timeoutout se vuoi non voler aspettare per sempre)

var ADTResponseReadyFlag = globalMap.get("ADTRESPONSEREADYFLAG");

if(debug)logger.info("Start Response Wait")
while(ADTResponseReadyFlag == "false")
{
  ADTResponseReadyFlag = globalMap.get("ADTRESPONSEREADYFLAG");
}
if(debug) logger.info("End Response Wait")
return globalMap.get("ADTRESPONSE");
.

Altri suggerimenti

Rispondi da: "Naruppley" Mirth Employee

Se la tua destinazione ha abilitato, quindi non ha senso rispondere da quella destinazione (o da una variabile personalizzata creata dal trasformatore di risposta della destinazione).L'intero punto di accodamento di destinazione è quello di rilasciare un messaggio ricevente in coda e andare avanti.Non ci sarebbe nulla da rispondere, perché la tua destinazione non ha ancora inviato il messaggio.

Ci sono alcuni modi di hacky intorno ad esso, ma probabilmente dovresti ripensare al flusso di lavoro del tuo messaggio / canale.Generalmente questo è fatto spostando il punto di fare la fila più in alto nella catena.Quindi, se il canale 1 invia al canale 2 che invia a un sistema in uscita e il canale 1 dovrebbe ricevere la risposta dal sistema in uscita, il canale 1 dovrebbe essere quello con la loro accodamento della destinazione abilitato, non il canale 2. Certamente, ciò significa che ilIl sistema di origine che ha inviato al canale 1 in primo luogo non sarebbe in grado di ricevere tale risposta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top