武汉市中心医院:基于Hadoop的医疗云平台构建研究
1 引言
随着《关于积极推进“互联网+”行动的指导意见》、《促进大数据发展行动纲要》、《云计算综合标准化体系建设指南》等一系列规章制度的出台,云计算、物联网、移动互联网、大数据等信息化技术快速发展,为优化医疗业务流程、提高卫生服务效率提供了条件,必将推动医疗卫生服务模式和管理模式的深刻转变。医院信息化建设在这个大背景下平稳前行,但也存在着信息孤岛、数据安全隐患、数据挖掘层次低等缺点。为更好地促进医院信息化发展,满足医院各科室自身业务发展需要,最大限度地整合、优化、利用医院现有信息资源,设计了基于hadoop的医疗云平台。
2 hadoop技术优势
众所周知,医院内部信息系统繁杂,所采用的数据库、开发语言、数据格式各种各样,导致系统之间的数据难以交互,但医院对数据的集中管理与挖掘分析的需求却日益旺盛,过去关系型数据库产品也无法满足云计算的需要,因此基于hadoop的医疗云平台应运而生,它是实现未来统一数据管理,提高并发和实时数据挖掘的有效方案。
Hadoop是一个分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。其最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算。总体来讲,Hadoop具有开源、分布式、智能压缩、自有备份、无格式限制、稳定等优势。
3 云平台搭建的基础环境
软件:64位Centos 6.4 basicserver版、Java/python/shell脚本、大数据平台CDH5版本、64位JDK1.7版和Mysql 5.0;硬件:内存64G、CPU Intel(R) Xeon(R) CPU E7-4809 v2 @ 1.90GHz、SAS硬盘、千兆网络。
Hadoop集群配置步骤:在服务器上安装Centos 6.4 basicserver;在服务器上安装jdk 1.7;在各台服务器上做好免密码验证;关闭防火墙和Selinux;安装CDH。有三种方式,分别是tar包、rpm包和cloudera manager。因为rpm具有安装便捷性和规整化,采用这种方式;在相应的服务器上依次对NameNode、DataNode、Zookeeper、Hive、JobTracker和TaskTracker等Hadoop组件进行配置;分发Hadoop配置信息;格式化分布式文件系统;启动Hadoop集群;查看Master和slave的运行状态。在NameNode与DataNode上,通过查看相应的服务状态查看其运行状态。
4 云平台功能设计
我院基于Hadoop的云平台建设主要是在Paas层,由数据采集、数据清洗、数据汇聚、数据备份、数据导出等5部分组成。功能框架图见图1。
4.1 数据采集 由于我院很早就构建了系统集成平台(Ensemble),实现医院企业服务总线(ESB),解决点对点集成带来的难于扩展及接口不易管理问题,该平台上面已经存在了很多业务系统的接口相关信息,所以云平台的数据采集方式是通过集成平台的中转来获取业务系统的数据,最大化地减少业务系统的接口改造,节省人力。数据采集使用一款开源的sqoop工具,可以将一个关系型数据库(如MySQL ,Oracle等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中,具有高效可控、并行性强等优点。采集的数据主要来源于医嘱系统、收费系统、电子病历、检验系统、影像系统、药房管理系统、心电系统、病理系统等,数据格式包括字符型、数值型、时间型、图片格式等。
4.2 数据清冼 HDFS提供了一种跨服务器的弹性数据存储系统,有着高容错性、高吞吐量等特点,非常适用于有超大数据集的应用程序,能在Hadoop集群中的大量机器之间以块序列的形式存储大量的文件。医院信息系统的数据被采集后,就是存储在这里。在此基础上,选用Hive工具对这些数据进行清冼,主要包括不完整数据的清洗、错误数据的清洗和重复数据的清洗。清冼的目的主要是为了提高数据质量,以便在海量的数据中,更快、更准地挖掘出用户感兴趣的信息。Hive工具可以将结构化的数据文件映射为一张数据库表,使用类SQL的HiveQL语言实现数据查询、汇总、分析等。由于数据存储在HDFS,所以Hive在加载数据过程中不会对数据进行任何的修改,大大减少了在查询过程中执行语义检查的时间。
4.3 数据汇聚 此阶段同样使用Hive工具对数据进行汇聚,即在数据清冼的基础上,按照我们需要的数据表格式对数据进行处理,将汇聚后的新表同样是存储在HDFS。根据我院的实际情况,汇聚表数据主要包括5大类资源库:临床诊疗主题库、业务运营主题库、患者主索引库、健康管理数据中心库、公共数据字典库。临床诊疗主题库主要是为临床数据中心(CDR)服务的,含病历概要、门(急)诊病历记录、住院病历记录等53个子集。业务运营主题库主要是为数据分析中心(BI)服务的,含病区日报表、患者基本信息、门诊日报表等80张数据表。患者主索引库主要是将医院中所有异构系统按照以人为单位,将分散的数据进行互联。健康管理数据中心库以突出慢性病主线,用以为后续医院建立涵盖医院、社区、家庭的健康管理与健康协同应用做数据准备。公共数据字典库是建立标准的基础数据字典,保证进入存储库的数据的规范性和一致性。
4.4 数据备份 数据备份包括清冼之前的源表数据与汇聚之后的新表数据,每天凌晨1点开始备份一次。备份表为文本格式,经压缩后以gz格式存储,有利于节省空间,存储在两个地方,分别是HDFS、 hadoop集群外的服务器,相当于是双备份双保险。在系统运行之初,会先初始化一次数据,即将一定时间段内的历史数据一次性采集到云平台,也会将此数据全备份一次,后续每天新增数据采取“时间+主健” 的方式来采集,备份时也采用增量备份。备份表是通过分区表来创建,分区表是按照年、月、日三个等级来划分,如一个表test_back,创建表时可以加上分区表字段partitions(year string,month string,day string) 建立三层分区,这个在云存储上对应为三层目录,如2016年1月1号的,对应的目录为year=2016/month=01/day=01。这种处理方式可以有效管理数据、查询数据。
4.5 数据导出 我院所有基于云平台的应用都是在SaaS层接入,即可以直接基于HQL作开发应用,又可以接入第三方应用软件。HQL接近SQL语句查询语法, 也提供了更加丰富灵活、更为强大的查询能力,但目前直接基于HQL语言作开发的公司较少,应用有限。在接入第三方应用软件时,为了保证数据的完整性与安全性,我们直接将云平台中的数据按照第三方系统的数据格式要求进行处理后,定时导出到第三方系统的数据库中去[5]。在数据导出的过程中,使用到了kettle工具中的spoon产品。Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。SPOON 可以通过图形界面来设计ETL转换过程,具有可视化强、容易配置等优点。
5 应用效果
我院已将近5年的历史数据全部导入医疗云平台,数据总量约为3.8T,数据条数约为2.8亿条,后续每天数据增量约为2G、数据条数约为14.7万。在基于Hadoop的医疗云平台基础上,我院已接入第三方应用为临床数据中心(CDR),其数据均来源于云平台的定时传输,目前运行稳定,验证了本文提出的基于Hadoop构建医疗云平台的思路是切实可行的,将Hadoop技术引入医疗行业可以解决更多数据共享与分析的问题。
(来源:《中国数字医学》2016年6月第6期 作者及单位:刘晶 左秀然 杨国良 武汉市中心医院;王鑫 翔傲信息科技(上海)有限公司)
相关阅读:互联网金融与健康医疗融合应用研究
标签:   医疗云平台