基于SpringBoot的医疗资源共享平台设计与实现

目 录

摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 SpringBoot框架 3
1.2 MyBatis框架 3
1.3 WebSocket技术 4
1.4 Selenium技术 5
1.5 EL-ADMIN技术 5
1.6 Ajax技术 5
1.7 本章小结 6
2 系统分析 7
2.1 功能需求分析 7
2.2 非功能需求 9
2.3 本章小结 10
3 系统设计 11
3.1 系统总体设计 11
3.1.1 系统体系结构 11
3.1.2 系统层次结构 11
3.1.3 系统功能结构 12
3.2 系统详细设计 12
3.2.1 数据库设计 12
3.2.2 系统功能设计 15
3.3 本章小结 20
4 系统实现 21
4.1 开发环境 21
4.2 开发规范 21
4.3 数据库实现 21
4.4 核心功能实现 21
4.5 本章小结 24
5 系统测试 25
5.1 测试计划 25
5.2 用例测试 25
5.3 压力测试 26
5.4 本章小结 27
结 论 28
致 谢 29
参考文献 30

摘 要

随着改革开放、经济发展、城市化的推行,人们对医疗信息服务的要求持续提升,然而医疗资源大多集中在一线城市,导致了医疗资源受众不平衡、不均匀,故此十分有必要建设医疗资源共享服务平台。
目前未在网络上搜索到国外有关于医疗资源共享平台的相关信息,到是国内近些年关于医疗资源共享计划的信息越来越多。然而从百度搜索到的讯息,充满着大量的广告、莆田系医院等,往往把真实的、能够帮助解决问题的链接和讯息挤在后面,有时甚至连第一个页面都搜索不到真正能够帮助解决问题的讯息。在这个鱼目混珠的讯息时代,非常迫切的需要开发一款能够解决问题的基于SpringBoot的医疗资源共享平台。
通过对技术的调研,本项目使用SpringBoot+Mybatis构造系统架构,使用Bootstrap+ELAdmin作为页面框架,使用MySQL作为后台数据库,使用WebSocket作为实时通讯框架,使用Java+selenium作为爬虫工具,使用Tomcat为应用服务器,运用瀑布模式设计并实现了基于SpringBoot的医疗资源共享平台本文采用的技术,使开发变得更敏捷,使系统更加高效、扩展性更好。通过系统性的开发编码,严谨的用例、压力测试,基于SpringBoot的医疗资源共享平台已成功实现,并已投入使用。

关键词:Springboot; WebSocket; 医疗资源共享平台

Abstract

With the implementation of reform and opening up, economic development and urbanization, people’s requirements for medical information services continue to improve. However, most of the medical resources are concentrated in the first tier cities, resulting in the imbalance and imbalance of the audience of medical resources. Therefore, it is very necessary to build a medical resources sharing service platform.
At present, no information about the medical resource sharing platform has been searched on the Internet. In recent years, more and more information about the medical resource sharing plan has been found in China. However, the information searched from Baidu is full of advertisements, Putian hospitals, etc., which often crowd out the real links and information that can help solve the problem. Sometimes even the first page can’t find the information that can help solve the problem. In this information age, there is an urgent need to develop a spring boot based medical resource sharing platform that can solve the problem.
Through the research of technology, this project will use springboot + mybatis to construct the system architecture, bootstrap + eladmin as the page framework, MySQL as the background database, Tomcat as the application server, websocket as the real-time communication framework, java + selenium as the crawler tool, waterfall development mode to design and implement the spring boot based medical treatment Resource sharing platform. The technology adopted in this paper makes the system have the characteristics of good cross platform, strong scalability, high reusability and rapid development. After specific coding implementation and system test, the medical resource sharing platform based on springboot has been successfully implemented and put into use.

Keywords: Springboot; WebSocket; Medical resource sharing platform

引 言

随着改革开放、经济发展,我们的生活越来越中心化,城市化率越来越高,人们从乡村走向城市,出现了大城市群,然而这种发展导致了不能平均的分配医疗资源,导致了我国人民生活质量水平的下降,导致了人民的不幸福。鉴于当前我国医疗资源分配不均匀的现状,人民急切盼望实现医疗资源的公平分配[1]。医药卫生事业关系亿万人民的健康,关系千家万户的幸福,是重大民生问题[2]。经济的腾飞、医学的发展、网络的现状,也使得线上医疗成为了医疗业的必然发展趋势。
自2012年起,为了缓解医疗资源分配不均匀的现状[3],我国已经有十多家公司加入到了线上医疗的领域。然而这些主导线上医疗产业的“先行者”们,本身就被各种影响其自身健康成长的诟病和问题束缚住了创新的手脚[4]。2020年伴随着新冠状病毒2019-nCoV的出现,又为线上医疗注入了新鲜沸腾的血液,然而目前大型互联网公司尚未加入,各种参差不齐的公司加入其中,此情此景本文针对当前存在的此种迫切需求开发了基于SpringBoot的医疗资源共享平台。
本设计采用JavaWeb技术对系统进行设计,使用SpringBoot+MyBatis框架对系统进行搭建,该框架可以有效的提高开发效率和降低耦合性,框架中的Mybatis对数据库操作进行了统一管理,方便快捷。使用MySql数据库作为本系统的储存数据库,使用WebSocket框架实现基于实时通讯的问医生功能,使用java爬虫实现医疗知识搜索功能。本系统采用分层、分模块模式,设计四层三模块,使每个层次、模块进行分离,有利于对业务进行单独管理,为程序二次开发提供更多便利。
本文将分为六个部分来完成,第一部分相关技术,主要介绍了医疗资源共享平台所使用的关键性技术,如管理系统框架EL-ADMIN,即时通讯框架WebSocket,爬虫实现技术Selenium技术。第二部分系统分析,通过对系统进行需求分析,综述了本系统所需要的开发环境和运行环境,以及需要完成的功能。第三部分系统设计,主要介绍了系统体系结构、系统层次结构、系统功能结构、系统功能设计、数据库设计[5]。第四部分系统实习,主要介绍了开发环境、开发规范、数据库实现、核心功能代码及界面。第五部分系统测试,主要介绍了测试计划、用例测试、压力测试。第六部分结论、致谢、参考文献,主要介绍了对本文的感悟,对学校、学院、诸位老师的感谢之情,和论文中所涉及到的参考文献。

