APP下载

大数据下慢性病患者健康档案管理系统的实现

2021-11-01李鹏汤志杰

微型电脑应用 2021年10期
关键词:数据仓库检索管理系统

李鹏, 汤志杰

(宜兴市人民医院 信息科, 江苏 宜兴 214200)

0 引言

随着医疗信息化的不断发展,医疗数据的扩展速度加快,覆盖范围不断扩大。大数据时代的到来为健康和医疗领域创造了新的机遇。大数据概念本身在医疗保健领域并不新鲜,医疗保健提供者在处理大量的医疗记录,尤其是慢性病时,不仅在质量和细节上有所提高,而且由于技术进步,其规模也在不断增加[1]。通常医疗大数据主要来源包含医学记录、MRI、CT、健康监测数据、基因组数据等。然而,医学数据可能是不完整的,有偏见的,甚至充满了噪声[2-3]。模糊信息、重复、噪声和超高维对医学数据的进一步利用将产生严重影响。

为了对数据进行分析,需要对数据进行预处理、数据建模、数据可视化和安全性等数据管理工作[4]。医学大数据预处理、集成涉及数据ETL[5-6](Extract、Transform、Load,提取、转换、加载)、多数据源集成、统一数据模型。基于现有大数据平台的典型算法和工具主要是为了使数据分析更加方便有效。同时,面对复杂的医学数据和日益增长的医疗需求,对于这样的大型存储库,如何以高效性能进行数据分析、搜索和检索已经成为一个挑战[7]。

数据索引一直是提高查询执行和数据搜索性能的有效机制。为此,国内外学者进行了许多深入研究,取得了众多成果。杨辉等[8]基于自然语言处理技术,实现医疗大数据平台上病历库中的相似病历检索。王红迁等[9]基于Hadoop的关键技术和海量的医疗数据,开发实现跨数据域多条件关联检索的系统,帮助医生快速获取有效信息。

然而,对于传统数据集的索引技术在应用于医疗大数据时表现不佳。因此,本文将着重研究医疗数据ETL管理、最小化索引开销、提高查询执行和搜索性能以及在聚合计算资源利用率的同时满足处理需求的医疗健康档案管理系统。同时考虑索引创建时间和索引大小,以便在工作中最小化索引开销。此外,为了评估查询执行和搜索性能,以仿真案例分析索引遍历时间和数据检索时间。

1 体系架构

健康档案管理系统是用于患者健康档案管理及大数据索引的通用框架,可在任何分布式系统上实现。该系统作为用户和分布式数据管理系统之间的中间层,可提供数据上传、查询执行机制及提供索引以方便对数据的搜索操作。

系统体系架构如图1所示。

图1 健康档案管理系统体系架构

共包括3层:(1) 用户界面(UI)层;(2) 应用层;(3) 数据层。用户通过界面层发起数据上传和索引创建操作,同时查询和索引搜索的结果由应用层返回至界面层供用户浏览。应用层接受来自界面层的数据上传和索引指令,并调用数据块创建在数据层存储数据,调用索引创建在数据仓库中创建索引。应用层还将查询作为界面层的输入,对存储在文件系统中的数据调用索引搜索,并通过界面将所需的数据返回给用户。数据层负责在可用存储上容纳数据块和指定的副本确保数据安全。

2 系统组成及功能

根据系统架构图可知,健康档案管理系统可分解为四个模块:ETL、数据块创建、索引创建和查询。ETL模块将从多个来源(如慢性病和健康监测数据源)提取数据,并对其进行清理、定制和插入到数据仓库中;第二个模块用于创建数据块,从而提高存储及检索的效率;索引创建模块利用B行树结构存储从数据块中提取的对;最后,查询执行模块检索期望的数据,该模块显示了对较大数据集的改进搜索性能。下面对系统组成及功能进行详细介绍。

2.1 ETL

ETL(Extract、Transform、Load)是医疗数据仓库中常用的数据库操作过程。ETL过程是数据仓库的关键组成部分,因为不正确或误导性的数据将可能产生错误的医疗决策。执行任务所依据的数据通常来自不同的来源,例如组织内各部门的多个可操作慢性病和健康监测数据库,以及外部供应商。不同的源包含不同质量的数据,并且使用不一致的表示、代码和格式。

2.2 数据块创建

现代大数据处理系统为大数据提供了分布式存储,数据可靠性通过数据复制得到加强。此外,每个大数据存储系统都有自己的数据分割机制,其中数据块大小和在数据仓库中的位置是确定的。当将数据拆分为固定大小的数据块时,最后一条记录将面临中断威胁从而造成数据损坏。因此,访问多个站点以检索损坏记录会增加总体数据加载时间。因此,为了减少访问结果记录所需的时间,每个记录都应该作为一个整体从单个站点访问。也就是说,引入数据块的模式使得每个块中的最后一个记录永远不会被分割。

