Alegria: substituição do objeto MSG com conteúdo em um objeto XML
Pergunta
A tarefa é enviar um objeto XML do canal-A para o canal-B
<MyMessage>
<ID>42</ID>
<hl7v2>
MSH|^~\&|LAB|....
PID|1|....
</hl7v2>
</MyMessage>
As etapas da comunicação do canal:
- No transformador de origem do canal-B, extraia o conteúdo HL7V2
- Substitua o objeto MSG atual no canal-b com o conteúdo extraído
- Continue nos outros transformadores de fonte do canal-B e esperando fazer referência
msg['PID']['PID.5']
como normal.
A boa notícia é que eu posso extrair a 'carga útil' HL7V2 em uma variável. O problema ou dificuldade é redefinir o msg
Objeto, ou qualquer outro objeto para poder fazer referência às propriedades HL7 conforme o esperado.
Quando eu crio uma nova variável com o SerializerFactory.getHL7Serializer
, envolve com as tags <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 );
Link para imagem em tamanho real
Pergunta: Você tem alguma sugestão sobre como substituir o objeto MSG?
Como posso começar a referenciar o MSG como tal:
msg['PID']['PID.5']
Condições atuais
- O tipo de entrada do canal de recebimento é xml
- A necessidade é extrair todas as propriedades desse objeto XML; O ID é um banco de dados PK a ser usado posteriormente no destino.
Solução
Sinto muito, minha resposta original foi atolada com as peculiaridades do meu próprio cenário. Reconheci e testei para garantir que isso funcione em seu cenário.
Enviar canal - envolve o HL7 bruto na sua estrutura XML e encaminhe para um canal chamado Receberxml. Eu codifiquei isso no transformador de origem, mas você deve codificá -lo onde ele funciona para você.
var wrappedHL7 = <MyMessage><ID>123</ID>
<hl7v2>{messageObject.getRawData()}</hl7v2>
</MyMessage>;
router.routeMessage("ReceiveXML", wrappedHL7);
Channel de recebimento - extrai o HL7 do XML, o converte para XML e atribui novamente ao objeto MSG. Eu codifiquei isso no filtro de origem - daí "Return true;"
msg = new XML(SerializerFactory.getHL7Serializer(false,false,true).toXML(msg['hl7v2'].toString()));
return true;
Outras dicas
Tudo o que você precisa fazer é colocar sua mensagem XML de entrada na área do modelo de entrada em alegria e, em seguida, usar a árvore de mensagens para arrastar e soltar as informações do XML necessário para a seção JavaScript do conector.