HL7服务器和HL7监听器


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&amp;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的兼容性。