1.一种异构医疗健康数据存储和检索方法,其特征在于:所述方法包括异构医疗健康数据存储方法和异构医疗健康数据检索方法;
所述异构医疗健康数据存储方法包括以下步骤:
S11:建立MySQL和HBase数据库表;
S12:采用预分区法对HBase划分Region,设置Region的Rowkey范围,并禁用HBase的自动Split;
S13:设置不同类型的Rowkey有不同的组成结构,数据Rowkey的组成为Hash+Rowkey,其中Hash是在整个HBase表的Region范围内散列生成的Hash值,而Rowkey则是数据插入时的原始Rowkey;索引Rowkey的组成为StartKey+IndexKey+IndexValue+DataRowkey,其中StartKey是Region的起始分区点,IndexValue表示索引的值,DataRowkey即为数据Rowkey,即Hash+Rowkey;
S14:抽取转换加载ETL模块根据不同医疗协议数据交换标准将数据抽取至数据库,其中结构化数据插入MySQL,图像数据和医疗文本数据插入HDFS中,元数据插入HBase;
S15:HBase接收到Client端的数据插入请求,协处理器捕获Put请求,执行重写后的prePut方法;
所述异构医疗健康数据检索方法包括以下步骤:
S21:创建Protubuf文件,自定义RPC请求方法和响应方法;
S22:检索模块判断Client端的查询需求,如果查询数据为结构化数据,则进入S23;如果查询数据为非结构化数据,则进入S24;如果为异构类型,则使用多线程模式异步获取数据,分别执行S23和S24~S210;
S23:根据条件查询MySQL,完成后进入S211;
S24:检索模块根据Client的查询字段查询索引配置文件,匹配最佳索引,并生成查询条件表达式;
S25:检索模块将索引类型IndexKey和查询条件表达式作为RPC请求方法参数,然后并行请求到每一个RegionServer上,RegionServer利用代理组件在每个Region上进行查询操作;
S26:在每个Region的查询操作为:首先获取当前Region的StartKey,将StartKey和索引类型进行拼接作为索引前缀,然后将查询条件表达式的首字段的查询范围边界值与索引前缀进行拼接后作为Scan的StartRow和StopRow,然后在当前Region进行Scan查询;
S27:如果Scan结果集不为空且后续条件运算符为AND,则根据查询条件表达式对后序字段值进行筛选后,提取DataRowkey,进入S29;如果后续条件运算符为OR,则提取Scan数据集中的DataRowkey,进入S29;
S28:如果Scan结果集为空且后序条件运算符为AND,则返回空结果,进入S210;如果后续条件运算符为OR,则在当前Region中的索引区进行完全Scan操作,并针对后续字段的值进行筛选,提取DataRowkey;
S29;迭代DataRowkey数据集,重定向回当前Region根据DataRowkey进行Get操作获取数据区中的数据;
S210:检索模块收到其中一个RPC请求响应的非空结果,则直接进入S211,后续继续等待其他RPC请求的响应结果;
S211:根据查询需求,将结果封装并通过接口返回至客户端。
2.根据权利要求1所述的一种异构医疗健康数据存储和检索方法,其特征在于:所述MySQL表按照不同的患者信息分为不同的表,所述HBase根据数据类型的不同,将索引数据和普通数据划分到同一个Region。
3.根据权利要求1所述的一种异构医疗健康数据存储和检索方法,其特征在于:所述prePut方法具体为:获取插入数据的数据Rowkey和插入字段,并查询索引配置文件是否在该字段上建立索引,如果有则按步骤S3中的索引Rowkey结构生成索引Rowkey,并将索引数据插入到索引区中,没有则无需构建索引,将数据插入到HBase数据区中。
4.根据权利要求1所述的一种异构医疗健康数据存储和检索方法,其特征在于:所述步骤S4中数据插入方式具体为:结构化数据插入:根据每个患者的身份ID插入数据至MySQL各个表中;
图像数据插入具体步骤如下:
S1:利用DCM4CHE框架解析DCM文件,提取患者的元数据信息,并将其插入列族m_data下;
S2:将DCM小文件按照SeriesUID合并为一个SequenceFile文件;
S3:将SequenceFile文件按照StudyUID合并为一个MapFile文件,设置索引间隔为1,即为MapFile中每一个SequenceFile添加索引;
S4:将MapFile存入HDFS,更新HBase的p_data列族对应的location列,标识图像文件在HDFS的位置;
文本数据插入具体步骤如下:
S1:利用DOM4J解析XML格式医疗文本文件,提取患者的元数据信息,并将其插入列族t_data下;
S2:将医疗文本文件按照患者的身份ID合并为一个MapFile文件,并设置固定长度索引间隔;
S3:将MapFile存入HDFS,更新HBase的t_data列族对应的text列,标识医疗文本文件在HDFS的位置。
5.基于权利要求1~4任一项所述方法的异构医疗健康数据存储与检索系统,其特征在于:所述系统包括ETL模块、数据存储模块、数据管理模块和检索模块;
所述抽取转换加载ETL模块与数据存储模块信号连接;
所述数据存储模块与检索模块信号连接;
所述检索模块与数据管理模块信号连接;
该抽取转换加载ETL模块用于根据不同医疗协议交换标准进行医疗健康数据的提取以及转换,并将医疗健康数据加载至数据库中;
该数据存储模块用于对结构化与非结构化数据进行管理以及提供可视化的Web界面进行数据和系统的操作和管理;
该检索模块用于数据库索引的构建,维护索引配置文件,同时检索模块与Client端进行数据的交互,完成检索任务。