1 相关技术

医疗资源共享平台系统采用Win10作为操作系统,采用Eclipse2017进行的开发工具,后台使用SpringBoot作为Java框架,采用SpringBoot整合WebSocket作为及时通讯框架,采用SpringBoot整合Selenium作为爬虫工具,采用JQuery库提升前端用户交互体验,采用MySQL数据库来对海量数据进行存储。
1.1 SpringBoot框架
SpringBoot是基于开源项目Spring的应用程序,在开发SpringBoot项目时只需要很少的配置,就可以创建一个稳定的、优秀的、产品级别的Spring应用,相比传统的SpringMVC框架,能够极大的提高开发效率[6]。
SpringBoot的特征有以下几点:
(1)“约定大于配置”,简化了Spring应用程序各个方面的配置。
(2)直接嵌入Tomcat,Jetty或Undertow(不需要部署WAR文件)[7]。
(3)简化Maven配置,使项目的部署和管理都非常方便。
(4)SpringBoot提供了可以针对大多数Spring应用常用功能的相关配置。
(5))SpringBoot提供编码、运行状态检查、外部配置等准备功能。
(6)可以针对大多数Spring应用常用功能的相关配置。没有代码生成,不需要XML配置。
(7)提供了创新性的POM启动方式,大大简化Maven配置并且可以自动配置Spring。
1.2 MyBatis框架
在JavaWeb应用程序的开发过程中,应用程序对数据库的访问通常通过Java数据库连接技术来实现[8]。随着敏捷开发观点的提出、计算机技术的不断发展,开发人员对JDBC进行封装,形成基于Java的持久层框架Mybatis。Mybatis框架还具有无第三方依赖,对SQL语句管理与优化更加方便,解除了应用程序代码和SQL语句的耦合,支持动态SQL编写,支持ORM字段关系维系,学习成本低等特点。Mybatis三层功能架构及模块如图1.1所示。

在这里插入图片描述
图1.1 Mybatis工作流程图
1.3 WebSocket技术
以前,为了实现推送技术,很多网站都使用Ajax轮询技术,但是这种技术有着非常明显的缺点,即浏览器需要不断地向服务器发送请求,但是HTTP请求可能包含一个很长的报头,其中真正有效的数据可能只占很小的一部分,显然这会浪费大量的带宽和其他资源[9]。
在这里插入图片描述

图1.2 Websocket工作流程
Websocket提供了全双工通信协议,这使得客户端和服务器之间的数据交换更加容易。客户端和服务器只需要握手就可以形成一个快速通道,建立持久的连接,两者可以直接相互传送数据。Websocket工作流程如图1.2所示。
1.4 Selenium技术
2004年, Jason Huggins编写了一份测试工具。经过不断地完善,该工具进一步发展成为一个成熟的测试框架,并且是开源的。Selenium可以直接在浏览器中运行,就像用户直接操作浏览器一样[10],十分方便。它支持主流的浏览器同时也可以支持主流编程语言。本项目使用了selenium + ChromeDiver的组合实现了Java爬虫,通过爬取医学百科网站,实现了医学知识搜索部分功能。
1.5 EL-ADMIN技术
EL-ADMIN是基于SpringBoot、Jpa、SpringSecurity、redis、Vue的前后端分离的后台管理系统,项目采用分模块开发方式,权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持前端菜单动态路由。
EL-ADMIN具有以下几个特点:
(1)使用模块化开发的方式,减少代码重复率,大大的提高开发效率。
(2)可以使用程序生成器,生成特定的代码。
(3)定义了自己的注解,。
(4)封装了常用的前端组件,使开发变得简单。
(5)对异常进行了统一的拦截,统一的输出。
1.6 Ajax技术
Ajax(asynchronous JavaScript和XML)是指异步JavaScript和XML,是一种用于创建交互式web应用程序的web开发技术[11]。Ajax函数通过控件或对象应用,Ajax类库中包含一系列JavaScript代码。Ajax可以在任何web开发环境中使用。Ajax技术本质上是用JavaScript实现的。Ajax的特点是它可以在不提交数据的情况下刷新某些页面,这也被称为web页面的本地刷新,AJAX工作原理如图1.3所示。
在这里插入图片描述

图1.3 AJAX工作原理图

1.7 本章小结
本章主要介绍了基于SpringBoot的医疗资源共享平台开发过程中所涉及到的前端后端框架,以及实现基于SpringBoot的医疗资源共享平台所使用到的Web开发技术、实现界面交互的Ajax技术等,并根据这些深入研究,为程序的实现奠定了基础。

2 系统分析

本章基于第一章介绍的相关技术,详细的描述了基于SpringBoot的医疗资源共享平台的系统分析,分别从功能需求和非功能需求进行分析,用例图展示了用例之间的关系,用例表来进行描述用例图[12],可以更加直观的展示基于SpringBoot的医疗资源共享平台的功能需求。
2.1 功能需求分析
经过对现有系统常规功能和医疗资源共享平台信息管理系统等为目的的系统功能的分析,确定医疗资源共享平台信息管理系统的基本功能包括:在线提问医生、医学知识搜索、医院科室推荐、医院信息管理、科室信息管理、问题在线解答、系统异常管理、字典信息管理、日志信息管理、系统监控管理、用户角色管理、系统用户管理等功能。用例图如图2.1所示。
在这里插入图片描述

