医院信息集成平台 HL7协议对接
1.介绍
HL7 缩写于Health Level Seven,是创建于1987年,用来发展独立卫生保健行业的电子交换交换标准,经过多年的发展,HL7已经有多个版本。
简单的理解其实就像XML,JSON格式一样,HL7也是一种数据格式,可以理解为一个包含很多行字符串的消息体,这一整个就是一个HL7消息内容。
HL7官网 http://www.hl7.org/,可下载对应版本文档
Hapi官网 https://hapifhir.github.io/hapi-hl7v2/
2.传输协议规范
2.1. MLLP
MLLP是目前HL7标准采用的标准接入规范,其他还有Netty等技术手段。其定义主要包括如下几个方面:
² 传输协议
MLLP协议采用标准的TCP协议进行消息发送和接收。接入时请参考相关的TCP/IP 技术文档。
² 数据头定义
说明 |
定义 |
开始(Start Block character) |
0x0B |
结束(End Block character) |
0x1C |
回车(Carriage return) |
0x0D |
² 转义字符集
在通过MLLP接口传输HL7消息时,下列字符集需进行转义:
转义序列 |
说明 |
\Cxxyy\ |
单字节字符集的转义序列,由两16进制数值组成,不转换 |
\E\ |
Escape符的转义序列 (e.g., ‘\’) |
\F\ |
Field分隔符的转义序列 (e.g., ‘|’) |
\H\ |
高亮段的起始,不转换 |
\Mxxyyzz\ |
多字节字符集的转义序列,由两至三个16进制数值组成 (zz可选),不转换 |
\N\ |
正常文字 (结束高亮) ,不转换 |
\R\ |
Repetition分隔符的转义序列 (e.g., ‘~’) |
\S\ |
Component分隔符的转义序列 (e.g., ‘^’) |
\T\ |
Subcomponent分隔符的转义序列 (e.g., ‘&’) |
\Xdd…\ |
16进制数据 (dd必须是16进制符号) 成对转换为相应字符 |
2.2. 规范说明
² 通用段消息中常见的段进行统一说明
² 对于域(Field)红色字体表示该域是必填的,整行绿色字体表示该域扩展用法,非HL7标准含义。
2.3. 消息格式说明
² 大括号“{}”表示该部分可以重复
² 中括号“[]”表示该部分可选
² 黄色背景标示的是该文档中主要用到的段(Segment)
3.HL7结构介绍
例如:下面就是一个ADT^A28类型下的A28的消息:
3.1. 患者建档(ADT^A28)
*说明*:A28是用于患者基本信息建档,区别于门诊挂号、住院入院等就诊活动消息。
3.1.1. 患者建档(ADT^A28)消息规范
Field |
Data Type |
Data Element |
Data Source |
Notes |
|||
MSH |
消息头信息段 |
||||||
MSH-3-1 |
|
Namespace ID |
HIS |
发送方 |
|||
MSH-5-1 |
|
Namespace ID |
MediII |
接受方 |
|||
PID |
患者基本信息段 |
||||||
PID-2 |
CX |
Patient ID |
患者主索引信息 |
|
|||
PID-2-1 |
ST |
ID |
患者全院唯一标识(患者主索引ID) |
若为0表示,需要EMPI系统创建并返回新的主索引号。 |
|||
[{NK1}] |
患者联系人信息段 |
||||||
PV1 |
患者就诊信息段 |
||||||
PV1-2 |
IS |
Patient Class |
患者分类 |
E:急诊 I:住院 O:门诊 T:体检 |
|||
PV1-52 |
XCN |
Other Healthcare Provider |
操作人信息 |
|
|||
PV1-52(1)-1 |
ST |
ID Number |
员工号 |
|
|||
PV1-52(1)-3 |
FN |
GivenName |
姓名 |
|
² 回复(ACK):
² 说明:ADT^A28根据医院业务,若接收方为EMPI系统(主索引系统),则建档时会返回主索引ID,否则不返回主索引。
Field |
Data Type |
Data Element |
Data Source |
Notes |
|
MSH |
消息头信息段 |
||||
MSH-3-1 |
|
Namespace ID |
发送方 |
MediII |
|
MSH-3-2 |
|
Universal ID |
发送方院区ID |
|
|
MSH-5-1 |
|
Namespace ID |
接受方 |
HIS |
|
MSH-5-2 |
|
Universal ID |
接收方院区ID |
|
|
MSA |
回复结果信息段 |
||||
MSA-1 |
ID |
Acknowledgment Code |
AA 成功 AE 失败 AR 拒绝 |
|
|
MSA-2 |
ST |
Message Control ID |
响应消息的控制ID |
|
|
MSA-3 |
ST |
Text Message |
消息描述 |
若MSA-2=AE,表示错误原因描述; 若MSA-2=AA,表示PID-2-1(主索引ID) |
3.1.2. 患者建档(ADT^A28)消息示例
消息说明 |
消息内容 |
患者建档 |
MSH|^~\&|HIS|MediInfo|MediII|MediInfo|20120123210401||ADT^A28^ADT_A05|8890fd1647d541130c8e50e322f989|P|2.4 EVN|A28|20120123210401||||20120123210401 PID||3102209|3101409^^^JG01~1004209^^^JG02~00345685^^^JG03~330107331108002^^^JG04~014211589^^^JG05~30114174~06D958112F11^^^JG06~01411589^^^JG07~A12231645^^^JG08~33213154^^^JG09~1011409^^^JG10||XiaoHua^小华||19890101000000|2|||浙江杭州建德新安江街道&新安江街道&19号^建德市^杭州市^浙江省^311600^^H^乡镇信息^330182^街道标准编码~农夫山泉新安江饮料有限公司&新安江街道&10号^建德市^杭州市^浙江省^311600^^W^农夫山泉新安江饮料有限公司^县地区编码^街道标准编码||^^01^^^^18205710973~^^02^^^^8318764|^^^^^^18258476654||O^其他||330182192232210412^^^01|330182192221012212|||01^汉族|浙江省|||Y^退休||40^中国||||0 NK1|1|TANMOUMOU^谭某某|30^女儿|浙江杭州建德新安江街道华&新安江街道华&13号^建德市^杭州市^浙江省^311600^^H^乡镇信息^330182^街道标准编码|^^^^^^1821110973~^^^^^^8318764~^^^^^^182111113||||||||农夫山泉新安江饮料有限公司<20003711> PV1||O||||||||||||||||01||||||||||||||||||||||||||||||||||1295^^孟子 |
回复消息[成功] |
MSH|^~\&|UEHIS|UEHIS|MediII|MediII|20150123210520||ACK^A28^ACK|83bc94f0eb82428ea8e7482f7def130e|P|2.4 MSA|AA|8890fd1647d54362b30c8e50e322f989 |
EMPI系统 回复消息[成功] |
MSH|^~\&|UEHIS|UEHIS|MediII|MediII|20150123210520||ACK^A28^ACK|83bc94f0eb82428ea8e7482f7def130e|P|2.4 MSA|AA|8890fd1647d54362b30c8e50e322f989|1000100 |
回复消息[失败] |
MSH|^~\&|UEHIS|UEHIS|MediII|MediII|20150123210520||ACK^A28^ACK|83bc94f0eb82428ea8e7482f7def130e|P|2.4 MSA|AE|8890fd1647d54362b30c8e50e322f989|失败原因 |
4.通用段消息值域说明
4.1. 消息头(MSH)
Field |
Data Type |
Data Element |
Notes |
Data Source |
MSH-1 |
ST |
Field Separator |
| |
|
MSH-2 |
ST |
Encoding Characters |
^~\& |
|
MSH-3 |
HD |
Sending Application |
发送程序 |
|
MSH-3-1 |
|
Namespace ID |
发送程序简称 |
如HIS |
MSH-4 |
HD |
Sending Facility |
发送设备。目前等同MSH-3 |
|
MSH-5 |
HD |
Receiving Application |
接收程序 |
|
MSH-5-1 |
|
Namespace ID |
发送程序简称 |
如PASC |
MSH-6 |
HD |
Receiving Facility |
接收设备。目前等同MSH-5 |
|
MSH-7 |
TS |
Date/Time of Message |
消息发生的时间 |
20141023090101 |
MSH-9 |
CM |
Message Type |
|
如:ADT^A01^ADT_A01 |
MSH-9-1 |
|
Message Type |
消息类型 |
如ADT |
MSH-9-2 |
|
Trigger Event |
事件 |
如A01 |
MSH-9-3 |
|
Message Structure |
消息结构 |
如ADT_A01 |
MSH-10 |
ST |
Message Control ID |
用于唯一标识某条消息。在ACK消息中,必须使用到该Field |
全球唯一标识符32位长度 |
MSH-11 |
PT |
Processing ID |
|
|
MSH-11-1 |
|
Processing ID |
处理ID号 |
生产系统使用 ’P’ |
MSH-12 |
VID |
Version ID |
|
|
MSH-12-1 |
|
Version ID |
版本号 |
2.4 |
4.2. 消息确认(MSA)
Field |
Data Type |
Data Element |
Data Source |
Notes |
MSA-1 |
ID |
Acknowledgment Code |
|
AA 成功 AE 失败 AR 拒绝 |
MSA-2 |
ST |
Message Control ID |
|
响应消息的控制ID |
MSA-3 |
ST |
Text Message |
|
错误信息 |
MSA-6 |
CE |
Error Condition |
|
错误情况 参见HL7表0357 |
HL7 表 0357 – 信息出错情况代码
出错情况代码 |
出错情况文本 |
描述/说明 |
成功 |
AA |
|
0 |
信息被接受 |
成功。可选,即AA传输成功,用于必返回一状态代码的系统中 |
出错 |
AE |
|
100 |
信息系列号出错 |
信息中的信息段的顺序不正确,或者必须的信息段丢失。 |
101 |
必须的字段丢失 |
某一信息段的必须字段丢失 |
102 |
数据类型出错 |
字段包含有错误的数据类型。比如:一数值(NM)字段包含“FOO” |
103 |
未发现相应的表格中的取值 |
将一数据类型为ID或IS的字段于相应的取值表格进行比较,未发现性匹配的取值。 |
拒绝 |
AR |
|
200 |
不支持的信息类型 |
此信息类型不被支持 |
201 |
不支持的事件代码 |
此事件代码不被支持 |
202 |
不被支持的处理ID号 |
此处理ID号不被支持 |
203 |
不被支持的版本ID号 |
此版本ID号不被支持 |
204 |
不认识的关键标识符 |
未发现患者预定等的ID号。用于对患者的处理时而不是添加患者,比如:试图传输一个不存在的患者的数据。 |
205 |
关键标识符出现重复 |
患者预定等的ID号已经存在。用于添加患者的操作中(如:入院,新预定等) |
206 |
应用程序纪录锁定 |
在程序进行存储工作时,处理不能被执行。如:数据库被锁定。 |
207 |
应用程序内部错误 |
以上错误代码不能覆盖的其他内部错误 |
4.3. 患者基本信息信息PID
Field |
Data Type |
Data Element |
Data Source |
Notes |
PID-1 |
SI |
Set ID |
顺序号 |
默认值1 |
PID-2 |
CX |
Patient ID |
患者主索引信息 |
如: 患者主索引ID^先诊疗后付费标志^^^绿色通道患者标志^^^ |
PID-2-1 |
ST |
ID |
患者全院唯一标识(患者主索引ID) |
|
PID-2-2 |
ST |
Check Digit |
VIP-先诊疗后付费标志(0/1) |
|
PID-2-5 |
ID |
Identifier Type Code |
绿色通道患者标志 |
|
PID-3 |
CX |
Patient identifier List |
|
如:患者相关ID^^^授权机构 |
PID-3(n)-1 |
ST |
ID |
患者相关ID |
患者相关ID授权机构代码 |
PID-3(n)-4 |
HD |
Assigning Authority |
||
PID-4 |
CX |
Alternate Patient ID PID |
|
门诊不填,住院必填 |
PID-4-1 |
ST |
ID |
婴儿标志 |
非婴儿0婴儿1 |
PID-4-5 |
ID |
Identifier Type Code |
患者信息保密级别 |
0/空-不需要保密; 1-保密 |
PID-5 |
XPN |
Patient Name |
|
如:ZHANGSAN^张三 |
PID-5-1 |
FN |
Family Name |
拼音 |
如:ZHANGSAN |
PID-5-2 |
ST |
Given Name |
患者姓名 |
如:张三 |
PID-7 |
TS |
Date/Time of Birth |
出生日期 |
如:20141023090101 |
PID-8 |
IS |
Administrative sex |
性别 |
F: Female M:Male O:Others 以医院标准值域为参考 |
PID-11 |
XAD |
Patient Address |
地址信息 |
如:浙江杭州市滨江区浦沿街道110号&沿街道&110号^滨江区^杭州市^浙江省^310000^H^^^ |
PID-11(n)-1 |
SAD |
Street Address |
详细地址描述 |
|
PID-11(n)-1-1 |
ST |
Street or mailing address |
详细地址信息 |
如:浙江杭州市滨江区浦沿街道110号 |
PID-11(n)-1-2 |
ST |
Street name |
街道信息(村/街道) |
如:滨江区浦沿街道 |
PID-11(n)-1-3 |
ST |
Dwelling number |
门牌号码 |
如:110号 |
PID-11(n)-2 |
ST |
Other Designation |
县地区(县) |
如:滨江区 或 富春县 |
PID-11(n)-3 |
ST |
City |
城市(市) |
如:杭州市 |
PID-11(n)-4 |
ST |
State Or Province |
省,自治区,直辖市 |
如:浙江省 |
PID-11(n)-5 |
ST |
Zip Or PostalCode |
邮编 |
如:310000 |
PID-11(n)-7 |
ID |
Address type |
详见字典代码说明 如:H |
|
PID-11(n)-8 |
ST |
Other geographic designation |
乡镇信息
|
依需录入 地址类型是工作单位时,填“工作单位名称信息” |
PID-11(n)-9 |
IS |
County/parish code |
县地区编码 |
县地区标准编码 |
PID-11(n)-10 |
IS |
Census tract |
街道标准编码(保留) |
街道标准编码 |
PID-13 |
XTN |
Phone Number Home |
|
|
PID-13(n)-3 |
ID |
Telecommunication Equipment Type |
详见字典说明 |
|
PID-13(n)-7 |
NM |
PhoneNumber |
电话号码 |
手机号码,如类电话型代码为01时,表示联系电话号码。 |
PID-14 |
XTN |
Phone Number Business |
|
|
PID-14-7 |
NM |
PhoneNumber |
工作电话 |
手机号码 |
PID-16 |
CE |
Marital Status |
婚姻状况 |
如: M^已婚或S^未婚或O^其他 |
PID-16-1 |
ST |
Identifier |
婚姻状况代码 |
|
PID-16-2 |
ST |
Text |
婚姻状况名称 |
|
PID-18 |
CX |
Patient Account Number |
证件信息 |
|
PID-18-1 |
ST |
ID |
证件号码 |
|
PID-18-4 |
HD |
Assigning Authority |
详见字典说明 |
|
PID-19 |
ST |
SSN Number |
身份证号 |
|
PID-21 |
CX |
Mother's Identifier |
|
门诊不填,住院必填 |
PID-21-1 |
ST |
ID |
母亲住院ID |
|
PID-22 |
CE |
Ethnic Group |
民族 |
如:12^汉族 |
PID-22-1 |
ST |
Identifier |
民族ID |
|
PID-22-2 |
ST |
Text |
民族名称 |
|
PID-23 |
ST |
Birth Place |
出生地 |
如:浙江省 |
PID-26 |
CE |
Citizenship |
职业 |
如:0-71^医生 |
PID-26-1 |
ST |
Identifier |
职业代码 |
|
PID-26-2 |
ST |
Text |
职业名称 |
|
PID-28 |
CE |
Nationality |
国籍 |
如:1010^中国 |
PID-28-1 |
ST |
Identifier |
国籍ID |
|
PID-28-2 |
ST |
Text |
国籍名称 |
|
PID-30 |
ID |
Patient Death Indicator |
死胎标志 |
默认是0/空,1-死胎 |
PID-32 |
IS |
Identity Reliability Code |
黑名单病人 |
默认是0/空 |
5.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)细分。
- 每个消息会包含多个段,如上述代码,表示一个消息,每个段之间通过分割回车
- 每个段又会包含多个字段,消息头段定义了段的类型,比如 MSH 表示这个段是消息头,段中又会包含多个字段
- 每个字段使用 | 分隔,如果对应的字段没有数据也不能省略 | ,这是因为每个字段在段中都有一个序号(SEQ),每个段有多少个字段、各个字段的序号和含义等都是在 HL7 协议中规定好的!
- 每个字段会包含多个组件,字段中不同的组件使用 ^ 分隔,比如 2302^BloodType
- 每个组件又可以包含多个子组件,子组件之间用 & 分隔,比如 ICU&Bed5&3232241659&0&0 (包含5个子组件)
6.HL7数据类型
7.HL7 message type消息类型
1. ADT admit disCharge transfer 入院、出院、转院 2. ACK acknowledgement message 应答消息 3. BAR biling account record 账单账户记录 4. DFT detailed financial transactions 详细的金融交易 5. MDM Medical document management 医疗文件管理 6. ORM order entry 订单录入 7. ORU Observation result (unsolicited) 观察结果 非请求观察 8. RDS pharmacy/treatment dispense 药房/治疗 配药 9. RDE pharmacy/treatment encoded order 药房/治疗 编码顺序 10. SIU schedlued information unsolicited 调度信息 非请求观察
加微信:wonter 发送:技术Q
医疗微信群:
加微信:wonter 发送:医疗Q
更多文章关注公众号: