HL7 服务器和 HL7 监听器

Posted

技术标签:

【中文标题】HL7 服务器和 HL7 监听器【英文标题】:HL7 servers and HL7 listener 【发布时间】:2015-07-24 08:06:58 【问题描述】:

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

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

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

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

HL7 是否应该始终通过 tcp 推送到服务器的 HIPAA 合规性?

谁能解释一下?

【问题讨论】:

您可以查看 HL7 EHR 系统功能模型,第 2 版(可在 HL7.org 上下载,需要注册)以获取 EHR 配置文件。然后,您可以检查其中一个 HL7 集成引擎(例如 Mirth Connect)以了解它们是如何工作的。 【参考方案1】:

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

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

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

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

caristix.com

【讨论】:

【参考方案2】:

我使用 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 翻译器和将消息存储在数据库中的逻辑。

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

如果您使用 TCP 侦听器,请务必按照 IHE(集成医疗保健企业)标准使用 TLS。您还应该真正阅读他们的技术框架,该框架还将使用 ATNA(Audit Trail and Node Authenication)解决审计和日志记录要求,ATNA 是基于 TLS 的 syslog 实现。这些协议由 IETF 定义。医疗保健数据交换需要大量研究和正确实施才能保持 HIPAA 合规性。

【讨论】:

【参考方案5】:

一般流程如下:

    创建 TCP/IP 端口:侦听和接收来自发件人的 HL7 消息。 例如。 TCT/IP 服务器点

    将 HL7 映射到 XML:根据其类型(例如 ADT、ORM、ORU 等)接收和解析 HL7 消息,并与底层数据库表的 XML 方案进行映射。

    使用上述 XML 进入数据库表。

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

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

通过编写代码从头开始实施流程/程序。 或 使用集成工具(如 OrionHealth 的 Rhapsody),通常由三个模块组成: (1) IDE 创建主要是拖放组件的过程。 (2) 引擎部署流程和 (3) 使用浏览器监控以查看流程

使用集成工具更容易、更快捷、更方便开发和维护。

希望对你有帮助。

【讨论】:

以上是关于HL7 服务器和 HL7 监听器的主要内容,如果未能解决你的问题,请参考以下文章

HL7的基本信息

使用 JAVA 将 HL7 转换为 JSON

医院信息集成平台 HL7协议对接

HL7解析器

.Net 中具有高级搜索和修饰符的 HL7 FHIR 路由

转:HL7 Tools suite