图2.1 医疗资源共享平台信息管理系统用例图
字典信息管理需要实现的功能:系统用户使用规定所用的浏览器。系统用户可以通过操作进入字典信息管理界面,并且可以通过特定操作字典信息,做到对字典信息的增删改查,以达到字典信息管理的功能。
医院科室管理需要实现的功能:系统用户使用规定所用的浏览器,系统用户可以通过操作进入医院信息管理界面,并且可以通过特定操作医院信息,做到对医院信息的增删改查,以达到医院信息管理的功能。
系统权限管理需要实现的功能:系统用户使用规定所用的浏览器,系统用户可以通过操作进入系统权限信息管理界面,并且可以通过特定操作系统权限信息,做到对权限信息的增删改查,以达到系统权限信息管理的功能。
用户角色管理需要实现的功能:系统用户使用规定所用的浏览器,系统用户可以通过操作进入用户角色信息管理界面,并且可以通过特定操作用户角色信息,做到对用户角色的增删改查,以达到用户角色信息管理的功能。
系统用户管理需要实现的功能:系统用户使用规定所用的浏览器,系统用户可以通过操作进入系统用户信息管理界面,并且可以通过特定操作系统用户信息,做到对系统用户的增删改查,以达到系统用户信息管理的功能。
医生实时解答需要实现的功能:普通用户使用规定所用的浏览器,访问本系统时,浏览器中将会显示本系统的主页面。可以通过特定操作进入“实时解答”,可以与提出问题的用户进行实时聊天,帮助用户解决他们遇到的问题。
用户实时提问需要实现的功能:普通用户使用规定所用的浏览器,访问本系统时,浏览器中将会显示本系统的主页面。可以通过特定操作进入“在线解答”,用户可以提出自己遇到的医疗方面的问题,寻求系统医生来帮助解决。
医学知识搜索需要实现的功能:普通用户使用规定所用的浏览器,访问本系统时,浏览器中将会显示本系统的主页面。可以通过特定操作进入“医学知识搜索”页面后,可以自主选择搜索类型,自主输入期望搜索的关键词,完成搜索后,稍微等待后会基于搜索内容显示各类信息。
医院科室推荐需要实现的功能:普通用户使用规定所用的浏览器,访问本系统时,浏览器中将会显示本系统的主页面。可以通过特定操作进入“医院科室推荐”页面后,可以自主选择搜索类型,自主输入期望搜索的关键词,完成搜索后,稍微等待后会基于搜索内容推荐医院或医院的科室。
医疗资源共享平台系统的大部分功能,如表2.1所示。
表2.1 医疗资源共享平台信息管理系统用例表
序号 参与者 用例名称 用例说明
1 系统用户 AbnormalsSelect 查询异常信息
2 系统用户 AdminsInsert 增加系统用户
3 系统用户 AdminsDelete 删除系统用户
4 系统用户 AdminsUpdate 修改系统用户
5 系统用户 AdminsSelect 查询系统用户
6 系统用户 DepartmentsInsert 增加医院信息
7 系统用户 DepartmentsDelete 删除医院信息
8 系统用户 DepartmentsUpdate 修改医院信息
9 系统用户 DepartmentsSelect 查询医院信息
10 系统用户 DictionariesInsert 增加字典信息
11 系统用户 DictionariesDelete 删除字典信息
12 系统用户 DictionariesUpdate 修改字典信息
13 系统用户 DictionariesSelect 查询字典信息
14 系统用户 JournalsSelect 查询日志信息
15 系统用户 JurisdictionsInsert 增加系统权限
16 系统用户 JurisdictionsDelete 删除系统权限
17 系统用户 JurisdictionsUpdate 修改系统权限
18 系统用户 JurisdictionsSelect 查询系统权限
19 系统用户 MonitorsInsert 增加系统监控
20 系统用户 MonitorsDelete 删除系统监控
21 系统用户 MonitorsUpdate 修改系统监控
23 系统用户 MonitorsSelect 增加系统监控
24 普通用户 WebChat 聊天功能
25 普通用户 Search 医疗信息搜索
26 普通用户 selectByCurerange 医院科室推荐

2.2 非功能需求
功能需求包括对服务器硬件和软件要求、客户端软件要求、访问容量以及响应时间[14]。软件要求主要是指对相关操作系统、数据库管理软件、Web服务器的要求。
对于非功能需求要求,除数据库需要必须满足外,其他的软硬件越接近其要求,系统的性能就越好。基于SpringBoot的医疗资源共享平台的非功能需求是表2.1介绍的功能以外的特性,包括对服务器硬件和软件要求、客户端软件要求、访问容量以及响应时间。软件要求主要是指对相关操作系统、数据库服务器、Web服务器的要求。如图2.2所示。
在这里插入图片描述

图2.2 非功能需求
2.3 本章小结
本章主要介绍了系统的需求分析的相关内容,对功能需求和非功能需求做了系统性的分析[13],需求分析做的越为详细,在以后的开发过程中就会节省很多成本。本章通过需求的分析和用例图的展示,用例表辅助用例图,使用户对该系统的使用功能一目了然。

3 系统设计

本章以上一章所描述的需求分析为基础,对本平台做了系统设计。按照业务需求来对本系统进行整个体系结构的设计规划,可以分为三大部分,首先是系统功能设计,其次是数据库设计,最后是界面设计。本项目系统设计为下一步的整个系统编写打好基础。
3.1 系统总体设计
本章是对基于SpringBoot的医疗资源共享平台的总体设计、模块功能、数据表设计等进行了设计,使该系统更加符合用户的需求,同时为测试提供参考。
3.1.1 系统体系结构
本系统将采B/S结构。把业务逻辑的代码放在服务器端,很大程度上减轻了浏览器端的负担[15],用户在浏览器端只需要传输数据,数据传入到后端服务器后就会处理此功能的业务逻辑。B/S结构不仅仅保留了C/S结构优点,还使复杂的程序变得简单起来。
3.1.2 系统层次结构
模型层(Model层)主要是将类中的字段和数据库中的字段相对应,需要将每一个表中的所有字段封装成一个实体类。模型层里对象与数据库中的字段具有一一对应的映射关系,所有需要进行数据处理的字段都需要依赖对象模型,所以在开发项目时传入的参数和用到的方法都依赖于模型层。
数据访问层(DAO层)它的主要作用是对数据库中各个表的进行执行SQL的操作。DAO层的类仅仅为方法接口,具体的操作SQL在mapper.xml中定意。
业务逻辑层(BLL,Business Logic Layer层)[16]主要作用是用来处理事务的,业务逻辑层依赖于数据访问层。在软件开发的过程中客户可能会改变需求,或者在项目验收时,做出的功能与客户的需求不符,此时需要改变软件的业务逻辑。将业务逻辑分离出来,在不改变参数的情况下,不用改动其他代码就可以修改功能。
用户界面层(UI,User Interface层)向用户展示经过基于SpringBoot的医疗资源共享平台业务处理后数据,即展示的需求功能。用户界面层还可以用来提交数据,用户对界面做出相应的操作,将数据提交到后台,也就是业务逻辑层,业务层调用数据库访问层的方法,进而实现对数据库的增删改查操作。
3.1.3 系统功能结构
本系统的功能可以划分为三大模块:系统用户模块、医生模块、普通用户模块,系统提供功能如下:系统用户模块包含系统异常管理、字典信息管理、日志信息管理、系统监控管理、系统权限管理、用户角色管理、系统用户管理、登录等功能;医生模块包含医院信息管理、科室信息管理、问题在线解答、登录等功能;普通用户模块包含问医生在线提问、医学知识搜索、医院科室推荐等功能。具体的功能结构图如图3.1所示。
在这里插入图片描述

图3.1 系统功能结构图
3.2 系统详细设计
3.2.1 数据库设计
经过第二章的功能需求分析,完成本系统需要10张表来完成所需要的所有功能,具体所需数据表,如表3.1所示。
表3.1 数据表列表
序号 表名 说明
1 abnormals 系统异常信息表
2 admins 系统用户信息表
3 departments 科室信息表
4 dictionaries 字典信息表
5 jurisdictions 系统权限信息表
6 journals 登录日志信息表
表3.1(续表)
序号 表名 说明
7 monitors 系统监控信息表
8 roles 用户角色信息表
9 knowledges 医学知识表
10 hospitals 医院信息表
系统异常信息表(abnormals),主要用于储存系统运行时产生的异常信息,Abnormals表以自增长字段abnormalid为主键,使每条记录具有唯一性。具体字段如表3.2所示。
表3.2 系统异常信息表
列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注
abnormalid INT(11) 非空 Al PK 编号
content VARCHAR(200) 非空 异常内容
position VARCHAR(45) 非空 异常位置
grade INT(11) 非空 异常等级
addtime DATETIME 非空 添加时间
系统用户信息表(admins)用来存储系统用户信息。以自增长字段adminid为主键,储存系统用户所需要的内容。具体字段如表3.3所示。
表3.3 系统用户信息表
列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注
adminid INT(11) 非空 Al PK 编号
username VARCHAR(45) 非空 用户名
password VARCHAR(45) 非空 密码
phone VARCHAR(45) 非空 手机号
email VARCHAR(45) 非空 邮箱
grade VARCHAR(45) 非空 角色
contacts VARCHAR(45) 非空 联系
addtime DATETIME 非空 添加时间
科室信息表(departments)用来保储存医院/科室推荐内容中的科室信息。具体字段如表3.4所示。
表3.4 医院科室信息表
列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注
departmentid INT(11) 非空 Al PK ID
name VARCHAR(100) 非空 科室名称
subject VARCHAR(45) 非空 声誉分数
research VARCHAR(45) 非空 科研分数
curerange VARCHAR(500) 非空 治疗范围
hospitalid VARCHAR(100) 非空 医院名称
contacts VARCHAR(45) 非空 联系
addtime DATETIME 非空 添加时间
字典信息表(dictionaries)用来保存字典信息。以自增长字段dictionarieid为主键,储存系统运行时所需要的字典管理。具体字段如表3.5所示。
表3.5 字典信息表
列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注
dictionarieid INT(11) 非空 Al PK 编号
title VARCHAR(45) 非空 标题
intcon VARCHAR(45) 非空 数字内容
stringcon VARCHAR(45) 非空 文字内容
addtime DATETIME 非空 添加时间
系统权限信息表(jurisdictions)用来存储系统权限的信息。以自增长字段jurisdictionid为主键,储存系统运行所需要的权限管理。具体字段如表3.6所示。
表3.6 系统权限信息表
列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注
jurisdictionid INT(11) 非空 Al PK 编号
grade INT(11) 非空 权限等级
content VARCHAR(45) 非空 权限内容
addtime DATETIME 非空 添加时间
日志信息表(journals)主要用于查看日志的基本信息,以自增长字段journalid为主键,储存系统运行时产生的系统日志管理。具体字段如表3.7所示。
表3.7 日志信息表
列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注
journalid INT(11) 非空 Al PK 编号
grade VARCHAR(11) 非空 日志等级
content VARCHAR(200) 非空 日志内容
addtime DATETIME 非空 添加时间
系统监控信息表(monitors)主要用于系统监控,以自增长字段monitorid为主键,储存系统运行时的系统监控。具体字段如表3.8所示。
表3.8 系统监控信息表
列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注
monitorid INT(11) 非空 Al PK 编号
monitorscol VARCHAR(45) 非空 监控内容
state VARCHAR(45) 非空 状态
addtime DATETIME 非空 更新时间
用户角色信息表(roles)用来存储用户角色信息。以自增长字段roleid为主键,储存系统所需的角色信息。具体字段如表3.9所示。
表3.9 用户角色信息表
列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注
roleid INT(11) 非空 Al PK 编号
name VARCHAR(45) 非空 角色名称
jurisdictionid VARCHAR(11) 非空 权限等级
addtime DATETIME 非空 更新时间
医院信息表(hospitals)用来储存各医院的信息,以自增长字段hospitalid为主键,储存医院/科室推荐中的医院信息。具体字段如表3.10所示。
表3.10 医院信息表
列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注
hospitalid INT(11) 非空 Al PK 编号
name VARCHAR(100) 非空 医院名称
region VARCHAR(45) 非空 医院位置
subject FLOAT 非空 声誉分数
research FLOAT 非空 科研分数
addtime DATETIME 非空 更新时间
医学知识表(knowledges)以自增长字段knowledgeid为主键,储存用户所搜索过的医学知识内容。具体字段如表3.11所示。
表3.11 医学知识表
列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注
knowledgeid INT(11) 非空 Al PK 编号
title VARCHAR(100) 非空 内容标题
content LONGTEXT 非空 具体内容
addtime DATETIME 非空 更新时间
3.2.2 系统功能设计
这一部分主要描述的是该系统对各个功能模块的设计。在设计系统功能时,用时序图来对功能进行更直观地展现[17],并配以功能描述来对功能进行详细解释。以下完成了主要核心功能的系统设计。
提交系统异常的功能,系统用户首先登录医疗资源共享平台信息管理系统,点击系统异常管理,进入系统异常主页面,点击查询,即到达编辑系统异常界面。然后输入必要的内容就可以通过系统来提交查询信息异常业务,在系统异常管理首页会有显示,该功能的时序图如图3.2所示。
在这里插入图片描述

