电子病历历史数据的提取及在医学临床教学中的应用
李忆昕 张颖 王钰莹 葛笑 翁苏湘
摘要:电子病历历史数据结构化程度较差,管理上“重藏轻用”的现象比较明显,致使大量的病历数据处于沉睡状态中。本文通过Python爬虫技术对电子病历历史数据进行爬取,再对数据进行抽取、筛选和结构化存储。电子病历数据最后以.xml标准化格式保存,并结合虚拟教学平台进行医学临床教学应用。将电子病历数据中有价值的潜在信息发掘出来,丰富临床医学专业教学资源,并为科学研究提供基础。
关键词:电子病历;Python爬虫;医学临床教学前言
电子病历(Electronic MedicalRecord,EMR)是基于特定系统,提供完整准确的医疗过程中的数据,它是用以替代纸张病历的基于计算机的病人记录。电子病历采用电子设备(如诊疗卡、计算机等)对病人的医疗记录进行存储、传输、管理,对病人信息及医疗过程进行数字化。我国EMR档案的研究与应用起步较晚,但发展十分迅速。卫生部颁发了《电子病历系统功能规范》《电子病历基本规范》等规范法规。这些重要法规,规范了电子病历的建设、存储和使用等活动,为电子病历的发展奠定了基础。
标准化电子病历的建设现在已经成为业内共识,但结构化EMR系统仍处于发展阶段,尚未有成熟的建设标准和规范。现行的EMR系统大多数为了适应医院HIS系统应用和档案电子化管理,电子病历数据现多采用非结构化或半结构化形式存储。EMR内容以自由文档为主,一定程度上满足了病历内容自由描述的需求,但是EMR管理上“重藏轻用”的现象比较明显,致使大量的病历数据处于沉睡状态中。医学是十分重视实践的学科,医学生的成长离不开大量的临床实践,激活“沉睡”中的电子病历并使之服务于医学生的培养具有十分重要的意义。本研究针对糖尿病这一典型慢性病EMR数据进行提取挖掘,将其运用于临床教学实践,以期为今后进行更广泛的EMR历史数据研究打下坚实的基础。基于Python爬虫技术的EMR数据获取
作为档案的一种形式,各医疗机构对EMR的管理都有严格规定,因此EMR数据的获取不可能用常规的数据接口或数据移植方法来实现。EMR数据的展现形式一般都是文档或超文本,如果要激活这些数据就必须研究一种灵活高效的数据抽取技术并将这些数据以结构化的方式进行存储。
Python是一种开源的面向对象的解释型、多范式脚本语言。Python兼容性高、优雅简约且功能强大,是当前非常受欢迎的一种编程语言。尤其是Python具有极其强大的数据处理、数据统计和处理能力,使得越来越多的人使用Python进行Web数据挖掘及统计分析。相较于C++、Java等语言,Python在网络爬虫应用中接口也更简单。
医院的各类信息系统中每天都会產生大量的电子病历数据,而这些数据往往是静态的,即只要获取到HTML中的内容就可以得到电子病历的有用信息。Python提供了广泛的标准函数库,同时又有众多支持Python的第三方库,可以获取到网络上的数据。本研究通过某三甲医院内部网络进行EMR数据的Python爬取及结构化。
网络数据获取分为两个阶段:第一阶段是抓取,第二阶段是解析。抓取常采用urlib内建模块中的request功能、Request第三方库或者使用Scrapy开源爬虫框架等。对于大型爬虫项目,往往采用Scrapy或者自开发爬虫。Requests被称作是唯一一个“非转基因”的PythonHTTP客户端库,简单实用而友好,支持get、put、post等7种请求方式,同时支持headers、cookms等的传递,SSL证书验证,HTTP(S)代理等。引人Requests库可以用简易的代码完成复杂网页信息爬取。对于电子病历数据,其获取速度要求不高,本方法采用了Request第三方库。
数据抓取的过程为:发送请求是客户饥发送—个请求(Requcst)给服务器;②获取口向应内容,服务器返回一个响应(Response)。在得到了响应内容后就需要对数据进行解析。当前流行的解析方式有BeautifulSoup库和re(正则表达式)模块。本文采用了两者结合的方式进行网页解析。HTML格式EMR文本抓取结果如图1所示。
Beautifl Soup是网页抓取数据的重要的Python的第三方库,目前已经被移植到bs4中,它简单易用,具有处理不规范标记,处理导航、搜索、修改分析树等功能,十分高效。选择合适的解析器对文件进行分析,可提高网页解析速度,本文采用LXML解析器进行解析,而后便可将超文本数据转换成树形结构,节点为Python对象。使用get_text()方法可以得到正文数据(如图2)。
数据经过爬虫抓取后的HTML数据文件,还不能作为有用的信息进行存储和利用,需要进行进一步的筛选及数据抽取。
(1)数据文件预处理。本次实验环境中,网络爬取的数据无法根据HTML的title进行分类,因此网络抓取的数据需要根据提取数据内容进行分类。网络抓取的数据主要为半结构化文本,首先需要对主要数据进行筛选以取得所需主要信息。对获取到的EMR数据,如入院记录、检查报告、检测记录、病程记录、出院记录等,采用截取关键信息的方法,查找文本标题关键字字符串作为分类的依据。对不符合关键信息的无采集价值文件,如《告知书》或空数据文件则直接丢弃,合弃无效数据。
(2)特征提取。正则表达式是一种特殊的字符串模式,可以灵活地处理文本工具,用于字符串匹配,是特征提取的一种有效方式。正则表达式可以用规定的字符规则组成“规则字符串”,进行字符匹配模式,通过字符匹配可以方便地匹配数字、字符串等需要的数据。本研究采用正则表达式来处理获取到的合格数据文件,将爬取的数据快速分段,再使用关键词匹配进行分类。EMR信息提取时会过滤掉病人隐私信息等敏感字段,仅以“住院ID号”为特征区分病人,提取“生日”“性别”“职业”等自然信息和“主述”“现病史”“既往病史”“家族病史”“体格检查”“病程记录”等相关诊疗信息。病历数据的XML格式化及教学应用
XML是一种元标记语言,由于它是纯文本格式,因此它可以对挖掘数据进行描述并存储。而且,XML需要交换的数据采用标准进行表示与组织,系统只需在数据的内部格式与数据标准之间进行映射,极大地降低了数据集成的复杂度。HTML格式EMR文本内容如图3所示。经转换后的XML文本内容如图4所示。
本研究与笔者之前的“基于Flash+XML技術的临床虚拟教学平台”相结合,将EMR历史真实数据转化为平台可用的标准XML文本,为虚拟教学平台提供了大量真实病历数据,使虚拟教学平台的服务能力得到了极大的提升。经过筛选,平台新增合格教学标准糖尿病病历12个,丰富了平台的教学资源。新教学病历拟经专业指导教师进行流程设计及医学术语规范后,更新至虚拟教学平台,正式为临床及护理专业学生提供教学服务。总结与展望
本文研究的主要内容有:Python爬虫对EMR病历数据的爬取技术与方法研究;EMR历史数据结构化存储方法的研究。EMR历史数据结合虚拟仿真实验教学平台为医学临床教学提供服务。
将EMR数据中潜在的有价值的信息发掘出来,既可以为医学临床教学提供更多更好的真实数据,也可以更好地服务住院患者,分析出院患者;以及跟踪重复入院患者,为提高以患者为中心的医疗服务水平作出贡献,为提高医院的整体实力从技术上提供支撑。糖尿病作为一种常见的慢性疾病,其临床症状及治疗方法相对成型,EMR数据规律性相对较强,因此,将其作为研究对象可从中找到EMR历史数据结构化方法并加以利用。今后,笔者还将以此为研究基础,对其他科室EMR历史数据进行深入研究,唤醒沉睡的数据,为医学教学及医疗服务提供参考。