3

要求を送信して ACK 応答を取得する HL7 サーバーへの基本的な接続を開こうとしています。これは継続的に行われます。

  1. これが継続的に行われている場合、いつソケットを閉じますか? この場合、これを正しく実装していますか?
  2. ソケットを閉じた場合、どうすれば再び開くことができますか? ConnectionHub の javadoc は、次のことを示しています。
attach(java.lang.String host, int port, Parser parser, 
       java.lang.Class<? extends LowerLayerProtocol> llpClass) 

指定されたアドレスへの Connection を返し、必要に応じてこの Connection を開きます。

ただし、実際には、既に閉じられている場合、新しい接続を開くことはありません。

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、クライアント側で " になります。connection.close()呼び出しを削除すると、一定時間正常に実行され、ソケットが閉じます。

4

1 に答える 1

6

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

于 2010-11-29T19:36:50.043 に答える