菜单

目录

Administrator
发布于 2023-05-23 / 26 阅读 / 0 评论 / 0 点赞

CDA


标准理解

目的

互联互通(重点与外部)

技术实现

  • 不关注技术实现

  • 关注协议与数据标准

分类

医院互联互通53个CDA文档

生成方式

注册方式

  1. 通过电子病历注册

  • 通过各文档actionName注册(HL7V3)

    • 2016版本:S0014

    • 2020版本actionName:DocumentRegister

  • 通过数据集注册(D02006)

  1. 通过各文档(数据集)注册

  • 通过各文档actionName注册(HL7V3)

    • actionName采用各文档配置中actionName

    • 把CDA文档作为发布消息

  • 通过数据集注册

    • 用数据集作为发布消息

  1. 适配器

区别

  • 通过电子病历注册只生成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唯一的路径可以找到

  • 任何一个叶子节点可以有多个属性或最多有一个节点值

  • 假设一个叶子节点有多个节点属性值的时候,通过值元素值对应元素实现,多个值元素值时对用逗号分隔,元素值对应元素的节点设置非独立存在

节点属性

  1. 元素健值:具有唯一性是节点的唯一标识,系统通过这个标识识别节点中的属性与值

  2. 元素名称:人识别名称

  3. 数据元类型:元素数据类型(参照V3元素类型)

  4. 元素路径:元素在XML中完整的路径

  5. 元素序号:节点在XML文件的顺序,很重的属性

  6. 业务数据结点:如果是业务数据节点,则是末级节点,如果维护非末级节点主要是实现XML特殊的构建,形成特殊的树干

  7. 元素不独立存在:独立存在是要形成树中的节点或树干,构建时如果不是独立存在,则辅助独立的节点形成相关的属性与值;解析时,获取业务属性值

  8. 元素值对应元素:

    • 因为对元素与数据元匹配时是一对一的匹配,如果出现节点出现多重属性或一个属性与值时,通过这个属性的配置实现节点获取其它一个属性或值

    • 多个对应元素:采用逗号分隔

    • 对应元素:不独立存在

  9. 对应的标准数据元:如果XML节点有与数据元关联,在这个地方需要维护,以减少后面配置工作,如果是标识类型,并且标识编码需要与数据元进行转换,则这个务必进行数据元维护

  10. 属性编码:如果维护这个,表示从XML节点中取值是对应这个属性,不维护从XML文件中取值是取节点值

  11. 固定属性:解析时用到的一个属性值,XML节点有些是固定的属性编码与属性,此时通过个进行维护,在构建XML节点时会自动把这个固定属性带入节点

  12. 代码转换标志:root编码需要作转换时,需要维护对应的数据元,也可以用于非RootID转换

  13. 值依赖属性:节点路径一样,这时无法区分节点唯一路径,可以定义值依赖属性来识别路径,用于XML解析

  14. 代码名称编码:代码名称不用displayName显示

  15. 脱敏表达式:信息脱敏,把数据信息变成类似的*号

章节属性

  • 文档头

  • 顺序号

条目属性

  1. 条目编码:条目唯一性,内部编码

  2. 条目名称:人识别名称

  3. 出现标志:出现标志为是,数据集中没有数据也会出现在文档中

  4. 出现1次:出现为1次,如果数据集中有多条数据,则只出现一次

  5. 基数:不用机器识别,是给人识别的属性

  6. 文档第一个条目:起始条目

  7. 出现依赖条目:

    • 因为这种条目一般没有数据,但有业务数据条目有可能有数据,也可能没有数据,配置了依赖条目,如果依赖条目有数据,则此条目会现,如果依赖条目没有数据,则不出现

    • 如果出现多个依赖条目用;分隔

  8. 顺序号:条目之间顺序关系(生成CDA文档时的文档条目生成顺序)

  9. 实体说明:辅助中文说明

  10. 条目路径:决定条目开始的节点与条目结尾结点位置

文档属性

  1. 文档编码:文档类别编码,系统自动生成

  2. 文档actionName:用于注册时的标识,对应的消息编码

  3. 操作类型:不区分

协议实现

约定与假设

  1. 每个条目第一个业务数据对应的节点路径具有唯一标识,如果节点不能构成唯一标识,需要加上值依赖属性来区分

  2. 如果节点路径一样(包括加上值依赖属性后的定义),在文档定义所有的节点要么是数据节点,要么是非数据节点

  3. CDA文档与数据集一一对应

  4. 标准扩充方式(节点分析方法)

  5. 节点值或节点属性值与数据元一一对应

  6. 节点类型Root

    • extension

    • 标识编码是代码表

功能

  1. 章节定义

    • 文档分类

    • 章节定义

  2. 条目定义

  3. 文档定义

  4. 构建配置

  5. 解析配置

  6. 文档注册配置

数据元与节点配置

取值类型

  • 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构建能力

  1. 定义测试发布者

  • 定义发布者

  • 定义发布者采用协议(JSON、XML)

  • 确定发布者发布数据集

  1. 定义测试订阅者

  • 订阅订阅者

  • 定义订阅者协议为HL7V3

  • 订阅者订阅数据集

    • 与发布数据集一致

    • 订阅D02006电子病历文档注册数据集

验证平台解析CDA能力

  1. 用发布工具进行发布V3格式

  2. 用订阅工具订阅V3格式

验证数据存储

  • 验证点

    • 注册表(T_EMR)

    • 存储库(T_BLOB_SAVE_D02006)

    • 业务库(相应数据集所属子集对应的物理表)

  • 关联关系

    • 业务库与注册表关联

      • 数据集:业务主键

      • 注册表:文档编码File_sn=数据集编码+业务主键

    • 注册表与存储库关联:注册表中File_details与存储库中的codeid一一对应关系

CDA通过电子病历注册接口验证

  1. 发布者通过发布工具进行电子病历注册数据集发布

  2. 订阅者通过订阅工具进行订阅查看注册CDA文档

  3. 通过XDS查看模块进行生成数据导出

  4. 查看注册表T_EMR的注册数据

  5. 查看T_BLOB_SAVE_D02006中BLOBCONTENT中文档内容

  6. 找出注册表与存储之间关系:注册表中File_details与存储库中的codeid一一对应关系