簡體   English   中英

何時關閉並在HL7消息發送后重新打開套接字

[英]when to close and reopen socket after HL7 message sent

我正在嘗試打開一個HL7服務器的基本連接,我發送請求並獲得ACK響應。 這將不斷完成。

  1. 如果這是連續進行的,我什么時候關閉插座? 在這種情況下,我是否正確實現了這一點?
  2. 如果我關閉插座,我該如何再次打開它? ConnectionHub的javadoc表示以下內容:
attach(java.lang.String host, int port, Parser parser, 
       java.lang.Class<? extends LowerLayerProtocol> llpClass) 

返回給定地址的連接,必要時打開此連接。

但是,在現實生活中,如果已經關閉,它將不會打開新連接。

Patient patient = appt.getPatient();
Parser parser = new GenericParser();
Message hl7msg = parser.parse(wlp.getORMString(appt));

//Connect to listening servers
ConnectionHub connectionHub = ConnectionHub.getInstance();
// A connection object represents a socket attached to an HL7 server
Connection connection = connectionHub.attach(serverIP, serverPort, 
                            new PipeParser(), MinLowerLayerProtocol.class);
if (!connection.isOpen()) {
   System.out.println("CONNNECTION is CLOSED");
   connection = connectionHub.attach(serverIP, serverPort, new PipeParser(),         
                                     MinLowerLayerProtocol.class);
  if (!connection.isOpen()) {
    System.out.println("CONNNECTION is still CLOSED");
  }
}
Initiator initiator = connection.getInitiator();
Message response = initiator.sendAndReceive(hl7msg);

String responseString = parser.encode(response);
System.out.println("Received response:\n" + responseString);
connection.close();

結果:第一次傳遞完美,發送請求並收到ACK。 對此方法的任何后續調用都會導致java.net.SocketException: Socket closed在客戶端java.net.SocketException: Socket closed 。如果我刪除了connection.close()調用,那么它將運行一段時間,然后套接字將自行關閉。

如果您通過HL7 2.X進行通信,則套接字上的預期行為永遠不會斷開 - 您分配連接並保持套接字處於活動狀態。 換句話說,一個HL7應用程序不會像Web瀏覽器,其中它連接,根據需要和斷開完成時。 相反,兩端都可以保持插座連續連接。 如果斷開連接,大多數應用程序都會生氣。 此外,如果長時間斷開連接,大多數集成引擎都會發出警報。

連接套接字后,需要使用HL7最小下層協議(MLLP或MLP)來傳送HL7 2.X內容。 如果要發送數據,則應在發送下一條消息之前等待HL7確認。 如果您正在接收數據,則應生成HL7 Ack。

參考文獻:

MLP - http://www.hl7standards.com/blog/2007/05/02/hl7-mlp-minimum-layer-protocol-defined

Acks - http://www.corepointhealth.com/resource-center/hl7-resources/hl7-acknowledgement

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM