# 基于Elasticsearch的大数据搜索医疗管理平台 **Repository Path**: xiaofange66/Healthy ## Basic Information - **Project Name**: 基于Elasticsearch的大数据搜索医疗管理平台 - **Description**: 本项目是本人的毕业设计,系统架构使用SSM。并结合Elasticsearch的搜索技术开发了一套集团式医疗管理系统。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2022-06-20 - **Last Updated**: 2025-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: Vue, Java, SpringBoot, Spring, ElasticSearch ## README --- typora-root-url: E:\毕业设计\es_healthy\img --- # **1 项目介绍** 本项目针对集团式医院开发的管理平台,主要用户角色有总院管理员,分院管理员,医生和患者。针对病历信息等文档化数据利用elasticsearch进行搜索。详细文档,请晰私聊我。 # 2主要技术栈 ## 2.1 SSM框架 ### 2.1.1 Spring Boot Spring Boot是所有基于Spring开发的项目的起点。Spring Boot的设计是为了让你尽可能快的运行Web应用程序并且尽可能减少你的配置文件。Spring Boot可以以jar包的形式独立运行,运行一个Spring Boot项目只需要通过 java -jar xx.jar。Spring Boot可选择内嵌Tomcat、Jetty 或者Undertow,这样无须以war包形式部署。Spring提供了一系列的starter pom来简化maven依赖加载,例如:当你使用了Spring Boot-starter-web时,会自动加入相关依赖,无需你手动一个一个的添加坐标依赖。Spring Boot的神奇之处不是借助于代码生成来实现的,而是通过条件注解来实现的[3]。 ### 2.1.2 Spring MVC Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中[4]。 ### 2.1.3 MyBatis MyBatis是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO为数据库中的记录。MyBatis不会对应用程序或者数据库的现有设计强加任何影响。SQL写在xml里,便于统一管理和优化。通过SQL语句可以满足操作数据库的所有需求。另外,通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。SQL和代码的分离,提高了可维护性[5]。 ## 2.2 Elasticsearch Elasticsearch是一个实时、分布式的存储、搜索和分析引擎。它可以用于许多目的,但它的一个优点是对半结构化数据流(如日志或已解码的网络数据包)进行索引。Elasticsearch可以用于搜索各种文档,进行全文检索时,首先要确定分词器,一般使用的中文分词器为ik分词器,它会根据内容进行分词,然后分别创建索引,用户请求查询,搜索创建的索引,然后返回结果[6]。 Elasticsearch的搜索性能相对于MySQL来说,是非常强大。在相同数据集(一千万条数据)情况下,Elasticsearch搜索大概需要0.5s以内,而MySQL大概需要6s左右;Elasticsearch批量插入一千条数据大概耗时0.2s左右,而MySQL在1-2s左右。由此可见,针对病历需要频繁需要插入和查询的数据,Elasticsearch显然是最优选。 ## 2.3 MySQL 数据库采用MySQL,一方面是由于它是开源项目,在社区有许多相关技术答疑;另一方面,MySQL体积小,速度快。同时,MySQL适配多种操作系统,可以快速部署在服务器,在系统迁移时,可以提供良好的服务[7]。 ## 2.4 Vue Vue是一款友好的、高性能和灵活的前端框架,而且如果你有了自己的应用,你可以直接把Vue嵌入到其中,即可体验Vue的特性。数据绑定是它的另一大的特点,使用Vue时,当你改变数据时,用户界面会自动更新,开发者无需手动修改DOM元素,当一个对象传给Vue时,Vue会遍历它的属性,用Object.defineProperty 将它们转为 getter/setter,在属性被修改时通知变化[8]。 而Vue的双向绑定使用是MVVM设计思想,是Model-View-ViewModel的缩写。在这个框架下,View和Model通过ViewModel进行交互,View和Model之间的数据是实时双向变化的,它们其中一个变化,都会同步到另外一个上面。 # 3 需求分析 ## 3.1 系统功能需求分析 ### 3.1.1 功能概要 本平台主要是三个模块,分别是管理员子系统,患者子系统,医生子系统。系统模块图如图3-1所示。第一,管理员模块分为总院管理员和分院管理员,管理员模块包括科室、医生、患者信息的管理(患者信息为整个医院总体资源,所以这个功能只对总院管理员开放)。第二,医生模块主要包括查看患者预约记录,并对其进行就诊。学习库分为器械库和药物库,医生可以利用学习库了解最新的器械和药物的相关信息(简介、规格、用法等)。 同时,由于门诊时,病情过于复杂,可能是由多种原因共同作用,所以,本平台提供专家库,医生根据病情进行搜索,平台返回对应病情的描述和检查项目,帮助医生更好的完成病情诊断。同时,药物库和器械库都提供学习功能。第三,患者模块主要包括查看出诊时间表和预约挂号,查看自己的病历。系统功能模块如图3.1所示。 ​ ![](/Snipaste_2022-06-20_18-55-55.png) ​ 图 3.1 系统功能模块 ### 3.1.2 主要功能需求分析 本系统中包含了管理员操作,医生操作和患者操作,因此业务流程相对复杂,本节对医院管理、患者就诊、医生诊断和学习库搜索等主要功能模块进行分析,以下每个部分都会展示数据的基本流向。 在医院中,管理员作为最高的决策者,需要对医院的科室、医生和患者进行管理,而分院的管理员对本院的科室和医生进行管理,总管理员需要对分院管理员进行管理。针对不同的角色开放不同的权限。总管理员也需要对学习库进行管理,考虑到学习库是整个医院集团总体的资源,故不将此功能对分院管理员开放,管理员对学习库资料的准确性也可以提供保障。管理员也需要了解医院的出诊信息,方便对医院的出诊及时做出相应调整。病历作为最重要的资料,它是具有法律效应的,任何人都不应该随便修改,另一方面,病历涉及到患者的身体健康,更不能有错误。所以所有只能查看病历。 患者最主要的需求就是预约挂号并及时完成就诊。由于是集团式医院,患者可以选择不同的分院进行预约挂号。针对不同的分院需要展示相应的医生的出诊信息。为了简化医生排班繁琐的问题,医生排班以一周为单位。患者需要了解预约挂号的记录,将患者挂号医生、科室和就诊时间等信息展示给患者。对于诊断完成的患者,还可以看到相关的病历信息。方便用户了解自身健康状况。 医生主要的需求是对于已挂号的患者进行诊断。在诊断界面,医生需要了解患者的基本信息。医生也是十分需要学习库,通过查阅相关器械、药品和专家案例等信息,对自身的专业知识有一个巩固,还可以了解其他科室的知识。但是学习库中信息众多,单纯的分页展示,效率极低。所以提供搜索功能,医生根据关键字信息进行检索,提高查询准确性和速度。 (1)医院管理 医院管理是包括科室管理、医生管理、患者管理和分院管理等在内的子模块。总管理员可以对所有的医院的信息进行管理;分院管理员只能针对本院的医院信息进行管理,同时,分院管理员不能对患者信息进行管理;患者信息为医院整体资源,应由总管理员来管理。患者管理包括对患者基本信息进行创建、修改和删除。 (2)患者就诊 患者登录后,选择想要就诊的院区,查询相关院区的医生出诊时间表,选择科室进行挂号,患者可以在个人中心查看预约记录。 (3)医生诊断 医生在进入诊断页面后,系统会展示挂号患者的信息,医生选择其中一位开始工作,医生通过记录病情描述,根据检查项目结果进行诊断,以及给出相应的诊疗建议。最后,生成患者病历,患者可以在个人中心查看个人病历,医生可以共享整个医院病历信息,方便学习和交流。 (4)学习库搜索 学习库中包括器械库、药物库和专家诊断库,平台提供学习库信息分页展示的功能,但由于数据量巨大,为方便和准确索引到想要的信息,还提供了搜索功能,医生可以根据关键字进行搜索,系统基于Elasticsearch进行全文检索,返回与关键字相关的信息。学习库还定期由管理员进行维护,将一些新增的药物、器械相关信息添加到其中,以保证实时性和准确性。