图3.2 提交系统异常信息功能时序图
提交系统异常的功能,用户首先登录医疗资源共享平台管理系统,点击统异常管理,进入系统异常主页面,用户点击查询,用户进入Abnormals界面,输入数据,在当前界面将信息传递到AbnormalsSelectAll,调用service层查询,通过mapper将数据传入数据库,根据对应的方法调用xml文件的查询功能,并返回数据。具体功能描述见表3.12。
表3.12 提交系统异常信息功能描述
编号 类名 功能描述
1 Abnormals 输入用户数据,并提交信息给后台
2 AbnormalsSelectAll 在控制层获取到的异常信息的数据并调用对应的service方法进行查询
3 AbnormalsService 通过传入的数据进行查询异常信息业务逻辑的处理并调用对应的mapper方法
4 AbnormalsBeanMapper 在数据访问层查询异常设计信息,执行查询后的信息返回前端界面
5 Abnormals 查询完成后,自动跳转至医疗资源共享平台系统列表页
系统权限管理,用户首先登录医疗资源共享平台管理系统,点击统系统权限管理,进入系统权限管理主页面,用户点击查询,用户进入Jurisdictions界面,输入数据,在当前界面将信息传递到JurisdictionInsert,调用service层功能增加权限信息,通过mapper将数据传入数据库,根据对应的方法调用xml文件的新增功能,并返回数据。该功能的时序图如图3.3所示。
在这里插入图片描述
图3.3 新增系统管理权限时序图
系统权限管理功能设计,用户首先登录医疗资源共享平台管理系统,进入Jurisdictions界面,选择是否可立项,将当前界面将信息传递到JurisdictionInsert,调用service层新增系统权限信息的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的增加系统权限,并返回数据。具体功能描述见表3.13。
表3.13 新增系统管理权限功能描述
编号 类名 功能描述
1 Jurisdictions 调用新增方法,查到原有内容,输入新增内容,并提交信息给后台
2 Jurisdictions Insert 在控制层获取到的新增权限管理信息并调用对应增加权限管理的service方法
3 Jurisdictions Service 通过传入的数据进行业务逻辑的处理并调用对应的mapper方法
4 Jurisdictions Mapper 在数据访问层增加用户权限,增加后的信息返回前端界面
5 Jurisdictions 增加完成后,自动跳转至毕业设计列表页
系统权限管理功能设计,用户首先登录医疗资源共享平台管理系统,进入Jurisdictions界面,选择是否可立项,将当前界面将信息传递到JurisdictionDelete,调用service层删改系统权限信息的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的删改系统权限,并返回数据。该功能的时序图如图3.4所示。
在这里插入图片描述
图3.4 删改系统管理权限时序图
系统权限管理功能设计,用户首先登录医疗资源共享平台管理系统,进入Jurisdictions界面,选择是否可立项,将当前界面将信息传递到JurisdictionDelete,调用service层删改系统权限信息的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的删改系统权限,并返回数据。具体功能描述见表3.14。
表3.14 删改系统管理权限功能描述
编号 类名 功能描述
1 Jurisdictions 调用删改方法,查到原有内容,输入需要删除内容,并提交信息给后台
2 Jurisdictions Delete 在控制层获取到的需要删除的权限管理信息并调用对应增加权限管理的service方法
3 Jurisdictions Service 通过传入的数据进行业务逻辑的处理并调用对应的mapper方法
4 Jurisdictions Mapper 在数据访问层增加用户权限,删除信息后返回前端界面
5 Jurisdictions 删改完成后,自动跳转至毕业设计列表页
医院科室管理,用户首先登录医疗资源共享平台管理系统,点击医院科室管理,进入医院科室管理主页面,用户点击查询,用户进入Departments界面,输入数据,在当前界面将信息传递到DepartmentsSelectAll,调用service层功能增加医院科室信息,通过mapper将数据传入数据库,根据对应的方法调用xml文件的查询功能,并返回数据。该功能的时序图如图3.5所示。
在这里插入图片描述
图3.5查询医院科室信息时序图
医院科室管理功能设计,用户首先登录医疗资源共享平台管理系统,进入Departments界面,选择是否可立项,将当前界面将信息传递到DepartmentsSelectAll,调用service层新增系统权限信息的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的查询医院科室信息,并返回数据。具体功能描述见表3.15。
表3.15 查询医院科室信息功能描述
编号 类名 功能描述
1 Departments 输入用户数据,并提交信息给后台
2 DepartmentsSelectAll 在控制层获取到的异常信息的数据并调用对应的service方法进行查询
3 Departments Service 通过传入的数据进行查询异常信息业务逻辑的处理并调用对应的mapper方法
4 DepartmentMapper 在数据访问层查询医院科室信息,执行查询后的信息返回前端界面
5 Departments 查询完成后,自动跳转至医疗资源共享平台系统列表页
医院科室管理功能设计,用户首先登录医疗资源共享平台管理系统,进入Departments界面,选择是否可立项,将当前界面将信息传递到DepartmentsDelete,调用service层删改医院科室管理信息的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的删改医院科室信息,并返回数据。该功能的时序图如图3.6所示。
在这里插入图片描述

