繁体   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