如何在健康云上进行大数据的挖掘与分析
扫描二维码
随时随地手机看文章
一、健康云的兴起
随着我国经济持续稳定的发展和现代科技的日益进步,越来越多的人们开始重点关注自身健康。在满足日常工作和生活的需求之外,规律的健身休闲活动、年度体检、健康饮食已经成为越来越普遍的想象。与此同时,随着国家新医改政策的颁布和实施,与健康直接相关的医疗行业也正在迅猛发展。这里重点介绍一下我国医疗行业IT解决方案市场呈现的发展趋势:
1、 渐增的多样医疗数据源:医疗数据的生成和采集已经不再仅局限于医院这个单一环境。它还可以来自于体检中心、社区/乡镇卫生院、私人诊所、实验室检验中心、急救中心、家庭,随着物联网(IoT, Internet of Things)相关技术的发展,甚至可以说:个人医疗数据可以采自于任何适合的地方。
2、 医疗数据的高度集中化:区域医疗信息系统(RHIS, Regional Health Information System)将逐步取代现有的基于医院的信息系统。并且,它将更广泛的覆盖一个特定区域内的所有医院、社区、急救中心、体检中心、实验室检验中心、社会保险机构等。居民个人来自各个数据源的全周期医疗数据将集中保存在统一的区域数据中心中。医疗数据将不再只是某家医院独享的资源,而是与整个区域中的所有医疗机构共享,甚至可以与更上层的大区域级、国家级信息系统进行数据交换。
3、 从医疗信息系统到医疗信息服务:区域医疗信息系统的逐步建立将使先进的医疗信息服务的设计和开发变得更加便捷。例如:流行病分析、公共卫生事件预测、临床决策支持、慢性病管理、个性化的健康照护计划、日常卫生保健管理等。其原因是因为这些信息服务必须建立在数据集中化的基础上。这些服务的受众群体将是整个社会。
正是如上所述的发展趋势使得“健康云(Healthcare Cloud)”的建立才会成为可能。试想一下:在不久的将来,我们可以通过手机统一查询在不同医院的就诊记录、生化检验结果、处方和收费清单;慢性病患者在家中可以自测血压、血糖等指标并通过无线网络上传到区域医疗数据中心,医生也可以远程分析患者自测数据判断其病情发展;大量的知识和规则从海量数据中自动提取出来,并用来协助社区及基层卫生机构的初级医生对患者作出准确的诊断和用药决策;各个社区居民的医疗数据将会自动汇总,并进行统计分析,用以进行流行病、慢性病的自动筛查、趋势分析和爆发预警,为公共卫生机构制定防治干预计划和行动提供有力的依据和参考;患者的症状、生命体征、检验检测结果、医疗影像、诊断、处方、医嘱、手术、住院和账单等全周期数据将会进行全方位的跟踪和分析,为新药开发、新治疗方案的设计提供支持。上述这些事例都将是我们通过健康云可以逐步实现的。
当然,健康云不是一天就可以建成的,这将是个阶段性的工程。除了国家政策和地方支持等外围因素之外,云计算和大数据技术将会起决定性作用。从构建底层云基础架构、云存储方案,到中层的云计算平台,最后到上层的云应用服务设计和开发,至少需要3~5年的长期规划。其中,大数据分析部分更是纵向贯穿于云基础架构、云平台和云服务三层,需要整体设计和逐步实施。基于现有技术和需求,在本文中,我们暂且把健康云简化定义为:基于区域医疗信息系统的医疗信息服务,并重点关注1~3年的市场需求。
二、大数据分析技术的发展
区域医疗信息系统中的医疗数据是典型的大数据。所谓的“大数据”并不只是数量上的“大”。简单套用一下大数据的4V(Volume,Velocity,Variety,Value)定义:
1、 Volume:区域医疗数据通常是来自于拥有上百万人口和上百家医疗机构的区域,并且数据量持续增长。按照医疗行业的相关规定,一个患者的数据通常需要保留50年以上。我们可以想象这是多么巨大的数据量。
2、 Velocity:医疗信息服务中可能包含大量在线或实时数据分析处理的需求。例如:临床决策支持中的诊断和用药建议、流行病分析报表生成、健康指标预警等。
3、 Variety:医疗数据通常会包含各种结构化数据表、非(半)结构化文本文档(XML和叙述文本)、医疗影像等多种多样的数据存储形式。
4、 Value:医疗数据的价值不必多说,它不仅与我们个人生活息息相关,更可用于国家乃至全球的疾病防控、新药研发和顽疾攻克。
近年来,在卫生部的领导下和国家财政支出的支持下,绝大多数的三甲医院和部分二级医院已经先后建立了先进的数字化信息系统和电子健康档案系统。但至今为止,大部分系统和数据仍然只限于内部使用。据了解,2010年底,卫生部完成了“十二五”卫生信息化建设工程规划编制工作,初步确定了我国卫生信息化建设路线图,简称“3521工程”,即建设国家级、省级和地市级三级卫生信息平台,加强公共卫生、医疗服务、新农合、基本药物制度、综合管理5项业务应用,建设健康档案和电子病历2个基础数据库和1个专用网络建设。由此可看出,今后的几年,随着云计算技术的成熟和实用化,大规模区域医疗信息系统和大型数据中心的建立将逐步展开。然而,随着海量医疗数据被保存下来,一个棘手的问题出现了:我们如何通过高效的分析这些数据来提供有价值的服务?
大数据分析技术最初起源于互联网行业。网页存档、用户点击、商品信息、用户关系等数据形成了持续增长的海量数据集。这些大数据中蕴藏着大量可以用于增强用户体验、提高服务质量和开发新型应用的知识,而如何高效和准确的发现这些知识就基本决定了各大互联网公司在激烈竞争环境中的位置。首先,以Google为首的技术型互联网公司提出了MapReduce的技术框架,利用廉价的PC服务器集群,大规模并发处理批量事务。
利用文件系统存放非结构化数据,加上完善的备份和容灾策略,这套经济实惠的大数据解决方案与之前昂贵的企业小型机集群+商业数据库方案相比,不仅没有丢失性能,而且还赢在了可扩展性上。之前,我们在设计一个数据中心解决方案的前期,就要考虑到方案实施后的可扩展性。通常的方法是预估今后一段时期内的业务量和数据量,加入多余的计算单元(CPU)和存储,以备不时只需。
这样的方式直接导致了前期一次性投资的巨大,并且即使这样也依然无法保证计算需求和存储超出设计量时的系统性能。而一旦需要扩容,问题就会接踵而来。首先是商业并行数据库通常需要各节点物理同构,也就是具有近似的计算和存储能力。而随着硬件的更新,我们通常加入的新硬件都会强于已有的硬件。这样,旧硬件就成为了系统的瓶颈。为了保证系统性能,我们不得不把旧硬件逐步替换掉,经济成本损失巨大。其次,即使是当前最强的商业并行数据库,其所能管理的数据节点也只是在几十或上百这个数量级,这主要是由于架构上的设计问题,所以其可扩展性必然有限。
而MapReduce+GFS框架,不受上述问题的困扰。需要扩容了,只需增加个机柜,加入适当的计算单元和存储,集群系统会自动分配和调度这些资源,丝毫不影响现有系统的运行。如今,我们用得更多的是Google MapReduce的开源实现,即Hadoop。除了计算模型的发展,与此同时,人们也在关注着数据存储模型。传统的关系型数据库由于其规范的设计、友好的查询语言、高效的数据处理在线事务的能力,长时间地占据了市场的主导地位。
然而,其严格的设计定式、为保证强一致性而放弃性能、可扩展性差等问题在大数据分析中被逐渐暴露。随之而来,NoSQL数据存储模型开始风行。NoSQL,也有人理解为Not Only SQL,并不是一种特定的数据存储模型,它是一类非关系型数据库的统称。其特点是:没有固定的数据表模式、可以分布式和水平扩展。NoSQL并不是单纯的反对关系型数据库,而是针对其缺点的一种补充和扩展。典型的NoSQL数据存储模型有文档存储、键-值存储、图存储、对象数据库、列存储等。而比较流行的,不得不提到Google提出的Bigtable。
Bigtable是一种用于管理海量结构化数据的分布式存储系统,其数据通常可以跨成千个节点进行分布式存储,总数据量可达PB级(10的15次方字节,106GB)。HBase是其开源实现。如今,在开源社区,围绕Google MapReduce框架,成长出了一批优秀的开源项目。这些项目在技术和实现上相互支持和依托,逐渐形成了一个特有的生态系统。这里借用Cloudera所描绘的架构图来展现Hadoop生态系统。这个系统为我们实现优质廉价的大数据分析提供了坚实的技术基础。
综上所述,面对大数据分析的挑战,不管是计算模型还是存储模型技术都有了超前的进步。然而,仅凭借当前的技术,我们准备好面对健康云上的大数据分析的挑战了吗?下一节,我们将重点分析医疗数据的特有性质为大数据分析带来的挑战。
三、健康云上的大数据分析
由于医疗数据的一些特有的性质,给健康云上的大数据分析带来了特殊的挑战。
1、 医疗数据是持续、大量增长的大数据。根据估算,中国一个中等城市(一千万人口)50年所积累的医疗数据量就会达到10PB级。并且,随着时间的推移和业务系统的不断升级换代,医疗数据模式的一致性也无法保证。因此,每天都会有大量的数据持续不断的导入区域医疗数据中心,并且每当有数据模式的更改,相关的历史数据也需要做相应的调整。所以,区域医疗数据中心并不是简单的传统数据仓库概念。相比之下,它的模式更灵活、写入和更新的操作更多,而对数据存储的水平可扩展性的要求也更高。
2、 医疗数据是关系复杂的多维数据。由于医疗数据是多种数据源数据的汇总,数据之间的关系非常复杂。比如:一个简单的实验室检验检测值,必须同时记录这个值对应的编码系统和编码、单位、检测时间、检验项目、标本编码,以及相关联的患者主索引号、就诊机构、申请科室、申请医师标识号、报告医师标识号、审核医师标识号、正常值参考等等。一条检测记录就可以把患者、医生、医疗机构多个实体在不同层次上关联起来。而不同的医疗信息服务更需要从不同的视角来观察这些数据,如下图所示。比如:以患者为中心的服务需要把一个患者的全周期数据按照时间轴排列,并分析诊断、用药和患者生命体征、检验检测值之间的关联;以医生为中心的服务又需要把与一个医生相关的患者数据挑拣出来,并进行分类;以科室为中心的服务可能需要即从科室所属医生的角度,又要从在该科室就诊患者的角度进行分析;针对社区的服务可能需要统计整个社区居民某项指标(比如血压、血糖)的达标率。总之,医疗数据的多维度多粒度为各种信息服务的多角度多层次分析提供了可能,但同时也为大数据分析带来了挑战。因为我们不可能为每一种信息服务存储一份特定的优化模式的数据,况且我们也无法枚举出所有可能的信息服务需求。这就需要医疗数据的存储模型能够适应灵活多变的多维统计分析需求。
3、 医疗数据是具有语义的数据。大家可能听说过语义网(Semantic Web),它是为让数据能跨应用进行共享和重用所设计的框架体系。我们可以把语义网简单地理解为:一个让机器(machines)读懂的维基百科(Wikipedia),主要包括了各种条目的定义以及各个条目之间的关系。如果数据也采用这些条目和关系组织内容,那么机器就可以自动理解数据的语义,并推理出各种知识。所以建立语义网的关键就是如何制作一本百科全书(有个专有名词叫Ontology)。由于医学是一门非常严谨的科学,其在全球的标准化水平很高,对疾病名称、药物成分、临床特征、仪器设备等都有严格的定义以及关联描述。所以,语义网在医学领域得到了广泛应用。进而,医疗数据也越来越多的采用基于语义网的临床文档框架(CDA)格式的XML文档来保存。这些XML文档通过Ontology的解释,就变成了一个无比巨大的概念+事实+关系的网络。虽然机器能够读懂这个网络,并能够在上面进行逻辑推理,从而发现知识,但是其计算代价也是相当高的。当前的医疗系统通常会把复杂的临床文档解析成简单的属性值,并存入自定义的关系表中。这样做虽然会有大量的语义及关系的丢失,但却能够满足日常业务系统对数据处理性能的要求。但是对于未来的区域医疗信息系统来说,为了能够提供丰富全面的信息服务,我们必须尽可能的保留临床文档中的语义信息。这样,医疗数据分析的过程中就不可避免的需要对大量XML文档进行解析、对各种关系进行推理。这样的数据分析处理过程比我们之前提到的互联网数据处理要复杂得多。
通过上述的分析可见,简单地将现有的大数据分析技术套用在健康云服务上是行不通的。我们需要充分考虑健康云服务的特点和充分利用现有技术框架的灵活性,已达到最好的大数据分析性能。初步解决方案:
1. 基于Hadoop生态系统构建健康云数据中心,用以解决数据存储水平扩展的挑战。利用MapReduce并行处理批量事务的能力,从多个数据源(主要是医疗机构的各个业务系统)抽取数据、转换格式、并导入基于HBase的数据存储模型。
2. 在数据存储模型的设计上,借鉴已有的数据仓库中多维数据模型的设计思想,比如:星型模式和数据立方体的概念。在考虑应用需求的基础上,利用HBase中行键、列键、列族设计的灵活性,将多维医疗数据有效地组织在一起。而在索引技术上,结合RDBMS领域的成熟技术,用以进一步提高HBase的查询性能。对于数据模式的更新,HBase特有的多版本共存的特性正好成了解决问题的关键。
3. 为了保留医疗数据中大量的语义关系,采用结构化数据+XML文档混合存储的方式。在数据导入的同时,提取XML文档中特定的元数据,(比如:患者主索引、就诊科室、主治医师等),并将XML文档根据不同粒度打散成大小不一的子文档。根据不同粒度的查询条件,系统将自动选择相应的子文档进行进一步信息的解析,从而避免为提取少量信息而不得不解析大量XML文档的问题。
4. 数据模型的接口将采用Hive提供的类SQL查询的方式。这样更有利于数据分析人员设计分析算法。同时,系统中将嵌入多种数据挖掘算法供数据分析师使用。
综上所述,为解决健康云上的大数据分析问题,必须同时利用RDBMS和NoSQL的优势,并且采用结构化和非结构化数据混合存储的形式,相互弥补缺陷,已达到最灵活和最高效的设计。而这套基于健康云的大数据分析平台,也将有希望扩展到其他类似行业,比如:电信、能源、物联网和公共事业等。