一种灵活的病历数据抽取方法、系统及数据库服务器与流程

文档序号:17762936发布日期:2019-05-24 21:52阅读:256来源:国知局
一种灵活的病历数据抽取方法、系统及数据库服务器与流程
本发明涉及医疗
技术领域
,尤其是一种灵活的病历数据抽取方法、系统及数据库服务器。
背景技术
:随着his(hospitalinformationsystem,医院信息系统)、lis(laboratoryinformationsystem,实验室信息系统)和pacs(picturearchivingandcommunicationsystems,影像归档和通信系统)等信息化管理手段在医院的成功实施,数字化医院逐渐形成,信息化条件下大量的数据为临床研究提供了数据基础。但临床研究中每个研究都会涉及大量的指标,少则几百多则上千,如何灵活高效的从众多医疗数据中抽取出相关的数据是临床研究过程中的关键,现有的通用搜索或者垂直搜索虽然能够基于文本进行医疗数据的搜索,但这种搜索方式不仅效率低,而且搜索结果通常不准确或者不完整,难以达到预想的效果。技术实现要素:本发明人针对上述问题及技术需求,提出了一种灵活的病历数据抽取方法、系统及数据库服务器,本申请可以灵活高效的搜索病历并抽取出相关数据以便后续分析,为高效临床研究统计分析提供了技术基础。本发明的技术方案如下:一种灵活的病历数据抽取方法,该方法包括:采用分布式存储方式将每个病人对应的病历数据分别作为一个病历文档分区存储在数据库服务器中,病历数据中的每一个指标项所对应的数据分别作为病历文档中的一个数据字段,每个病历文档对应一个唯一的文档标识,且每一个指标项对应一个指标名称;对各个指标项进行倒排序索引生成倒排序索引文件并存储在数据库服务器的内存中,倒排序索引文件包括各个指标项的倒排序结果,每个指标项的倒排序结果包括所有包含指标项对应的指标数据的病历文档的文档标识;客户端获取数据抽取指令并将数据抽取指令发送给应用服务器,应用服务器对数据抽取指令进行解析得到数据抽取指令中包括的待抽取指标名称和数据抽取条件,应用服务器将待抽取指标名称发送给数据库服务器;数据库服务器确定待抽取指标名称对应的待抽取指标项,并查询倒排序索引文件得到待抽取指标项的倒排序结果,确定倒排序结果中的所有文档标识为目标文档标识;数据库服务器根据目标文档标识并行分区查找对应的病历文档并得到目标文档,数据库服务器将获取到的各个目标文档返回给应用服务器;应用服务器根据每个目标文档中的数据字段检测目标文档是否满足数据抽取条件,并根据满足数据抽取条件的目标文档生成数据抽取结果,并将数据抽取结果返回给客户端。其进一步的技术方案为,根据目标文档标识并行分区查找对应的病历文档并得到目标文档,包括:根据目标文档标识并行分区查找对应的病历文档,对于每个查找到的病历文档,进一步提取病历文档中用于记录待抽取指标项对应的数据的数据字段,从而得到对应的目标文档。其进一步的技术方案为,数据抽取指令包括n行子指令,n为正整数,且当n≥2时,数据抽取指令还包括n行子指令之间的逻辑关系;则对数据抽取指令进行解析得到数据抽取指令中包括的待抽取指标名称和数据抽取条件,包括:对每一行子指令进行解析得到子指令中包括的指标名称以及针对每个指标名称的抽取要求;对各行子指令中包括的所有指标名称进行合并以及去重得到数据抽取指令的待抽取指标名称;当n=1时,确定数据抽取条件包括一行子指令中包括的抽取要求;当n≥2时,确定数据抽取条件包括各行子指令中分别包括的抽取要求以及n行子指令之间的逻辑关系。其进一步的技术方案为,每一行子指令中包括m个指令单元,每个指令单元中包括指标名称以及针对指标名称的抽取要求,m为正整数,且当m≥2时,子指令中的m个指令单元之间的逻辑关系为与,m个指令单元中包括的指标名称各不相同,一行子指令通过m个指令单元指示抽取与包含的各个指标名称对应且相互之间存在指标相关性的各个指标项的数据。其进一步的技术方案为,当待抽取指标名称对应至少两个待抽取指标项时,查询倒排序索引文件得到待抽取指标项的倒排序结果,确定倒排序结果中的所有文档标识为目标文档标识,包括:对于待抽取指标名称对应的每一个待抽取指标项,查询倒排序索引文件得到待抽取指标项的倒排序结果,确定倒排序结果中的所有文档标识;对各个待抽取指标项的倒排序结果中的所有文档标识进行合并以及去重得到目标文档标识。其进一步的技术方案为,根据每个目标文档中的数据字段检测目标文档是否满足数据抽取条件,包括对于每个目标文档中的数据字段,利用数据字段中的指标项的数据对数据抽取条件中与指标项对应的指标名称进行赋值并判断是否成立,若目标文档中的各个数据字段使得数据抽取条件均成立,则确定目标文档满足数据抽取条件,否则确定目标文档不满足数据抽取条件。一种灵活的病历数据抽取系统,该系统包括:客户端、应用服务器和数据库服务器;数据库服务器,用于采用分布式存储方式将每个病人对应的病历数据分别作为一个病历文档分区存储,病历数据中的每一个指标项所对应的数据分别作为病历文档中的一个数据字段,每个病历文档对应一个唯一的文档标识,且每一个指标项对应一个指标名称;数据库服务器,还用于对各个指标项进行倒排序索引生成倒排序索引文件并进行存储,倒排序索引文件包括各个指标项的倒排序结果,每个指标项的倒排序结果包括所有包含指标项对应的指标数据的病历文档的文档标识;客户端,用于获取数据抽取指令并将数据抽取指令发送给应用服务器;应用服务器,用于对数据抽取指令进行解析得到数据抽取指令中包括的待抽取指标名称和数据抽取条件,还用于将待抽取指标名称发送给数据库服务器;数据库服务器,用于确定待抽取指标名称对应的待抽取指标项,并查询倒排序索引文件得到待抽取指标项的倒排序结果,确定倒排序结果中的所有文档标识为目标文档标识;数据库服务器,用于根据目标文档标识并行分区查找对应的病历文档并得到目标文档,数据库服务器将获取到的各个目标文档返回给应用服务器;应用服务器,用于根据每个目标文档中的数据字段检测目标文档是否满足数据抽取条件,并根据满足数据抽取条件的目标文档生成数据抽取结果,并将数据抽取结果返回给客户端。其进一步的技术方案为,数据库服务器,还用于:根据目标文档标识并行分区查找对应的病历文档,对于每个查找到的病历文档,进一步提取病历文档中用于记录待抽取指标项对应的数据的数据字段,从而得到对应的目标文档。其进一步的技术方案为,数据库服务器,还用于:对于待抽取指标名称对应的每一个待抽取指标项,查询倒排序索引文件得到待抽取指标项的倒排序结果,确定倒排序结果中的所有文档标识;对各个待抽取指标项的倒排序结果中的所有文档标识进行合并以及去重得到目标文档标识。一种数据库服务器,该数据库服务器包括:文档存储模块,用于采用分布式存储方式将每个病人对应的病历数据分别作为一个病历文档分区存储,病历数据中的每一个指标项所对应的数据分别作为病历文档中的一个数据字段,每个病历文档对应一个唯一的文档标识,且每一个指标项对应一个指标名称;索引存储模块,用于对各个指标项进行倒排序索引生成倒排序索引文件并进行存储,倒排序索引文件包括各个指标项的倒排序结果,每个指标项的倒排序结果包括所有包含指标项对应的指标数据的病历文档的文档标识;目标文档标识确定模块,用于在接收到应用服务器发送的待抽取指标名称后,确定待抽取指标名称对应的待抽取指标项,并查询倒排序索引文件得到待抽取指标项的倒排序结果,确定倒排序结果中的所有文档标识为目标文档标识;目标文档获取模块,用于根据目标文档标识并行分区查找对应的病历文档并得到目标文档,数据库服务器将获取到的各个目标文档返回给应用服务器。本发明的有益技术效果是:本申请公开了一种灵活的病历数据抽取方法、系统及数据库服务器,本申请遵循phr原则进行数据存储,将单个病历作为数据存储的单位方便后续数据抽取,通过建立指标索引可以将各项指标和各个病历进行关联,在根据数据搜索条件进行搜索时避免全扫描,可以高效快速的定位到相关的病历,定位到病历后可以进一步定位到病历中涉及相关指标的字段,然后针对提取到的字段进行赋值判断即可返回结果完成数据抽取,灵活高效,为临床研究的统计分析提供了技术基础。附图说明图1是本申请所涉及的网络架构的架构图。图2是本申请示出的一个实例的病历数据示意图。图3是本申请的灵活的病历数据抽取方法的流程图。图4是本申请中的数据库服务器的装置结构图。图5是本申请中的应用服务器的装置结构图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一请参考图1,该实施例示出了本申请公开的灵活的病历数据抽取系统的结构图,该系统包括客户端1、应用服务器2和数据库服务器3,客户端1是为用户提供服务的程序,其可以安装在一个独立的计算机设备上,则其所在的计算机设备与应用服务器2建立通信连接,客户端1也可以直接安装在应用服务器2上,图1以这种情况为例。应用服务器2与数据库服务器3建立通信连接,且为了保证应用服务器2与数据库服务器3之间的数据通信性能,因为应用服务器2与数据库服务器3之间通常建立有采用万兆网络或光纤的高速通道。数据库服务器3是安装有数据库系统的设备,由于临床研究指标的不确定性,决定了本申请的数据模型是非结构化的,因此本申请基于非结构化存储,则本申请中的数据库服务器3安装有mongodb数据库。应用服务器2和数据库服务器3均可以由个人计算机、台式计算机、膝上型计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等实现。实施例二基于图1所示的网络架构,该实施例示出了本申请公开的灵活的病历数据抽取方法的流程,在进行病历数据抽取之前还需进行两个必要的准备环节:存储数据和建立待排序索引文件,如下:第一部分、数据存储。由于病历数据为非结构化数据,因此本申请采用document方式来存储病历数据,且遵循phr(personalhealthrecord,个人健康记录平台)原则,对每个病人单独存储一个document,也即将每个病人对应的病历数据分别作为一个病历文档进行存储,病历文档的存储格式包括但不限于bson、json、xml和text。由于实际应用时,病人的数量非常庞大,导致病历文档的数量也较为庞大,因此本申请采用分布式存储方式对各个病历文档分区存储在数据库服务器中,同时为了加快搜索过程,病历文档存储在数据库服务器的内存中且和磁盘数据保持同步。每个病历文档对应一个唯一的文档标识(documentid),因此通过文档标识就可以定位到相应的病历文档。病人的病历数据包括若干条指标项和每一个指标项对应的数据,请结合图2示出的病人“张三”对应的病历数据的实例,病人的病历数据至少包括一些反应病人属性的指标项及对应的数据,反应病人属性的指标项包括但不限于姓名、性别、病人编号、民族、病因。除此之外的病历数据通常来自于医生对病人的访视过程中所填写的crf(病例报告表),则需要先构建访视并定义crf从而构建数据模型,结合图2可以看出,针对一个病人可以存在多个类型的访视,如图2中针对张三存在“手术住院”和“术后随访治疗”这两个访视,而每个访视中可以有一个或多个crf,比如在访视“手术住院”中存在一个crf为“手术情况”,在访视“术后随访治疗”中存在三个crf为“第一次化疗”、“第二次化疗”和“第三次化疗”。每个crf中又可以包括一个或多个组件,比如“手术情况”这一crf中包括两个组件分别为“手术前用药”和“手术后用药”,再比如“第一次化疗”这一crf中包括一个组件为“用药情况”,每个组件中存储有一个或多个指标项及对应的数据,这些数据均为该病人的病历数据。比如在图2中,“手术前用药”这一组件包括四个指标项“药物名称”、“剂型”、“剂量”和“用药时间”四个指标项及对应的数据。为了整体统一,可以认为上述提到的用于反应病人属性的指标项及对应的数据也是统一存储在一个单独的组件中的。需要说明的是,本申请中的指标项不仅反映了指标名称还反映了该指标项在数据结构中的节点位置,指标名称和节点位置有一项不同即为不同的指标项,而指标名称为医学领域的通用指标名称,这是因为,在实际应用中,在不同的组件中出现相同的指标名称的情况经常发生,比如“手术前用药”这一组件中包括“药物名称”,“手术后用药”这一组件中也包括“药物名称”,但实际这是两个不一样的指标,因此本申请的做法可以实现不同指标项对通用的指标名称的共用同时又能对这些指标项进行有效的区分,基于这一特点可以确定,在本申请中,指标项与指标名称之间并不是一一对应关系,一个指标项对应一个指标名称,但一个指标名称可以与多个不同的指标项对应。本申请采用“手术住院\手术情况\手术后用药\药物名称”这种方式进行表示一个指标项,上述举例表示手术住院这一访视中、手术情况这一crf、手术后用药这一组件中的药物名称这一指标项。本申请出现的组件为表格组件或非表格组件,非表格组件只能进行单次数据录入,使得非表格组件中的指标项仅有一条数据记录,因此针对一些仅有单条数据记录的指标项通常会采用非表格组件形式记载,比如年龄、性别、饮酒度数和诊断结果等等,在上述例子中,用于记录反应病人属性的指标项及对应的数据的组件即为非表格组件,但也并不限定于举例的这些指标项,比如上述例子中,“手术前用药”这一组件也为非表格组件。表格组件可以进行多次的数据录入,使得表格组件中的数据项可以存在多条数据记录,因此针对一些需要反复录入数据的指标项通常会采用表格组件形式记载,比如在图2的实例中,“手术后用药”这一组件即为表格组件,其中四个指标项都有2条数据记录。另外病人的病历数据中的各个指标项并不一定是独立的,某些指标项之间可以存在指标相关性,通常是在同一个组件中的多个指标项之间存在指标相关性,因此在构建数据模型的时候可以根据实际应用习惯或应用需要来配置指标项之间的指标相关性,比如可以配置“手术后用药”这一组件中的四个指标项“药物名称”、“剂型”、“剂量”和“用药时间”在数据结构中连接同一个父节点位置,即配置了这四个指标项之间存在指标相关性,那么该表格组件中的一行中的四个数据构成了一条完整的数据记录。对于非表格组件,由于非表格组件中的指标项都只有一条数据记录,因此本申请可以配置非表格组件中的各个指标项之间都存在指标相关性或不存在指标相关性。构建完成数据模型后,就能基于构建的数据模型从中获取到相关的病历数据存储为病历文档,这一部分的技术已经较为成熟,因此本申请具体不作描述。病历数据中包括若干条指标项及各自对应的数据,这些指标项通过病历文档中的数据字段(field)体现,也即每一个指标项所对应的数据分别作为病历文档中的一个数据字段(field)存储。不同的病历文档中用于存储相同的指标项的数据的数据字段的名称相同,比如在每一个病历文档中,用于存储病人的“姓名”这一指标项的数据的数据字段的名称均为name。但同一个名称的数据字段并不一定要在每个病历文档中都有,比如在张三的病历文档,存在存储“手术住院\手术情况\手术后用药\药物名称”这一指标项的数据字段的名称为indicator_22_2048t,但李四的病历文档可以不存在这一名称的数据字段。第二部分、倒排序索引文件的建立。建立指标项的索引,是为了避免全扫描,本申请采用倒排序索引,对各个指标项进行倒排序索引生成倒排序索引文件,倒排序索引文件包括各个指标项的倒排序结果,每个指标项的倒排序结果包括所有包含该指标项对应的数据的病历文档的文档标识。为了简化同时提高效率,通常还会针对每个指标项建立指标id,并采用指标id表示指标项,比如针对指标项“手术住院\手术情况\手术后用药\药物名称”建立指标id为ind1,针对指标“术后随访治疗\第一次化疗\用药情况\用药时间”建立指标id为ind2。仅以“手术住院\手术情况\手术后用药\药物名称”和“术后随访治疗\第一次化疗\用药情况\用药时间”这两个指标项为例,假设张三对应的病历文档的文档标识为documentid1,李四对应的病历文档的文档标识为documentid2,王五对应的病历文档的文档标识为documentid3,张三对应的病历文档中同时包含上述两个指标项的数据,李四对应的病历文档仅包括“手术住院\手术情况\手术后用药\药物名称”这一指标项的数据,王五对应的病历文档包括“术后随访治疗\第一次化疗\用药情况\用药时间”这一指标项的数据,那么得到的倒排序索引文件的形式为如下:指标id倒排序结果ind1[documentid1,documentid2]ind2[documentid1,documentid3]同时为了高效索引,将倒排序索引文件存储在数据库服务器的内存中,为了避免内存占用过大,对索引进行压缩,压缩算法可以采用现有的方法,比如roaringbitmaps,也可以采用其他常规方法,本申请不做限定。第三部分、灵活的病历数据抽取。该步骤包括如下流程,请参考图3所示的示意图:步骤s01,客户端获取数据抽取指令并将数据抽取指令发送给应用服务器,数据抽取指令是用户在客户端中自定义配置的,其指示了用户所要求抽取的数据。临床分析过程中,病历数据的抽取通常不会是针对单一指标项的数据的抽取,因此本申请结合下表的实例来介绍本申请中的数据抽取指令的通用形式:第1行子指令药物名称=‘曲马多’&&剂量=‘1’&&剂型=‘片’第2行子指令药物名称=‘艾得辛’行间逻辑关系‘第1行子指令’或‘第2行子指令’数据抽取指令包括n行子指令,n为正整数,而每一行子指令中包括m个指令单元,m为正整数,比如对于上表中的第1行子指令,其包括3个指令单元,其中的一个指令单元为:药物名称=‘曲马多’,其他的依次类推,每个指令单元中分别包括指标名称以及针对该指标名称的抽取要求,从而指示抽取与指标名称对应的指标项的数据,指令单元通常采用指标名称和抽取要求所构成的表达式的形式。而且当m≥2时,同一行子指令中的m个指令单元中包括的指标名称不同,这m个指令单元之间的逻辑关系为“与”逻辑,使得同一行子指令通过m个指令单元指示抽取分别与各个指标名称对应且相互之间存在指标相关性的各个指标项的数据。当数据抽取指令包括多行子指令时,也即n≥2时,各行子指令包括的指标名称可以相同也可以不同,比如上述第1行子指令和第2行子指令中都包括指标名称“药物名称”。当n≥2时,数据抽取指令中还包括这n行子指令之间的逻辑关系,如上表中的行间逻辑关系,其用于指示的子指令之间的逻辑关系包括但不限于或、与、非,由用户自定配置。通常情况下,不同行的子指令用于指示抽取的指标项之间是不存在指标相关性的。为了实现本申请这种数据抽取指令分层次指示的要求,在上述两部分构建完成数据模型后,会在客户端中显示数据模型,比如常规的以树形结构示意指标项之间的层次示意图,则用户在配置数据抽取指令时,可以根据数据模型将针对存在指标相关性的指标项的指令放在同一行,将不存在指标相关性的指标项的指令放在不同行中。步骤s02,应用服务器对数据抽取指令进行解析得到数据抽取指令中包括的待抽取指标名称和数据抽取条件,并将待抽取指标名称发送给数据库服务器。应用服务器首先对数据抽取指令进行语法检验,避免数据抽取指令存在语法上的错误,具体语法校验的方法是现有成熟技术,本申请不详细描述。语法校验成功后,应用服务器对数据抽取指令进行解析得到待抽取指标名称和数据抽取条件,具体的:1、对每一行子指令进行解析得到该行子指令中包括的指标名称以及针对每个指标名称的抽取要求。当一行子指令中有至少两个指令单元时,对每个指令单元分别进行解析,得到每个指令单元包括的指标名称以及针对该指标名称的抽取要求,对所有指令单元的指标名称和抽取要求进行汇总即得到了该行子指令中包括的指标名称以及针对每个指标名称的抽取要求。2、对各行子指令中包括的所有指标名称进行合并以及去重得到待抽取指标名称,比如在上表的实例中,解析第1行子指令得到的指标名称包括:药物名称、剂量和剂型,解析第2行子指令得到的指标名称包括:药物名称,则对两行子指令进行合并以及去重后得到整个数据抽取指令包括的待抽取指标名称即为:药物名称、剂量和剂型。3、当n=1且m=1时,也即数据抽取指令就包括一行子指令,且这一行子指令中就包括1个指令单元时,直接确定整个数据抽取指令所包括的数据抽取条件即为这个指令单元的抽取要求。当n=1且m≥2时,也即数据抽取指令就包括一行子指令,但这一行子指令中包括多个指令单元时,确定整个数据抽取指令所包括的数据抽取条件包括了各个指令单元的抽取要求以及各个指令单元之间的与逻辑关系。当n≥2时,也即数据抽取指令包括多行子指令时,则确定整个数据抽取指令所包括的数据抽取条件包括各行子指令中分别包括的抽取要求以及数据抽取指令中包括的n行子指令之间的逻辑关系,其中每一行子指令中分别包括的抽取要求可以根据上述列举的n=1时的情况确定。步骤s03,数据库服务器确定待抽取指标名称对应的待抽取指标项,并查询倒排序索引文件得到待抽取指标项的倒排序结果,确定倒排序结果中的所有文档标识为目标文档标识。如上所述,一个指标名称可能是对应了一个指标项,也可能对应了多个指标项,也即在数据存储部分已经将指标名称与指标项之间的对应关系确定好了,该对应关系可以在确定好以后进行存储,因此数据库服务器可以通过查询这个对应关系确定与待抽取指标名称对应的指标项即为待抽取指标项,比如在图2的实例中,对于上表示出的数据抽取指令,确定的待抽取指标名称包括:药物名称、剂量和剂型,则对于其中的药物名称,可以确定对应的待抽取指标项包括:手术住院\手术情况\手术前用药\药物名称、手术住院\手术情况\手术后用药\药物名称、术后随访治疗\第一次化疗\用药情况\药物名称、术后随访治疗\第二次化疗\用药情况\药物名称,以及术后随访治疗\第三次化疗\用药情况\药物名称这五个指标项。当确定得到的待抽取指标项只有一个指标项时,则直接查询得到该待抽取指标项的倒排序结果从而确定目标文档标识。当确定得到的待抽取指标项有至少两个指标项时,对于每一个待抽取指标项,查询倒排序索引文件得到该待抽取指标项的倒排序结果并确定该倒排序结果中的所有文档标识,对各个待抽取指标项的倒排序结果中的文档标识进行合并以及去重后得到的各个文档标识即为目标文档标识。比如仅以待抽取指标项包含“手术住院\手术情况\手术后用药\药物名称”和“术后随访治疗\第一次化疗\用药情况\用药时间”这两个指标项为例,这两个指标项的倒排序结果如上述第二部分举例的表格所示,则最终合并以及去重后确定得到的目标文档标识包括documentid1、documentid2和documentid3。步骤s04,数据库服务器根据目标文档标识并行分区查找对应的病历文档,并行化的处理可以提高速度和效率。对于每个查找到的病历文档,进一步提取病历文档中用于记录待抽取指标项对应的数据的数据字段,从而得到目标文档,也即最终获取到的目标文档并不包括原始的病历文档的所有数据字段,而是仅包括原始的病历文档中的涉及待抽取指标项的数据字段,这一步滤除掉了病历文档中无用的一些数据字段,可以提高后续数据传输的效率,节约对于通信资源的占用,然后数据库服务器将获取到的各个目标文档返回给应用服务器。步骤s05,应用服务器接收到各个目标文档后,对于每个目标文档中的数据字段,利用数据字段中的指标项的数据对数据抽取条件中与指标项对应的指标名称进行赋值并判断是否成立,若所有数据抽取条件都符合,则确定目标文档满足数据抽取条件,否则确定目标文档不满足数据抽取条件。比如以图2的示例和上表示出的数据抽取指令为例,应用服务器接收到的目标文档包括张三的病历文档中与“药物名称、剂量、剂型”这三个指标名称对应的各个指标项的数据。则应用服务器利用“手术住院\手术情况\手术前用药\药物名称”这一指标项的数据对抽取要求“药物名称=‘曲马多’”中的药物名称这一参数进行赋值,其余与“药物名称”这一指标名称对应的各个指标项也进行同样的赋值,本申请不作赘述。完整的举例中,对于第1行子指令,应用服务器将“药物名称”对应的各个指标项的数据赋值给抽取要求“药物名称=‘曲马多’”中的药物名称这一参数,将“剂量”对应的各个指标项的数据赋值给抽取要求“剂量=‘1’”中的剂量这一参数,将“剂型”对应的各个指标项的数据赋值给抽取要求“剂型=‘片’”中的剂型这一参数,并判断上述三个等式是否成立,同时判断上述三个指令单元之间的与逻辑是否成立。在图2的示例中,可以判断得到“手术后用药”这一组件中的第一行数据以及“第三次化疗”这一crf的“用药情况”这一组件中的第一行数据符合第1行子指令。对于第2行子指令,应用服务器将“药物名称”对应的各个指标项的数据赋值给抽取要求“药物名称=‘艾得辛’”中的药物名称这一参数并判断等式是否成立,在图2的示例中,可以判断得到“第三次化疗”这一crf的“用药情况”这一组件中的第二行数据符合第2行子指令。另外应用服务器判断第1行子指令和第2行子指令之间的或逻辑关系是否成立,也即检测该目标文档是否满足第1行子指令和第2行子指令中的至少一行子指令,如上所述,张三对应的目标文档同时符合两行子指令,因此可以确定张三的目标文档满足数据抽取条件。应用服务器在赋值判断完成后,根据满足数据抽取条件的目标文档生成数据抽取结果,并将数据抽取结果返回给客户端,通常情况下,是将目标文档中满足数据抽取条件的数据字段作为数据抽取结果返回给客户端,比如在上述举例中,“手术后用药”这一组件中的第一行数据以及“第三次化疗”这一crf的“用药情况”这一组件中的第一行数据符合第1行子指令,“第三次化疗”这一crf的“用药情况”这一组件中的第二行数据符合第2行子指令,可以将这三行数据作为数据抽取结果返回给客户端,以便进行后续的数据统计和数据分析等。但本申请并不进行限定,根据实际需要的不同,还可以采样其他的结果返回方式,比如应用服务器将整个目标文档都作为数据抽取结果返回给客户端,再比如,应用服务器在判断得到目标文档满足数据抽取条件时,再从数据库服务器获取对应的完整的病历文档作为数据抽取结果返回给客户端,本申请对具体的实现方式不做限定。实施例三请参考图4,本申请还公开了一种数据库服务器,该数据库服务器即为如图1所示的系统中的数据库服务器3。该实施例示出了数据库服务器的结构图,数据库服务器可以包括或被分割成一个或多个程序模块,该一个或多个程序模块被存储在存储介质中,并由一个或多个处理器所执行,以执行实施例二公开的灵活的病历数据抽取方法中数据库服务器执行的方法。其中程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述数据库服务器的执行过程,以下描述将具体介绍本实施例各程序模块及其功能:文档存储模块410,用于采用分布式存储方式将每个病人对应的病历数据分别作为一个病历文档分区存储,病历数据中的每一个指标项所对应的数据分别作为病历文档中的一个数据字段,每个病历文档对应一个唯一的文档标识,且每一个指标项对应一个指标名称。索引存储模块420,用于对各个指标项进行倒排序索引生成倒排序索引文件并进行存储,倒排序索引文件包括各个指标项的倒排序结果,每个指标项的倒排序结果包括所有包含指标项对应的指标数据的病历文档的文档标识。目标文档标识确定模块430,用于在接收到应用服务器发送的待抽取指标名称后,确定待抽取指标名称对应的待抽取指标项,并查询倒排序索引文件得到待抽取指标项的倒排序结果,确定倒排序结果中的所有文档标识为目标文档标识。目标文档获取模块440,用于根据目标文档标识并行分区查找对应的病历文档并得到目标文档,数据库服务器将获取到的各个目标文档返回给应用服务器。实施例四请参考图5,本申请还公开了一种应用服务器,该应用即为如图1所示的系统中的应用服务器2,同样的,应用服务器可以包括或被分割成一个或多个程序模块,该实施例将具体介绍应用服务器中各程序模块及其功能:解析模块510,用于对接收到的客户端发送的数据抽取指令进行解析得到数据抽取指令中包括的待抽取指标名称和数据抽取条件。发送模块520,用于将待抽取指标名称发送给数据库服务器。检测模块530,用于根据数据库服务器返回的每个目标文档中的数据字段检测目标文档是否满足数据抽取条件。结果返回模块540,用于根据满足数据抽取条件的目标文档生成数据抽取结果,并将数据抽取结果返回给客户端。以上所述的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1