带你认识HL7和CDA
1.实现任意json,xml转HL7v2.x 字符串的转换。2.CDA校验,HL7V3的校验
感性认知
HL7 v2.4MSH|^~&|MedSeries|CAISI_1-2|PLS|3910|200903230934||ADT^A31^ADT_A05|75535037-1237815294895|P^T|2.4
EVN|A31|200903230934
PID|1||29^^CAISI_1-2^PI~""||Test300^Leticia^^^^^L||19770201|M
HL7 v2.x 是一种基于传输数据的事物,按照特定的编码规则而制定的字符。说白了就是一段字符串,而且这个字符串,不同的区域代表这不同的数据区(及不同的传输事物,例如:MSH:消息头,ADT_A05:事件类型,PID:病人信息)
一般传输方式 点对点的较多(socket形式的),极少数采用Http传输。基本就是国内PACS,LIS 系统有这么先进格式的传输。
HL7 v3<?xml version="1.0" encoding="UTF-8"?>
<POLB_IN224200UV01xmlns:hl7="urn:hl7-org:v3"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"ITSVersion="XML_1.0">
<templateIdextension="VS_RM200901CO01"assigningAuthorityName="HospitalJorgeHUribe"/>
<idextension="MSG0000001"/>
<creationTimevalue="20100511220525"/>
<interactionIdroot="2.16.840.1.113883.1.6"extension="POLB_IN224202UV01"/>
<processingCodecode="P"/>
<processingModeCodecode="T"/>
<acceptAckCodecode="NE"/>
<receivertypeCode="RCV">
<deviceclassCode="DEV"determinerCode="INSTANCE">
<idextension="HIS001"/>
</device>
</receiver>
<sendertypeCode="SND">
<deviceclassCode="DEV"determinerCode="INSTANCE">
<idextension="VSM001"/>
</device>
</sender>
<controlActProcessclassCode="CACT"moodCode="EVN">
<codecode="POLB_TE004202UV01"codeSystem="2.16.840.1.113883.1.11.20299"codeSystemName="LaboratoryTriggerEventType"displayName="Result Complete"/>
<languageCodecode="es-co"codeSystem="2.16.840.1.113883.1.11.11526"codeSystemName="HumanLanguage"displayName="Espanol Colombia"/>
<subjecttypeCode="SUBJ"contextConductionInd="false">
<observationBatteryclassCode="BATTERY"moodCode="EVN">
<idextension="VS12340000"/>
<codecode="28562-7"codeSystem="2.16.840.1.113883.6.1"codeSystemName="LOINC"displayName="Vital Signs"/>
<statusCodecode="complete"/>
<recordTargettypeCode="RCT"contextControlCode="OP">
<patientclassCode="PAT">
<idextension="6537077"/>
<patientPersonclassCode="PSN"determinerCode="INSTANCE">
<name>
<given>ANDRES FELIPE</given>
<family>FERNANDEZ CORTES</family>
</name>
<administrativeGenderCodecode="M"codeSystem="2.16.840.1.113883.5.1"codeSystemName="AdministrativeGender"/>
<birthTimevalue="19860705"/>
</patientPerson>
</patient>
</recordTarget>
<authortypeCode="AUT">
<timevalue="20100511220525"/>
<assignedEntityclassCode="ASSIGNED">
<assignedDeviceclassCode="DEV"determinerCode="INSTANCE">
<idextension="VSM001"/>
<manufacturerModelNamecode="VSM"codeSystem="BiomedicalDevice"displayName="Vital Signs Monitor"/>
</assignedDevice>
</assignedEntity>
</author>
</observationBattery>
</subject>
</controlActProcess>
</POLB_IN224200UV01>
- 看到这么无解的xml,到底怎么去理解呢,其实很简单。我们需要跟HL7v2.x 做一个对比就很明朗了。
交互
Messaging(消息)
Messaging(消息)
语义支持
RIM(参照消息模型)
语义支持
Vocabulary(术语)
语义支持
Data Type(数据类型)
语义支持
Common terminology services (常用术语服务)
语义支持
Entity Identifiction services(实体标识服务)
其他
RIM模型
Vocabulary
Data Type
V3 校 V2.x 多了许多内容,因为 V2.x 仅支持语法交互,而V3支持语义交互。
v2.x : 给病人止痛药
v3 : 给病人用药止痛
从意思上来说,大家都知道,但是如果要深究起来,v3稍微更具体些。因为“给病人止痛药”有很多层意思,比如:是委托家属给病人止痛药 还是 只是给病人一个止痛药;但是在v3的就不会有这种模糊的意思,而且还带有了特殊的语境(下医嘱)。因此,v3的出现,能够更加准确地描述医疗行为/事务。
其实v3是一把双刃剑,由于他的传输格式复杂性,在开发上还是存在许多障碍的。许多国内的PACS LIS 也不太愿意将他们原本的v2升级到v3,因为这里边的成本太高了。所以消息中间件就应运而生了。
CDAhttps://github.com/brynlewis/C-CDA_Viewer/tree/master/samples
临床文档结构(CDA),主要用于共享医疗信息,构成临床数据仓库(CDR)的重要组成,一种指定结构和语意的文档标记标准。
- xml封装
- 基于HL7v3 RIM(参照消息模型)和 Data Type
- 灵活的表达方式
以上这些都是国际标准化的医疗传输协议,刚开始接触肯定是无从下手的,因为你还不知道他们到底有什么用,把数据搞得那么复杂,到底有什么用?
HL7 消息的作用
- 互联互通 (HL7v2.0 HL7v3 FHIR)
- 信息共享 (CDA)
例如:有以下医疗事务
门诊病人就诊流程
1.首先我们要对这个过程进行建模,也就是说需要对原有的模型进行裁剪,得到一个最终期待的HL7格式字符串或者xml
2.各HIS系统开通基于HL7的传输接口进行信息交互(开始一份无值有结果的的xml文档,经过了这一系列过程,最终得到一份有数据的文档)
3.如果我们要共享并记录这一医疗事务,我们就需要借助CDA
例如
开始{
patinetId:"",
visitId:"",
temperature:"",
result:"",
....
}
走完流程之后
{
patinetId:"123",
visitId:"1",
temperature:"37",
result:"正常",
....
}
也就是说,我们每个HIS系统都要实现基于HL7协议的转换和解析。在现实情况下,几乎不可能实现这么大规模的标准化。
基于HL7协议的消息中间件
从上述分析可知,正常情况下一个HIS系统,不可能去实现HL7协议,我们需要借助外部的程序,将非HL7的数据做数据转换。具体流程是这样的,仍然用上面的就诊流程来说,以json作为传输数据
Json->His系统->JsonJson->中间件->HL7
这样就实现了任意的json转HL7的数据协议了。
目前开源的HL7消息中间件
mirth-connect
基于医疗传输协议的医院信息集成平台
这是一个更为庞大的系统,消息中间的只是一部分,一般描述它的功能,都可以用这种图来表示。
图片来自互联网
相比中间件,它的强大功能在,HIS系统并不用关心本身的接口会被谁调用,更不懂担心数据格式的问题,都统一委托给集成平台,它负责控制调用流程和格式转换。
还有一点就是,如果要做CDA的存储,并不需要HIS系统做任何的改造。平台创造的价值是巨大的。在2020年的医院信息化革命中,它将是不可或缺的。
目前国内比较有名的集成平台
- intersystems ensemble
- 东软(orion)
- 嘉禾美康
...
没做太多的调查。
说说自研医院集成平台的注意事项吧
平台的稳定性
集成平台承载着医院的重要数据流,一旦出现宕机,后果是很严重的。
1.要考虑平台的运维告警,及时对相关人员发出告警信息
2.集群与负载均衡,集群是相对于整个平台而言的,国内有许多中小型企业的集成平台是基于ESB去做的,很难做到集群,基本上单机部署。而负载均衡是相对于消息交换而言的,一家医院的内部消息交换可能一天就几千万条,平台的压力也是要考虑进去的。平台的数据安全性
1.传输加密,随着医院的信息化发展,信息安全的问题越来越明显,作为数据的载体,平台必须对传输数据进行加密
2.服务授权,作为外界与医院内部系统沟通的媒介,平台必须有良好的授权方式,供外部系统调用平台的伸缩性
1.目前国内的医院信息化的水平还是比较落后的,平台在设计初期应该灵活,以适应不同医院的信息化环境。
2.平台的可操作性一定要注意,尽量做到简单易用。
以上是 带你认识HL7和CDA 的全部内容, 来源链接: utcz.com/z/515200.html