基于临床业务系统的临床科研数据收集与整理的应用研究*

2018-05-10 03:18何志仁黄家杰傅昊阳刘旭生
世界科学技术-中医药现代化 2018年2期
关键词:数据表数据仓库病历

何志仁,黄家杰,邹 川,傅昊阳,刘旭生**

(1.广东省中医院肾内科 广州 51000;2.广东省中医院信息科 广州 510000;3.广州中医药大学第二临床医学院 广州 510000)

随着医院临床业务的信息化不断深入,从挂号、就诊、检查、缴费、取药、治疗等各个日常医疗流程都已经出现不同程度的信息化。临床业务系统协助我们完成临床工作。大量的临床数据在完成这些流程的过程中产生并保存。这些临床业务流程积累的数据是我们进行临床科研的宝贵素材。如何整合这些临床资料近期成为研究的热点[1]。

真实世界研究是近年来兴起的新的研究方法[2,3],要求广泛地收集真实世界的信息,进而对某一种临床治疗的疗效进行评价[4]。真实世界研究需要收集患者在诊疗过程中尽可能详尽的临床数据,因此需要在医院各个业务系统中对特定患者群的数据进行收集和处理。由于不同业务系统的构造逻辑和基础软件不同,导致统一提取和整理这些数据存在困难。难怪有学者认为,目前由不同开发商、不同临床科室、不同临床需求开发出来的临床业务系统组合而成的医院信息化构架,正在遭遇“信息孤岛”的尴尬[5]。

为解决上述问题,我们在现有的临床业务系统的基础上,构建一个用于专科临床科研的数据仓库。整合院内不同业务系统的病人身份信息,做到根据每个病人的唯一编码,就可以查询院内各个业务系统中该病人的数据,同时根据业务系统中某一个数据点,可反向查询其所属的病人信息,进而实现对整个数据仓库资料的筛选。在此数据仓库的基础上加入中医特色,构建有中医药特色的临床科研数据仓库。实现某一个病人的信息在整个医院各个系统中互联互通。

数据仓库[1]为支持决策管理建立的,是面向主题、集成的、稳定的、随时间变化的数据集合。通过针对国内外对医疗信息数据仓库的调研表明,目前多数文献报道的数据仓库涉及到的疾病一般局限在糖尿病、肿瘤、精神疾病、胃病、慢性肾小球肾炎等常见疾病,缺乏对整个科室或者整个医院病人数据整合的数据仓库[6]。中医界也缺乏在西医临床数据的基础上结合中医辨证、方药因素的临床数据库。

图1 数据仓库的总体设计概览

Python语言是一个结合解释性、编译性、互动性和面向对象的脚本语言[7]。Python语言的Django框架是目前流行的整合数据库和Web交互的程序设计语言框架[8],被广泛应用于各种轻量级的数据管理平台的建设。MySQL是一款开源的关系型数据库系统,目前被广泛使用的关系型数据库[9]。

我们以Python+Django+MySQL为框架在院内构建一个这样的数据仓库,收集从2008年至今在我院肾内科住院病人的相关临床数据。为目前科内多个临床研究提供大量数据支持。下面我们试图描述数据仓库中的数据结构,说明其构造过程并展示其应用成果。整个数据库的构建以及数据提取的过程都是通过Python语言编写的代码完成,读者如有兴趣了解进一步的技术细节可以联系作者查看源代码。

1 总体设计概览

利用Python+Django+MySQL构造一个独立于医院各种业务系统的统一的临床数据仓库,运行在医院内部网络的独立服务器上,实现一下三大功能:(1)从各个业务系统提取的数据接口提取数据;(2)把所提取的数据按照预设模型进行整理保存;(3)按照临床科研的需求对数据库进行检索并输出所需要的数据。

2 模型设计

基于Django构造与医院业务系统相匹配的数据模型。我院同时存在多个临床业务系统(住院病历、门诊病历、实验室检查、影像学检查、病理检查系统),根据各个业务系统可以提供的数据接口、临床研究可能需要的查询逻辑,对各个数据表的结构进行设计。大部分的数据表结构直接模仿对应业务系统的数据结构即可。考虑中医辨证处方、手术、有创操作可能是临床研究的关键节点。因此我们对住院病历接口输出的xml文件进行了文本分析,提取了其中中医辨证处方记录、手术记录、有创操作记录单独构造了相应的数据表。

结合中医院的特点,在住院情况数据表中专门加入了中医辨证以及中医诊断部分,以便记录,病人住院的中医情况。专门设置住院中医辨证处方数据表记录住院期间中药汤剂使用情况。

表1 临床科研数据平台数据库具体模型设计

图2 各个数据表之间的链接互查关系

上述的各种数据表之间,通过外键将各个数据库,与病人总索引数据表、住院情况数据表、门诊病历数据表相关联。各个数据表之间的关联如图。

3 业务系统的数据接口

3.1 住院病历系统接口

住院病历系统的接口提供住院病历的xml文档。其中包含入院记录、首次病程记录、中医辨证处方记录、病程记录、手术记录、有创操作记录、出院记录、死亡记录等常规的病历内容信息。通过Python的xml库提取这些记录的内容。通过简单的文本匹配可以提取病人的中医辨证依据,中医诊断,中医证候的记录。具体的提取字段,可以参见表1中提到的相关项目。

