




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
- 1 - 中国中国科技论文在线科技论文在线 电子病历数据抽取系统的设计与实现电子病历数据抽取系统的设计与实现 李兆龙,杜军平* 作者简介:李兆龙,(1988-),男,北京邮电大学计算机学院在读工学硕士,主要研究方向:数据挖掘、 智能旅游、机器学习等 通信联系人:杜军平,(1963-),女,北京邮电大学计算机学院教授,博士生导师,主要研究方向:人工 智能理论及其应用、智能信息管理系统、拟人管理、旅游信息化建设等. E-mail: (北京邮电大学计算机学院,智能通信软件与多媒体北京市重点实验室,北京 100876) 摘要摘要: 本文提出了一种基于信息共享的电子病历数据抽取系统的设计方案, 并开发了相应的5 工具软件。 该系统提出并设计了一套的基于 XML 文件格式的抽取规则, 以实现不同的数据抽 取任务。该系统软件可将各医院的海量医疗数据进行抽取并转换成规范化的电子病历数据, 加载到目标数据库。本系统使用 JDBC 数据库驱动程序屏蔽各类数据库的差异,对多源异构 数据库的相关医疗数据进行数据抽取和信息整合。 本系统能在复杂网络环境下实现无人值守 运行,支持从 Oracle、SQL Server、Sybase 等数据源实现定期增量数据抽取。 10 关键词关键词:异构数据库复制;电子病历;海量数据整合;数据抽取 中图分类号中图分类号:TP319 Design and Implementation of Electronic Medical Records Extraction System 15 LI Zhaolong, DU Junping (Beijing Key Lab of Intelligent Telecommunication Software and Multimedia,School of Computer Science, Beijing University of Posts and Telecommunications, Beijing 100876) Abstract: This paper presents a design of electronic medical records extraction system based on information sharing, and the corresponding software tool is developed. In order to achieve 20 different data extraction tasks, the system proposes a set of extraction rules based on XML file format.The Software can extract massive medical data around hospitals and convert it into a standardized electronic medical records format, load into the target database. The system uses the JDBC database drivers to shield the differences of various types of databases, in order to complete data extraction and information integration of the relevant medical data from mutil-source 25 heterogeneous databases. System can run unattended in complex network environment, and achieve periodic incremental data extraction from Oracle, SQL Server, Sybase and other data sources. Keywords:Heterogeneous database replication; electronic medical record; Massive data integration; data extraction 30 0 引言引言 随着医疗数据信息化建设的不断深入, 越来越多的医疗信息管理系统被广泛的应用于医 疗行业,显著提高了医院的工作效率和诊断质量1。在积累海量医疗数据的同时很多医院都 面临这样的问题:病人信息不能完全共享,从而形成多个“信息孤岛”;医疗数据存在多个35 入口,一致性和准确性难以保证;医疗数据离散,缺乏统一的数据标准,难以进行宏观的数 据挖掘和分析;多个医疗系统之间的互联互通和一站式服务无法实现。 医疗信息领域形成了越来越多的“信息孤岛”,而孤立的电子医疗数据难以适应医疗行 业未来的发展2。海量医疗数据在信息积累、信息整合和信息利用等各个方面都面临着严峻 的挑战3。因此急需进行医疗信数据整合,以解决医疗数据管理的根本问题,才能更进一步40 推动医疗智能化改革的发展4。 电子病历共享系统是一个将医院相关医疗数据进行规范整合 后, 通过广域网传输到中心服务器并加载到中心数据库, 从而实现电子病历共享的医疗数据 - 2 - 中国中国科技论文在线科技论文在线 共享系统。电子病历共享系统主要包括医疗数据抽取系统、医疗数据导出系统、医疗数据传 输系统和医疗数据加载系统等四个子系统,实现基于异构数据库数据源的数据整合工作5。 其 体系结构如图 1 所示。 45 图 1 电子病历共享系统体系结构 Fig.1 Electronic medical records sharing system architecture 目前尚缺乏统一的医疗数据标准规范, 各医院部署的电子医疗系统、 使用的数据库也各50 不相同。 而本文实现的数据抽取子系统, 针对各个数据库对数据的存储结构、 数据组织方式、 信息描述、表达方式差异6,实现了各医院病人病历相关医疗数据的标准化整合,为电子病 历共享系统中医疗数据的可靠传输和无错加载环节准备了规范的电子病历数据。 1 数据抽取系统的设计数据抽取系统的设计 1.1 功能需求功能需求 55 数据抽取系统实现从 Sybase,Oracle 9i,Oracle 10g,Oracle 11g,Microsoft SQL Server 2000,Microsoft SQL Server 2005,Microsoft SQL Server 2008 等数据库抽取源数据至 Oracle11g 数据库。数据抽取系统的抽取任务按照抽取模式可分为简单抽取、复合抽取两种 形式。 简单抽取即从单一源表或多源表抽取形成视图数据存入一个目标表; 复合抽取有多个 简单抽取顺序组合而成, 系统执行抽取任务时依次执行多个简单抽取。 在抽取的结果集视图60 与目标表对应字段的类型相同情况下,系统能实现表名和字段名称的映射加载功能。 系统动态更新的大量表数据时, 将采取增量抽取的策略, 将上次抽取到的记录的主键或 修改时间进行记录, 下次执行任务从该条记录后继续抽取。 数据抽取系统需要实现即时抽取、 定时抽取和定期抽取三种抽取任务执行模式。 其中定时抽取和定期抽取任务需在无人值守的 情况下正常运行。若数据库表中某字段存储的是二进制流文件数据,系统执行抽取任务时,65 将该字段内容导出为约定路径下的外部磁盘文件, 并将文件名存储在目标表对应字段中。 若 数据库表中某字段(字符类型)内容为对应外部磁盘文件路径和文件名,系统执行抽取任务 时,将该字段内容所指向路径的外部磁盘文件,传输到约定路径下,并将约定的路径和原文 件名存入目标表对应字段中。 抽取任务执行中的抽取日志和错误日志, 以列表的形式呈现给 使用者。 70 1.2 设计思想设计思想 本文所设计并实现的数据抽取系统是基于多源异构数据库数据整合的数据抽取系统。 系 统分为应用层、逻辑层和数据层。应用层通过 UI 界面提供抽取任务信息、数据库信息等系 统运行数据。 逻辑层根据应用层的信息执行数据提取和存储操作, 并调用数据层的数据库交 - 3 - 中国中国科技论文在线科技论文在线 互接口将抽取结果和日志数据存入数据库。 75 1.2.1 应用层应用层 由于各医院使用的医疗信息系统更换频率较低, 医疗数据结构也较稳定, 因此对于一个 医院节点而言, 规范化电子病历的数据需求是长期固定的。 本系统设计了一套以 xml 文件格 式为基础的抽取规则约定方案7。 应用层通过界面向用户呈现抽取规则 (本文称为配置文件) 的编辑接口。 此外, 应用层还提供抽取日志和错误日志的查看、 删除等交互操作的用户接口。 80 1.2.2 逻辑层逻辑层 逻辑层是系统的主控核心层。逻辑层其通过主控模块(定时控制模块),控制抽取任务 的执行。抽取任务执行时,逻辑层将解析配置文件,获取抽取任务信息,传递给数据提取模 块和数据存储模块。 数据提取模块与数据存储模块将通过数据库操作模块, 完成建立数据库 连接、 数据提取和数据转存等数据库交互操作, 并将抽取任务相关统计信息传递给日志处理85 模块处理。 1.2.3 数据层数据层 数据层用于实现数据库交互操作。数据抽取子系统使用 JDBC 的方式连接数据库,以屏 蔽各类型数据库的数据组织形式,将源数据封装在 Java 容器中进行统一操作。数据库操作 模块是数据层的主要逻辑模块。 90 1.3 系统结构系统结构 数据抽取系统结构图如图 2 所示。系统主要由定时控制模块(主控模块)、配置文件解 析模块、数据提取模块、数据抽取模块、数据库操作模块和日志处理模块组成。定时控制模 块通过定时器和配置文件信息,控制其他各个模块运行。 95 图 2 数据抽取系统体系结构 Fig.2 Data extraction system architecture 2 数据抽取系统的实现数据抽取系统的实现 2.1 配置文件解析模块配置文件解析模块 100 配置文件解析模块将应用层提供的配置文件信息解析并暂存在内存中, 是抽取任务执行 - 4 - 中国中国科技论文在线科技论文在线 的第一步。每个抽取任务信息,通过统一约定的抽取规则提供。抽取规则以 XML 文件的形 式保存,称为抽取信息配置文件,包括两类配置信息:数据库配置文件和抽取配置文件。用 户通过界面接口可以修改系统的两个配置文件。 数据库配置文件提供源数据库、 目标数据库 和日志数据库的 JDBC 连接信息,包括 JDBC 数据库连接驱动、数据库 URL、用户名和密105 码等信息。其标签含义说明如表 1 所示。 表 1 数据库配置文件标签含义 Tab.1 The meaning of the database configuration file tags 标签 说明 定义一个数据库连接 数据库连接类型 数据库连接名称 数据库连接驱动 数据库连接 url 用户名 密码 支持的最大连接数 110 抽取配置文件用于配置抽取任务,包括抽取的类型,时间间隔,抽取的表和字段等。表 2 给出了抽取配置文件的标签含义说明。 表 2 抽取配置文件标签含义 Tab.2 The meaning of the database configuration file tags 115 标签 说明 标签 说明 抽取规则配置,包含多个 抽取的 sql 语句,可执行多 表联合抽取 抽取类型 目标表名称 抽取名称 源视图判重字段 来源数据库连接名称 目标表对应判重字段 目标数据库连接名称 上次抽取执行到的记录主 键 循环抽取次数 源表外部文件路径 开始时间 hh:mm 外部文件存放路径 结束时间 hh:mm 每次任务最多抽取条数 *可以为 1,2,3 分别代表三种 抽取类型 源表到目标表的字段映射 关系 配置一次抽取 原表中二进制流字段名 替换 sql 语句宏 抽取描述 配置文件模块调用 JDK 封装的 xml 节点解析 API,将数据库配置文件信息和抽取配置 文件信息按节点名称封装到配置文件解析类的对象中, 供逻辑层其他模块获取抽取任务信息 使用。 2.2 定时控制模块定时控制模块 120 定时控制模块是逻辑层的主控模块, 通过配置文件解析类的对象获取任务类型, 将任务 放入线程池挂起,并依据任务类型设置即时、定时和定期三种线程启动方式。任务执行时, 主控模块将调用数据提取模块、数据存储模块工作,实现数据抽取。定时控制模块的流程图 如图 3 所示。 - 5 - 中国中国科技论文在线科技论文在线 唤醒任务 执行线程 抽取任务 结束 抽取任务类型 即时抽取 挂起任务 执行线程 定时、定期抽取 执行时间 N 修改下次 执行时间 Y 唤醒任务 执行线程 定期抽取?YN 125 图 3 定时控制模块处理流程图 Fig.3 Processing flow chat of timing control module 若执行即时抽取任务,定时控制模块将当前时间作为任务开始时间唤醒线程立即执行; 定时控制模块将任务开始时间通知线程; 定时控制模块则将任务首次执行时间和执行周期通130 知线程,每周期抽取结束后,修改下次执行时间,再次挂起线程。 2.3 数据库操作模块数据库操作模块 数据库操作模块使用 JDBC 方式连接数据库。该模块采用缓冲连接池技术方案,管理数 据库连接资源, 使抽取任务执行时数据库资源的管理更为高效。 数据库操作模块的框架图如 图 4 所示。 135 源 数据库 日志 数据库 目标 数据库 建立 数据库 连接 数据库交互函数 释放 数据库 连接 数据库连接池 数据库 交互对象 数据库操作模块 数据库连接 配置信息 图 4 数据库操作模块结构图 Fig.4 Database operation block architecture diagram 数据库操作模块响应数据提取模块和数据存储模块的建立数据库连接对象请求时, 根据140 数据库配置文件信息加载驱动、连接数据库,并建立数据库连接池。而后从数据库连接池内 取出一个可分配的对象,返回给请求模块。当请求模块释放数据库连接对象时,数据库连接 对象将被放回到数据库连接池中。 数据库操作模块的数据库交互操作类 DBOperation 的实例 - 6 - 中国中国科技论文在线科技论文在线 化对象,封装了与数据抽取子系统所需数据库交互的所有操作函数。主要包括: (1)查询源数据函数:根据解析模块解析的 sql 语句查询源数据库,返回结果集; 145 (2)目标表判重函数:对查询结果集的每条记录,依据判重字段,查询目标表里是否 有重复记录,以防违反唯一性约束导致任务失败; (3)写库函数:将容器内封装的记录数据取出,作为加载参数,执行写库,完成数据 存储。 2.4 数据提取模块数据提取模块 150 数据提取模块和数据存储模块是数据抽取系统的主要逻辑模块, 完成了数据抽取任务的 大部分工作。当抽取任务线程被唤醒时,调用数据提取模块,建立源数据库连接进行数据查 询,调用数据存储模块对查询结果集进行保存并完成。该模块主要分为源数据库连接、sql 语句预处理、数据查询、调用存储方法和日志处理五个子模块。数据提取模块的模块结构图 如图 5 所示。 155 图 5 数据提取模块结构图 Fig.5 Data extraction block architecture diagram 2.5 数据存储模块数据存储模块 160 2.5.1 数据存储模块综述数据存储模块综述 数据存储模块实现了查询结果集到目标表的入库过程。 对查询结果集中每一条记录的循 环遍历,经过数据存储 sql 语句生成子模块、判重子模块和写库数据封装子模块等主要流程 以及外部文件传输、二进制流文件保存两个辅助子模块,将一条记录写入目标表。数据存储 模块的模块结构图如图 6 所示。 165 - 7 - 中国中国科技论文在线科技论文在线 目标 数据库 SQL 语 句 生 成 子 模 块 判重 数据 封装 数 据 库 操 作 模 块 判重 子模块 写库子模块 更新 数据 封装 插入 数据 封装 重复不重复 判重语句 更新语句 插入语句 数据存储模块 图 6 数据存储模块结构图 Fig.6 Data storage block architecture diagram SQL 语句生成子系统根据配置文件解析模块解析的抽取配置信息,生成判重语句、更170 新语句和插入语句。 判重子模块依据配置文件解析模块解析的判重字段映射信息, 从查询结 果集的记录值封装判重字段的列值, 调用数据库操作模块的目标表判重函数, 将判重结果返 回给写库数据封装子模块。 若目标表以存在符合判重条件的记录, 写库子模块将对结果集记 录列值按照更新语句的参数顺序封装, 调用数据操作模块的写库函数执行更新操作; 若不存 在重复记录, 则按照插入语句的参数顺序封装结果集记录列值, 调用数据操作模块的写库函175 数执行插入操作。 2.5.2 二进制流字段内容处理二进制流字段内容处理 当图 6 所示的写库子模块进行数据封装时,若查询结果集中存在保存二进制流内容的 LOB 字段(如 Clob、Blob、Image、Text 字段等),则需要将二进制流导出为相应格式的外 部磁盘文件。其处理流程图如图 7 所示。 180 - 8 - 中国中国科技论文在线科技论文在线 图 7 LOB 字段中二进制流处理流程图 Fig.7 Processing flow chat of binary stream in LOB field 各类型音频、 视频和图片数据均以二进制流的形式存储在数据库中, 在将二进制流导出185 为外部磁盘文件之前,写库子模块调用判断文件类型函数,读取二进制流的头 10 个字节, 确定文件格式,将后缀名(如.avi、.jpg 等)返回给规范外部文件命名函数。二进制流保存 为的外部磁盘文件,由保存时间、目标表名、目标表字段名、索引及后缀名组成,具体格式 为:yyyyMMdd_hh24mmss_table name_feild name_index.jpg。规范外部文件命名的函数自动 扫描目标路径,在当前传输的二进制流数据与目标路径下已有文件保存时间、目标表名、目190 标表字段名均相同的情况下,通过索引自增长,来规范文件命名。 2.5.3 外部文件传输处理外部文件传输处理 配置文件中节点指向的源表字段中的字符串内容表示节 点指向路径下的外部文件名称。 写库子模块从查询结果集中获取记录列值, 进行更新数据封 装或插入数据封装时,需要对字符类型的字段名进行检测,若其内容指向外部磁盘文件,则195 需将外部文件从指向路径传输到指向路径,并将字段内容 (外部文件名称)存入目标表对应字段。外部文件传输处理流程如图 8 所示。 - 9 - 中国中国科技论文在线科技论文在线 图 8 外部文件传输处理流程图 Fig.8 Processing flow chat of the external file transmission 200 2.6 日志处理模块日志处理模块 数据抽取系统的日志处理模块负责维护抽取日志、 用户错误日志和后台错误日志三类日 志, 分别保存在嵌入式日志数据库 Derby 中的抽取日志表、 用户错误日志表和后台错误日志 表。通过数据库操作模块提供的查询日志、保存日志的数据库交互接口,为系统使用者提供205 日志显示数据查询和日志存储的功能。 抽取日志包括抽取任务日志和简单抽取日志两部分, 一条抽取任务日志对应本次任务的 一条或多条简单抽取日志。抽取任务日志包括抽取时间(精确到毫秒)、目标表数量、主表 (第一个简单抽取目标表)的记录更新数、本次任务所更新的全部记录数。简单抽取日志包 括抽取时间、目标表名称、主键名称和该简单抽取缩更新的记录总数等内容。 210 用户错误日志包括错误时间(精确到秒)、抽取配置文件名称、出错记录主键、目标表 名称、出错记录内容(不超过 255 个字符)、错误类型和错误描述。后台错误日志包括错误 时间(精确到毫秒)、抽取配置文件名称、出错记录主键、目标表名称、出错记录内容(不 超过 4000 个字符)、错误类型和错误描述。 数据抽取系统在配置文件解析模块、定时控制模块、数据提取模块、数据存储模块和数215 据库操作模块中设置成员变量, 记录抽取任务执行过程中的抽取日志信息和错误信息, 传递 给日志处理模块的 Logger 类实例,Logger 类包含三个主要函数: - 10 - 中国中国科技论文在线科技论文在线 (1)writeExtractInfo 函数:该函数调用数据库操作模块的保存抽取任务信息接口,将 本次抽取任务的统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年八年级(上)语文10月月考模拟卷(二)含答案
- 建筑装饰工程技术创新应用方案
- 智能建筑楼层空调系统方案
- 小学数学学科实践的内涵、特征及样态
- 全国中学生物理竞赛实验试题及答案
- 人力资源知识竞赛试题及答案 HR
- 2025常州辅警考试真题及答案
- 社会工作者考试模拟试题及答案
- 2025殡葬考试真题及答案
- 村级财务管理培训试题及答案
- 2025年全国保密教育线上培训考试试题库附答案【考试直接用】含答案详解
- 2025年度全国普通话水平测试20套复习题库及答案
- 2025年初级会计师考试真题试题及答案
- 上海嘉定区区属国有企业招聘考试真题2024
- 2025心肺复苏术课件
- T-CECS 10400-2024 固废基胶凝材料
- 2025年内蒙古三新铁路有限责任公司招聘笔试参考题库含答案解析
- 初中竞选安全部部长
- 《人体的经络》课件
- 《福禄贝尔》课件
- 期中测试卷(第一单元至第四单元)-2024-2025学年六年级上册数学人教版
评论
0/150
提交评论