2014-01-28 2 views
1

Mirth에서 ORU 메시지를 보내는 채널을 개발했습니다. 그런 다음 ACK는 특정 포트의 다른 채널로 비동기 적으로 다시 전송됩니다.Nirth에서 비동기 ACK 처리

AR 또는 AE가 ACK로 다시 수신되는 경우 ORU 메시지를 다시 보내려면 나중에이 ACK를 수신 할 때이 ORU를 저장해야합니다 (비동기임을 기억하십시오) .

나는 이것을 달성하는 방법을 알아 냈습니다. 내 생각은 다음과 같습니다

  • ORU 메시지를 전송하고, ACK 데이터베이스에 관련 ORU을 찾아 incomming 및 경우에 따라 대한 ACK를
  • incomming에 대한 데이터베이스에 다른 채널 대기에서
  • 을 보관 ACK가 긍정적인지 아닌지 ORU를 제거하거나 다시 다시 보내십시오.

여러분 중 누군가가 약간의 경험이 있고 이것이 올바른 방법인지 아닌지 알 수 있다면 좋을 것입니다. 방법. 아이디어가 좋은 경우 어떻게 세 번째 단계를 구현해야합니까? 이미 단일 채널로 시도했지만 ORU를 다시 보낼 수는 없습니다.

+0

좋은 질문입니다. IT Healthcare의 StackExchange 제안에 추가 하시길 권합니다. http://area51.stackexchange.com/proposals/51758/healthcare-it – ChronoFish

+0

어떻게 할 수 있습니까? 이미 기록되었지만 쿼리 게시 방법을 찾을 수 없습니다. – iberbeu

답변

1

나는 귀하의 접근 방식이 합리적이라고 생각합니다. 우리는 하드 삭제에서 벗어나고 대신 ACK (또는 NACK) 메시지가 도착한 시간에 "확인 응답"으로 표시합니다. 이것은 당신에게 ACK/NACK/NULL을 질의 할 수있는 능력을 제공하며, 응답 기록을 제공합니다.

우리는 우리의 ORU를 sampleId/timestamp로 추적하고 messageID를 기록합니다. messageID는 ACK/NACK에 다시 나타나므로 일치하기 쉽습니다.

NACK 메시지를 재발송하고 싶지는 않습니다. 포맷 문제와 같은 NACK이 처음 재발 한 이유는 간단한 재전송으로 해결되지 않기 때문입니다. 그 대신 NACK을 사용하여 수정 사항을 만들고 수동으로 재전송 할 수있는 일부 그룹에 경고 (예 : 전자 메일)를 트리거 할 수 있습니다.

누락 된 "ACK"를 안전하게 다시 보낼 수 있는지 그리고 얼마나 오래 기다려야하는지 결정해야합니다. 그것들은 기술적 인 것보다 더 사업적인 결정입니다. 예를 들어, ACK/NACK을 수신하지 못했지만, 네트워크상의 장애, Mirth의 문제 또는 원래 메시지가 실제로 통과하지 못했기 때문입니까? 수신 시스템이 1과 1 개의 메시지를 센 경우, ACK를 수신하지 못한 메시지를 재전송하기 전에 조정할 방법이 필요합니다.