HL7传输协议
HL7消息通过各种TCP/IP传输发送,其中一些包括:
- 下层协议(LLP)
- 文件传输协议(FTP)
- 简单对象访问协议(SOAP)
- 简单邮件传输协议(SMTP)
尽管HL7可以使用多种传输协议进行数据传输,但用于实时点对点接口的最常见传输方法是LLP;对于需要批量处理HL7的系统,通常使用FTP。
基础知识:基于TCP/IP的通信
在研究常见的HL7传输方法之前,了解基于TCP/IP的通信的基础知识对于实现HL7接口时的客户端和服务器角色非常重要。
实施HL7接口时,您的接口将充当Client或Server。
TCP/IP服务器
TCP/IP服务器是一个侦听TCP/IP端口号的程序,该端口号接收来自客户端的连接。例如,Web服务器是侦听端口号80的特殊类型的TCP/IP服务器。TCP/IP服务器可以连接许多不同的TCP/IP客户端。
您可能希望在其中实施HL7服务器的一个典型示例是,当您希望接收ADT(入院/出院/转院)申请以提取例如患者人口统计信息时。通常,您会将接口编写为TCP/IP服务器。
然后,您将侦听可以与对方协商的端口号,并且向您发送ADT消息的设备将连接到您的服务器。这意味着您需要将正在监听的主机和端口号提供给ADT feed 的管理员,以便他们知道如何与您连接。
TCP/IP客户端
TCP/IP客户端是连接到TCP/IP服务器的程序。例如,Netscape和Internet Explorer是连接到Web服务器的TCP/IP客户端程序。TCP/IP客户端必须同时指定主机地址或IP地址以及要连接的端口号。
当您要将实验室结果发送到HIS(医院信息系统)时,可能要在其中实现HL7客户端的一个典型示例。HIS系统的管理员需要向您提供其HL7服务器的主机或IP地址以及正在侦听的端口号。
确认消息
最后一个使许多人感到困惑的点是应如何发送HL7确认消息。重要的是要理解,当建立TCP/IP连接时,它是双向通讯通道。
当客户端与服务器建立连接时,客户端可以在其中一个通道上将数据发送到服务器,而服务器可以在另一个通道上将数据发送回客户端。后一个通道应用于发送ACK消息。
有时有必要为产品的HL7接口同时实现客户端和服务器组件。
如果您可以选择的话,请充分利用可以使用第二个通信通道发送回ACK消息,因为这是一种更加简洁的设计。
参考资料:
LLP-较低层协议
低层协议(LLP)有时被称为最小低层协议(MLLP),是用于通过TCP/IP传送HL7消息的绝对标准。
由于TCP/IP是字节的连续流,因此需要包装协议才能使通信代码能够识别每个消息的开头和结尾。LLP是最常见的HL7传输机制,用于通过TCP/IP通过局域网(例如医院中的TCP/IP)发送未加密的HL7。
使用LLP时,必须使用标头和尾标包装HL7消息,以表示消息的开头和结尾。这些标头和尾标通常是不可打印的字符,不会在HL7消息的实际内容中显示。
下表描述了通过LLP发送的HL7消息的典型结构。它包含四个部分:
| 标头 | HL7讯息 | 尾标 | 回车 |
| 垂直制表符(0x0B) |
HL7消息使用头标、尾标和紧随其后是回车进行包装: |
字段分隔符(0x1C) | 回车(0x0D) |
此外,还必须确保每个段都以0x0D(回车)字符结尾,这是标准要求的;但是通常HL7日志数据可以通过FTP或电子邮件接收,这时段分隔符已转换为0x0A字符。
有多种方法可以保护通过LLP的数据:
- VPN隧道:虚拟专用网络(VPN)是一种专用网络,使用Internet将远程站点链接在一起,同时使用安全加密技术来确保未经授权的用户无法读取它。这是解决HL7加密问题的一种非常流行的方法,尤其是在当今的大环境下,因为许多常见的云平台都将VPN连接作为其平台产品的一部分提供。
- SSH隧道连接:这与使用VPN连接的概念相似,在VPN连接中,SSH服务器用于在系统之间安全的建立隧道连接LLP通信。每个Linux发行版都有一个内置的SSH服务器,也有Windows的选项,例如VShell。
- TLS/SSL: HL7消息也可以通过传输层安全性(TLS)或安全套接字层(SSL)加密协议进行传输,以确保对消息进行身份验证和加密。
HLLP-混合下层协议
混合低层协议(HLLP)是更广泛地使用低层协议的变体。与LLP一样,HLLP使用TCP/IP作为其传输方式,但通过在消息末尾使用校验和来进行错误检测和验证。
校验和用于验证数据有没有被破坏。通常为发送应用程序发出的每个数据块计算校验和,然后在接收应用程序中验证其准确性。
HLLP中使用的校验和是非标准的,这意味着它们可能因实现而异。
HLLP中使用的一种常见的校验和类型称为BCC(块字符检查),它是一个块中所有字符的总和。BCC校验和被视为弱校验和,因为可能很容易找到生成相同块校验和的不同块。尽管BCC校验和相对容易实现,但它可能不符合大多数公司的通信标准。
实际上,大多数供应商选择使用基于LLP的TCP/IP,而不是HLLP。LLP是一种非常简单的协议,可用于代替HLLP,因为TCP/IP通道可提供HL7消息无错误传递所需的所有服务。这包括:
1.连接握手
两个系统启动通信的过程,开始和结束监听用于开始/停止数据传输。
2.全双工数据传输
系统同时发送和双向接收数据的过程。
3.错误检测和重传
传输层检测传输失败的段并根据需要重新传输这些段的过程。
4.流量控制
TCP通过使用ACK和NACK来管理系统之间消息流的过程。通过在HL7应用程序中使用ACK / NACK和其他内置机制,您可以管理数据流以确保有效且可靠地传输消息。
5.连接终止
每个系统通过握手独立结束连接的过程。
在大多数情况下,只要两个通信系统都使用可靠的开放系统互连(OSI)传输层,就不需要HLLP,因为底层的OSI已经验证了消息的传输以及消息的完整性。
HLLP仅用于不可靠的传输(例如,通过串行电缆传输消息),大多数供应商认为不需要。
使用TCP/ IP,数据和标头上的校验和已经是该协议固有的。这意味着该协议能检测到校验和错误,并在必要时请求重新传输数据。这意味着与HLLP相关的辅助校验和不会进一步保证数据传输,而只会增加传输开销。
参考资料:
FTP-文件传输协议
文件传输协议(FTP)是应用程序层TCP/IP协议,可在本地和远程文件系统之间移动文件,反之亦然。
FTP并行启动两个TCP连接以传输文件、控制连接、用于发送与服务器交互(例如,进行身份验证)、启动文件操作(例如,下载或重命名文件)的命令、数据连接以发送文件。
发送包含电子受保护的健康信息(ePHI)的HL7消息时,使用安全协议发送文件是必须的。
有两种方法可以使用FTP提供HL7消息的安全传输:
- SFTP(SSH文件传输协议)是SSH协议的扩展,可为任何数据流提供安全的文件传输、访问和管理功能。
- FTPS(FTP安全)提供对TLS(传输层安全性)和SSL(安全套接字层)协议的支持。
SFTP和FTPS通常被认为是FTP的安全“扩展”,但事实并非如此,这两个协议实际上是不兼容的。
HL7批处理涉及通过FTP协议或作为电子邮件附件发送文件。
根据HL7标准,任何HL7消息都必须以MSH段开头,但是在发送一批HL7消息时,规则会更改。
批处理包含多个HL7消息(每个消息均以其起始MSH段标记),如以下示例HL7批处理文件中所示,批处理标识由批处理'标头FSH和BSH'以及批处理'尾部FTS和BTS'本身进行标识:
FHS|^~\&|MESA|XYZ_HOSPITAL|IHIE|IHIE|20120703094005||||||BHS|^~\&|MESA|XYZ_HOSPITAL|IHIE|IHIE|20120703094005||||||MSH|^~\&|MESA_ADT|XYZ_ADMITTING|iFW|XYZ_HOSPITAL|||ADT^A04|101102|P|2.3.1||||||||EVN||200004211000||||200004210950PID|||583020^^^ADT1||WHITE^CHARLES||19980704|M||AI|7616 STANFORD AVE^^ST. LOUIS^MO^63130|||||||20-98-1701||||||||||||PV1||E||||||5101^NELL^FREDERICK^P^^DR|||||||||||V1002^^^ADT1|||||||||||||||||||||||||200004210950||||||||MSH|^~\&|MESA_OP|XYZ_HOSPITAL|iFW|XYZ_RADIOLOGY|||ORM^O01|101104|P|2.3.1||||||||PID|||583020^^^ADT1||WHITE^CHARLES||19980704|M||AI|7616 STANFORD AVE^^ST. LOUIS^MO^63130|||||||20-98-1701||||||||||||PV1||E|$PATIENT_LOCATION$||||$ATTENDING_DOCTOR$|5101^NELL^FREDERICK^P^^DR|||||||||||V1002^^^ADT1|||||||||||||||||||||||||200004210950||||||||ORC|NW|A101Z^MESA_ORDPLC|||||1^once^^^^S||200004210955|^ROSEWOOD^RANDOLPH||7101^ESTRADA^JAIME^P^^DR||3145551212|200004210955||922229-10^IHE-RAD^IHE-CODE-231||OBR|1|A101Z^MESA_ORDPLC||P1^Procedure 1^ERL_MESA|||||||||xxx||Radiology^^^^R|7101^ESTRADA^JAIME^P^^DR|||||||||||1^once^^^^S|||WALK|Project Manager||||||||||A||MSH|^~\&|MESA_ADT|XYZ_ADMITTING|iFW|XYZ_HOSPITAL|||ADT^A06|101126|P|2.3.1||||||||EVN||200004211000||||200004210950PID|||583020^^^ADT1||WHITE^CHARLES||19980704|M||AI|7616 STANFORD AVE^^ST. LOUIS^MO^63130|||||||20-98-1701||||||||||||PV1||I|1E^111^1^XYZ_HOSPITAL|||$PRIOR_LOCATION$|1234^WEAVER^TIMOTHY^P^^DR|5101^NELL^FREDERICK^P^^DR|||||||||||V1002^^^ADT1|||||||||||||||||||||||||200004210950||||||||BTS|3|Batch Message CountFTS|1|Have a Nice Day
参考资料:
HL7传输协议的更多相关文章
- QQ传输协议分析
2015-06-16 16:27:07 一. 实验目的: 在虚拟机下NAT模式下通过Wireshark抓包,分析QQ的传输模式.了解QQ在传输信息过程中用到的协议.分析在Nat模式下,信息传输的穿透性 ...
- 【转】安全传输协议SSL和TLS及WTLS的原理
一.首先要澄清一下名字的混淆 1.SSL(Secure Socket Layer)是Netscape公司设计的主要用于WEB的安全传输协议.这种协议在WEB上获得了广泛的应用. 2.IETF将SSL作 ...
- HTTPS----安全超文本传输协议
HTTPS协议详解HTTPS以保密为目标研发,简单讲是HTTP的安全版.其安全基础是SSL协议,因此加密的详细内容请看SSL.全称Hypertext Transfer Protocol over Se ...
- HTTP超文本传输协议-HTTP/1.1中文版
摘要 超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议.它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外 ...
- ZeroMQ接口函数之 :zmq_ipc – ZMQ本地进程间通信传输协议
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...
- RTSP RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议
RTSP 编辑 RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwo ...
- ftp (文件传输协议)
ftp (文件传输协议) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议” ...
- SMTP 简单邮件传输协议
SMTP 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传 ...
- http 超文本传输协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...
- TCP/IP详解学习笔记(11)-- TFTP:简单文本传输协议,BOOTP:引导程序协议
1.TFTP: TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,基于UD ...
随机推荐
- 摆脱鼠标系列 - vscode 花括号 开始结束 间的跳转 Ctrl + Shift + \
为什么 摆脱鼠标系列 - vscode 花括号 开始结束 间的跳转 Ctrl + Shift + \ 快速移动到下一个 注意有时候输入法会有问题 因为 Ctrl + Shift 是切换输入法,所以回头 ...
- python处理txt文件常用方法总结
一 打开txt的正确方式 一般人会用到怎么快速打开txt,下面分享两种方式: f = open("data.txt","r") #设置文件对象 f.close( ...
- ubuntu 14.04 x64 安装ia32-libs(时间点为2015.1.2)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文发布于 2015-01-02 22:45:12 ...
- DES算法揭秘:数据加密的前沿技术
DES算法起源: DES(Data Encryption Standard)算法是一种对称密钥加密算法,由IBM的Horst Feistel设计,于1977年被美国国家标准局(NBS)确定为数据加密标 ...
- Android 开发Day7
<project version="4"> <component name="ExternalStorageConfigurationManager&q ...
- SQL奇遇记:解锁 SQL 的秘密
数据库基础 在我们探究SQL语言之旅的起点,首先要对数据库的核心理念有所了解.数据库在现代生活中无处不在,每次网购.网页浏览.即时通讯,都在产生数据.简单来说,数据库就是按一定数据结构组织.存储.管理 ...
- Newtonsoft.Json/Json.NET忽略序列化时的意外错误
在.NET中Newtonsoft.Json(Json.NET)是我们常用来进行Json序列化与反序列化的库. 而在使用中常会遇到反序列化Json时,遇到不规则的Json数据解构而抛出异常. Newto ...
- Linux编写Shell脚本获取指定目录下所有文件并处理
Linux编写Shell脚本获取指定目录下所有文件进行处理并保存到新目录 #!/bin/bash app_name="shell" path="/dir" #原 ...
- 手写数字图片识别——DL 入门案例
Deep Learning Demo of Primary 下面介绍一个入门案例,如何使用TensorFlow和Keras构建一个CNN模型进行手写数字识别,以及如何使用该模型对自己的图像进行预测.尽 ...
- CF-937(D,E)
CF-937 在补题-- D 分析 我们发现这些因子都是二进制形式的十进制数,n的范围是$1e5$,16的二进制是$10000$,于是可以枚举1~16,把这些因子预处理出来,对于每个n就枚举因子再作除 ...