一种基于Solr的体检数据搜索系统的制作方法

文档序号:12467270阅读:177来源:国知局
一种基于Solr的体检数据搜索系统的制作方法与工艺

本发明属于医疗大数据处理技术领域,具体涉及一种基于Solr的体检数据搜索系统。



背景技术:

健康是人生的第一大财富。随着人们生活水平的提高、保健意识的增强,健康体检逐渐成为一种社会时尚,人们已经改变了只有在得病时才去医院的传统观念,定期体检已经被大多数人所接受。因此,医院积累了海量的电子体检数据。

如何充分利用己有的体检数据来更好的辅助医生的学术研究是本领域的研究重点。一般当数据量比较小的时候,各种信息内容都直接存储在医院数据库系统中,并且使用数据库提供的检索和查询功能进行中文内容搜索。但是随着数据量的增大,到百万千万乃至上亿条数据的时候,使用数据库中的like"%keyword%"查询,查询效率会急剧的下降。经实践,在医院现有的传统数据库搜索信息需要几十分钟,极大地浪费医生的时间。并且对于不会使用数据库的医生,提取数据需要求助专业技术人员,增大操作难度。因此使用数据库直接查询来进行中文检索并不是好的解决方案。而使用搜索引擎就可以避免数据库like查询带来的低效性;且使用Solr搭建搜索引擎更可以避免使用其他大型搜索引擎的所遇到的更新慢,数据不准确等问题。



技术实现要素:

鉴于上述,本发明提供了一种基于Solr的体检数据搜索系统,该系统具有良好的用户界面,医生可按照网页上的目录来进行选择项目和项目下的细项,点击搜索即可得到符合条件的数据;另外,医生还可以自行在搜索框里输入关键字进行查找,搜索时间为几秒,不会因为数据的庞大而影响搜索速度。

一种基于Solr的体检数据搜索系统,由数据预处理模块、Solr搜索引擎平台搭建模块和网页查询模块依次连接组成;其中:

所述的数据预处理模块用于对医院体检数据库中的所有体检报告进行预处理以及统计分析,以统计出所有体检项目并进行归纳分类,分析提取出关于B超和放射的所有诊断结果;

所述的Solr搜索引擎平台搭建模块利用Solr建立全文搜索引擎,以实现索引创建以及索引搜索;

所述的网页查询模块用于为用户提供查找的分类目录选择和关键字输入框,并将输出结果有序地显示给用户。

所述数据预处理模块对体检报告进行预处理以及分析,具体包括对缺失重要信息的体检报告进行删除,对体检报告中的异常值进行修正处理。

所述数据预处理模块采用Python连接Oracle对体检报告结果表中的组合项目名称和体检项目名称进行统计并人为归纳分类;同时针对B超和放射的诊断分类目录,通过对个人总检单中的总检查小结进行分析,利用正则表达法得到关于B超和放射的诊断结果。

所述Solr搜索引擎平台搭建模块实现索引创建的具体过程为:首先利用Solr的分词组件对待索引原始文档进行分词并去除标点符号和停用词;然后将得到的词传给Solr的语言处理组件,以把词的大写变为小写,单词变为词根形式;最后将处理后的词传给Solr的索引组件生成反向索引,其包括字符串序列以及字符串的文档编号链表;所述待索引原始文档包括体检者的证件信息、出生日期、性别、年龄以及体检的编码、日期、组合项目名称和体检项目名称。

所述Solr搜索引擎平台搭建模块在实现索引创建的过程中导入MMSeg4i的支持库和专业医学词库以支持中文文本类型的分词。

所述Solr搜索引擎平台搭建模块实现索引搜索的具体过程为:首先对查询内容进行词法分析、语法分析和语言处理;然后搜索索引,得到符合语法树的文档集合;最后计算查询内容与文档的相关性,根据相关性对文档进行排序。这样每次搜索的时候,solr系统不需要访问所有文档,极大地减少搜索时间。本发明系统支持多关键字搜索,系统会先找到各相关索引下的文档,然后取共同的文档列表作为搜索结果。

所述的网页查询模块在服务器端基于J2EE架构,使用Spring、Struts的开源应用框架以及MVC(Model View Controller)的设计模式,一方面支持通过目录选择多个细项进行搜索且支持对B超和放射检查进行诊断分类搜索,另一方面支持直接关键字搜索且支持选择体检者的年龄范围、体检日期范围和性别进行搜索。

本发明采用Oracle+Solr的框架,数据存储在医院的Oracle数据库中,用Solr建立全文搜索引擎,并导入MMSeg4i的支持库和专业医学词库以支持中文文本类型的分词。Solr虽然可以通过发送查询请求返回数据,但是数据结果为json形式,不够直观。因此,本发明设计一个与索引库交互的用户查询界面,该查询界面为用户提供查找输入框,又能将输出结果有序的显示给客户。

由此,本发明系统具有以下有益技术效果:

