2009-12-16 6 views
1

작업은 채널-A에서 채널-B에 XML 객체를 보낼 수있는 채널 통신의환락 : XML 객체의 내용으로 MSG 개체를 덮어

<MyMessage> 
<ID>42</ID> 
<hl7v2> 
    MSH|^~\&|LAB|.... 
    PID|1|.... 
</hl7v2> 
</MyMessage> 

단계 :

  • 채널 B의 소스 변환기에서 HL7v2 내용을 추출하십시오.
  • 추출 된 내용으로 채널 B의 현재 msg 객체를 덮어 씁니다.
  • 다른 채널 B 소스에서 계속됩니다. 전자 변압기를 사용하고 정상적으로 msg['PID']['PID.5']을 참조 할 것으로 예상됩니다.

좋은 소식은 HL7v2 '페이로드'를 변수로 추출 할 수 있다는 것입니다. 문제 또는 어려움은 msg 개체 또는 HL7 속성을 예상대로 참조 할 수있는 다른 개체를 다시 설정하는 것입니다.

SerializerFactory.getHL7Serializer으로 새 변수를 만들 때 <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 textlink to full size image

질문 : 당신은 MSG 개체를 덮어 쓰기하는 방법에 대한 제안 사항이 있습니까?

어떻게과 같은 MSG를 참조 시작할 수 있습니다

msg['PID']['PID.5']

현재 조건

  • 수신 채널의 입력 형식은 XML에게 필요한 모든 속성을 추출 걸릴 것입니다
  • 입니다 그 XML 객체로부터; ID는 목적지에서 나중에 사용될 데이터베이스 PK입니다.

답변

2

내 원래 대답은 내 자신의 시나리오의 특성으로 인해 수렁에 빠졌습니다. 나는 당신의 시나리오에서 이것이 작동하도록 재 작업하고 테스트했다.

송신 채널 - 원시 hl7을 XML 구조로 래핑하고 ReceiveXML 채널로 전달합니다. 소스 변압기에서이 코드를 코딩했으나 코드가 있어야 작동합니다.

var wrappedHL7 = <MyMessage><ID>123</ID> 
         <hl7v2>{messageObject.getRawData()}</hl7v2> 
       </MyMessage>; 

router.routeMessage("ReceiveXML", wrappedHL7); 

수신 채널 - xml에서 hl7을 추출하고 xml로 변환 한 다음 msg 객체에 다시 할당합니다. 나는 이것을 소스 필터에서 코딩 했으므로 "return true;"

msg = new XML(SerializerFactory.getHL7Serializer(false,false,true).toXML(msg['hl7v2'].toString())); 
return true; 
0

드래그하고 커넥터의 자바 스크립트 부분을 필요로하는 XML에서 정보를 삭제하는 환희의 인바운드 템플릿 영역으로 들어오는 XML 메시지를 넣고 메시지 트리를 사용하기 만하면됩니다 .