代码先锋网 代码片段及技术文章聚合

【HL7】快速入门 HL7 协议

技术标签: Java学习  网络协议

博主目前在实习,需要接触到 HL7 协议,本着快速入门好继续摸鱼的想法,现在赶快总结学习一下 HL7。部分资料来自网上收集!

HL7 基本介绍

HL7 全称卫生信息交换标准(Health Level 7),标准化的卫生信息传输协议,是医疗领域不同应用之间电子传输的协议。HL7 汇集了不同厂商用来设计应用软件之间接口的标准格式,它将允许各个医疗机构在异构系统之间,进行数据交互。
HL7 的主要应用领域是 HIS/RIS,主要是规范 HIS/RIS 系统及其设备之间的通信,它涉及到病房和病人信息管理、化验系统、药房系统、放射系统、收费系统等各个方面。
HL7的宗旨是开发和研制医院数据信息传输协议和标准,规范临床医学和管理信息格式,降低医院信息系统互连的成本,提高医院信息系统之间数据信息共享的程度。
通俗点讲,只要大家去医院办理事情,背后的数据协议肯定是 HL7,数据的格式也是 HL7,也是因为医院的信息系统业务复杂,间接导致了 HL7 的数据格式也比较复杂。
作为信息交换标准,HL7 自1987年发布V1.0版后相继发布了v2.0 v2.1 v2.2 v2.3 v2.3.1 ,2000年发布了v2.4版,现已用 XML 开发了v3.0版,但 HL7 v2.4 版本仍是 ANSI 正式发布的版本。所以我们学习 HL7 2.4 版本即可。

好了,基本信息就讲到这,现在我们来学习下 HL7 的核心概念

HL7 消息结构

HL7 标准包含256个事件、116个消息类型、139个段、55种数据类型、408个数据字典,涉及79种编码系统。
在 HL7 中,有四个最基本的术语概念:

  • 触发事件(trigger events):当现实世界中发生的事件产生了系统间数据流动的需求,则称其为触发事件。也可以理解为一个数据请求
  • 消息(message):它是系统间传输数据的最小单位,由一组有规定次序的段组成。每个消息都是用一个消息类型来表示其用途
  • (segment):它是数据字段的一个逻辑组合。每个段都用一个唯一的三字符代码所标志,这个代码称作段标志。
  • 字段(field):它是一个字符串,是段的最小组成单位。

在 HL7 中,消息(Message)是数据在系统之间交换的基本单元,每条消息都有各自的消息类型,消息类型用于定义消息目的,包含了触发事件。一个消息由多个段(Segment)组成,每一个段都有相应的名称,用于界定其内容或者功能。
一个段又由多个字段(Field)组成。一个消息中的第一个段总是消息头段(Message head segment),它指明了发送和接收的程序名、消息类型、以及一个唯 一的消息ID号码等,接下去段的构成由消息的类型决定。
一个字段又有可能由多个组件(Component)组成。有些消息可进一步由事件码(event code)细分。

HL7 简单示例

MSH|^~\&|Mindray|Gateway|||||ORU^R01|2|P|2.3.1| <CR> 
PID|||M1015_00010||John^||20091112|M|||^^^^||| <CR>
PV1||I|^^ICU&Bed5&3232241659&0&0|||||||||||||||A||||||||||||||||||||||||||20091201111211 <CR> 
OBR||||Mindray Monitor|||20091203121631| <CR> 
OBX||NM|52^Height||169.0||||||F <CR> 
OBX||NM|51^Weight||59.0||||||F <CR> 
OBX||CE|2302^BloodType||1^A||||||F <CR> 
OBX||CE|2303^PACE_Switch||0^Off||||||F <CR> 
OBX||NM|101^HR|2101|60||||||F <CR> 
OBX||NM|151^RR|2102|20||||||F <CR> 
OBX||NM|200^T1|2104|37.00||||||F <CR>

总的来说

  • 每个消息会包含多个段,如上述代码,表示一个消息,每个段之间通过分割回车
  • 每个段又会包含多个字段,消息头段定义了段的类型,比如 MSH 表示这个段是消息头,段中又会包含多个字段
  • 每个字段使用 | 分隔,如果对应的字段没有数据也不能省略 | ,这是因为每个字段在段中都有一个序号(SEQ),每个段有多少个字段、各个字段的序号和含义等都是在 HL7 协议中规定好的!
  • 每个字段会包含多个组件,字段中不同的组件使用 ^ 分隔,比如 2302^BloodType
  • 每个组件又可以包含多个子组件,子组件之间用 & 分隔,比如 ICU&Bed5&3232241659&0&0 (包含5个子组件)

那么,在上述 HL7 数据中,
MSH 表示消息头段,前面 5 个字符 |^~\& 是第一个字段,定义了分隔符。
Mindray 是第二个字段,Gateway 是第三个字段,后面四个字段没有用到,第八个字段是 ORU^R01(包含两个组件)

好了,先说到这里,让我缓缓,已经不认识 段 这个字了。。

部分参考自 https://www.jianshu.com/p/5993145c2818

版权声明:本文为qq_45523411原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45523411/article/details/124877978

智能推荐

解析HL7 2.X

Hl7引擎的目标主要是解决将数据按HL7协议的要求标准化,和标准业务的集成和不同系统间标准业务数据的同步。在多年的医院集成平台信息化过程中,HL7标准组织和解析最复杂了,下面是我用了多年HL7引擎解析,因公司升级使用了HL73.0版本,决定把HL72.X引擎放到博客上保存。 测试方法:...

freeMaker hl7转xml范例

 原子方法hl7SegmentToXml.ftl:  逻辑调用方法public-hl7toxml.ftl: 公共入口(main): ...

[代码积累]解决HL7协议、TCP/IP通讯、16进制转字符串,中文乱码的问题。

  最近在做一个流水线的接口,连接的是日立生化和雅培化学发光。流水线软件提供商提供了基于HL7的通讯协议,其要求发发送完整的病人信息。   之前和迈瑞等一些国产仪器做LIS接口时,他们提供的通讯方案,也是只支持网口,并且通讯协议是HL7,之前因为没有强制要求发送或者解析带有中文信息的数据,所以一直都是用ASCII编码,关于乱码的问题也没有处理。   而这一次仪器厂家需要病人的信息,而这些内容大都是...

HL7 2.6解析转XML(C#版)

HL7 2.6解析转XML(C#版) using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.Text.RegularExpressions; namespace PT.Common { /// /// HL7解析器 /// public static cla...

解析Hl7消息,将消息可视化

测试接口,传参文件为JSON 内嵌HL7。因为HL7的书写规范,查看Hl7如果不结构化,分分钟能把眼看瞎的节奏,搜了下Python竟然有Hl7库,借助该库写了一个简单的脚本,将Hl7消息可视化输出,先将参数文件写入临时文件,然后分析该文件。应该是So easy 只是简单的记录下。其中遇到了body中传两个Hl7消息的情况,只是将每个元素视作对象即可,一开始当做元素来处理,结果一直报错。  ...

猜你喜欢

HL7解析类的使用(java)

HL7解析类的使用(java) 此文章适合想做HL7解析的小白,介绍的对一个HL7解析类的用法心得。 1、导入jar包 dom4j-2.02.jar jaxen-1.1.1.jar 网上都有下载的地方 2、写入解析类HL7ToXmlConverter 这个类是我从网上发现的附上网址:HL7 2.X解析(JAVA版) 使用这个类必须导入第一步的两个jar包不然会报错。 三、使用方法...

Rhapsody freeMaker 将任意HL7转XML

xml标签名对应HL7路径位置,原理使用freeMaker递归实现。 原子服务hl7ToXml.ftl 原子服务write.ftl 公共入口main ...

dcm4che dcm和jpg互转,hl7和xml互转,解析hl7,解析dcm

工作中需要用到处理dicom和hl7两种医疗存储文件,简单记录下遇到的坑,希望能帮到有需要的朋友。 首先maven引入dcm4che相关的依赖包(文章末尾列出) 1:dicom和jpg互转的代码: 类似的,图片转dicom需要用到工具类Jpg2Dcm.java,不会调用的话可以查看这个类中的main方法,根据他的步骤调用就可以了。注意,这里不能转心电图的dicom,心电图的以后有空写。 2:hl7...

Node.js 数据格式同时支持JSON和HL7

Node.js 数据格式同时支持JSON和HL7 一个正常的HL7格式的数据大概长这样: 经过一番阅读HL7的标准,成功地总结出HL7就是一堆段头领着一帮段信息,一级隔断用|,二级隔断用^,三级隔断用~,别的就随意了。具体内部消息格式自己定义。于是,在当下阶段,先把HL7与JSON格式之间的互相转换做出来就好,以后遇到正式的业务逻辑再做相应更改。 调用如下:...

HL7解析(啥都不会的新人向)

hl7 标准 有很多版本,通过 http://www.7edit.com/home/index.php 下载7edit 来查看所获取到的 hl7 格式的数据是否正确 Message一栏就可以看到数据所在的具体位置,通过相对应的方法就可以取出这个值。 7edit 正版下载会21天的使用日期,如果有钱可以支持支持,如果没有就可以取 http://blog.csdn.net/sinistoreye/ar...