下载PDF HL7 Messaging Standard Version 2.4

1. 机制和通信方式

HL7使用 事件机制 传递消息,就好像是我们要响应鼠标点击事件,那么就要注册一个点击事件的处理函数。

通信可以看成 请求-响应 的方式,事件发送方发送事件,接收端接收到之后处理消息,然后回复处理结果给发送端。

通信过程是通过在 2端 建立 Socket连接(TCP) 来推送事件,通信的协议采用 MLLP协议,就是固定的编码表示一个消息的开始和结束

编码 (16进制) 意义 表示代号
0x0B 消息开始 <SB>
0x1C 消息结束 <EB>
0x0D 换行 <CR>

消息格式为: <SB>ddd<EB>,ddd表示数据

例如,0B 00 00 00 00 1C,就表示1条消息,0B 为开始,1C表示消息结束,消息内容为00 00 00 00

关于协议请参考 《HL7 Version 3 Standard: Transport Specifications - MLLP》 (链接如果失效直接搜索标题就可以)

2. 消息解析入门

“消息是系统间传递信息的最小数据单元。从组成结构上分析,消息是一组消息段(Segment)按照定义顺序的逻辑组合,每个消息段包含若干字段(Field),字段可以进一步分解为成分(Component)和子成分(Sub Component)。”[2]

上述所有消息结构将会编码为一个字符串,不同的类型使用不用的分隔符来区别。

分隔符 符号 用法
消息段结束符 使用<CR>表示 ,16进制值 0x0D 结束一个段的记录
字段分隔符 | 在消息段中分隔2个相邻的字段,并把消息段ID与第1个字符分隔开
成分分隔符 ^ 在字段中分隔相邻的成分
子成分分隔符 & 在成分中分隔相邻的子成分,如果没有子成分,这个字符可以省略
重复字段分隔符 ~ 分隔多个重复出现的字段
转义字符 \ 用于构造ST、TX或FT等数据类型中的转义序列

示例:

MSH|^~\&|ADT1|MCM|ADT2|MCM|200512011114||ADT^A01|MSG00001|P|2.3.1|<
CR>
EVN|A01|200512011111||<CR>
PID| |3301081|李林||28|19780401|男| |西安市太白南路 2 号^710071|88201111|||<CR>
PV1||C|02^03^04||||00233^王波| |外科|||||||<CR>

特殊的 MSH 中的第一个字段不需要解析,一般为固定值^~\&,表示使用到的编码符号。

消息 => 消息段 => 字段 => 成分 => 子成分 想象为面向对象中嵌套的对象结构:

  • 消息(Message) 就是一个 对象数组。
  • 消息段(Segment)、字段(Field)、成分(Component) 是对象,它们可以是基础类型(如字符串或数字)、也可以是符合类型也就是对象,但是 子成分(Sub Component) 就不可再分。

我们按照面向对象的方式把上面结构解析成树形结构如下:


这个树各个 消息段 里面的各个节点表达的意义是什么就需要根据这个消息段的ID找到这个段的定义文档来确定。

3. 定义

3.1 消息(Message)

用消息类型和触发事件的标识码组合来唯一确定一个具体的消息。

ADT_A01 代表病人入院消息,ADT表示消息类型(入院 Admission、出院 Discharge、转诊 Transfer),A01为事件接诊(Admit/Visit)的编号。

一种消息格式可用多种事件中,因此 对于事件消息的命名格式如下:

  • 事件^消息^消息名称

例如: ADT^A01^ADT_A01ADT^A04^ADT_A01 这里两个详细类型名称的定义中,ADT^A01ADT^A04个不同的事件,但是使用的是同一个ADT_A01消息格式。

消息就是 按照一定的 顺序排列 和 出现规则 的消息段的数组

定义数据消息的方式是通过,顺序依次列出在消息中可能出现的消息段ID,并表明消息段的可选性和可重复性。

  • {...} 表示括号内的消息段可以出现1到多次。
  • [...] 表示括号内的消息段可选。
  • {[...]}[{...}] 表示可选且可重复。

ADT^A01^ADT_A01 部分参定义表

ADT ADT Message Chapter
MSH Message Header 2
EVN Event Type 3
PID Patient Identification 3
[ PD1 ] Additional Demographics 3
[{ ROL }] Role 12
[{ NK1 }] Next of Kin / Associated Parties 3
PV1 Patient Visit 3
[ PV2 ] Patient Visit - Additional Info. 3
[{ ROL }] Role 12
[{ DB1 }] Disability Information 3
[{ OBX }] Observation/Result 7

更多的事件定义请参考 《HL7 Messaging Standard Version 2.4 . CHAPTER 3》

3.2 消息段(Segment)

消息段使用1个唯一的3个大写字母来标识(标识ID),内部由字段(Field)按照一定顺序所组成,由换行符(0x0D)标识消息段结束。

MSH|...|<CR>

我们可以在《HL7 Messaging Standard Version 2.4》相应章节找到这些段的定义:

  • MSA - MESSAGE ACKNOWLEDGMENT SEGMENT (第2章)
  • MSH - MESSAGE HEADER SEGMENT (第2章)
  • EVN - EVENT TYPE SEGMENT (第3章)
  • PID - PATIENT IDENTIFICATION SEGMENT (第3章)

3.3 字段(Field)

字段位于段当中,字段通过一定顺序排列构成了消息段,因此通过一下参数来描述字段

  • 位置(SEQ): 在消息段中的的顺序位置。
  • 最大长度(LEN):字段最大容纳字符数。
  • 数据类型(DT):如ST(String)、DT(Date)等。
  • 可选性(OPT):
    • R 必选
    • O 可选
    • C 条件可选
    • X 不是用于这个事件
    • B 向后兼容属性
  • 表(TBL):HL7标准中用表的形式定义了某些字段取值,表示字段的ID属性。
  • ID号(ITEM):标准中的这个属性的唯一ID。

例如MSA消息段的内部的字段定义如下:

重复字段、组件、子组件他们构成定义方式基本与字段一致所以不再赘述。

有时为了同时描述消息段和其中的字段以及组件和子组件,可以使用下面类型的表结构:

字段名: 消息段ID-字段位置-成分位置

例如: MSH-3-2 表示 MSH段的第3个字段中第2子组件。

字段名 数据类型 描述
MSH
MSH-1 ST Field Separator
MSH-2 ST Encoding Characters
MSH-3 HD Sending Application
MSH-3-1 IS Namespace ID
MSH-3-2 ST Universal ID
MSH-3-3 ID Universal ID Type

参考文献

  • [1] www.hl7.org . HL7 Version 3 Standard: Transport Specifications - MLLP
  • [2] 胡永辉. 基于HL7的医疗信息系统研究[D].西安电子科技大学,2006.
  • [3] www.hl7.org . HL7 Messaging Standard Version 2.4
  • [4] www.hl7.org . HL7 Messaging Standard Version 2.5
  • [5] 张建. 高效HL7消息构建与解析方法研究与实现[D].昆明理工大学,2014.