3.2 实验室以及门诊病历系统接口

实验室检查系统以及门诊病历系统接口为Web Service形式,提供病人的门诊号、住院号以及设定日期范围后即可返回该病人在制定时间内的实验室检查结果以及门诊病历信息。利用Python的suds库读取相应的Web Service接口。通过文本匹配可以提取门诊病历信息中的中医诊断、中药处方等细分内容也可以提取实验室检查中的项目名称、结果参考范围等内容。

3.3 影像检查系统以及病理系统接口

影像检查系统以及病理系统通过HTML文本分析提取影像检查结果数据以及病理数据。利用urllib、HTMLParser、xml、re库可以通过网页爬虫的方式读取网页报告形式影像学及病理报告。

4 数据抽取

考虑到信息安全,以及日常业务系统的负载,我们在院内设立了独立的数据仓库服务器,在临床业务系统负载较轻的时候分批从各个业务系统的数据接口读取数据。由于各个业务系统的数据接口不同,读取接口数据的时候需要使用的软件工具不尽相同,这个时候Python的灵活性就能解决大量的问题。Python有现成的各种读取接口的工具,可以方便地实现与各个业务系统接口的对接。数据的转换,由于不同接口的数据格式不同,同一个项目可能有多种表达方法,如性别,某些数据接口直接标识男、女,某些数据接口则标识M、F。我们自己构建了一个转义字典。统一这类数据标识的差异,在写入数据仓库的时候使用本仓库统一的标识。抽取过程中建立数据提取日志,防止数据的重复提取。

5 数据查询

对整个数据仓库的资料进行检索耗费大量的计算资源,因此在业务系统满足日常工作的情况下,难以应付复杂的科研数据查询工作。由于我们的数据中心与临床业务系统是相互独立的,因此我们的大规模检索并不影响医院日常业务的开展。我们的数据查询工作主要包括筛选与提取两个步骤。

5.1 病人筛选

所谓的筛选,就是设定特定的条件,选择数据库中的病人。由于数据库中各个数据表都可以通过病人主索引表进行连接。所以前面论述的表1中提到的各种数据表字段,都可以作为我们筛选的条件。例如我们可以根据病历中记载的中医证候、舌脉、过敏史、主诉等特征对病人进行筛选,也可以根据住院或者门诊检查中特定的检查结果的范围进行筛选,也可以根据手术、有创操作的种类和时间进行筛选,也可以根据中医辨证处方中特定的用药组合进行筛选。上述的多种维度可以同时或者先后根据逻辑关系对数据库中的病人进行筛选,最后得出一个病人名单。

5.2 数据提取

数据提取就是按照临床研究的需求,提取上述名单病人的特定数据表字段。同样的原则上前面论述的表1总的各种字段都可以作为数据提取项目。例如某些实验室检查结果,某些影像学检查结果,特定的手术、特定原因的住院等临床事件,例如特定中药处方或者药对的使用。可以利用Pyhton的数据处理能力根据科研需求输出CSV、Excel、SPSS、SASS等的数据文件格式,以便进一步进行数据分析。

6 实际应用举例

数据提取的过程通过Python脚本完成,截止2016年12月31日我们建成的数据库文件达2.3 GB。各个数据模型的记录情况如下表:

数据提取过程需要通过编写Python代码完成。筛选超过30 000人的住院以及门诊记录和其相关的实验室以及影像学检查结果。从编写代码到执行代码输出结果的平均时间可以缩短到1天,数据筛选和提取的效率有巨大的提高。具体的数据筛选以及提取流程如下:

6.1 数据筛选、提取目标

慢性肾脏病3-4期合并高尿酸血症住院患者的中医症候、舌脉特点以及血脂情况。

6.2 病人筛选

首先对住院情况数据表进行筛选,找到出院诊断中同时存在慢性肾脏病3-4期以及高尿酸血症的病人,把对应的住院情况记录列出,生成符合上述条件的病人列表。

6.3 数据提取

然后根据其住院情况记录读取相关的中医证候及舌脉情况。由于住院情况记录与实验室检查结果有关联,因此我们可以提取每一次住院情况对应的血脂情况的检验结果,将需要提取的数据就整理为一个数据表,进而进行数据分析。

7 讨论

本数据仓库建立在我院多年来信息化的数据积累的基础上[10],根据我们医院的实际情况进行模型设计和构建。由于各个医院的具体情况不尽相同,因此本系统的接口部分的可推广性不足。然而从各个系统中提取出数据,汇总后构成的新的数据模型(图2),经过我们的实践证明是一种行之有效的解决方案。可以高效地整合医院各个子系统的数据到一个统一平台进行查询和管理。在建设数据模型的过程中,我们发现统一的病人索引是我们整合各子系统数据的重要依据。在医院各个子系统设计时就需要考虑病人身份识别这个问题[11]。目前比较常用的处理方法就是通过病人的身份证号码作为鉴别身份的唯一标识。在门诊、住院、随访等分系统中均需要记录病人的身份信息。