(1)本发明基于对体检数据的统计结果,生成一个覆盖范围广且分类极细的分类目录,此目录中的项目为数据库中所有体检项目,因此本发明系统功能全面,可以为不同科室的医生服务,且分类极为细致,甚至针对B超和放射科实现诊断的分类。

(2)本发明将医院数据存储在Oracle数据库中,利用Solr的Data Import Handler处理器,可将数据库数据导入Solr,Solr支持索引更新,所以医生可快速查询到相对较新的数据。

(3)本发明系统还设计了友好的用户界面,有着很好的可操作性及交互性。

附图说明

图1为本发明系统的框架图。

图2为本发明系统的实现流程图。

图3为索引创建的流程图。

图4为索引图。

图5为搜索的网页页面展示图。

图6为搜索结果的网页页面展示图。

具体实施方式

为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。

本发明基于浙江大学医学院附属第二医院的十年间的体检数据,基于对数据的把握之后,本发明系统实现分类和搜索两个功能。分类就是给体检数据分类,医生可按照分类目录找到自己所需的数据。分类包括体检项目分类和体检诊断分类,其中诊断分类只是针对B超和放射项目。搜索就是支持医生输入关键字,后台根据关键字进行匹配,找出相关数据。搜索可以基于全部体检数据,也可以基于上面分类的数据结果。最终数据结果内容包括体检者个人信息以及项目体检结果,部分数据在网页上以表格形式展示,同时医生可以点击下载数据按键下载全部数据。

为了实现上述功能,本发明将一个基于Solr的体检数据搜索系统拆解为三个相互联系的模块:数据预处理模块、Solr搜索引擎平台搭建模块、网页查询模块。本发明涉及到的数据库表主要为体检人员表、体检结果表和个人总检单表。体检人员表主要存放了体检者的个人信息,包括身份证、性别、姓名和出生日期;体检结果表存放了项目的体检结果;个人总检单表主要包括总检小结和总检建议,总检小结是根据体检结果表中各个项目的体检结果得到的该次体检诊断。

图1为系统框架图,最底层为Oracle数据库,医院数据库中存储亿条以上体检记录;中间为Solr搜索引擎核心,由于Solr是通过Servlet方式实现的,因此需要部署在容器上,本发明系统选择最流行的搭建中小规模Web应用的Tomcat。由图1中可知,Solr需要配置分词器、词库以及对应索引数据的配置文件。最上层为应用层,在这层中,可以灵活的使用搜索引擎的查询结果构建自己的搜索应用。

如图2所示,本发明整个系统各模块的工作过程如下:

数据预处理模块主要是数据筛选和体检项目分类表的归纳。首先需要把缺失重要信息的体检数据删除掉,比如:身份证信息、体检项目结果信息。实现体检项目分类功能首先需要对数据库中数据进行分析统计出分类目录。为了得到分类目录,我们用Python连接Oracle对体检结果表中的组合项目名称和项目名称进行统计并人为归纳分类。针对B超和放射的诊断分类目录需要对个人总检单中的总检查小结进行分析,通过正则方法可得到B超和放射的诊断结果。

Solr搜索引擎平台搭建模块可以归结为两个过程:索引创建和搜索索引。索引的创建首先需要明确有哪些字段需要被索引,本发明系统根据搜索需求,确定了搜索系统所需要的体检者信息和体检信息,包括体检者的证件信息、出生日期、性别和年龄,以及体检的编码、日期、组合项目和体检项目都需要被创建为索引以便作为条件快速搜索。

索引创建过程如图3所示:首先把原始文档交给分词组件,对文档进行分词,并去除标点符号和停用词;之后传给语言处理组件,把大写变为小写,单词变为词根形式;最后传给索引组件生成反向索引。生成的索引如图4所示,左边保存的是字符串序列,右边是字符串的文档编号链表。索引创建之后就是搜索索引过程:首先对查询内容进行词法分析、语法分析和语言处理;之后搜索索引,得到符合语法树的文档集合;最后根据查询语句与文档的相关性,对结果进行排序。这样每次搜索的时候,solr系统不需要访问所有文档,极大地减少搜索时间。本发明系统支持多关键字搜索,系统会先找到各相关索引下的文档,然后取共同的文档列表作为搜索结果。

网页查询模块为用户提供查找分类目录选择和搜索关键字输入框,且将输出结果有序的显示给客户。本实施方式中网页查询在服务器端基于J2EE,使用了Spring、Struts等开源框架和MVC的设计模式。如图5所示,网页查询包含两种功能,一是通过目录选择多个细项进行搜索,并且支持对B超和放射检查进行诊断分类。二是直接关键字搜索功能,当医生进行搜索的时候,可以选择体检者的年龄范围、体检日期范围和性别。

搜索出来的结果如图6所示,搜索结果以表格形式展示,包括体检者的姓名、年龄、证件号等个人信息以及体检项目名称和体检结果等体检信息。因数据庞大网页只展示部分结果,医生可点击“下载数据“按钮下载完整搜索结果进行学术研究。

上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1