HL7 服务器和 HL7 侦听器

HL7 servers and HL7 listener

我们开发了一个网络服务,假设从客户端获取 HL7 文件并将其解析为 XML 然后将数据推送到数据库。

现在我的问题是,对于这个需求我们需要关注什么。我听说 EMR 系统通常通过 tcp 发送 HL7 文件。

HL7 服务器实际上是如何工作的?

我们需要创建一个 HL7 侦听器吗?

是否符合 HIPAA 要求,HL7 应该始终通过 tcp 推送到服务器?

谁能解释一下?

这是一个相当宽泛的问题...要回答所有问题需要的不仅仅是几段话。

HL7 是一只毛茸茸的野兽。每个集成可能都需要一些工作。关键是要有一个最小化这种集成工作的架构。有关 HL7 的一些见解,请参阅此 link:https://softwareengineering.stackexchange.com/questions/47855/what-issues-tend-to-arise-when-working-with-hl7-messages/48171#48171

我建议您考虑使用支持 HL7 的集成引擎来处理它。如果需要,它将处理协议、侦听器、消息确认,并且可以帮助将 HL7 数据存储在数据库中。这也有助于处理标准的灵活性。

HIPAA 合规性是关于保护患者数据。它不强制要求任何特定技术。大多数 HL7 数据交换都是通过 MLLP(基于带有消息框架的 tcp)处理的。您可以在其上添加 VPN 层。也可以使用其他协议,但您需要确保数据通信通道另一端的系统支持它。

caristix.com

如果您正在使用 TCP 侦听器,请务必按照 IHE(集成医疗保健企业)标准使用 TLS。您还应该仔细阅读他们的技术框架,该框架还将解决 ATNA(审计跟踪和节点身份验证)的审计和日志记录要求,这是基于 TLS 的系统日志的实现。这些协议由 IETF 定义。医疗保健数据交换需要大量研究和适当实施才能保持 HIPAA 合规性。

HL7 v2.x 消息通常使用 MLLP(带标记的 TCP)进行交换。我所知道的所有 TCP 服务器都可以通过 MLLP 发送和接收 HL7 v2.x 消息。在当前的开发中,有一种趋势是在 HTTP 上使用 HL7(以 ER7 形式或 XML 形式)。使用 SOAP 服务并不常见,因为 SOAP(简单对象访问协议)用于交换对象而不是消息。

一般流程如下:

  1. 创建一个TCP/IP端口:监听和接收来自发送者的HL7消息。 例如。 TCT/IP服务器点

  2. 将 HL7 映射到 XML:根据其类型(E.g.ADT、ORM、ORU 等)接收和解析 HL7 消息,并映射到 XML 方案基础数据库 table.

  3. 使用上述XML进入数据库table。

  4. Return HL7 确认消息在此处或在步骤#1 之后返回给发件人。

您可以通过两种方式做到这一点:

  • 通过编写代码从头开始实现 process/program 级别。 或者
  • 使用通常由三个模块组成的集成工具(如 OrionHealth 的 Rhapsody):(1) IDE 创建主要是拖放组件的流程。 (2) 用于部署进程的引擎和 (3) 使用浏览器查看进程的监视器

使用集成工具,开发维护更简单、更快捷、更方便。

希望对您有所帮助。

我使用 Camel (http://camel.apache.org) 和组件 mina2 解决了这个问题,该组件允许打开这些类型的监听器:

mina2:tcp://hostname[:port][?options]
mina2:udp://hostname[:port][?options]
mina2:vm://hostname[:port][?options]

Camel (What exactly is Apache Camel?) 是一个开源 Java 框架,专注于简化集成。使用 Camel 你可以定义一些路线,在这种情况下,你的路线可以类似于这样:

<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 消息。 HL7Process 定义如何处理您将收到的消息。 hl7Processor 可以实现 hl7ToXML 转换器和将消息存储在数据库中的逻辑。