图3.6 删除医院科室信息时序图
医院科室管理功能设计,用户首先登录医疗资源共享平台管理系统,进入Departments界面,选择是否可立项,将当前界面将信息传递到DepartmentsDelete,调用service层删改医院科室信息的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的删改医院科室信息,并返回数据。具体功能描述见表3.16。
表3.16 删除医院科室功能描述
编号 类名 功能描述
1 Departments 调用删改方法,查到原有内容,输入需要删除内容,并提交信息给后台
2 DepartmentsDelete 在控制层获取到的需要删除的医院科室信息并调用对应删除医院科室信息的service方法
3 Departments Service 通过传入的数据进行业务逻辑的处理并调用对应的mapper方法
4 DepartmentMapper 在数据访问层删除医院科室信息,删除信息后返回前端界面
5 Departments 删改完成后,医疗资源共享平台系统列表页

3.3 本章小结
本章主要介绍了基于SpringBoot的医疗资源共享平台的系统设计,对系统体系结构、系统层次结构、系统功能结构、系统功能、数据库的设计进行综述,为系统实习打下良好的基础,提高开发效率。

4 系统实现

4.1 开发环境
本系统的开发系统是Windows10。用Eclipse2017作为开发工具,Tomcat9为服务器来进行开发,数据库使用MySQL5.6版本的数据库来存储数据,电脑性能为Intel® i5处理器,足以满足开发需求。
4.2 开发规范
本系统完全按照Java的命名规范来进行命名,包括包名、类名、接口名、方法名等[18]。其中包名全部由小写字母组成,并且见名知意,看见包名就知道里面是关于哪个方面的内容。在类或接口中的方法名一般小写字母开头,以驼峰命名法来进行命名。规范的命名和注释可以增加代码的可读性,方便开发人员找到对应的方法。
4.3 数据库实现
根据基于SpringBoot的医疗资源共享平台的系统分析及详细功能设计,设计出10张数据表,以便实现普通用户、医生、系统用户的功能,具体数据库实现如图4.1所示。
在这里插入图片描述

图4.1 系统数据库界面
4.4 核心功能实现
登录功能实现。通过网址打开登录页面,根据提示输入内容,点击登录,后台程序可自行判断该账号是否存在,判断账号和密码是否匹配,并会根据后台返回的数据提示用户登录情况。核心代码如下文所示,界面如图4.2所示。
public Msg login(@RequestParam Map<String,String> map){
String userName = map.get(“userName”);
String password = map.get(“password”);
AdminsBean adminsBean = AdminsService.selectByUsername(userName);
if(adminsBean==null)
else if(adminsBean.getPassword().compareTo(password)!=0)
return Msg.fali(“密码错误!”);
else return Msg.add(“adminsBean”, adminsBean);
}
在这里插入图片描述

图4.2 登录功能实现
医学知识搜索功能实现。通过主流浏览器打开医学知识搜索页面,首先选择搜本站或者搜百度,之后输入期望搜索的内容[19],点击搜索或者按下回车,触发搜索事件,系统会以弹窗的形式显示出所搜索的信息。核心代码如下文所示,界面如图4.3所示。
Thread.sleep(1000);
String url = “http://www.yixue.com/”+ title;
((ChromeDriver) driver).get(url);
contents = content.getAttribute(“innerHTML”);
driver.close();
KnowledgesBean newKnowledgesBean = new KnowledgesBean();
newKnowledgesBean.setTitle(title);
newKnowledgesBean.setContent(contents);
KnowledgesService.insert(newKnowledgesBean);
else{
contents = KnowledgesService.selectConByTilte(title);
}
return Msg.success(“成功”).add(“test”, contents);
在这里插入图片描述

图4.3 医学知识搜索功能实现

