HL7 servers and HL7 listener
我们开发了一个Web服务,假设从客户机获取HL7文件并将其解析为XML,然后将数据推送到数据库中。
现在我的问题是,我们需要关注什么来满足这个需求。我听说EMR系统通常通过TCP发送HL7文件。
实际上,HL7服务器是如何工作的?
我们需要创建一个HL7监听器吗?
HL7是否应该始终通过TCP推送到服务器上,这是HIPAA遵从性?
有人能解释这一切吗?
这是一个相当广泛的问题…回答这些问题不仅需要几段时间。
HL7是一种多毛的野兽。每个集成可能需要一些工作。关键是要有一个最小化集成工作的体系结构。有关HL7的一些见解,请参阅此链接:https://softwarengineering.stackexchange.com/questions/47855/what-issues-trend-to-asure-when-working-with-hl7-messages/48171 48171
我建议您考虑使用支持HL7的集成引擎来处理它。它将处理协议、侦听器、消息确认(如果需要),并有助于将HL7数据存储在数据库中。它还将有助于处理标准的灵活性。
HIPAA合规性是关于保护患者数据的。它不要求任何特定的技术。大多数HL7数据交换是通过MLLP(基于带消息帧的TCP)处理的。您可以在上面添加一个VPN层。也可以使用其他协议,但您需要确保数据通信通道另一侧的系统支持它。
CARISTIX.com
我使用camel(http://camel.apache.org)和允许打开此类侦听器的组件mina2解决了这个问题:
1 2 3 | mina2:tcp://hostname[:port][?options] mina2:udp://hostname[:port][?options] mina2:vm://hostname[:port][?options] |
骆驼(阿帕奇骆驼到底是什么?)是一个开源的Java框架,侧重于使集成更容易。使用骆驼,您可以定义一些路线,在这种情况下,您的路线可以类似于此:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <route> <from uri="mina2:tcp://localhost:2575?sync=true&codec=#hl7codec" /> <log message="[1] ********* MINA2 Message received *********" /> <to uri="direct:HL7Process"/> </route> <route> <from uri="direct:HL7Process"/> <log message="[2] ********* MINA2 processing Message" /> <bean ref="hl7Processor" method="removeUtf8Bom" /> <process ref="hl7Processor" /> <onException> <exception>org.apache.camel.RuntimeCamelException</exception> <exception>ca.uhn.hl7v2.HL7Exception</exception> <redeliveryPolicy maximumRedeliveries="0" /> <handled> <constant>true</constant> </handled> <log message="*[3] ******** MINA2 sending ACKError" /> <bean ref="hl7Processor" method="sendACKError" /> </onException> <log message="[4] ********* MINA2 sending ACK" /> <bean ref="hl7Processor" method="sendACK" /> <log message="[4] ********* MINA2 Message processed" /> </route> |
第一部分在TCP端口上定义一个侦听器来接收HL7消息。HL7进程定义如何处理将接收的消息。HL7Processor可以实现HL7TOXML转换器和在数据库中存储消息的逻辑。
HL7 v2.x消息通常使用MLLP(带标记的TCP)进行交换。我认识的所有TCP服务器都可以通过MLLP发送和接收HL7 v2.x消息。在当前的开发中,有一种趋势是使用HL7 overHTTP(在ER7格式或XML格式中)。使用SOAP服务并不常见,因为SOAP(简单对象访问协议)用于交换对象,而不是消息。
一般流程如下:
创建一个TCP/IP端口:监听和接收来自发送方的HL7消息。例如,TCT/IP服务器点
将HL7映射到XML:根据HL7消息的类型(如ADT、ORM、ORU等)接收和解析该消息,并用底层数据库表的XML方案映射。
使用上面的XML输入数据库表。
将HL7确认消息返回给发送方,或在步骤1之后返回。
您可以通过两种方式来完成此操作:
- 通过编写代码从零开始实现流程/程序。或
- 使用集成工具(如OrionHealth的Rhapsody),它通常由三个模块组成:(1)IDE创建主要是拖放组件的流程。(2)部署流程的引擎;(3)使用浏览器监视流程
使用集成工具对于开发和维护来说非常简单、快速和方便。
希望它有帮助。
如果您使用的是TCP侦听器,那么根据IHE(集成医疗保健企业)标准使用TLS非常重要。您还应该认真阅读他们的技术框架,该框架还将使用ATNA(审计跟踪和节点认证)解决审计和日志记录需求,ATNA是通过TLS实现Syslog的。这些协议由IETF定义。医疗数据交换需要大量的研究和适当的实施来保持HIPAA的兼容性。