在数据块创建阶段,记录被读取并存储在块中,直到块达到其存储限制。本文提供的块大小可根据数据中的正常记录大小或ETL系统的默认块大小进行调整。假设数据集表示为D,包含x条记录,则有式(1)。

(1)

其中,recordc表示第c条记录。进一步,算法1给出了数据块的创建过程。在分布式数据系统中,数据块的创建发生在数据上传之前,并将数据分成更小的块。然后将每个块以可调的复制因子加载到数据仓库中。

算法1 创建数据块输入:block_l=D_s,即数据块容量限额为D_s;flag_c=true,即数据块容量是否满额标识符;block_n=0,表示初始化数据块个数;while读取数据 do If flag_c=true and block_l

2.3 索引创建

索引创建过程在数据加载到数据仓库后进行,创建索引可以缩短数据检索时间。此外,还需要减少索引创建所带来的开销,这样不仅可以最小化数据上传到开始执行查询之间的延迟,而且还可以减少索引所消耗的额外空间。索引创建过程通过使用B-Tree结构进行索引来减少空间和时间开销。在索引创建阶段,将每个索引属性记录的内容作为键,将该记录的位置作为值。索引的创建过程如算法2所示。

2.4 执行查询

如前所述,索引在大数据处理中起着重要作用,它会导致系统开销增大。因此,从索引中获得的搜索性能必须大于索引创建过程所造成的开销。本节将展示系统查询执行模块。查询执行模块执行索引搜索并成功检索索引和非索引属性。数据块的容错性和可用性取决于底层数据层。因此,只要存储的数据块和索引可以从底层数据仓库中访问,系统的查询执行模块就会成功执行。此外,使用该模块完成查询执行和数据检索过程,取决于查询中谓词的选择。查询执行模块不为将非索引属性作为选择谓词的查询提供服务。

使用索引执行查询的过程如算法3所示。

算法3 执行查询输入:错误信息err_msg;查询query;索引index;目标名称name;目标属性attr;数据块位置block_loc;B-Tree ;数据块blockIf query 错误 then 返回err_msgEnd if从query获取name,attr,block_locIf attr存在index do Key= attr Value= block_loc For block do获取所有block的索引index获取中index中key End forEnd if

首先,分析传入查询以验证其语法并验证查询中指定的参数。在显示相应的错误消息后,系统将丢弃具有键入错误、语法错误或与文件系统中的任何文件不匹配的查询。通过对查询字符串的成功分析,我们可以确保查询索引的可用性(只有当索引对查询的选择谓词不可用时,才建议执行完全扫描操作)。我们加载并遍历相应的索引以查找记录的位置。最后,通过直接访问期望记录的位置从文件中提取数据。下一节将给出显示搜索操作性能的结果。

3 仿真分析

为验证本文所提架构性能,接下来以一个案例进行仿真分析。本文提出的所有模块和相关算法开发环境为Ubuntu系统下使用Python开发,评估监控管理系统时系统数据集如表1所示。

表1 系统数据集

系统验证时的数据集包括医学记录数据、MRI数据、CT数据、健康监测数据及基因组数据。这些数据集大小不等、格式各异并包含不同数量的信息。数据集的这些特性会影响数据加载开销、索引开销和最终的搜索性能。

进一步,将本文所提检索算法与启发式搜索检索结果进行比较。不同算法实现数据分类、检索算法的效率对比结果,如图2所示。

图2 不同算法数据分类、检索效率对比结果

由图2可知,当数据量较少时,两种算法性能相差无几。但随着数据量不断增多,本文方法检索效率不断提高,并且远高于启发式算法。特别是当索引文件数量较多时,启发式算法的检索率越来越低,不堪重负。故本文方法更适合于海量数据的检索工作。

4 总结

本文对医学数据预处理、数据建模、安全性、数据检索等进行了研究,提出了具有数据管理及高效检索的健康档案管理系统。该系统提供了在数据集上创建多个索引的功能,索引开销最小,创建和遍历方面足够快,占用的空间更少,从而提高了数据管理及搜索性能。

本文在系统建立及模型验证时运行在较理想环境,假定模型不会遭受如恶意攻击、信息篡改等情况。未来研究的方向可包括用户隐私保护、数据安全分析及解决时延、干扰等通信问题。

猜你喜欢

数据仓库检索管理系统
基于James的院内邮件管理系统的实现
基于数据仓库的数据倾斜解决方案研究
基于数据仓库的住房城乡建设信息系统整合研究
基于LED联动显示的违停管理系统
海盾压载水管理系统
探析电力系统调度中数据仓库技术的应用
专利检索中“语义”的表现
基于数据仓库的数据分析探索与实践
基于RFID的仓储管理系统实现
国际标准检索