HL7 v2.5 入门相关推荐

  1. idea怎么运行eclipse的web项目_Apache Storm v2.0入门项目的开发、测试和运行(IDEA/Maven)...

    第一个Apache Storm v2.0流计算入门项目的开发.测试和运行(IDEA/Maven) 关于流计算框架Apache Storm最新版的安装,可以参考: 流计算框架-最新版Apache Sto ...

  2. 基于`IRIS`,动态解析`HL7`消息

    文章目录 基于`IRIS`,动态解析`HL7`消息 什么是`HL7` `HL7` 版本 `HL7` 消息结构 段(`Segment`) 字段(`Field`) `HL7` 数据类型 在`IRIS`中查 ...

  3. HL7 标准及实现指南 必看的网址

    V2:  http://hl7book.net/index.php?title=HL7_version_2 包括HL7 的介绍,主要章节,每个版本的变化, 各种语言实现的HL7库,免费HL7工具, 最 ...

  4. Vue简明实用教程(01)——Vue框架入门

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl Vue概述 Vue是一个渐进式的JavaScript框架. 官方网站 https://cn.v ...

  5. HC3i论坛医疗信息化热门资源100个

    <医学影像学>电子书免费下载 http://bbs.hc3i.cn/thread-10705-1-1.html [免费]DICOM标准正式版本PDF文档及最新动态 http://bbs.h ...

  6. 【8月】100个HC3i优秀医疗信息化资源推荐

    也许这几个专题同样值得你关注一下: [推荐] HC3i方正众邦资料下载与讨论交流汇总  关于方正众邦的各种资料汇总,还有不少关于方正众邦的讨论交流贴 [推荐][8月]100个HC3i优秀医疗信息化资源 ...

  7. 欢迎中文社区新版主@黄念刚

    亲爱的社区开发者们, 我很高兴地向大家介绍一位我们的新版主@黄念刚. 让我们以热烈的掌声欢迎 @黄念刚! @黄念刚目前任职于东华医为(Mediway),担任技术支持中心开发工程师一职.目前任职于东华医 ...

  8. 电子健康档案在国外的一些实践

    这是一个非常典型的病人就诊流程.周一身体一直不错,没去过医院 .这天,在公司组织的年度体检中,发现血压有些高,被建议去医院复诊一下.于是,周一去了就近的社区医院.护士周四接待了他,先在本地系统查询,发 ...

  9. 医疗行业几个常提到的系统名词

    前段时间一直在忙毕业设计和毕业论文(此处鄙视一下翟博士),导致没有时间写.在此期间找了一份工作,属于医疗行业,看到了些医疗行业相关的一些术语,觉得比较实用在此总结一下. 医疗行业一些专业系统名称:分别 ...

  10. InterSystems 2022全球峰会亮点解读:Smart Data Fabric与InterSystems数据平台的超能力

    2022年9月9日,我们将举办线上"InterSystems 2022全球峰会亮点解读",点击此处参会. 亮点一:Smart Data Fabric(智能数据编织) 认识Data ...

最新文章

  1. python简史_命令行简史
  2. Tomcat5.0与SqlServer2000配置连接池(jtds驱动)
  3. 老男孩最近几年常用的免费的开源软件
  4. Linux下交叉编译gdb和gdbserver
  5. 学go语言能做什么工作?
  6. lambda捕获this_非捕获Lambda的实例
  7. 2011 MVP大奖礼品包,那是相当的给力啊!!
  8. Selenium2+python自动化75-非input文件上传(SendKeys)
  9. 数的计数【Noip2001】
  10. Java 注解(Java Annotation)
  11. PPT素材模板哪个网站资源内容比较丰富?
  12. 缅柬泰之色---彩图大串联 一 (缅甸篇)
  13. 极化SAR图像四成分分解
  14. 经典数学问题——三门问题(数据分析面试题)
  15. 零和博弈,囚徒困境,马斯洛需求层次理论
  16. 线程有哪些状态?创建、就绪、运行、阻塞和死亡
  17. 实例二:上海房屋2017年成交信息分析
  18. 推荐给大家的一款很不错的PHP文库管理系统(九鸟文库)-php 开源系统
  19. 基于JAVAWeb产品管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  20. 【Visual C++】游戏开发笔记二十六 DirectX 11各组件的介绍第一个DirectX 11 Demo的创建

热门文章

  1. python爬取豆瓣Top250完整代码
  2. windows 配置中科大的 Rust 下载云,提高下载速度
  3. 【Java类的封装性】封装的日期类。Person类,使用对象作为成员变量并实现深拷贝。(利用了类的封装性)
  4. win10系统有些软件有声音,有些软件没有声音
  5. ESD与EOS的区别
  6. 常见计算机蓝屏代码,史上最全蓝屏代码分析,快速解决电脑常见故障,值得收藏!...
  7. 卖肉了也没火的十大悲催女星
  8. xp框架 android4.4.4,Redmi 2A高配置降级4.4.4和xposed框架安装
  9. 君望永远--纠缠在爱情的起点上 (转载)
  10. unity 接入谷歌广告