本站小编为你精心准备了临床医疗数据仓库构建方法参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
《中国生物医学工程学报》2016年第二期
摘要:
医疗信息的复杂性和动态性给医疗信息系统带来巨大的挑战,openEHR规范的两层建模思想提高医疗信息系统的灵活性,适应医疗信息需求的变化。但面临查询数据量巨大、查询条件复杂多变的个性化操作需求时,基于openEHR两层建模方法实现医疗信息系统查询性能较低,这主要与底层数据存储模型有关。数据仓库多维数据模型具有高性能查询的优点,通过建立满足个性化需求的数据集市,可以加快数据查询速度。由于基于openEHR规范两层建模方法实现的医疗信息系统的特殊性,传统的数据仓库构建方法使得用户的参与性较低并且费时费力。针对这一问题,以openEHR规范的两层建模思想为基础,提出模板到动态数据仓库多维数据模型的映射方法,实现多维数据模型的用户可配置,利用映射路径加快ETL的实施,为医疗行业提供一种可操控、可扩展并真实反映用户需求的数据仓库构建方法。对该方法进行性能上的验证,结果表明,在10861522条数据中查询329条数据时,基于该方法构建的数据集市是基于openEHR两层建模方法生成的数据库的5.6倍,是基于传统方法构建的数据集市的0.97倍。
关键词:
openEHR;模板;数据仓库;多维数据模型
医疗领域的医学知识和医疗业务需求复杂多变,采取传统的医疗信息系统开发方法,工程技术人员不仅要在医疗信息系统开发之时即与医疗领域专家反复讨论确认,而且在系统的使用过程中还要不断对系统进行维护和更新,这使得医疗信息系统很难及时响应医疗人员对医疗信息的需求。openEHR规范作为一套开放的EHR(electronichealthrecord)体系结构,其核心在于将医疗领域知识从具体的临床信息中分离出来,并建立两层模型———参考模型和原型模型[1-2]。按照openEHR规范的设计,系统底层结构的开发主要基于参考模型,而系统中所涉及的领域概念全部由原型定义,这就有效降低了系统底层结构对领域知识的依赖性,从而使系统对领域知识变化的适应能力大大增强。领域知识层由原型和模板组成,允许领域专家直接定义,从而“把临床医生放回了驾驶员的座位上”[3]。
目前,国际上开展了很多基于openEHR规范的医疗信息系统的研究[4-5],对openEHR两层建模思想进行了验证。在基于openEHR规范构建的医疗信息系统数据持久化层方面,国内外已研究出基于openEHR两层模型方法建立的医疗数据存储平台。该平台通过读取由领域专家定义的openEHR领域模型来满足相应的数据存储需求,实现医疗数据存储结构的高度可适应性和可扩展性。其中,开源的基于openEHR体系结构的Opereffa原型系统底层使用关系数据库存储医疗数据[6],瑞典林雪平大学的SergioMirandaFreire等实现了使用XML数据库存储基于openEHR规范的医疗数据文档[7],日本会津大学的AasthaMadaan等实现了由原型驱动的基于NoSQL数据库的医疗数据存储平台[8]。除此之外,浙江大学的王利等为了管理复杂和不断发展的医疗信息,利用openEHR两层模型和原型驱动方法的高度可适应性和可扩展性,设计并实现了一个由原型驱动的基于关系型数据库的医疗数据存储平台,由原型映射到关系型数据库表来实现灵活的数据存储。在ARM的基础上,该研究将AQL扩展为具有完整数据操作功能的数据操作语言,并在数据存储平台上进行了技术实现,从而使该数据存储平台通过一组网络服务对外提供灵活的数据访问[9]。基于openEHR两层建模实现的医疗信息系统提高了系统的灵活性,适应了医疗信息的变化和更新,但面临数据查询量巨大、查询条件复杂多变的个性化操作需求(报表、集成视图等)时,基于openEHR两层建模实现的医疗信息系统查询性能较低。这主要与底层数据存储模型有关,数据仓库多维数据模型拥有高性能查询的优点,通过改变基于openEHR两层建模实现的医疗信息系统底层数据存储结构,可以解决个性化操作需求中存在的性能问题。对于此类问题,目前采用数据驱动和应用驱动相结合的数据仓库开发方法,即根据数据源和具体的需求来设计多维数据模型,再进行相应的ETL设计实现,建立数据仓库[10]。由于基于openEHR规范两层建模方法实现的医疗系统的特殊性,系统持久化层会伴随领域知识的改变而发生变化,相应的数据仓库多维数据模型以及ETL设计都需随之发生改变;采用传统的数据仓库构建方法,在数据仓库的开发与维护过程中,技术开发人员需要不断地与用户进行沟通交流来明确用户的需求,费时费力且容易出错,用户的参与性较低,不能很好地适应领域知识的变化。针对这一问题,为了提高数据仓库构建时用户的参与性,加快数据仓库的构建速度,更好地满足用户的个性化需求,本研究以国际标准openEHR为基础,采用两层建模的方法,提高用户的可操控性,利用数据仓库多维数据模型高性能查询的优点,提出模板到动态数据仓库多维数据模型的映射方法。与传统的数据仓库构建方法相比,该方法实现了数据仓库多维数据模型的用户配置,提高了建立数据仓库时用户的参与性;在多维数据模型与数据源之间建立了映射关系,根据自动生成的映射路径可以快速地访问数据源中的数据结构、数据类型等信息,加快了ETL工作的进行,降低了构建数据仓库的周期。
1多维数据模型映射方法
openEHR原型通常是对临床知识完整定义,而在实际的医疗环境中,往往不需要记录如此完整详尽的信息。openEHR模板是根据实际临床需求,对若干原型合理组合并做进一步的语义约束,不会对原型施加任何新的语义。模板与原型的不同之处主要在于:原型通常需要在国家甚至国际层面上进行统一制定,以保证得到的原型具有通用性,可以被广泛共享。而模板的制作通常是相对局部化、本地化的事情,每个软件系统都可以根据自己的本地化需求,定义出一系列特定的模板。研究模板到动态数据仓库数据存储模型映射方法,更能切实地满足医疗工作者的个性化需求[11-12]。基于openEHR原型关系映射方法构建医疗信息系统,在显著提高数据持久化性能的同时,使医疗信息系统能够适应医疗信息需求快速发展变化的形势,促进医疗信息系统的应用[9]。目前,该构建方法被广泛采用,本研究选取基于openEHR原型关系映射方法生成的关系型数据库,作为构建数据仓库的数据源。数据仓库技术采用多维数据模型,多维数据模型把数据看作是多维空间中的点集,把集合的属性分为维和度量两类:维属性用来描述度量属性,是多维空间的维度;度量属性的值用来进行分析处理,是多维空间中的点。根据事实表和维表的关系,又可将常见的模型分为星型模型和雪花模型。两者在数据冗余度和查询性能上有所区别:雪花模型冗余度低,查询性能较低;星型模型虽然冗余度高,但查询性能好。因此,在冗余可以接受的前提下,实际中运用星型模型更多,也更有效率[13-14]。采用基于openEHR的临床医疗数据仓库构建方法,其主要技术路线如图1所示。模板真实反映了基于openEHR规范两层建模方法实现的医疗信息系统底层数据存储结构。该技术路线从模板出发,通过映射模块在模板与多维数据模型之间建立关联,在此基础上进行基于模板的元数据处理和ETL过程,实现数据集市建立。映射模块实现模板到动态数据仓库多维数据模型的映射,具体实现方法为:映射模块对传入的模板进行解析,生成反应模板内部数据结构信息的树形结构,根据原型关系映射规则对树形结构中的可选项进行筛选。用户通过对树形结构中节点的挑选,组合成满足需求的多维数据模型,并自动收集模板到多维数据模型的映射关系以及必要的元数据。ASP.NET是建立、部署以及执行Web应用程序的平台,它为构建新一代动态网站和基于网络的分布式应用提供了有力的支持。ASP.NET下MVC设计模式将程序分成相对独立而又能协同工作的3个部分———模型、视图、控制器,可以清楚地分离用户界面与业务逻辑,能够为系统开发提供基本的分析方法和清晰的设计框架[15]。本研究基于ASP.NET下MVC设计模式开发来实现。
1.1模板解析模板遵循TOM(templateobjectmodel)定义,原型由ADL(archetypedefinitionlanguage)定义。openEHR模板是根据实际需求对若干原型的合理组合,在模板解析中需要访问模板引用的原型。openEHR参考模型和原型定义了大量的类和属性,以及类之间的关系,尤其是参考模型,它不仅定义了openEHR的上层组织结构,而且对openEHR中各类信息的组织结构以及数据类型、数据结构等都进行了详细定义。因此,直接访问完整的参考模型和原型的实施将会是一项非常庞大的工程。目前,国际上已经出现了多个openEHR规范实施项目,其中比较有代表性的是瑞典Linkping大学RongChen等人组织开展的openEHRJAVA开源参考实施项目。该项目已经对RM和AM进行了比较完整的实现,因此,本研究RM和AM的实现直接基于此JAVA参考实施项目。根据实际需要,采用了openEHRJAVA的模块adl-parser和模块xml-serializer。模块adl-parser实现了ADL文件到AOM、AP对象的解析,模块xml-serializer实现了AOM、AP对象到XML文件的序列化。通过以上两个模块,可以将ADL文件转化为既方便计算机处理又具有一定可读性的XML数据文件。JAVA类文件并不能直接在ASP.NET下运行,IKVM.NET是开源的基于.NETCLR的JAVA虚拟机,该项目虽然在安全性上有待改进,但实现了JAVA程序在.NET下的运行。本研究通过引用以上两个模块和IKVM.NET,将ADL文件转化为方便计算机处理并且具有一定可读性的XML数据文件。JSON作为一种轻量级的数据传输格式,可以在多种语言之间进行数据交换。JSON易于阅读和编码,并且是JavaScript规范的子集,能够被支持JavaScript的浏览器所解析;相比XML,它减少了解析时带来的性能和兼容性问题,使其成为了理想的数据交换语言[16]。因此,本研究将JSON作为数据交换语言。在实现中,主要是XML文件到JSON对象的转换,这一过程借助XML2JSON插件完成。
模板解析技术的实现路线如图2所示。将模板转化为JSON对象后,传入后台解析模块,后台解析模块依次调用需要的原型,原型经过一系列的转化后转变为JSON对象,返回后台解析模块,后台解析模块解析模板,并生成一个真实反映模板内部结构的JSON对象,传入前台解析模块,前台解析模块遍历该JSON对象,生成模板对应的树形结构。在本研究中,将基于openEHR原型关系映射方法生成的关系型数据库作为构建数据仓库的数据源。为了真实地反映数据源中的数据结构信息,根据原型关系映射规则,对树形结构中的可选项进行了筛选,原型关系映射规则[9]如下:1)每个原型映射为一个关系数据库表,数据库表名为原型名。2)每个基本类型的原型属性映射为一个关系数据库表字段,字段名为属性名,字段类型为属性数据类型,字段长度为属性数据长度。3)每个集合类型的原型属性映射为一个单独的数据库表,数据库表名为“原型名_集合类型属性名”,包括主键字段,字段名为“原型名_集合类型属性名”;关联到原型对应的数据库表的外键字段,字段名为原型名,字段类型与原型对应的数据库表的主键字段类型相同;集合类型属性对应的字段,字段名为集合类型属性名,字段类型为集合类型属性数据类型,字段长度为集合类型属性数据长度。4)每一个archetypeslot类型的原型属性映射为一个单独的数据库表,数据库表名为“原型名_archetypeslot属性名”,包括主键字段,字段名为“原型名_集合类型属性名”;关联到原型对应的数据库表的外键字段,字段名为原型名,字段类型与原型对应的数据库表主键字段类型相同;archetypeslot类型属性对应的字段,字段名为“archetypeslot类型属性名”,并关联到目标原型对应的数据库表。根据以上规则,树形结构中能够映射到关系型数据库表字段名的节点为可选项,其他节点为不可选项。树形结构各节点name按照是否可选进行了不同的命名方式。不可选项name为对应模板层次结构中节点的属性名,可选项name由对应模板层次结构中节点的属性名、属性数据类型、该属性节点在模板中的完整路径三者拼接而成,以方便信息的传递。
1.2可操控配置个性化需求复杂多变,而模板包含了满足实际应用的信息,用户通过对解析模板生成的树形结构中有价值节点的选择,组合成满足个性化需求的事实表和维表,构建数据集市的多维数据模型。具体实现方法如下:根据数据仓库多维数据模型的相关定义,允许用户在建立数据集市时创建一张事实表和多张维表。在创建表的过程中,表名由用户手动输入,并进行唯一性检验,避免表名重复。用户通过对树形结构中有价值节点的选择,将该选中项的name信息传送到对应表,生成对应表的行信息,用户可以指定已创建表中的某一行为主键或某些行组合成复合主键,并可以对已创建的事实表和维表进行主/外键关联操作,组合成多维数据模型。数据集市是聚焦的、面向特定主题的,它通常致力于单一的某个领域,且为特定用户服务。为了方便对数据集市的使用与管理,在用户建立多维数据模型时,需用户输入数据集市的唯一性命名以及面向对象等元数据信息。
1.3数据库生成该模块的主要功能是根据用户已经建立好的多维数据模型,生成数据库,并收集部分元数据信息。用户输入命名的事实表名和维表名通常不符合实际数据库表名的命名规则,需经过解析转化符合命名标准的表名。解析用户配置生成的事实表和维表的各个行信息,得到该行的属性名、属性数据类型、属性节点的完整路径。解析后的属性名和属性数据类型主要为生成数据库表字段服务,而属性节点的完整路径提供AQL查询,可以查询到生成表字段的对应节点在原型中的信息,并可与通过原型关系映射生成的关系数据库中的表字段关联起来,方便数据的集成处理。解析后的属性名并不能直接作为生成数据库表的字段名,需经过解析和唯一性处理生成对应表的字段名,字段类型为对应属性数据类型。然后,收集主/外键关联信息,生成对应的创建关系型数据库表的SQL语句,在数据库中创建事实表和维表,并记录下生成的数据集市名、数据集市面向对象、表名、表字段、表字段对应的属性节点的完整路径等元数据信息,便于对数据集市的管理。
2结果
为了验证该方法是否可行,笔者针对查询检验信息的相关报表中存在的性能问题,根据模板到动态数据仓库多维数据模型映射方法,构建了满足需求的多维数据模型,通过专业的ETL工具SSIS,对数据进行了集成处理,建立数据集市,希望通过改变底层数据存储结构,提升查询性能,实现数据仓库的快速构建。选取了与检验信息相关的模板中有价值的节点,配置基于openEHR模板的多维数据模型,生成的数据库表结构如图3所示。该模型为包含一张事实表和三张维表的星型模型,涵盖了满足个性化需求的所需数据。其中,事实表FactLaboratoryTest存放了检验结果的相关数据,复合主键为TestReport_ID、ItemOrder。维表DimPatient存放了病人基本信息的相关数据,主键为PatientIdentifier_Identifier;维表DimAdmin_PatientAdmission存放了病人就诊的相关数据,主键为EncounterIdentifier;维表DimInst_LaboratoryTestRequest存放了检验申请的相关数据,主键为RequestorIdentifier。3个维表通过主键与事实表FactLaboratoryTest建立关联。在ETL过程中,基于openEHR原型关系映射生成的关系型数据库为数据源,利用构建多维数据模型时收集的表字段的完整路径与基于openEHR原型关系映射生成的关系型数据库中的表字段进行关联,快速地查找到其在数据源中对应数据的数据结构、数据类型等相关信息,在此基础上进行数据的集成处理。数据抽取频率设定为每天一次,抽取策略采用全量抽取,在ETL引擎中完成数据转换,然后对数据进行装载。
为了检验查询性能是否得到了提升,在基于模板到动态数据仓库多维数据模型映射方法建立的数据集市和基于传统方法建立的数据集市、基于原型关系映射生成的关系型数据库间进行查询性能对比,挑选了三者中的部分数据作为测试数据集,数据包括57465位病人基本信息、1210798条检验申请记录、840746条检验报告记录、10861522条检验结果记录。分别在三者中对某病人的相关信息、26条检验申请记录、24条检验报告记录、329条检验结果记录进行了查询。测试电脑配置CPU为Intel(R)Core(TM)2DuoCPU,内存为4GB,操作系统为Windows7.1Enterprise32位,数据库为SQLServer2012Enterprise32位。在三者中,分别进行了3次查询,所花费的时间以及各自平均查询时间的结果如表1所示。查询结果表明,在基于模板到动态数据仓库多维数据模型映射方法建立的数据集市中,对某病人的检验相关信息进行3次查询所花费的时间均值为274ms。在基于传统方法建立的数据集市中,花费的时间均值为265ms;在基于openEHR原型关系映射生成的关系型数据库中,花费的时间均值为1520ms。在查询性能上,基于模板到动态数据仓库多维数据模型映射方法是基于传统方法建立的数据集市的0.97倍,基本持平。与基于openEHR原型关系映射生成的关系型数据库相比,基于模板到动态数据仓库多维数据模型映射方法构建的数据集市在性能上提升了约5.6倍。总体表明,根据模板到动态数据仓库多维数据模型映射方法,可以配置满足个性化需求的多维数据模型,利用多维数据模型与数据源中数据建立的映射关系,方便了ETL过程的进行,实现了数据集市的快速建立。查询时间对比表明,该方法切实可行,大幅提升了个性化需求的查询性能。
3讨论
在本研究中,基于openEHR规范,提出了模板到动态数据仓库多维数据模型的映射方法。与传统的数据仓库构建方法相比,该方法充分利用了openEHR两层建模思想的模板领域知识驱动、易扩展、反映本地化需求等优点,使用户在无需了解数据源底层数据存储结构的基础上,实现了数据仓库多维数据模型的用户可配置,提高了在数据仓库构建过程中用户的参与性,避免了数据仓库开发前期的需求分析工作,满足了用户的个性化需求。在数据仓库多维数据模型的构建过程中,自动收集了数据源与多维数据模型间的映射关系,利用映射路径,方便ETL过程的处理,提高了数据仓库的构建效率。用户参与数据仓库中多维数据模型的设计有利也有弊。用户临床医疗知识和计算机操作水平的差异,会影响到多维数据模型的质量,并直接关系到数据集市的服务水平。在这一点上,本研究提出的模板到动态数据仓库多维数据模型的映射方法做了妥协。用户需要在技术人员的指导下进行模型的设计,借助专业的ETL工具实现数据集成。提高用户在临床医疗数据仓库系统开发过程中的参与性,让用户成为数据仓库构建的主角,是缩短系统开发周期、满足用户个性化需求的重要手段。但是,让用户独立配置数据仓库还是具有一定的风险,所以领域专家的指导和培训非常重要。通过培训,让用户了解临床医疗数据仓库的相关知识,以及将医疗数据仓库的领域概念与医疗领域知识相结合,对于数据仓库配置过程中以用户为主体具有一定的可操作性。
4结论
在本研究中,针对基于openEHR两层建模思想实现的医疗信息系统在个性化操作需求时存在的性能问题,提出了模板到动态数据仓库多维数据模型的映射方法。对该方法进行了验证,表明通过该方法能够建立满足需求的多维数据模型,实现多维数据模型的用户可配置。通过对数据的集成,在查询性能上进行了验证,表明基于该方法建立的数据集市与基于原型关系映射方法生成的数据库相比,能够大幅地提升查询性能,与基于传统方法构建的数据集市在查询性能上基本持平。该方法充分利用了openEHR规范领域知识驱动的优点,为医疗行业提供一种可操控、可扩展、能真实反映用户需求的数据仓库构建方法。
作者:王冬冬 叶枫 吕旭东 闵令通 王利 单位:浙江工业大学经贸管理学院 浙江大学生物医学工程与仪器科学学院