一种病历搜索结果的排序方法和相关装置
技术领域
本申请涉及医疗技术领域,特别是涉及一种病历搜索结果的排序方法和相关装置。
背景技术
病历是病人在医院诊断治疗全过程的原始记录。现如今,电子病历(ElectronicMedical Record,EMR)通常包含多个病历文书,例如:病案首页、病程记录、检查检验结果、医嘱、手术记录、护理记录等,还可包括病人在医院获得的其他相关服务的记录。参见图1,该图展示了一份电子病历样例。
病历库或病历管理系统中通常存储由海量病人的电子病历。在医疗技术领域,利用病历库或病历管理系统能够在一定程度上提高医院相关工作人员的办公效率。但是由于海量数据的存在,搜索所需病历的难度也在逐渐提高。这不但对搜索算法提出了较高的要求,同时也对病历搜索结果的排序方法提出了较高的要求。
目前已有一些技术,按照相关性、时间或者病历文书分词所得的字段的重要程度,将病历搜索结果加以排序。但是,这些排序方法各自存在缺陷。
按照相关性排序,没有考虑到搜索词在文档中的位置。这样,即便排序在前的病历搜索结果与搜索词的匹配度很高,但是病历搜索结果中命中的字段的重要性可能并不高。
按照时间排序,仅仅可以实现病历从新到旧或者从旧到新的排序效果;维度单一,所适应的搜索结果呈现需求也比较单一。
按照字段重要程度排序,容易受到电子病历的病历文书的结构化程度影响。例如,电子病历的某些病历文书可能是结构化数据、非结构化数据或半结构化数据。结构化数据,即是指可以使用关系型数据库表示和存储,表现为二维形式的数据。非结构化数据,即没有固定结构的数据,例如图片、文档等。半结构化数据,又称自描述结构的数据,其不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但是包含相关标记,用来分割语义元素以及对记录和字段进行分层,常见的半结构化数据有XML和JSON等。对于很多非结构化数据,需要对其进行分词以增加字段,相比于结构化数据,非结构化数据的字段的值域统计准确性难以保证,从而,即便是重要字段,由于值域不准确也会影响排序结果。因此,排序在前的搜索结果也不一定是用户最满意的电子病历,从而影响电子病历的获取效率。
基于上述排序方法存在的缺陷,如何对病历搜索结果进行排序以提高电子病历的获取效率,已经成为本领域急需解决的技术问题。
发明内容
基于上述问题,本申请提供了一种病历搜索结果的排序方法和相关装置方法,以提高电子病历的获取效率,提升用户满意度。
本申请实施例公开了如下技术方案:
第一方面,本申请提供一种病历搜索结果的排序方法,包括:
通过对病历库中电子病历的各个病历文书的字段进行分类,获得所述电子病历对应的第一权重;
通过对所述电子病历的所有已分类字段的值域进行聚类统计,获得所述电子病历对应的第二权重;
根据搜索词,以及所述病历库中各个电子病历对应的所述第一权重和所述第二权重,对搜索到的电子病历排序。
可选地,所述通过对病历库中电子病历的各个病历文书的字段进行分类,获得所述电子病历对应的第一权重,具体包括:
利用医疗分类词库对所述病历库中所述电子病历的各个病历文书的字段进行类别标记;所述医疗分类词库包括:疾病词库、症状词库、药品词库、检验词库、检查词库和手术词库;
所述病历文书中每标记一个字段,进行累加计数,标记结束后获得各个所述病历文书对应的计数结果;
根据各个所述病历文书对应的计数结果,获得所述电子病历对应的第一权重。
可选地,所述根据各个所述病历文书对应的计数结果,获得所述电子病历对应的第一权重,具体包括:
根据各个所述病历文书对应的计数结果,获得各个所述病历文书对应的文书权重;
根据各个所述病历文书对应的计数结果和各个所述病历文书对应的文书权重,获得所述电子病历对应的所述第一权重。
可选地,所述根据各个所述病历文书对应的计数结果和各个所述病历文书对应的文书权重,获得所述电子病历对应的所述第一权重,具体包括:
将各个所述病历文书对应的计数结果与文书权重相乘,获得各个所述病历文书对应的乘积结果;
将各个所述病历文书对应的所述乘积结果进行累加,得到累加结果,并将所述累加结果作为所述电子病历对应的第一权重。
可选地,所述通过对所述电子病历的所有已分类字段的值域进行聚类统计,获得所述电子病历对应的第二权重,具体包括:
通过对所述病历库中所有字段的值域进行聚类统计,获得各个类别对应的第一统计结果;所述第一统计结果中包括所述类别下的各个字段的值域的值以及所述各个字段的值域的值对应的统计次数;
利用同义词词库对所述第一统计结果中同义的值进行归一处理和统计,获得各个类别对应的第二统计结果;
通过对所述电子病历的所有已分类字段进行聚类统计,获得各个类别对应的第三统计结果;所述第三统计结果中包括所述类别下的各个所述已分类字段的值域的值以及各个所述已分类字段的值域的值对应的统计次数;
利用各个类别对应的所述第三统计结果和各个类别对应的第二统计结果,获得所述电子病历对应的第二权重。
可选地,所述利用各个类别对应的所述第三统计结果和各个类别对应的第二统计结果,获得所述电子病历对应的第二权重,具体包括:
根据所述第二统计结果中各个值以及所述各个值对应的统计次数,获得所述各个值的权重;
将同一类别对应的所述第三统计结果和第二统计结果进行字段值域的匹配,如果匹配成功,且所述第三统计结果中所述已分类字段的值域有值,则将匹配成功的值的权重与预设值相加,获得所述已分类字段的字段权重;如果匹配失败,且所述第三统计结果中所述已分类字段的值域有值,则将所述已分类字段的字段权重设为所述预设值;如果所述第三统计结果中所述已分类字段的值域无值,则将所述已分类字段的字段权重设为0;
将所述电子病历的所有所述已分类字段的字段权重累加,获得所述电子病历对应的所述第二权重。
可选地,上述方法还包括:
所述病历库更新时,更新所述第一统计结果。
可选地,所述根据搜索词,以及所述病历库中各个电子病历对应的所述第一权重和所述第二权重,对搜索到的电子病历排序,具体包括:
根据所述搜索词,利用BM25算法对所述病历库中各个电子病历进行打分,获得各个所述电子病历的初始分值;
将所述初始分值大于预设分值的电子病历作为搜索到的电子病历;
将所述搜索到的电子病历的初始分值、所述搜索到的电子病历对应的第一权重以及所述搜索到的电子病历对应的第二权重相加,获得所述搜索到的电子病历的最终分值;
将各个所述搜索到的电子病历按照最终分值降序排列。
可选地,在所述根据搜索词,以及所述病历库中各个电子病历对应的所述第一权重和所述第二权重,对搜索到的电子病历排序之前,所述方法还包括:
将所述电子病历的数据使用倒排索引的方式索引至搜索引擎中。
第二方面,本申请提供一种病历搜索结果的排序装置,包括:
病历第一权重获取模块,用于通过对病历库中电子病历的各个病历文书的字段进行分类,获得所述电子病历对应的第一权重;
病历第二权重获取模块,用于通过对所述电子病历的所有已分类字段的值域进行聚类统计,获得所述电子病历对应的第二权重;
病历排序模块,用于根据搜索词,以及所述病历库中各个电子病历对应的所述第一权重和所述第二权重,对搜索到的电子病历排序。
相较于现有技术,本申请具有以下有益效果:
本申请提供的一种病历搜索结果的排序方法,通过对病历库中电子病历的各个病历文书的字段进行分类,获得所述电子病历对应的第一权重;通过对所述电子病历的所有已分类字段的值域进行聚类统计,获得所述电子病历对应的第二权重;最终,根据搜索词,以及所述病历库中各个电子病历对应的所述第一权重和所述第二权重,对搜索到的电子病历排序。
该方法可以基于已有的医疗电子病历模型使用,从而便捷高效地实现病历文书中的字段分类。电子病历的第一权重和第二权重均是在真实电子病历的基础上获得的,从而保证了第一权重和第二权重的真实可靠性。通过对病历文书的字段进行分类,能够将字段与医学领域重要的词库建立联系,因此,基于分类获得的第一权重和第二权重,并基于第一权重和第二权重进行病历搜索结果的排序,考虑到各个电子病历的重要程度。
此外,该方法适用于与现有的相关性排序算法结合,从而,能够在排序过程中一并考虑电子病历的重要程度和相关度,将更符合搜索词的电子病历优先排列。可见,该方法能够提升用户满意度,提升用户获取其搜索期望的电子病历的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种电子病历样例图;
图2为本申请实施例提供的一种病历搜索结果的排序方法的流程图;
图3为本申请实施例提供的一种医疗病历模型样例图;
图4为本申请实施例提供的另一种病历搜索结果的排序方法的流程图;
图5为本申请实施例提供的一种病历搜索结果的排序装置的结构示意图。
具体实施方式
正如前文描述,现有的一些病历搜索结果的排序方法维度单一,例如仅考虑病历与搜索词的相关性,仅考虑时间,或是仅考虑病历字段的重要程度。这些排序方法的准确性不足,导致用户需要反复修改搜索词,或者按照呈现的搜索结果连续多条查找,才能达到预期的目的,找到所期望的病历。显然,这些排序方法导致病历搜寻效率低下,使得用户体验较差。
基于此问题,发明人经过研究,提供了一种病历搜索结果的排序方法。该方法通过对电子病历的各个病历文书中的字段进行分类,获取电子病历的第一权重。另又通过对已分类字段的值域聚类统计,获得电子病历的第二权重。最终,利用搜索词并结合各个电子病历的第一权重和第二权重,对各个电子病历进行评分排序。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
方法实施例一
参见图2,该图为本申请实施例提供的一种病历搜索结果的排序方法的流程图。
如图2所示,本实施例提供的病历搜索结果的排序方法,包括:
步骤201:通过对病历库中电子病历的各个病历文书的字段进行分类,获得所述电子病历对应的第一权重。
在医疗领域,病历库中通常包含有海量的电子病历。医疗病历模型是基于电子病历的数据,根据适用场景定义的结构化的数据结果。在实际应用中,不同医疗机构所采用的医疗病理模型可能相同也可能不同。利用医疗病历模型,可以将每一份电子病历的数据按照定义好的结构进行存储。参见图3,该图为本申请实施例提供的一种医疗病历模型样例图。
本步骤实际操作中,具体可以基于医疗病历模型,对病历库中的任意一份电子病历的各个病历文书的字段进行分类。可以理解的是,从以医疗病历模型存在的电子病历中获得病历文书的字段属于比较成熟的技术,因此,对于如何获得病历文书中的字段的具体方法不进行赘述。
本实施例中,在具体实现病历搜索结果的排序时,考虑到至少两个重要的影响因子,其一是相关性因子,其二是重要性因子。
对于本申请实施例而言,相关性因子是指搜索词在电子病历中出现的度数,度数越高,表明该电子病历与搜索词的相关程度越高。在相关性方面,目前已经存在有多种算法实现评分,例如TF-IDF、BM25等。
可以理解的是,在网页搜索引擎中,一个网页的被其他网页引用的次数越多,表明该网页越有价值;一个网页被重要的网页引用,该网页的重要程度也越高。然而,在本申请实施例中,对于电子病历来说,各个电子病历之间不存在网页之间相互引用的关系,因此,难以根据网页搜索引擎使用的要性度量方法确定电子病历的重要性。为此,本申请实施例通过执行步骤101和步骤102,为电子病历赋予两项权重,即第一权重与第二权重。
在具体实现时,步骤101通过对电子病历的各个病历文书的字段进行分类,获得该电子病历的第一权重。
为便于理解,可参见下表1,表1为本申请实施例提供的一种病历文书模型样例表。
表1病历文书样例表
表1中,项目名称一栏展示了一份电子病历的各个病历文书。从表1中可以看出,一份电子病历可能包含例如:住院病案首页、住院首页手术、住院首页诊断、住院病历诊断、住院入院记录、住院首次病程记录和住院日常病程记录等多个病历文书。每个病历文书中均包含有一个或多个字段,其中,有些字段可能与医疗分类词库相关联,例如有些字段可能涉及到药品、疾病或手术等,另外还有些字段可能与医疗分类词库无关,例如性别、费用、个人史等。本步骤可以基于字段与医疗分类词库的关联性对电子病历各个病历文书的字段进行分类。
显然,与医疗分类词库相关联的字段在电子病历搜索中具有较高的重要性;而与医疗分类词库无关的字段在电子病历搜索中重要性较低。在本步骤中,作为一种示例性的实现方式,可以记录电子病历的各个病历文书中与医疗分类词库相关联的字段的个数,记录数目越多则为病历文书配以较高的文书权重,记录数目越少则为病历文书配以较低的文书权重。最终,可以根据各个病历文书的文书权重获得电子病历的第一权重。
可以理解的是,以上仅为示例性实现方式。在实际应用中,通过对各个病历文书分类,还可以采用多种方式为各个病历文书分配文书权重,最终获得电子病历的第一权重。因此,本实施例中,对于步骤101的具体实现方式不加以限定。
另外,本实施例中可采用多种依据对字段进行分类,不局限于医疗分类词库。对于字段的分类依据不加以限定。在实际应用中,也可以采用多种方式进行分类,例如构建字段与类别的映射关系或对字段进行类别标记等,因此,本实施例中对于具体分类方式也不进行限定。
步骤202:通过对所述电子病历的所有已分类字段的值域进行聚类统计,获得所述电子病历对应的第二权重。
本步骤中,电子病历的已分类字段具体是指经过前述步骤101已经被明确归类的字段。由于不同的已分类字段可能被分于同一类,因此,本步骤可以首先将电子病历的所有已分类字段归类分析。例如,疾病={首页诊断-诊断名称,入院记录-既往史-疾病名称,上级医师查房录-疾病名称……};药品={医嘱-药品名称,入院记录-现病史-药品名称……}。在以上示例中,首页诊断-诊断名称、入院记录-既往史-疾病名称、上级医师查房录-疾病名称、医嘱-药品名称和入院记录-现病史-药品名称,均为已分类字段。
本步骤中,已分类字段的值域中可能有值,也可能无值。参见下面四个示例:
1)电子病历A:首页诊断-诊断名称=冠心病。
其中,“首页诊断”为电子病历A的病历文书,“首页诊断-诊断名称”为病历文书“首页诊断”的已分类字段,该已分类字段归类为“疾病”类别。“首页诊断-诊断名称”的值域内有值,该字段的值为“冠心病”。
2)电子病历B:首页诊断-诊断名称=高血压
其中,“首页诊断”为电子病历B的病历文书,“首页诊断-诊断名称”为病历文书“首页诊断”的已分类字段,该已分类字段归类为“疾病”类别。“首页诊断-诊断名称”的值域内有值,该字段的值为“高血压”。
3)电子病历C:首页诊断-诊断名称=糖尿病
其中,“首页诊断”为电子病历C的病历文书,“首页诊断-诊断名称”为病历文书“首页诊断”的已分类字段,该已分类字段归类为“疾病”类别。“首页诊断-诊断名称”的值域内有值,该字段的值为“糖尿病”。
4)电子病历D:首页诊断-诊断名称=
其中,“首页诊断”为电子病历D的病历文书,“首页诊断-诊断名称”为病历文书“首页诊断”的已分类字段,该已分类字段归类为“疾病”类别。“首页诊断-诊断名称”的值域内无值。
可以理解的是,对于一份电子病历,由于其具有多个病历文书,其中,某些病历文书中可能出现值域相同的已分类字段,例如一份电子病历中具有多个不同已分类字段的值域中的值——冠心病。基于此,本步骤中可以对所述电子病历的所有已分类字段的值域进行聚类统计,再为各个已分类字段进行字段权重的分配。作为一种示例性实现方式,根据电子病历中各个已分类字段的字段权重,最终获得该电子病历的第二权重。
在实际应用中,根据聚类统计的结果可以采取多种方法进行字段权重的分类。本实施例中,对于获得已分类字段的字段权重的具体实现方式不进行限定。
步骤203:根据搜索词,以及所述病历库中各个电子病历对应的所述第一权重和所述第二权重,对搜索到的电子病历排序。
本步骤可以采用较为成熟的相关性排序算法,基于搜索词和病历库,对病历库中海量的电子病历进行搜索评分。在每一份电子病历的评分基础上,结合电子病历对应的第一权重和第二权重,对评分加以修正,最终根据修正后的评分对搜索到的电子病历进行排序。
以上即为本申请提供的病历搜索结果的排序方法,通过对病历库中电子病历的各个病历文书的字段进行分类,获得所述电子病历对应的第一权重;通过对所述电子病历的所有已分类字段的值域进行聚类统计,获得所述电子病历对应的第二权重;最终,根据搜索词,以及所述病历库中各个电子病历对应的所述第一权重和所述第二权重,对搜索到的电子病历排序。
该方法可以基于已有的医疗电子病历模型使用,从而便捷高效地实现病历文书中的字段分类。电子病历的第一权重和第二权重均是在真实电子病历的基础上获得的,从而保证了第一权重和第二权重的真实可靠性。通过对病历文书的字段进行分类,能够将字段与医学领域重要的词库建立联系,因此,基于分类获得的第一权重和第二权重,并基于第一权重和第二权重进行病历搜索结果的排序,考虑到各个电子病历的重要程度。
此外,该方法适用于与现有的相关性排序算法结合,从而,能够在排序过程中一并考虑电子病历的重要程度和相关度,将更符合搜索词的电子病历优先排列。可见,该方法能够提升用户满意度,提升用户获取其搜索期望的电子病历的效率。
基于前述实施例,本申请还提供另一种病历搜索结果的排序方法,下面结合实施例和附图对该方法的具体实现进行详细描述和说明。
方法实施例二
参见图4,该图为本申请实施例提供的另一种病历搜索结果的排序方法的流程图。
如图4所示,本实施例提供的病历搜索结果的排序方法,包括:
步骤401:利用医疗分类词库对所述病历库中所述电子病历的各个病历文书的字段进行类别标记。
需要说明的是,本申请实施例中,医疗分类词库至少包括以下六个类别的词库:疾病词库、症状词库、药品词库、检验词库、检查词库和手术词库。其中,疾病词库中包括与疾病相关的词语,症状词库中包括与症状相关的词语,药品词库中包括与药品相关的词语,检验词库包含与检验相关的词语,检查词库包含与检查相关的词语,手术词库包含与手术相关的词语。
电子病历的病历文书中存在一些字段,与上述六个类别的词库中的一种或多种相关,因此,利用这六类词库对病历文书中的字段进行分类。现结合示例进行描述。
字段“首页手术_手术名称”与手术词库相关,分类后,字段“首页手术_手术名称”标记为手术类别;
字段“首页诊断_诊断名称”与疾病词库相关,分类后,字段“首页诊断_诊断名称”标记为疾病类别;
字段“检验报告_检验细项”与检验词库相关,分类后,字段“检验报告_检验细项”标记为检验类别;
字段“检查报告_项目名称”与检查词库相关,分类后,字段“检查报告_项目名称”标记为检查类别;
字段“医嘱_项目名称”与药品词库相关,分类后,字段“医嘱_项目名称”标记为药品类别。
步骤402:所述病历文书中每标记一个字段,进行累加计数,标记结束后获得各个所述病历文书对应的计数结果。
本步骤中,病历文书对应的计数结果实质是对该病历文书被标记的已分类字段的统计结果。
以表1作为示例,一份电子病历包含以下几个病历文书:病案首页、首页手术、首页诊断、病历诊断、入院记录、首次病程记录和日常病程记录。各个病历文书对应的计数结果如下,下述括号中为各个病历文书中被标记分类的字段及类别。
病案首页:0;
首页手术:1(手术名称);
首页诊断:2(诊断名称、鉴别诊断名称);
病历诊断:2(诊断名称、鉴别诊断名称);
入院记录:19(主诉-症状、主诉-疾病、主诉-检验、主诉-检查、主诉-手术、主诉-药品、现病史-症状、现病史-疾病、现病史-检验、现病史-检查、现病史-手术、现病史-药品、既往史-症状、既往史-疾病、既往史-检验、既往史-检查、既往史-手术、既往史-药品、家族史-疾病);
首次病程记录:4(诊疗计划-疾病、诊疗计划-检验、诊疗计划-检查、诊断名称);
日常病程记录:5(疾病名称、诊疗计划-疾病、诊疗计划-检验、诊疗计划-检查、病情记录-疾病名称)。
通过以上示例,可知,通过执行步骤402能够获得电子病历中每一个病历文书对应的计数结果。这些计数结果后续可用于计算电子病历对应的第一权重。
步骤403:根据各个所述病历文书对应的计数结果,获得所述电子病历对应的第一权重。
为便于理解,本申请提供了步骤403的一种具体实现方式。下面通过S1~S2对步骤403的此实现方式进行说明。
S1:根据各个所述病历文书对应的计数结果,获得各个病历文书对应的文书权重。
作为示例,电子病历a具有n个病历文书,各个病历文书分别表示为b1,b2…bn,病历文书b1,b2…bn对应的计数结果分别为c1,c2…cn,病历文书b1,b2…bn对应的文书权重分别为d1,d2…dn。其中n为大于或等于2的正整数。
对于任意一个病历文书bi(1≤i≤n,i为整数),其对应的文书权重di可通过如下公式(1)计算获得。
di=ci/csum+1公式(1)
上述公式(1)中,ci为病历文书bi对应的计数结果,csum为电子病历a的所有病历文书的计数结果的总和,可由公式(2)计算获得:
S2:根据各个病历文书对应的计数结果和各个所述病历文书对应的文书权重,获得所述电子病历对应的所述第一权重。
具体地,在S2中,可以首先将各个所述病历文书对应的计数结果与文书权重相乘,获得各个所述病历文书对应的乘积结果;其后,将各个所述病历文书对应的所述乘积结果进行累加,得到累加结果,并将所述累加结果作为所述电子病历对应的第一权重docWeight。可参见下述公式(3)。
上述公式中,ci为病历文书bi对应的计数结果,di为病历文书bi对应的文书权重。
可以理解的是,上述S1~S2仅为本实施例提供的步骤403的示例性实现方式。在实际应用中,基于各个所述病历文书对应的计数结果,还可采用其他计算方法获得电子病历对应的第一权重。因此,本实施例中,对于步骤403的具体实现方式不加以限定。
通过以上步骤401至403获得电子病历对应的第一权重。下面结合步骤404至407详细描述获得电子病历对应的第二权重的实现方式。
步骤404:通过对所述病历库中所有字段的值域进行聚类统计,获得各个类别对应的第一统计结果。
在本实施例中,所述第一统计结果中包括所述类别下的各个字段的值域的值以及所述各个字段的值域的值对应的统计次数。
以疾病类别为例,第一统计结果为:
{冠心病=500,冠状动脉粥样硬化性心脏病=500,高血压=800,糖尿病=500,心肌梗死=100,血压=10}
上述示例的第一统计结果中,冠心病、冠状动脉粥样硬化性心脏病、高血压、糖尿病、心肌梗死和血压分别为病历库中疾病相关的字段的值域内的值,其后的数值为病历库中这些值对应的统计次数,即出现次数。
可以理解的是,在病历库中可能存在有多组医疗同义词,这些医疗同义词的含义相同,仅名称存在区别。例如,疾病同义词词库类别中:冠心病与冠状动脉粥样硬化性心脏病;窦房传导阻滞与窦房阻滞;蛲虫病与蛲虫感染;生长激素腺瘤与GH瘤等。
对于这些医疗同义词,没有必要对其分别进行权重分配,在电子病历搜索中,具有相同含义的医疗同义词其重要性也没有区别。为实现准确的排序效果,有必要对第一统计结果中的同义词进行合并归一。
步骤405:利用同义词词库对所述第一统计结果中同义的值进行归一处理和统计,获得各个类别对应的第二统计结果。
本实施例中,同义词词库包含有疾病、手术、检验、检查、药品和症状等类别相关的医疗同义词。
继续沿用以上示例,利用同义词词库对上述第一统计结果进行合并归一处理和统计后得到第二统计结果为:
{冠状动脉粥样硬化性心脏病=1000,高血压=800,糖尿病=500,心肌梗死=100}
步骤406:通过对所述电子病历的所有已分类字段进行聚类统计,获得各个类别对应的第三统计结果。
本实施例中,第三统计结果中包括所述类别下的各个所述已分类字段的值域的值以及各个所述已分类字段的值域的值对应的统计次数。
以疾病类别为示例,参见如下的疾病类别对应的第三统计结果:
{糖尿病=500}
上述示例中,糖尿病为某一电子病历中疾病类别的字段值域内的值,其对应的统计次数为500。
步骤407:利用各个类别对应的所述第三统计结果和各个类别对应的第二统计结果,获得所述电子病历对应的第二权重。
为便于理解,本申请提供了步骤407的一种具体实现方式。下面通过K1~K3对步骤407的此实现方式进行说明。
K1:根据所述第二统计结果中各个值以及各个值对应的统计次数,获得所述各个值的权重。
继续沿用上述示例,第二统计结果为:
{冠状动脉粥样硬化性心脏病=1000,高血压=800,糖尿病=500,心肌梗死=100}
基于以上第二统计结果,分别计算各个值的权重,具体计算方式为,将该类别对应的第二统计结果中各个值的统计次数与该统计结果中所有值的总统计次数相除,获得各个值的权重。
对于冠状动脉粥样硬化性心脏病,其权重为1000/(1000+800+500+100)=0.42;
对于高血压,其权重为800/(1000+800+500+100)=0.33;
对于糖尿病,其权重为500/(1000+800+500+100)=0.21;
对于心肌梗死,其权重为100/(1000+800+500+100)=0.04。
K2:将同一类别对应的所述第三统计结果和第二统计结果进行字段值域的匹配,如果匹配成功,且所述第三统计结果中所述已分类字段的值域有值,则将所述匹配成功的值的权重与预设值相加,获得所述已分类字段的字段权重;如果匹配失败,且所述第三统计结果中所述已分类字段的值域有值,则将所述已分类字段的字段权重设为所述预设值;如果所述第三统计结果中所述已分类字段的值域无值,则将所述已分类字段的字段权重设为0。
在K2中描述了赋予已分类字段的字段权重的三种可能实现方式。对于某一份电子病历,以疾病类别为例,其疾病类别对应的第三统计结果可能有三种情况:
(1)第三统计结果中存在与第二统计结果中相互匹配的值,例如,第三统计结果中包含冠状动脉粥样硬化性心脏病、高血压、糖尿病、心肌梗死。
对于此情况,将所述匹配成功的值的权重与预设值相加,获得所述已分类字段的字段权重。例如,如果第三统计结果为:{糖尿病=500},由于第二统计结果中也包含此值,则将糖尿病的权重0.21加上预设值(例如1),获得值域内值为糖尿病的已分类字段的字段权重1.21。
(2)第三统计结果中存在与第二统计结果中不匹配的值,例如,血压。
对于此情况,其存在的原因可能是:电子病历录入错误,或者,非结构化的病历在进行结构化时数据挖掘出错。
针对此情况,将所述已分类字段的字段权重设为所述预设值,例如,为1。
(3)第三统计结果中不存在值,例如,第三统计结果为{}。
对于此情况,其存在的原因可能是:病历中数据缺失,或者,非结构化的病历在进行结构化时,数据挖掘没有挖掘出来。
针对此情况,将所述已分类字段的字段权重设为0。
在上述(1)和(2)两种情况中,通过在字段权重中增加预设值,修正字段权重的完整度;在上述(1)情况中,当第三统计结果与第二统计结果中的值匹配上的情况下,在字段权重中添加值的权重,提高字段权重的准确度。从而,通过执行该步骤K2获得的各个已分类字段的字段权重,其完整度和准确度得到了保障。
K3:将所述电子病历的所有所述已分类字段的字段权重累加,获得所述电子病历对应的所述第二权重。
可以理解的是,每一份电子病历具有多个类别的第三统计结果,从而,将各个类别对应的第二统计结果和第三统计结果进行匹配后,能够得到多个不同类别的已分类字段的字段权重。本步骤中,通过将电子病历的所有已分类字段的字段权重累加,获得电子病历的第二权重e。
步骤408:根据所述搜索词,利用BM25算法对所述病历库中各个电子病历进行打分,获得各个所述电子病历的初始分值。
BM25方法利用搜索词与文档的相关性对文档进行打分。应用到本实施例中,即是利用搜索词与电子病历的相关性对电子病历进行打分。
假设用户提供的搜索词有若干个:q1,q2…qn,通过公式(4)可以获得电子病历a的初始分值Score:
公式(4)中,Wi为搜索词qi(1≤i≤n,i为整数)的权重,即逆向文档频率,其计算方式可参见公式(5);Ri为搜索词qi与电子病历a的相关度值。
公式(5)中,N为病历库中的电子病历总数,k(qi)为包含搜索词qi的电子病历数目。0.5是调教系数,避免k(qi)=0的情况。公式(5)中,log函数能够使Wi的值受N和k(qi)的影响更加平滑。
步骤409:将所述初始分值大于预设分值的电子病历作为搜索到的电子病历。
在实际应用中,利用BM25算法结合搜索词对病历库中各个电子病历进行搜索打分后,对于一部分电子病历,由于其数据与搜索词的关联性过低,因此其初始分值可能非常低。这些初始分值过低的电子病历对于用户的效用低,因此无需对其进行排序展示给用户。本步骤可以预先设置一个分值,将初始分值低于或等于预设分值的电子病历筛除,仅将大于预设分值的电子病历作为后续加以排序的电子病历。
步骤410:将所述搜索到的电子病历的初始分值、所述搜索到的电子病历对应的第一权重以及所述搜索到的电子病历对应的第二权重相加,获得所述搜索到的电子病历的最终分值。
以电子病历a为搜索到的电子病历示例,通过公式(4)可计算获得其最终分值Score’:
Score'=Score+docWeight+e 公式(4)
公式(4)中,Score表示电子病历a的初始分值,docWeight表示电子病历对应的第一权重,e表示电子病历a对应的第二权重。
步骤411:将各个所述搜索到的电子病历按照最终分值降序排列。
以上即为本申请实施例提供的另一种病历搜索结果的排序方法。该方法在已有的排序模型基础上,加入第一权重和第二权重,从而引入病历文书的文书权重和已分类字段的字段权重等,将不同的因子组合起来,使得利用搜索词搜到的电子病历按照修正的准确分值(即最终分值)排序呈现。相比于现有技术,病历搜索结果的排序方法考虑的因素更加全面,维度多元化,从而提高了排序方法所呈现病历的准确性和质量,提高用户体验。
可以理解的是,上述实施例提供的病历搜索结果的排序方法中,第二权重与第二统计结果相关,第二统计结果是在第一统计结果的基础上获得的,而第一统计结果是整个病历库的宏观统计结果。在实际应用中,病历库可能不断地纳入新的电子病历数据,从而,第一统计结果需要根据病历库的数据更新而更新,从而保障电子病历对应的第二权重的准确性。进一步地,通过实时进行最终分值的调整,提高排序的准确性和质量。
另外,作为一种可能的实现方式,前述实施例中在所述根据搜索词,以及所述病历库中各个电子病历对应的所述第一权重和所述第二权重,对搜索到的电子病历排序之前,还可以进一步包括:
将所述电子病历的数据使用倒排索引的方式索引至搜索引擎中。
倒排索引是实现单词-文档矩阵的一种存储形式。为便于理解,可参见下表2。
表2单词-文档矩阵示意表
单词-文档矩阵表达单词与文档之间具有的一种包含关系的概念模型。表2中每一列代表一个文档,每一行代表一个单词。打对勾的位置代表包含关系。纵向观察表2可以看到每列代表的文档包含有哪些单词;横向观察表2可以看到每行代表的单词存在于哪些文档中。例如,表2中,单词1存在于文档1和文档4中;单词2存在于文档2和文档3中;文档2中包含单词2和单词5;文档4中包含单词1和单词3。
本实施例中,可以采用倒排索引方式实现上述单词-文档矩阵这种单词到文档的映射关系的模型。当然,在实际应用中还可采用其他方式实现,因此,此处对于具体索引方式不加以赘述。
表3所示为各个文档内容列表。表4所示为各个单词与文档的倒排索引关系列表。
表3各个文档内容列表
文档编号 |
文档内容 |
1 |
否认肝炎、疟疾病史,否认糖尿病 |
2 |
否认糖尿病、精神疾病史 |
3 |
否认输血史 |
4 |
否认肝炎、疟疾病史 |
5 |
否认肝炎 |
表4各个单词与文档的倒排索引关系列表
单词ID |
单词 |
文档频率 |
倒排列表(DocID;TF;<P0S>) |
1 |
否认 |
5 |
(1;2;<1>)(2;1;<1>)(3;1;<1>)(4;1;<1>)(5;1;<1>) |
2 |
肝炎 |
3 |
(1;1;<2>)(2;0;<0>)(3;0;<0>)(4;1;<2>)(5;1;<2>) |
3 |
糖尿病 |
2 |
(1;1;<5>)(2;1;<2>)(3;0;<0>)(4;0;<0>)(5;0;<0>) |
4 |
疟疾病史 |
2 |
(1;1;<3>)(2;0;<0>)(3;0;<0>)(4;1;<3>)<5;0;<0>) |
5 |
精神疾病 |
1 |
(1;0;<0>)(2;1;<3>)(3;0;<0>)(4;0;<0>)(5;0;<0>) |
6 |
输血史 |
1 |
(1;0;<0>)(2;0;<0>)(3;1;<2>)(4;0;<0>)(5;0;<0>) |
在表4中,文档频率代表在所有文档中共有多少个文档包含该单词。倒排列表(DocID;TF;<POS>)中DocID记录文档的编号;TF记录单词在某个文档中出现的次数;POS记录单词在文档中出现的位置。
为便于理解,以单词“精神疾病”为例,其单词编号为5,文档频率为1,代表整个文档集合中有一个文档包含这个单词,对应的倒排列表为{(1;0;<0>)(2;1;<3>)(3;0;<0>)(4;0;<0>)(5;0;<0>)},含义是在文档2出现过“精神疾病”这个单词,在每个文档的出现过1次,单词“精神疾病”在第二个文档的POS是3,即文档的第三个单词是“精神疾病”,其他的类似,不一一枚举。
需要说明的是,在本实施例中,文档均是指电子病历。
本申请实施例通过将电子病历数据通过倒排索引的方式索引至搜索引擎中,便于利用搜索词对电子病历的搜索。
在前述实施例提供的方法的基础上,相应地,本申请还提供一种病历搜索结果的排序装置。下面结合实施例和附图对该装置进行描述。
装置实施例
参见图5,该图为本申请实施例提供的一种病历搜索结果的排序装置的结构示意图。
如图5所示,本实施例提供的病历搜索结果的排序装置,包括:
病历第一权重获取模块501,用于通过对病历库中电子病历的各个病历文书的字段进行分类,获得所述电子病历对应的第一权重;
病历第二权重获取模块502,用于通过对所述电子病历的所有已分类字段的值域进行聚类统计,获得所述电子病历对应的第二权重;
病历排序模块503,用于根据搜索词,以及所述病历库中各个电子病历对应的所述第一权重和所述第二权重,对搜索到的电子病历排序。
该装置可以基于已有的医疗电子病历模型使用,从而便捷高效地实现病历文书中的字段分类。电子病历的第一权重和第二权重均是在真实电子病历的基础上获得的,从而保证了第一权重和第二权重的真实可靠性。通过对病历文书的字段进行分类,能够将字段与医学领域重要的词库建立联系,因此,基于分类获得的第一权重和第二权重,并基于第一权重和第二权重进行病历搜索结果的排序,考虑到各个电子病历的重要程度。
此外,该装置适用于与现有的相关性排序算法结合,从而,能够在排序过程中一并考虑电子病历的重要程度和相关度,将更符合搜索词的电子病历优先排列。可见,该装置能够提升用户满意度,提升用户获取其搜索期望的电子病历的效率。
作为一种可选的实现方式,所述病历第一权重获取模块501,具体包括:
类别标记单元,用于利用医疗分类词库对所述病历库中所述电子病历的各个病历文书的字段进行类别标记;所述医疗分类词库包括:疾病词库、症状词库、药品词库、检验词库、检查词库和手术词库;
标记计数单元,用于当所述病历文书中每标记一个字段时,进行累加计数,标记结束后获得各个所述病历文书对应的计数结果;
第一权重获取单元,用于根据各个所述病历文书对应的计数结果,获得所述电子病历对应的第一权重。
作为一种可选的实现方式,所述第一权重获取单元,具体包括:
文书权重获取子单元,用于根据各个所述病历文书对应的计数结果,获得各个所述病历文书对应的文书权重;
第一权重获取子单元,用于根据各个所述病历文书对应的计数结果和各个所述病历文书对应的文书权重,获得所述电子病历对应的所述第一权重。
作为一种可选的实现方式,所述第一权重获取子单元,具体用于:
将各个所述病历文书对应的计数结果与文书权重相乘,获得各个所述病历文书对应的乘积结果;
将各个所述病历文书对应的所述乘积结果进行累加,得到累加结果,并将所述累加结果作为所述电子病历对应的第一权重。
作为一种可选的实现方式,所述病历第二权重获取模块502,具体包括:
聚类统计单元,用于通过对所述病历库中所有字段的值域进行聚类统计,获得各个类别对应的第一统计结果;所述第一统计结果中包括所述类别下的各个字段的值域的值以及所述各个字段的值域的值对应的统计次数;
归一统计单元,用于利用同义词词库对所述第一统计结果中同义的值进行归一处理和统计,获得各个类别对应的第二统计结果;
第三统计结果获取单元,用于通过对所述电子病历的所有已分类字段进行聚类统计,获得各个类别对应的第三统计结果;所述第三统计结果中包括所述类别下的各个所述已分类字段的值域的值以及各个所述已分类字段的值域的值对应的统计次数;
第二权重获取单元,用于利用各个类别对应的所述第三统计结果和各个类别对应的第二统计结果,获得所述电子病历对应的第二权重。
作为一种可选的实现方式,所述第二权重获取单元,具体包括:
值权重获取子单元,用于根据所述第二统计结果中各个值以及所述各个值对应的统计次数,获得所述各个值的权重;
统计结果匹配单元,用于将同一类别对应的所述第三统计结果和第二统计结果进行字段值域的匹配,如果匹配成功,且所述第三统计结果中所述已分类字段的值域有值,则将匹配成功的值的权重与预设值相加,获得所述已分类字段的字段权重;如果匹配失败,且所述第三统计结果中所述已分类字段的值域有值,则将所述已分类字段的字段权重设为所述预设值;如果所述第三统计结果中所述已分类字段的值域无值,则将所述已分类字段的字段权重设为0;
第二权重获取子单元,用于将所述电子病历的所有所述已分类字段的字段权重累加,获得所述电子病历对应的所述第二权重。
作为一种可选的实现方式,所述病历排序模块503,具体包括:
初始分值获取单元,用于根据所述搜索词,利用BM25算法对所述病历库中各个电子病历进行打分,获得各个所述电子病历的初始分值;
电子病历筛选单元,用于将所述初始分值大于预设分值的电子病历作为搜索到的电子病历;
最终分值获取单元,用于将所述搜索到的电子病历的初始分值、所述搜索到的电子病历对应的第一权重以及所述搜索到的电子病历对应的第二权重相加,获得所述搜索到的电子病历的最终分值;
病历排序单元,用于将各个所述搜索到的电子病历按照最终分值降序排列。
该装置在已有的排序模型基础上,加入第一权重和第二权重,从而引入病历文书的文书权重和已分类字段的字段权重等,将不同的因子组合起来,使得利用搜索词搜到的电子病历按照修正的准确分值(即最终分值)排序呈现。相比于现有技术,病历搜索结果的排序装置考虑的因素更加全面,维度多元化,从而提高了排序方法所呈现病历的准确性和质量,提高用户体验。
可以理解的是,上述实施例提供的病历搜索结果的排序装置中,第二权重与第二统计结果相关,第二统计结果是在第一统计结果的基础上获得的,而第一统计结果是整个病历库的宏观统计结果。在实际应用中,病历库可能不断地纳入新的电子病历数据,从而,第一统计结果需要根据病历库的数据更新而更新,从而保障电子病历对应的第二权重的准确性。进一步地,通过实时进行最终分值的调整,提高排序的准确性和质量。
因此,作为一种可选的实现方式,上述装置还可以包括:
统计结果更新模块,用于所述病历库更新时,更新所述第一统计结果。
作为一种可选的实现方式,上述装置还可以包括:
索引入库模块,用于将所述电子病历的数据使用倒排索引的方式索引至搜索引擎中。
本申请实施例通过将电子病历数据通过倒排索引的方式索引至搜索引擎中,便于利用搜索词对电子病历的搜索。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元提示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。