本公开涉及计算机技术领域,具体而言,涉及一种医疗数据补充方法和医疗数据补充装置。
背景技术:
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL在抽取数据过程中,由于元数据自身的系统缺陷,可能存在一些数据字段缺失问题,如果缺失的数据字段非常重要,可能导致大量数据无法得到有效利用。
例如,在实际医疗系统当中,检查(包括病理、放射、超声心动等)数据、实验室检验(血检、尿检等)数据,只记录了病人ID,并未记录就诊ID,这样会对医疗数据科研造成很大不便,因为医疗数据科研需要以就诊为粒度,研究每次就诊过程中,检查检验数据与入出院诊断、治疗情况之间的关系。合理补充就诊ID,对后期医疗数据科研有重大作用。
因此,有必要研究一种医疗数据补充方法和医疗数据补充装置,使记录的医疗数据达到可利用的目的。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:
本公开的目的在于提供一种医疗数据补充方法和医疗数据补充装置,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
根据本公开的一个方面,提供了一种医疗数据补充方法,对从表进行医疗数据补充,待补充医疗数据为从表的外键且为主表的主键,且主表和从表持有公共键,主表持有主表匹配字段,从表持有从表匹配字段;所述医疗数据补充方法包括:
从所述主表中提取所述公共键、所述主键以及主表匹配字段形成主表的分布式的Row对象的集合;
将所述主表的分布式的Row对象的集合转为分布式的Java对象的集合,且将所述公共键作为所述分布式的Java对象的集合的键;
根据所述公共键对所述分布式的Java对象的集合进行聚合,并将所述主键对应填入需要的信息中;
通过所述公共键链接所述需要的信息,并根据所述主表匹配字段与从表匹配字段的匹配性将所述需要的信息补充所述从表的待补充医疗数据。
在本公开的一种示例性实施例中,所述主表记录有就诊ID信息、病人ID信息、就诊时间以及病人的基本信息;所述从表记录有病人ID信息、检查时间以及检查信息。
在本公开的一种示例性实施例中,所述待补充医疗数据为就诊ID信息,所述公共键为病人ID信息,所述主表匹配字段为就诊时间,所述从表匹配字段为检查时间。
在本公开的一种示例性实施例中,所述主表匹配字段与从表匹配字段的匹配性为所述就诊时间与检查时间的接近性。
在本公开的一种示例性实施例中,所述医疗数据补充方法还包括:
从所述主表中提取所述公共键、所述主键以及匹配字段后,删除所述公共键为空格串或空串的行。
根据本公开的另一个方面,提供一种医疗数据补充装置,对从表进行医疗数据补充,待补充医疗数据为从表的外键且为主表的主键,且主表和从表持有公共键,主表持有主表匹配字段,从表持有从表匹配字段,所述医疗数据补充装置包括:
公共键、外键以及主表匹配字段提取单元,用于从所述主表中提取所述公共键、所述主键以及主表匹配字段形成主表的分布式的Row对象的集合;
主表转换单元,用于将所述主表的分布式的Row对象的集合转为分布式的Java对象的集合,且将所述公共键作为所述分布式的Java对象的集合的键;
分布式的Java对象的集合聚合单元,用于根据所述公共键对所述分布式的Java对象的集合进行聚合,并将所述主键对应填入需要的信息中;
待补充医疗数据补充单元,用于通过所述公共键链接所述需要的信息,并根据所述主表匹配字段与从表匹配字段的匹配性将所述需要的信息补充所述从表的待补充医疗数据。
在本公开的一种示例性实施例中,所述主表记录有就诊ID信息、病人ID信息、就诊时间以及病人的基本信息;所述从表记录有病人ID信息、检查时间以及检查信息。
在本公开的一种示例性实施例中,所述待补充医疗数据为就诊ID信息,所述公共键为病人ID信息,所述主表匹配字段为就诊时间,所述从表匹配字段为检查时间。
在本公开的一种示例性实施例中,所述主表匹配字段与从表匹配字段的匹配性为所述就诊时间与检查时间的接近性。
在本公开的一种示例性实施例中,所述医疗数据补充装置还包括:
空格串或空串删除单元,用于从所述主表中提取所述公共键、所述主键以及匹配字段后,删除所述公共键为空格串或空串的行。
本公开的医疗数据补充方法和医疗数据补充装置,将所述主表的分布式的Row对象的集合转为分布式的Java对象的集合,且将所述公共键作为所述分布式的Java对象的集合的键;然后通过公共键将主表和从表链接,由于待补充医疗数据为主表的主键且为从表的外键,根据主表匹配字段与从表匹配字段的匹配性将主表的主键补充入从表。一方面,对从表中待补充的医疗数据进行补充,进一步完善从表,从而使从表记录的医疗数据达到可利用的目的。另一方面,将主表的分布式的Row对象的集合转为分布式的Java对象的集合,方便处理各种结构化或非结构化数据,而且类型转化比较安全。再一方面,根据公共键对所述分布式的Java对象的集合进行聚合,将一个大集合分成若干个小集合,为下一步的信息匹配减少数据运算量,从而提高效率;而且能够避免进行下一步信息匹配时出现错误。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出本公开一示例实施例的医疗数据补充方法的流程图。
图2示意性示出本公开一示例实施例的医疗数据补充装置的方框图。
图3示意性示出根据本公开示例实施方式中一种电子设备的示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本示例实施方式中首先提供了一种医疗数据补充方法,该医疗数据补充方法对从表进行医疗数据补充,所述待补充医疗数据为从表的外键且为主表的主键,且主表和从表持有公共键,主表持有主表匹配字段,从表持有从表匹配字段;参照图1所示,该医疗数据补充方法可以包括以下步骤:
步骤S1,从所述主表中提取所述公共键、所述主键以及主表匹配字段形成主表的分布式的Row对象的集合。
步骤S2,将所述主表的分布式的Row对象的集合转为分布式的Java对象的集合,且将所述公共键作为所述分布式的Java对象的集合的键。
步骤S3,根据所述公共键对所述分布式的Java对象的集合进行聚合,并将所述主键填入需要的信息中。
步骤S4,通过所述公共键链接所述需要的信息,并根据所述主表匹配字段与从表匹配字段的匹配性将所述需要的信息补充所述从表的待补充医疗数据。
根据本示例实施例中医疗数据补充方法,一方面,对所述从表中待补充的医疗数据进行补充,进一步完善所述从表,从而使所述从表记录的医疗数据达到可利用的目的。另一方面,将所述主表的分布式的Row对象的集合转为分布式的Java对象的集合,方便处理各种结构化或非结构化数据,而且类型转化比较安全。再一方面,根据公共键对所述分布式的Java对象的集合进行聚合,将一个大集合分成若干个小集合,为下一步的信息匹配减少数据运算量,从而提高效率;而且能够避免进行下一步信息匹配时出现错误。
下面,将对本示例实施方式中的医疗数据补充方法进行进一步的说明。
在步骤S1中,从所述主表中提取所述公共键、所述主键以及主表匹配字段形成主表的分布式的Row对象的集合。
在本实施例中,以对从表的就诊ID信息进行补充为例进行说明。所述主表记录有就诊ID信息、病人ID信息、就诊时间以及病人的基本信息。具体而言,所述就诊ID信息为一个病人的一次就诊形成的信息,例如,在门诊就诊挂号、化验以及开药(或打针)等一系列动作完成即形成一个就诊ID信息;就诊ID信息可以为病人就诊的年月日以及所就诊科室的第几个病人等信息形成的一系列号码,例如,病人于2012年3月8日在外科(科室编号B)第三个就诊可形成就诊ID信息为20120308B03。另外,本公开的其他实施例中,所述就诊ID信息还可以是本医院的第多少位就诊病例,即本医院的第28561位就诊病例的就诊ID信息就为28561。所述病人ID信息可以为病人的姓名或身份证号码,还可以是病人的电话号码,在目前阶段还可以是病人在医院所办理的医疗一卡通的卡号等等,此处不做特殊限定。病人的基本信息可以包括病人的姓名、性别、年龄以及或电话号码等等信息。就诊时间可以为病人完成一次就诊的时间,一般门诊为一天,例如2013年6月8日;住院可以为多天,例如2013年6月8日至2013年6月15日,等等,此处不做特殊限定,如果有需要还可以精确到小时。
在本实施例中,所述从表记录有病人ID信息、检查时间以及检查信息。具体而言,检查时间可以为病人完成一次检查的时间,一般精确到小时,例如2013年6月8日10时,如果有需要还可以精确到分钟。检查信息可以包括该次检查过程中发生的检查检验数据。
在本实施例中,所述公共键为病人ID信息。所述待补充医疗数据为就诊ID信息,即就诊ID信息为从表的外键且为主表的主键。所述主表匹配字段为就诊时间,所述从表匹配字段为检查时间。从所述主表中提取病人ID信息、就诊ID信息以及就诊时间形成主表的分布式的Row对象的集合。
在步骤S2中,将所述主表的分布式的Row对象的集合转为分布式的Java对象的集合,且将所述公共键作为所述分布式的Java对象的集合的键。
在本实施例中,所述分布式的Row对象的集合可以为DataFrame,所述分布式的Java对象的集合可以为RDD,即将所述主表的DataFrame转为RDD。DataFrame在编译时不能类型转化安全检查,运行时才能确定是否有问题;而且对于对象支持不友好,DataFrame内存存储的是row对象而不能是自定义对象。RDD可以内置很多函数操作,例如group,map,filter等,方便处理结构化或非结构化数据;而且可以面向对象编程,直接存储的java对象,类型转化也安全。所以,将所述主表的分布式的Row对象的集合转为分布式的Java对象的集合,方便处理各种结构化或非结构化数据,而且类型转化比较安全。
在步骤S3中,根据所述公共键对所述分布式的Java对象的集合进行聚合,并将所述主键填入需要的信息中。
在本实施例中,所述聚合可以为GroupBy,意为根据一定的规则进行分组,其作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。根据公共键——病人ID信息对所述分布式的Java对象的集合进行分组,并将所述主键——就诊ID信息填入需要的信息中。即将分布式的Java对象的集合按照病人ID信息的不同分成若干个小的区域,并将对应的就诊ID信息填入需要的信息中。如此设计,按照病人ID信息将一个大集合分成若干个小集合,为下一步的信息匹配减少数据运算量,从而提高效率;而且能够避免进行下一步信息匹配时出现错误。
在步骤S4中,通过所述公共键链接所述需要的信息,并根据所述主表匹配字段与从表匹配字段的匹配性将所述需要的信息补充所述从表的待补充医疗数据。
在本实施例中,所述主表匹配字段为就诊时间,所述从表匹配字段为检查时间。所述主表匹配字段与从表匹配字段的匹配性为所述就诊时间与检查时间的接近性。在就诊后需要进行检查的情况下,一般检查时间均在就诊时间之后,并且就诊时间和检查时间是接近的。通过病人ID信息链接就诊ID信息,并根据就诊时间和检查时间的接近性,将就诊ID信息补充入从表。举例而言,在门诊就诊时,2016年3月20日挂号,一般会在2016年3月20日完成检查检验,或在2016年3月20日的后几天完成检查检验以及开药(或打针)等一系列动作,一般不会超过一个星期;所以,就诊时间为2016年3月20日,检查时间可以为2016年3月20日或晚于2016年3月20日的随后几日,检查时间和就诊时间距离越近,相似度越高,选择与检查时间最接近的就诊时间所对应的就诊ID信息填入从表,完成对从表的补充。当然,在本公开的其他实施例中,主表匹配字段还可以是设置在就诊ID信息中的所记录的就诊时间;还可以结合诊断信息进行进一步判断,此处不做特殊限定。
进一步的,所述医疗数据补充方法还可以包括:从所述主表中提取所述公共键、所述主键以及匹配字段后,删除所述公共键为空格串或空串的行。在本实施例中,由于空格串或空串是没有任何意义的,所以删除所述公共键为空格串或空串的行。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
进一步的,本示例实施方式还提供了对应于上述医疗数据补充方法的医疗数据补充装置。对从表进行医疗数据补充,所述待补充医疗数据为从表的外键且为主表的主键,且主表和从表持有公共键,主表持有主表匹配字段,从表持有从表匹配字段。参照图2所示,该医疗数据补充装置可以包括:公共键、外键以及主表匹配字段提取单元1,主表转换单元2,分布式的Java对象的集合聚合单元3,以及待补充医疗数据补充单元4。其中:
公共键、外键以及主表匹配字段提取单元1,可以用于从所述主表中提取所述公共键、所述主键以及主表匹配字段形成主表的分布式的Row对象的集合。
主表转换单元2,可以用于将所述主表的分布式的Row对象的集合转为分布式的Java对象的集合,且将所述公共键作为所述分布式的Java对象的集合的键。
分布式的Java对象的集合聚合单元3,可以用于根据所述公共键对所述分布式的Java对象的集合进行聚合,并将所述主键对应填入需要的信息中。
待补充医疗数据补充单元4,可以用于通过所述公共键链接所述需要的信息,并根据所述主表匹配字段与从表匹配字段的匹配性将所述需要的信息补充所述从表的待补充医疗数据。
在本示例实施例中,所述主表记录有就诊ID信息、病人ID信息、就诊时间以及病人的基本信息;所述从表记录有病人ID信息、检查时间以及检查信息。
在本示例实施例中,所述待补充医疗数据为就诊ID信息,所述公共键为病人ID信息,所述主表匹配字段为就诊时间,所述从表匹配字段为检查时间。
在本示例实施例中,所述主表匹配字段与从表匹配字段的匹配性为所述就诊时间与检查时间的接近性。
在本示例实施例中,所述医疗数据补充装置还可以包括:
空格串或空串删除单元,可以用于从所述主表中提取所述公共键、所述主键以及匹配字段后,删除所述公共键为空格串或空串的行。
上述医疗数据补充装置中各模块的具体细节已经在对应的虚拟对象运动控制方法中进行了详细想描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
图3示出根据本公开示例实施方式中一种电子设备400的示意图。例如,电子设备400可以被提供为一服务器。参照图3,电子设备400包括处理组件422,其进一步包括一个或多个处理器,以及由存储器432所代表的存储器资源,用于存储可由处理组件422的执行的指令,例如应用程序。存储器432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件422被配置为执行指令,以执行上述方法。
电子设备400还可以包括一个电源组件426被配置为执行电子设备400的电源管理,一个有线或无线网络接口450被配置为将电子设备400连接到网络,和一个输入输出(I/O)接口458。电子设备400可以操作基于存储在存储器432的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。