문제

작업은 Channel-A에서 Channel-B로 XML 객체를 보내는 것입니다.

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

채널 통신의 단계 :

  • Channel-B의 소스 변압기에서 HL7V2 내용을 추출하십시오.
  • Channel-B의 현재 MSG 객체를 추출한 내용으로 덮어 씁니다.
  • 다른 Channel-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 text 전체 크기 이미지 링크

의문: MSG 객체를 덮어 쓰는 방법에 대한 제안이 있습니까?

MSG를 참조하는 방법 :

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

현재 조건

  • 수신 채널의 입력 유형은 XML입니다
  • 필요는 해당 XML 객체에서 모든 특성을 추출해야합니다. ID는 대상 후반에 사용될 데이터베이스 PK입니다.
도움이 되었습니까?

해결책

내 원래 대답이 내 시나리오의 특징으로 쇠약 해져서 죄송합니다. 나는 이것이 당신의 시나리오에서 작동하는지 확인하기 위해 재 작업하고 테스트했습니다.

채널 보내기 - 원시 HL7을 XML 구조로 감고 수신자 XML이라는 채널로 전달합니다. 나는 이것을 소스 변압기에서 코딩했지만 그것이 당신에게 맞는 곳에 코딩해야합니다.

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;

다른 팁

들어오는 XML 메시지를 Mirth의 인바운드 템플릿 영역에 넣은 다음 메시지 트리를 사용하여 커넥터의 JavaScript 섹션으로 필요한 XML에서 정보를 드래그 앤 드래그하여 삭제하기 만하면됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top