本系统整合了医院中各个主要的临床业务系统的数据。目前国内的中医肾脏病临床数据库的建设多以文献数据库[12-14]或专病数据库为主[15]。我们的数据库收集了从2008年至今在我院肾内科住院的所有住院病人的门诊、住院、检验、影像学检查数据,并记录了病人的各种临床事件。由于所有数据在一个平台上,可以对大量的病人进行多维度的检索和筛选,极大地提高了真实世界回顾性研究数据检索和收集的效率。结合我们中医院的特点,在西医相关业务数据的基础上增加了相应的中医模块,对中医的辨证、用药等客观的中医临床实践进行详细的记录。使得中医药的辨证和用药有据可查。

本系统的特点就是数据直接来源于临床业务系统,无手工录入过程,尽可能挖掘现有数据的潜力,并不增加临床工作的负担,且数据的准确性得到保证,数据提取的效率得到有效提高。这样做可以在短时间内建立一个规模庞大的数据库。且临床资料随着日常的临床工作不断积累的,数据库的规模可以不断扩大,然后进行更大规模的研究。但是由于数据库的回顾特性以及未加入研究设计,不可避免的存在回顾性研究的种种问题[16]。在设计研究和定义筛选以及提取规则的时候需要认真考虑这些这些数据的真实性。

表2 数据仓库内各个数据表的记录条数

本系统存在以下不足。由于国内目前政策情况的局限,目前这个数据库并没有能够整合中西医医嘱数据,因此对病人的干预措施以及用药剂量方面数据整理无法进行。受限于国内病人流动性较大的特点,一家医院难以收集病人的所有临床事件。我们认为规范、规律的随访数据依然是临床研究必不可少的素材,全面系统的随访系统是临床研究必不可少的素材。目前我院也在开发相应的病人随访系统。通过对随访系统中数据整合,对临床数据记性跟进一步的整合。

本数据系统基于Python语言设计,临床研究者需要从数据库中调阅数据,需要编写Python语言代码来实现提取逻辑和定制提取的项目,对于临床研究者来说有一定的难度。开发交互式检索以及数据提取界面是我们下一步开发的方向。

本数据库整合的依然是自然语言记录的医疗记录,虽然实验室检查、影像学检查、病理学检查的结果实现了相当部分的结构化。然而病历资料的数据粒度还非常低,对病历资料的分析需要使用大量的自然语言处理技术,对普通的研究者有一定的门槛。而且如何利用自然语言处理技术分析病历记录恐怕是今后研究的一个重要方向。

1 吴琼.以临床数据仓库为核心的医院大数据平台构建.电脑知识与技术,2017,13(10):6-7.

2 Dormer L.How can real-world evidence be used in practice to demonstrate drug value and improve patient care.J Comp Eff Res,2017,6(3):183-184.

3 Sherman R E,Anderson S A,Dal Pan G J,et al.Real-World Evidence-What Is It and What Can It Tell Us.N Engl J Med,2016,375(23):2293-2297.

4 黄卓山,罗艳婷,刘金来.真实世界研究的方法与实践.循证医学,2014,14(6):364-368.

5 董方杰,蒲立新,曲建明,等.医疗信息院内交互与区域共享的架构及其技术研究.生物医学工程学杂志,2014,(4):788-792.

6 秦慎强.面向中医证候的慢性肾小球肾炎数据仓库的研究.成都:电子科技大学硕士学位论文:2016.

7 高昂.Django及国内Python社区进展.程序员,2009(9):23.

8 肖旻,陈行.基于Python语言编程特点及应用之探讨.电脑知识与技术,2014(34):8177-8178.

9 胡敏.Web系统下提高MySQL数据库安全性的研究与实现.北京:北京邮电大学硕士学位论文,2015.

10 易传亮,黄家杰,徐飞龙,等.中医临床科研共享平台建设.中国信息界(e医疗),2014(2):36-37.

11 李征.数据仓库统一身份认证系统的研究与实现.北京:北京邮电大学硕士学位论文,2006.

12 孔丽娅,柴可夫,牛永宁.数据挖掘方法在中医证候学中的应用.浙江中医药大学学报,2014,38(6):825-828.

13 魏立良.现代名中医尿血医案的数据挖掘研究.广州:广州中医药大学硕士学位论文,2014.

14 李鑫颉,贾振华,吴以岭.数据挖掘方法在中医医案研究中的现状分析.中国中医基础医学杂志,2012(1):117-118.

15 李开龙,张建国.肾脏病临床数据库简介.中国中西医结合肾病杂志,2003,4(3):180-182.

16 王祥配,宋毅鹏,何丽云,等.医院病历信息数据化的路径与方法研究.世界科学技术-中医药现代化,2015(2):389-393.

猜你喜欢
数据表数据仓库病历
强迫症病历簿
基于数据仓库的数据倾斜解决方案研究
“大数的认识”的诊断病历
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
基于数据仓库的住房城乡建设信息系统整合研究
基于列控工程数据表建立线路拓扑关系的研究
探析电力系统调度中数据仓库技术的应用
为何要公开全部病历?
村医未写病历,谁之过?