问医生功能实现。通过主流浏览器打开问医生页面,就可以像医生提出疑问,输入内容到输入框,通过回车或者点击发送按键,将信息发送至医生端,医生在根据所提问题进行回答。核心代码如下文所示,界面如图4.4所示。
@OnMessage
public void onMessage(@PathParam(value=“senderId”) String senderId, String message, Session session) {
JSONObject jsonMessge = JSON.parseObject(message);
JSONArray list = jsonMessge.getJSONArray(“userList”);
WebChat userMap = webSocketMap.get(senderId);
String mess=jsonMessge.getString(“mess”);
userMap.sendMessage(mess);
for (Object receiverId : list) {
WebChat receiver = webSocketMap.get(receiverId);
receiver.sendMessage(mess);
}
在这里插入图片描述

图4.4 问医生功能实现

医院推荐功能实现。通过主流浏览器打开医院推荐页面,首先选择要搜索的种类,如医院、科室、疾病等,之后输入希望搜索的内容,点击搜索,就会根据搜索的内容推荐医院。核心代码如下文所示,界面如图4.5所示。
@RequestMapping(“/selectByCurerange”)
@ResponseBody//将返回类型转化为字符串
public Msg selectByCurerange(@RequestParam Map<String,String> map){
List HospitalsBeans = HospitalsService.selectByName(title);
ArrayList HospitalsBeansTitle = new ArrayList();
ArrayList HospitalsBeansKey = new ArrayList();
return Msg.success(“查询成功”).add(“HospitalsBeans”, HospitalsBeans).add(“HospitalsBeansTitle”, HospitalsBeansTitle).add(“HospitalsBeansKey”, HospitalsBeansKey);
}
return null;
}
在这里插入图片描述

图4.5 医院推荐功能实现

4.5 本章小结
本章主要介绍了基于SpringBoot的医疗资源共享平台编码实现阶段需要完成的工作,规定了开发环境、开发规范,实现了数据库创建,展示了系统的核心功能的代码及页面。

5 系统测试

系统测试是项目开发过程中一个重要的阶段。对软件进行实地化的场景化测试,目的是能够及时发现软件中的漏洞,使得系统更加完善。在整个基于SpringBoot的医疗资源共享平台开发的过程中,可能会出现各式各样的问题,在开发系统的每个换届都有可能出现编码错误,系统化的测试可以规避系统运行时的错误发生,为了减少错误的存在,优化系统功能,本章进行必要的测试。
5.1 测试计划
为了保证基于SpringBoot的医疗资源共享平台的用户体验和使用质量,尽量找出该系统存在的错误并及时加以改正,确保用户能够更快更方便的使用该系统。在整个项目的实现过程中,将严格按照科学的软件测试方法,进行测试用例,针对项目各个模块都进行测试。
5.2 用例测试
用例测试是将软件测试的行为活动做一个科学化组织归纳,本用例测试基于黑盒测试[20],着眼于程序外部结构,不考虑内部逻辑结构,针对于系统功能和系统页面进行针对性测试[21],本系统的主要模块分为:门户模块、搜索研究模块、需求研究模块、趋势研究模块、人群研究模块。本系统针对各模块功能中的主要操作进行了用例测试。测试结果如表5.1所示。
表5.1测试结果表
用例编号 用例分类 用例目的 预期结果 测试结果
Case1 系统用户模块 登录退出等操作 正确显示并跳转 结果正确
Case2 系统异常管理 管理系统异常 正确显示 结果正确
Case3 字典信息管理 管理字典数据 增删改查正确 结果正确
Case4 日志信息管理 管理日志信息 正确显示 结果正确
Case5 系统监控管理 管理系统监控 正确显示 结果正确
Case6 系统权限管理 管理系统权限 增删改查正确 结果正确
Case7 用户角色管理 管理用户角色 增删改查正确 结果正确
Case8 系统用户管理 管理系统用户 增删改查正确 结果正确
Case9 医院信息管理 管理医院信息 增删改查正确 结果正确
Case10 科室信息管理 管理科室信息 增删改查正确 结果正确
Case11 在线解答功能 在线回答问题 可以接收发送信息 结果正确
Case12 在线提问功能 在线提出问题 可以接收发送信息 结果正确
Case13 医疗知识搜索 医疗知识搜索 可以正确搜索并显示 结果正确
Case14 医院科室推荐 医院科室推荐 可以正确搜索并显示 结果正确
5.3 压力测试
打开Apache Jmeter软件,添加线程组,并配置其相关的参数,之后添加HTTP请求,并配置其相关的参数,来确定本次测试的结果,添加聚合报告,用来存放性能测试报告,具体如图5.1所示。
在这里插入图片描述

图5.1 Jmeter使用界面图
点击线程组,配置本次性能测试相关参数[22],这里配置并发用户数量为200,点击绿色的箭头启动测试,测试前需要将之前的测试数据清空。具体如图5.2所示。
在这里插入图片描述

图5.2 HTTP请求配置界面
对10个接口每个测试200次,测试完成后,打开测试结果,可以看到共发送2000次HTTP请求,平均响应时间561ms,最快响应速度30ms,最慢反应速度3598ms,异常发生率0%,数据吞吐量43.7sec,结果如图5.3所示。
在这里插入图片描述

图5.3 压力测试图
5.4 本章小结
软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误[23]。测试是程序开发流程中,非常重要的环节,它保障着软件的可靠性[24],保障软件不会出现明显的错误。本章主要叙述了测试的相关功能,使用了JMeter等测试工具来高效完成测试工作。

结 论

医疗卫生事业涉及到数亿人民的健康,关系千家万户的幸福,是非常重大的民生问题[25],然而这种发展导致了不能平均的分配医疗资源,导致了我国人民生活质量水平的下降,导致了人民的不幸福。为了缓解当前的状况,健康产业的“先行者”或只是复制粘贴,使低质量的内容在同质化的泥潭中变得毫无生气。或者依靠庞大而全面的平台,过度追求当前的商业利益,忽视了使用者的需求和体验。期望基于SpringBoot的医疗资源共享平台能够缓解这一状况, 在目前散兵游勇徜徉其间,且鱼龙混杂的线上医疗找到一丝未来的方向,项目完成后将会秉持的完全主旨,不收取任何费用,不展示任何广告,完全会以一颗公益的心,维持本项目。
本文的系统在设计与实现的过程中充分考虑了系统二次开发的可能,以及随时可变的需求等要求,具有代码重用性强,系统可伸缩性好,安全性高等特点,本系统使用的技术完全开源,医疗知识搜索功能也基于百度和医疗百科,项目主旨在于为需要查询文献的人提供相关参考,不考虑收益问题,并且本项目开发人员基数小,人力费用小,因此项目非常有意义和可行性。目前该项目的实时通讯功能还不够稳定、全面,医院科室的推荐也仍然不够智能,未来的计划中还需要修改以上缺陷,并且增加药物推荐等功能。

