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&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 监听器的主要内容,如果未能解决你的问题,请参考以下文章