标准理解
目的
互联互通(重点与外部)
技术实现
不关注技术实现
关注协议与数据标准
分类
医院互联互通53个CDA文档
生成方式
注册方式
通过电子病历注册
通过各文档actionName注册(HL7V3)
2016版本:S0014
2020版本actionName:DocumentRegister
通过数据集注册(D02006)
通过各文档(数据集)注册
通过各文档actionName注册(HL7V3)
actionName采用各文档配置中actionName
把CDA文档作为发布消息
通过数据集注册
用数据集作为发布消息
适配器
区别
通过电子病历注册只生成XDS(T_Emr)与文档存储库中(T_Blob_Save_D2006)的数据,不形成各文档的临床数据中心业务数据
通过各文档actionName(数据集)注册与适配器,不仅生成文档XDS与文档存储库数据,还生成临床数据中心病人的各种文档数据
CDA文档
章节
文档头
文档信息
病人信息
记录日期
服务人员信息
服务机构信息
卫生事件信息
文档体(多个章节)
实体业务类详细信息
章节构成
条目
元素
数据类型
ST
标识
root:标识编码
extension:标识值
时间
日期:20070803
时间:130624
日期时间:20070803130624
日期时间(DT15):20070803T130624
代码表
代码表(03)
codeSystem:代码系统
codeSystemName:代码系统名称
code:代码值
displayName:代码值名称
例子:
<administrativeGenderCode code="1" codeSystem="2.16.156.10011.2.3.3.4" displayName="男性"/>
代码表2(09)
codeSystem:代码系统
codeSystemName:代码系统名称
code:代码值
displayName:代码值名称
例子
<code code="1" codeSystem="2.16.156.10011.2.3.1.248" codeSystemName="医疗保险类别代码"> <displayName value="城镇职工基本医疗保险"/> </code>
代码表CD(07)
xsi:type
code
codeSystem
codeSystemName
displayName
例子:
<code xsi:type="CD" code="1" codeSystem="2.16.156.10011.2.3.1.248" codeSystemName="医疗保险类别代码" displayName="城镇职工基本医疗保险"/>
代码表CD2(10)
xsi:type
code
codeSystem
codeSystemName
displayName
例子:
<code xsi:type="CD" code="1" codeSystem="2.16.156.10011.2.3.1.248" codeSystemName="医疗保险类别代码"> <displayName value="城镇职工基本医疗保险"/> </code>
代码表ST
xsi:type
值
节点分析法
定义
任何一个叶子节点可以通过XML唯一的路径可以找到
任何一个叶子节点可以有多个属性或最多有一个节点值
假设一个叶子节点有多个节点属性值的时候,通过值元素值对应元素实现,多个值元素值时对用逗号分隔,元素值对应元素的节点设置非独立存在
节点属性
元素健值:具有唯一性是节点的唯一标识,系统通过这个标识识别节点中的属性与值
元素名称:人识别名称
数据元类型:元素数据类型(参照V3元素类型)
元素路径:元素在XML中完整的路径
元素序号:节点在XML文件的顺序,很重的属性
业务数据结点:如果是业务数据节点,则是末级节点,如果维护非末级节点主要是实现XML特殊的构建,形成特殊的树干
元素不独立存在:独立存在是要形成树中的节点或树干,构建时如果不是独立存在,则辅助独立的节点形成相关的属性与值;解析时,获取业务属性值
元素值对应元素:
因为对元素与数据元匹配时是一对一的匹配,如果出现节点出现多重属性或一个属性与值时,通过这个属性的配置实现节点获取其它一个属性或值
多个对应元素:采用逗号分隔
对应元素:不独立存在
对应的标准数据元:如果XML节点有与数据元关联,在这个地方需要维护,以减少后面配置工作,如果是标识类型,并且标识编码需要与数据元进行转换,则这个务必进行数据元维护
属性编码:如果维护这个,表示从XML节点中取值是对应这个属性,不维护从XML文件中取值是取节点值
固定属性:解析时用到的一个属性值,XML节点有些是固定的属性编码与属性,此时通过个进行维护,在构建XML节点时会自动把这个固定属性带入节点
代码转换标志:root编码需要作转换时,需要维护对应的数据元,也可以用于非RootID转换
值依赖属性:节点路径一样,这时无法区分节点唯一路径,可以定义值依赖属性来识别路径,用于XML解析
代码名称编码:代码名称不用displayName显示
脱敏表达式:信息脱敏,把数据信息变成类似的*号
章节属性
文档头
顺序号
条目属性
条目编码:条目唯一性,内部编码
条目名称:人识别名称
出现标志:出现标志为是,数据集中没有数据也会出现在文档中
出现1次:出现为1次,如果数据集中有多条数据,则只出现一次
基数:不用机器识别,是给人识别的属性
文档第一个条目:起始条目
出现依赖条目:
因为这种条目一般没有数据,但有业务数据条目有可能有数据,也可能没有数据,配置了依赖条目,如果依赖条目有数据,则此条目会现,如果依赖条目没有数据,则不出现
如果出现多个依赖条目用;分隔
顺序号:条目之间顺序关系(生成CDA文档时的文档条目生成顺序)
实体说明:辅助中文说明
条目路径:决定条目开始的节点与条目结尾结点位置
文档属性
文档编码:文档类别编码,系统自动生成
文档actionName:用于注册时的标识,对应的消息编码
操作类型:不区分
协议实现
约定与假设
每个条目第一个业务数据对应的节点路径具有唯一标识,如果节点不能构成唯一标识,需要加上值依赖属性来区分
如果节点路径一样(包括加上值依赖属性后的定义),在文档定义所有的节点要么是数据节点,要么是非数据节点
CDA文档与数据集一一对应
标准扩充方式(节点分析方法)
节点值或节点属性值与数据元一一对应
节点类型Root
extension
标识编码是代码表
功能
章节定义
文档分类
章节定义
条目定义
文档定义
构建配置
解析配置
文档注册配置
数据元与节点配置
取值类型
值
RootOid
对应到标识编码而不是标识值,如就诊类型
值转换标志
普通列:元素与数据元是一对一的关系
RootOid
如果root编码需要作代码转换前提条件
数据元是值域代码
rootOidi对应数据元是值域代码
常量
自定义的常量
固定常量
sysDate:系统时间
msgID:消息ID
pubCode:发布者编码
subCode:订阅者编码
errMsg:返回错误信息
empiID:返回empiID
基础数据转换
参照适配端文档
计算公式
说明
参照JS语法编写
通过js编写一个计算函数
构建时参数
数据元作为参数需要把.转换成_
多个值作为参数用,分隔
例子:DE05_01_081_01,DE05_01_081_00
解析时传参
消息元素键值作为参数,多个用逗号分割
例子:M201000680,M201000660,M201000670
函数体实现
返回一个值
构建例子
if(DE05_01_081_00 =="1"){ return DE05_01_081_01 }else{ return ''; }
解析例子:
if(M201000680 =="1"){ return M201000660; }else if(M201000680 =="2"){ return M201000670; }else { return M201000660; }
特殊节点属性
文档访问地址:文档头中setId
影像可访问地址:文档头中templateId
病人ID:文档头中versionNumber
验证步骤
CDA生成验证
验证平台CDA构建能力
定义测试发布者
定义发布者
定义发布者采用协议(JSON、XML)
确定发布者发布数据集
定义测试订阅者
订阅订阅者
定义订阅者协议为HL7V3
订阅者订阅数据集
与发布数据集一致
订阅D02006电子病历文档注册数据集
验证平台解析CDA能力
用发布工具进行发布V3格式
用订阅工具订阅V3格式
验证数据存储
验证点
注册表(T_EMR)
存储库(T_BLOB_SAVE_D02006)
业务库(相应数据集所属子集对应的物理表)
关联关系
业务库与注册表关联
数据集:业务主键
注册表:文档编码File_sn=数据集编码+业务主键
注册表与存储库关联:注册表中File_details与存储库中的codeid一一对应关系
CDA通过电子病历注册接口验证
发布者通过发布工具进行电子病历注册数据集发布
订阅者通过订阅工具进行订阅查看注册CDA文档
通过XDS查看模块进行生成数据导出
查看注册表T_EMR的注册数据
查看T_BLOB_SAVE_D02006中BLOBCONTENT中文档内容
找出注册表与存储之间关系:注册表中File_details与存储库中的codeid一一对应关系