致 谢

历经三个人月的时间,基于SpringBoot的医疗资源共享平台设计与实现终于得以完成,在开发的过程中遇到了许许多多的问题,在黄志宇老师的指导下,在同学的帮助中也得到了解决,并在制作毕业设计的过程中学到了很多新的知识,巩固了旧有的知识,让我有了很大的进步。
本论文是在黄志宇老师、苏畅老师悉心指导下完成的。黄志宇老师渊博的专业知识,力求细致的严谨态度对我影响深远。本课题从选题到完成,每一步都是在两位老师的指导下完成的,倾注了两位老师大量的心血。同时,在学院中四年的知识栽培,计算机科学与技术专业所培养的过硬能力,才使得出色的完成本课题,在此,对沈阳城市学院的领导和老师表示崇高的敬意和衷心的感谢。同时也要感谢在这学习环境下的每一位同学,学业上的互帮互助,生活中的温暖陪伴,都是同窗四年最宝贵的经历。感谢你们。

参考文献

[1]李杰.公平分配医疗资源:让人民共享医疗发展的成果[J].玉林师范学院学报,2015,36(01):47-51.
[2]王健,韩光宇.团结协作 构筑医疗合作平台 资源共享 推进医药卫生事业发展[J].江苏卫生事业管理,2010,21(04):28-29.
[3]Cheng Juandai,Liang Changyong,Shu Jian. Medical Resource Sharing Under Background of Information Technology[C]. 信息化与工程国际学会.Proceedings of 2015 International Conference on Economy,Management and Education.
[4]刘华.线上医疗健康:一个正在升温的领域[J].软件工程师,2013(Z1):53-54.
[5]孙翔. 潍坊市公共卫生服务管理系统的设计与实现[D].山东大学,2013.
[6]王俣. 电子商务数据可视化系统的设计与实现[D].厦门大学,2017.
[7]顾梦园,叶桦,仰燕兰.保障性住房资格管理系统设计与实现[J].计算机科学与应用,2019,9(3):650-662.
[8]陈立潮,建芳.等学校计算机基础教育改革与实践系列 大学计算机基础教程 面向计算思维和问题求解[M]. 北京:高等教育出版社,2018.05.
[9]中国数据中心发展蓝皮书(2018)[J].信息技术与标准化,2019(04):73.
[10]黄潜.基于Selenium的电力营销系统用户权限自动配置[J].计算机应用与软件,2018,35(04):187-190.
[11]饶玲玲.基于J2EE的风险保证金清算系统[J].微型电脑应用,2017,33(06):74-76+80.
[12]徐航. 基于UML的企业人力资源管理系统的分析与设计[D].云南大学,2013.
[13]杨瑞. 一种基于面向方面的可信软件非功能需求设计与评估方法[D].西南大学,2014.
[14]Kan Ji. Design and Implementation of Teaching Quality Evaluation System Based on SpringBoot[C]. 西南石油大学(Southwest Petroleum University).第七届计算与信息科学国际学术会议论文集.西南石油大学(Southwest Petroleum University):西南石油大学计算机科学学院,2019:444-452.
[15]Hui Lu,Shangfei Gao,Shaolong Li. Design of Mobile Integrated Development Platform for Business System Based on B/S Architecture[J]. Journal of Physics: Conference Series,2019,1237(4).
[16]张东杰.城市地下综合管廊信息管理系统设计与研究[J].价值工程,2020,39(01):98-100.
[17]刘艳平,李海浩.基于序列图和状态图的软件测试用例生成方法[J].电子设计工程,2019,27(24):167-170+175.
[18]李楠,王晓博,刘超.自动分析软件缺陷报告间相关性的方法研究[J].计算机应用研究,2010,27(06):2134-2139.
[19]张景安,张杰,卫泽丹.Android移动端浏览器的设计与开发[J].软件,2014,35(08):7-10.
[20]李香菊,孙丽,谢修娟,操凤萍,朱林. 软件工程课程设计教程[M]. 北京:北京邮电大学出版社,2016.01.
[21]漆波. 遂宁市检察院反贪案件管理系统的设计与实现[D].电子科技大学,2011.
[22]钟耀峰,田思琪,周秋华. 一种对软件测试中错误信息的分类方法及装置[P]. 浙江省:CN110674038A,2020-01-10.
[23]Sikandar Ali,Niamat Ullah,Muhammad Faisal Abrar,Zhongguo Yang,Jiwei Huang,Rahman Ali. Fuzzy Multicriteria Decision-Making Approach for Measuring the Possibility of Cloud Adoption for Software Testing[J]. Hindawi,2020,137.
[24]李建平.地域通信网网络管理软件的测试[J].无线电通信技术,2000(02):42-43+51.
[25]郝阳.落实国家大数据发展行动纲要 用大数据思维服务数字出版转型升级[J].科技与出版,2016(01):9-12.

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 16:40:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 16:40:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 16:40:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 16:40:05       20 阅读

热门阅读

  1. Kafka|处理 Kafka 消息重复的有效措施

    2024-03-10 16:40:05       21 阅读
  2. 记录:DPDK 22.11.2 LTS在WSL/2 Ubuntu 18.04 LTS上面编译

    2024-03-10 16:40:05       23 阅读
  3. Spring Cloud Gateway自定义过滤器

    2024-03-10 16:40:05       22 阅读
  4. Python虚拟环境搭建

    2024-03-10 16:40:05       17 阅读