我们开发了一个Web服务,假设从客户端获取HL7文件并将其解析为XML,然后将数据推送到数据库中 .
现在我的问题是,我们需要关注这一要求 . 我听说通常EMR系统通过tcp发送HL7文件 .
实际的HL7服务器如何工作?
我们需要创建一个HL7监听器吗?
这个HIPAA合规性HL7应该始终通过tcp推送到服务器吗?
可以解释一下吗?
这是一个相当广泛的问题......回答这一切需要的不仅仅是几个段落 .
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) . 您可以在其上添加VPN层 . 也可以使用其他协议,但您需要确保数据通信通道另一侧的系统支持它 .
caristix.com
我使用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转换器和将消息存储在数据库中的逻辑 .
HL7 v2.x消息通常使用MLLP(带标记的TCP)进行交换 . 我所知道的所有TCP服务器都可以通过MLLP发送和接收HL7 v2.x消息 . 在当前的发展中,倾向于使用HL7而不是HTTP(ER7格式或XML格式) . 使用SOAP服务并不常见,因为SOAP(简单对象访问协议)用于交换对象而不是消息 .
如果您正在使用TCP侦听器,则根据IHE(集成医疗保健企业)标准使用TLS非常重要 . 您还应该阅读他们的技术框架,该框架还将通过ATNA(审计跟踪和节点验证)解决审计和日志记录要求,这是一个基于TLS的syslog实现 . 这些协议由IETF定义 . 医疗保健数据交换需要大量研究和正确实施才能保持HIPAA标准 .
创建TCP / IP端口:侦听和接收来自发件人的HL7邮件 . 例如 . TCT / IP Server点
将HL7映射到XML:根据HL7消息的类型(例如,ADT,ORM,ORU等)接收和解析HL7消息,并使用底层数据库表的XML方案进行映射 .
使用上面的XML进入数据库表 .
在此处或在步骤#1之后将HL7确认消息返回给发件人 .
通过编写代码从头开始实现流程/程序 . 要么
使用集成工具(如OrionHealth的Rhapsody),它通常由三个模块组成:(1)IDE创建主要是拖放组件的过程 . (2)引擎部署过程和(3)使用浏览器监视进程
使用集成工具更容易,更快速,更便于开发和维护 .
希望能帮助到你 .
5 回答
这是一个相当广泛的问题......回答这一切需要的不仅仅是几个段落 .
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) . 您可以在其上添加VPN层 . 也可以使用其他协议,但您需要确保数据通信通道另一侧的系统支持它 .
caristix.com
我使用Camel(http://camel.apache.org)和组件mina2解决了这个问题,它允许打开这些类型的监听器:
Camel(What exactly is Apache Camel?)是一个开源Java框架,专注于简化集成 . 使用Camel,您可以定义一些路线,在这种情况下,您的路线可以类似于此:
第一部分在tcp端口上定义一个侦听器以接收hl7消息 . HL7Process定义如何处理您将收到的消息 . hl7Processor可以实现hl7ToXML转换器和将消息存储在数据库中的逻辑 .
HL7 v2.x消息通常使用MLLP(带标记的TCP)进行交换 . 我所知道的所有TCP服务器都可以通过MLLP发送和接收HL7 v2.x消息 . 在当前的发展中,倾向于使用HL7而不是HTTP(ER7格式或XML格式) . 使用SOAP服务并不常见,因为SOAP(简单对象访问协议)用于交换对象而不是消息 .
如果您正在使用TCP侦听器,则根据IHE(集成医疗保健企业)标准使用TLS非常重要 . 您还应该阅读他们的技术框架,该框架还将通过ATNA(审计跟踪和节点验证)解决审计和日志记录要求,这是一个基于TLS的syslog实现 . 这些协议由IETF定义 . 医疗保健数据交换需要大量研究和正确实施才能保持HIPAA标准 .
一般流程如下:
创建TCP / IP端口:侦听和接收来自发件人的HL7邮件 . 例如 . TCT / IP Server点
将HL7映射到XML:根据HL7消息的类型(例如,ADT,ORM,ORU等)接收和解析HL7消息,并使用底层数据库表的XML方案进行映射 .
使用上面的XML进入数据库表 .
在此处或在步骤#1之后将HL7确认消息返回给发件人 .
您可以通过两种方式执行此操作:
通过编写代码从头开始实现流程/程序 . 要么
使用集成工具(如OrionHealth的Rhapsody),它通常由三个模块组成:(1)IDE创建主要是拖放组件的过程 . (2)引擎部署过程和(3)使用浏览器监视进程
使用集成工具更容易,更快速,更便于开发和维护 .
希望能帮助到你 .