CN109800285A - 一种灵活的病历数据抽取方法、系统及数据库服务器 - Google Patents
一种灵活的病历数据抽取方法、系统及数据库服务器 Download PDFInfo
- Publication number
- CN109800285A CN109800285A CN201910044114.9A CN201910044114A CN109800285A CN 109800285 A CN109800285 A CN 109800285A CN 201910044114 A CN201910044114 A CN 201910044114A CN 109800285 A CN109800285 A CN 109800285A
- Authority
- CN
- China
- Prior art keywords
- index
- data
- document
- extracted
- case history
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Medical Treatment And Welfare Office Work (AREA)
Abstract
本申请公开了一种灵活的病历数据抽取方法、系统及数据库服务器,涉及医疗技术领域,本申请遵循PHR原则进行数据存储,将单个病历作为数据存储的单位方便后续数据抽取,通过建立指标索引可以将各项指标和各个病历进行关联,在根据数据搜索条件进行搜索时避免全扫描,可以高效快速的定位到相关的病历,定位到病历后可以进一步定位到病历中涉及相关指标的字段,然后针对提取到的字段进行赋值判断即可返回结果完成数据抽取,灵活高效,为临床研究的统计分析提供了技术基础。
Description
技术领域
本发明涉及医疗技术领域,尤其是一种灵活的病历数据抽取方法、系统及数据库服务器。
背景技术
随着HIS(Hospital Information System,医院信息系统)、LIS(LaboratoryInformation System,实验室信息系统)和PACS(Picture Archiving and CommunicationSystems,影像归档和通信系统)等信息化管理手段在医院的成功实施,数字化医院逐渐形成,信息化条件下大量的数据为临床研究提供了数据基础。但临床研究中每个研究都会涉及大量的指标,少则几百多则上千,如何灵活高效的从众多医疗数据中抽取出相关的数据是临床研究过程中的关键,现有的通用搜索或者垂直搜索虽然能够基于文本进行医疗数据的搜索,但这种搜索方式不仅效率低,而且搜索结果通常不准确或者不完整,难以达到预想的效果。
发明内容
本发明人针对上述问题及技术需求,提出了一种灵活的病历数据抽取方法、系统及数据库服务器,本申请可以灵活高效的搜索病历并抽取出相关数据以便后续分析,为高效临床研究统计分析提供了技术基础。
本发明的技术方案如下:
一种灵活的病历数据抽取方法,该方法包括:
采用分布式存储方式将每个病人对应的病历数据分别作为一个病历文档分区存储在数据库服务器中,病历数据中的每一个指标项所对应的数据分别作为病历文档中的一个数据字段,每个病历文档对应一个唯一的文档标识,且每一个指标项对应一个指标名称;
对各个指标项进行倒排序索引生成倒排序索引文件并存储在数据库服务器的内存中,倒排序索引文件包括各个指标项的倒排序结果,每个指标项的倒排序结果包括所有包含指标项对应的指标数据的病历文档的文档标识;
客户端获取数据抽取指令并将数据抽取指令发送给应用服务器,应用服务器对数据抽取指令进行解析得到数据抽取指令中包括的待抽取指标名称和数据抽取条件,应用服务器将待抽取指标名称发送给数据库服务器;
数据库服务器确定待抽取指标名称对应的待抽取指标项,并查询倒排序索引文件得到待抽取指标项的倒排序结果,确定倒排序结果中的所有文档标识为目标文档标识;
数据库服务器根据目标文档标识并行分区查找对应的病历文档并得到目标文档,数据库服务器将获取到的各个目标文档返回给应用服务器;
应用服务器根据每个目标文档中的数据字段检测目标文档是否满足数据抽取条件,并根据满足数据抽取条件的目标文档生成数据抽取结果,并将数据抽取结果返回给客户端。
其进一步的技术方案为,根据目标文档标识并行分区查找对应的病历文档并得到目标文档,包括:
根据目标文档标识并行分区查找对应的病历文档,对于每个查找到的病历文档,进一步提取病历文档中用于记录待抽取指标项对应的数据的数据字段,从而得到对应的目标文档。
其进一步的技术方案为,数据抽取指令包括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(Personal health record,个人健康记录平台)原则,对每个病人单独存储一个document,也即将每个病人对应的病历数据分别作为一个病历文档进行存储,病历文档的存储格式包括但不限于bson、json、xml和text。由于实际应用时,病人的数量非常庞大,导致病历文档的数量也较为庞大,因此本申请采用分布式存储方式对各个病历文档分区存储在数据库服务器中,同时为了加快搜索过程,病历文档存储在数据库服务器的内存中且和磁盘数据保持同步。每个病历文档对应一个唯一的文档标识(document ID),因此通过文档标识就可以定位到相应的病历文档。
病人的病历数据包括若干条指标项和每一个指标项对应的数据,请结合图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。
仅以“手术住院\手术情况\手术后用药\药物名称”和“术后随访治疗\第一次化疗\用药情况\用药时间”这两个指标项为例,假设张三对应的病历文档的文档标识为document ID1,李四对应的病历文档的文档标识为document ID2,王五对应的病历文档的文档标识为document ID3,张三对应的病历文档中同时包含上述两个指标项的数据,李四对应的病历文档仅包括“手术住院\手术情况\手术后用药\药物名称”这一指标项的数据,王五对应的病历文档包括“术后随访治疗\第一次化疗\用药情况\用药时间”这一指标项的数据,那么得到的倒排序索引文件的形式为如下:
指标ID | 倒排序结果 |
IND1 | [document ID1,document ID2] |
IND2 | [document ID1,document ID3] |
同时为了高效索引,将倒排序索引文件存储在数据库服务器的内存中,为了避免内存占用过大,对索引进行压缩,压缩算法可以采用现有的方法,比如Roaring bitmaps,也可以采用其他常规方法,本申请不做限定。
第三部分、灵活的病历数据抽取。该步骤包括如下流程,请参考图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的实例中,对于上表示出的数据抽取指令,确定的待抽取指标名称包括:药物名称、剂量和剂型,则对于其中的药物名称,可以确定对应的待抽取指标项包括:手术住院\手术情况\手术前用药\药物名称、手术住院\手术情况\手术后用药\药物名称、术后随访治疗\第一次化疗\用药情况\药物名称、术后随访治疗\第二次化疗\用药情况\药物名称,以及术后随访治疗\第三次化疗\用药情况\药物名称这五个指标项。
当确定得到的待抽取指标项只有一个指标项时,则直接查询得到该待抽取指标项的倒排序结果从而确定目标文档标识。当确定得到的待抽取指标项有至少两个指标项时,对于每一个待抽取指标项,查询倒排序索引文件得到该待抽取指标项的倒排序结果并确定该倒排序结果中的所有文档标识,对各个待抽取指标项的倒排序结果中的文档标识进行合并以及去重后得到的各个文档标识即为目标文档标识。
比如仅以待抽取指标项包含“手术住院\手术情况\手术后用药\药物名称”和“术后随访治疗\第一次化疗\用药情况\用药时间”这两个指标项为例,这两个指标项的倒排序结果如上述第二部分举例的表格所示,则最终合并以及去重后确定得到的目标文档标识包括document ID1、document ID2和document ID3。
步骤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,用于根据满足数据抽取条件的目标文档生成数据抽取结果,并将数据抽取结果返回给客户端。
以上所述的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
Claims (10)
1.一种灵活的病历数据抽取方法,其特征在于,所述方法包括:
采用分布式存储方式将每个病人对应的病历数据分别作为一个病历文档分区存储在数据库服务器中,所述病历数据中的每一个指标项所对应的数据分别作为所述病历文档中的一个数据字段,每个病历文档对应一个唯一的文档标识,且每一个指标项对应一个指标名称;
对各个指标项进行倒排序索引生成倒排序索引文件并存储在所述数据库服务器的内存中,所述倒排序索引文件包括各个指标项的倒排序结果,每个指标项的倒排序结果包括所有包含所述指标项对应的指标数据的病历文档的文档标识;
客户端获取数据抽取指令并将所述数据抽取指令发送给应用服务器,所述应用服务器对所述数据抽取指令进行解析得到所述数据抽取指令中包括的待抽取指标名称和数据抽取条件,所述应用服务器将所述待抽取指标名称发送给所述数据库服务器;
所述数据库服务器确定所述待抽取指标名称对应的待抽取指标项,并查询所述倒排序索引文件得到所述待抽取指标项的倒排序结果,确定所述倒排序结果中的所有文档标识为目标文档标识;
所述数据库服务器根据所述目标文档标识并行分区查找对应的病历文档并得到目标文档,所述数据库服务器将获取到的各个目标文档返回给所述应用服务器;
所述应用服务器根据每个所述目标文档中的数据字段检测所述目标文档是否满足所述数据抽取条件,并根据满足所述数据抽取条件的目标文档生成数据抽取结果,并将数据抽取结果返回给所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标文档标识并行分区查找对应的病历文档并得到目标文档,包括:
根据所述目标文档标识并行分区查找对应的病历文档,对于每个查找到的病历文档,进一步提取所述病历文档中用于记录所述待抽取指标项对应的数据的数据字段,从而得到对应的目标文档。
3.根据权利要求1或2所述的方法,其特征在于,所述数据抽取指令包括n行子指令,n为正整数,且当n≥2时,所述数据抽取指令还包括所述n行子指令之间的逻辑关系;
则所述对所述数据抽取指令进行解析得到所述数据抽取指令中包括的待抽取指标名称和数据抽取条件,包括:
对每一行子指令进行解析得到所述子指令中包括的指标名称以及针对每个所述指标名称的抽取要求;
对各行子指令中包括的所有指标名称进行合并以及去重得到所述数据抽取指令的待抽取指标名称;
当n=1时,确定所述数据抽取条件包括所述一行子指令中包括的抽取要求;当n≥2时,确定所述数据抽取条件包括各行子指令中分别包括的抽取要求以及所述n行子指令之间的逻辑关系。
4.根据权利要求3所述的方法,其特征在于,每一行子指令中包括m个指令单元,每个指令单元中包括指标名称以及针对所述指标名称的抽取要求,m为正整数,且当m≥2时,所述子指令中的m个指令单元之间的逻辑关系为与,所述m个指令单元中包括的指标名称各不相同,所述一行子指令通过所述m个指令单元指示抽取与包含的各个指标名称对应且相互之间存在指标相关性的各个指标项的数据。
5.根据权利要求1或2所述的方法,其特征在于,当所述待抽取指标名称对应至少两个待抽取指标项时,所述查询所述倒排序索引文件得到所述待抽取指标项的倒排序结果,确定所述倒排序结果中的所有文档标识为目标文档标识,包括:
对于所述待抽取指标名称对应的每一个待抽取指标项,查询所述倒排序索引文件得到所述待抽取指标项的倒排序结果,确定所述倒排序结果中的所有文档标识;
对各个所述待抽取指标项的倒排序结果中的所有文档标识进行合并以及去重得到所述目标文档标识。
6.根据权利要求1或2所述的方法,其特征在于,所述根据每个所述目标文档中的数据字段检测所述目标文档是否满足所述数据抽取条件,包括对于每个所述目标文档中的数据字段,利用所述数据字段中的指标项的数据对所述数据抽取条件中与所述指标项对应的指标名称进行赋值并判断是否成立,若所述目标文档中的各个数据字段使得所述数据抽取条件均成立,则确定所述目标文档满足所述数据抽取条件,否则确定所述目标文档不满足所述数据抽取条件。
7.一种灵活的病历数据抽取系统,其特征在于,所述系统包括:客户端、应用服务器和数据库服务器;
所述数据库服务器,用于采用分布式存储方式将每个病人对应的病历数据分别作为一个病历文档分区存储,所述病历数据中的每一个指标项所对应的数据分别作为所述病历文档中的一个数据字段,每个病历文档对应一个唯一的文档标识,且每一个指标项对应一个指标名称;
所述数据库服务器,还用于对各个指标项进行倒排序索引生成倒排序索引文件并进行存储,所述倒排序索引文件包括各个指标项的倒排序结果,每个指标项的倒排序结果包括所有包含所述指标项对应的指标数据的病历文档的文档标识;
所述客户端,用于获取数据抽取指令并将所述数据抽取指令发送给应用服务器;
所述应用服务器,用于对所述数据抽取指令进行解析得到所述数据抽取指令中包括的待抽取指标名称和数据抽取条件,还用于将所述待抽取指标名称发送给所述数据库服务器;
所述数据库服务器,用于确定所述待抽取指标名称对应的待抽取指标项,并查询所述倒排序索引文件得到所述待抽取指标项的倒排序结果,确定所述倒排序结果中的所有文档标识为目标文档标识;
所述数据库服务器,用于根据所述目标文档标识并行分区查找对应的病历文档并得到目标文档,所述数据库服务器将获取到的各个目标文档返回给所述应用服务器;
所述应用服务器,用于根据每个所述目标文档中的数据字段检测所述目标文档是否满足所述数据抽取条件,并根据满足所述数据抽取条件的目标文档生成数据抽取结果,并将数据抽取结果返回给所述客户端。
8.根据权利要求7所述的系统,其特征在于,所述数据库服务器,还用于:
根据所述目标文档标识并行分区查找对应的病历文档,对于每个查找到的病历文档,进一步提取所述病历文档中用于记录所述待抽取指标项对应的数据的数据字段,从而得到对应的目标文档。
9.根据权利要求7或8所述的方法,其特征在于,所述数据库服务器,还用于:
对于所述待抽取指标名称对应的每一个待抽取指标项,查询所述倒排序索引文件得到所述待抽取指标项的倒排序结果,确定所述倒排序结果中的所有文档标识;
对各个所述待抽取指标项的倒排序结果中的所有文档标识进行合并以及去重得到所述目标文档标识。
10.一种数据库服务器,其特征在于,所述数据库服务器包括:
文档存储模块,用于采用分布式存储方式将每个病人对应的病历数据分别作为一个病历文档分区存储,所述病历数据中的每一个指标项所对应的数据分别作为所述病历文档中的一个数据字段,每个病历文档对应一个唯一的文档标识,且每一个指标项对应一个指标名称;
索引存储模块,用于对各个指标项进行倒排序索引生成倒排序索引文件并进行存储,所述倒排序索引文件包括各个指标项的倒排序结果,每个指标项的倒排序结果包括所有包含所述指标项对应的指标数据的病历文档的文档标识;
目标文档标识确定模块,用于在接收到应用服务器发送的待抽取指标名称后,确定所述待抽取指标名称对应的待抽取指标项,并查询所述倒排序索引文件得到所述待抽取指标项的倒排序结果,确定所述倒排序结果中的所有文档标识为目标文档标识;
目标文档获取模块,用于根据所述目标文档标识并行分区查找对应的病历文档并得到目标文档,所述数据库服务器将获取到的各个目标文档返回给所述应用服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044114.9A CN109800285B (zh) | 2019-01-17 | 2019-01-17 | 一种灵活的病历数据抽取方法、系统及数据库服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044114.9A CN109800285B (zh) | 2019-01-17 | 2019-01-17 | 一种灵活的病历数据抽取方法、系统及数据库服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109800285A true CN109800285A (zh) | 2019-05-24 |
CN109800285B CN109800285B (zh) | 2020-09-29 |
Family
ID=66559579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910044114.9A Active CN109800285B (zh) | 2019-01-17 | 2019-01-17 | 一种灵活的病历数据抽取方法、系统及数据库服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800285B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532370A (zh) * | 2019-06-11 | 2019-12-03 | 福建奇点时空数字科技有限公司 | 一种基于属性标注的专业数据实体属性抽取方法 |
CN115223674A (zh) * | 2022-08-16 | 2022-10-21 | 无锡慧方科技有限公司 | 一种适用于临床研究的医疗数据服务平台 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060293922A1 (en) * | 1994-06-23 | 2006-12-28 | Seare Jerry G | Method and system for generating statistically-based medical provider utilization profiles |
CN104239573A (zh) * | 2014-10-08 | 2014-12-24 | 无锡慧方科技有限公司 | 一种带有新型开放式和集成式搜索引擎的医疗系统 |
US20160357932A1 (en) * | 2010-09-29 | 2016-12-08 | Humana Inc. | System and method for analysis of distributed electronic medical record data to detect potential health concerns |
CN107818815A (zh) * | 2017-10-30 | 2018-03-20 | 北京康夫子科技有限公司 | 电子病历的检索方法及系统 |
-
2019
- 2019-01-17 CN CN201910044114.9A patent/CN109800285B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060293922A1 (en) * | 1994-06-23 | 2006-12-28 | Seare Jerry G | Method and system for generating statistically-based medical provider utilization profiles |
US20160357932A1 (en) * | 2010-09-29 | 2016-12-08 | Humana Inc. | System and method for analysis of distributed electronic medical record data to detect potential health concerns |
CN104239573A (zh) * | 2014-10-08 | 2014-12-24 | 无锡慧方科技有限公司 | 一种带有新型开放式和集成式搜索引擎的医疗系统 |
CN107818815A (zh) * | 2017-10-30 | 2018-03-20 | 北京康夫子科技有限公司 | 电子病历的检索方法及系统 |
Non-Patent Citations (2)
Title |
---|
万川梅等: "《Hadoop应用开发实战详解 修订版》", 31 August 2014, 北京:中国铁道出版社 * |
周晓政: "《医药信息检索与利用 第2版》", 30 October 2012, 南京:东南大学出版社 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532370A (zh) * | 2019-06-11 | 2019-12-03 | 福建奇点时空数字科技有限公司 | 一种基于属性标注的专业数据实体属性抽取方法 |
CN115223674A (zh) * | 2022-08-16 | 2022-10-21 | 无锡慧方科技有限公司 | 一种适用于临床研究的医疗数据服务平台 |
CN115223674B (zh) * | 2022-08-16 | 2023-11-03 | 无锡慧方科技有限公司 | 一种适用于临床研究的医疗数据服务平台 |
Also Published As
Publication number | Publication date |
---|---|
CN109800285B (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5664109A (en) | Method for extracting pre-defined data items from medical service records generated by health care providers | |
US6463433B1 (en) | Distributed computer database system and method for performing object search | |
EP1018086B1 (en) | Search system and method based on multiple ontologies | |
US7814169B2 (en) | System and method for establishing and retrieving data based on global indices | |
CN102246178B (zh) | 用于联盟pacs的分布式患者登记 | |
US10169533B2 (en) | Virtual worklist for analyzing medical images | |
WO1996041288A1 (en) | Apparatus and method for centralized storage of heterogeneous medical records in managed health care organization | |
JP2004513452A (ja) | 患者医学情報をナビゲートするためのシステムおよび方法 | |
CN102947832A (zh) | 患者记录的身份匹配 | |
US10650478B2 (en) | Real-time aggregation and processing of healthcare records | |
CN106919608A (zh) | 医疗数据处理方法、装置及平台 | |
CN109800285A (zh) | 一种灵活的病历数据抽取方法、系统及数据库服务器 | |
CN113688135A (zh) | 一种基于患者主索引技术的医院信息集成方法 | |
CN111210884B (zh) | 一种临床医疗数据采集方法、装置、介质及设备 | |
US20120131011A1 (en) | Intelligent query routing for federated pacs | |
EP3799056A1 (en) | Cloud-based patient data exchange | |
CN102682414B (zh) | 医疗信息管理系统及医疗信息管理方法 | |
CN107862043B (zh) | 检查信息的检索方法及装置 | |
KR102202810B1 (ko) | 수의 경험지식 및 전문 정보를 이용한 가축 진단을 위한 자동 소견생성 시스템 | |
CA3027937A1 (en) | Systems and methods for facilitating communication of health information | |
WO1996041275A1 (en) | Apparatus and method for centralized storage of heterogeneous medical records in managed health care organization | |
CN113380414A (zh) | 基于大数据的数据采集方法及系统 | |
CN111105871A (zh) | 一种医学辅助诊断方法及系统 | |
CN110114832A (zh) | 用于优化对先前研究的使用的设备、系统和方法 | |
CN116825304B (zh) | 基于深度互联的在线医疗方法与系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |