我们开发了一个Web服务,假设从客户端获取HL7文件并将其解析为XML,然后将数据推送到数据库中.
现在我的问题是,我们需要关注这一要求.我听说通常EMR系统通过tcp发送HL7文件.
实际的HL7服务器如何工作?
我们需要创建一个HL7监听器吗?
这个HIPAA合规性HL7应该始终通过tcp推送到服务器吗?
可以解释一下吗?
小智 7
这是一个相当广泛的问题......回答这一切需要的不仅仅是几个段落.
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层.也可以使用其他协议,但您需要确保数据通信通道另一侧的系统支持它.
我使用 Camel ( http://camel.apache.org ) 和组件 mina2解决了这个问题,该组件允许打开这些类型的侦听器:
mina2:tcp://hostname[:port][?options]
mina2:udp://hostname[:port][?options]
mina2:vm://hostname[:port][?options]
Run Code Online (Sandbox Code Playgroud)
Camel(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>
Run Code Online (Sandbox Code Playgroud)
第一部分在 tcp 端口上定义一个监听器来接收 hl7 消息。HL7Process 定义如何处理您将收到的消息。hl7Processor 可以实现 hl7ToXML 转换器和将消息存储在数据库中的逻辑。