医疗大数据系统
摘 要:计算机网络如果结合使用信息管理系统,能够提高管理员管理的效率,改善服务质量。优秀的医疗大数据系统能够更有效管理用户取药和挂号业务规范,帮助管理者更加有效管理用户取药和挂号,可以帮助提高克服人工管理带来的错误等不利因素。所以一个优秀的医疗大数据系统能够带来很大的作用。 本医疗大数据系统使用了计算机语言Java和存放数据的仓库MySQL,采用了MVC设计模式来实现。本系统使用了框架SSM和Vue实现了医疗大数据系统应有的功能,系统主要角色包括管理员、医生和用户。
关键词:Java;MySQL;MVC;SSM
|
Medical Big Data System
Abstract:If the computer network is combined with the information management system, it can improve the efficiency of administrator management and improve the quality of service. Excellent medical big data system can more effectively manage the business norms of users' drug taking and registration, help managers more effectively manage users' drug taking and registration, and help improve and overcome adverse factors such as errors caused by manual management. Therefore, an excellent medical big data system can play a great role. The medical big data system uses the computer language Java and the data warehouse mysql, and adopts the MVC design mode. The system uses the framework SSM and Vue to realize the functions of the medical big data system. The main roles of the system include administrator, doctor and user.
Keywords:Java;MySQL;MVC;SSM
|
目 录
随着计算机的普及,国际上医疗大数据系统前景良好,网上用户挂号和取药缴费的出现,证明了医疗大数据系统具有良好的前景。在当今世界之中,随着科学技术的不断发展和计算机越来越普及,运用计算机对系统进行管理是一种趋势。如今随着社会和生活的信息量在不断地增长中,如何提高管理员的管理效率成为了人们关注的话题[1]。
传统人工管理医疗大数据系统会消耗过多的人力和物力,很有困难造成管理员管理混乱,从而对医疗大数据系统的正常运营造成影响,很多传统的管理模式已经不能够适应人们的要求。我们可以充分利用计算机的资源,完成网上用户挂号和取药缴费的信息服务。最后为了方便管理员能够大量处理业务,可以借用于计算机强大的信息资源。在考虑到用户的便处之时还需要考虑到用户使用的安全问题[2]。
随着对各种不同模型的讨论和信息技术的最终发展,并且还讨论了在海量数据中如何安全和高效地存储的问题,人们逐渐发明了一些办法。将计算机软硬件和数据库进行结合起来,研究了一套能够为企业正常运行而提供的功能,这种功能最后带动了信息管理系统的发展。一个医疗大数据系统不仅能够解决用户的需求,还能够降低人工的操作出现错误的几率。这能够使得管理员的管理更加标准化。
在很多发达国家中,医疗大数据系统的进展明显要快于我国很多,在管理方面也建设了很多不同的管理平台,这些管理平台能够为管理员管理提供数据信息。这些医疗大数据系统原则上的设计能够结合网络软硬件构建出信息系统。
相比较于国外而言,我国网上用户挂号和取药缴费信息化发展是较为缓慢的,最初只是将网上用户挂号和取药缴费信息作为一个概念进行研究。随着信息技术的不断发展,目前我国在网上用户挂号和取药缴费管理方面已经有了进步。
以医疗大数据系统的应用为基础,可以将软件开发机构分为几个层次:
第一个层次中的国外软件开发机构能够提供较为成熟的医疗大数据系统,这些医疗大数据系统的主要目标为市场上的高端用户,软件能够满足高端用户对其平台的要求。
第二个层次是我国的一些软件机构在研究医疗大数据系统的时候往往引入了国外软件的设计模式,之后结合国内市场的具体需要进行设计软件。设计出的软件一般能够符合大多数用户的认可[3]。
第三个层次为定制的医疗大数据系统。一般是结合于用户的实际需求,定制有特殊功能的医疗大数据系统,从而满足用户的不同要求。
针对本文的医疗大数据系统安排论文的章节如下:
第一章是引言。本章主要介绍了课题研究背景与意义、课题研究现状和论文结构。
第二章是系统开发环境及技术。本章介绍了医疗大数据系统开发环境和所涉及到的技术。
第三章是需求分析。本章介绍了医疗大数据系统的功能需求和非功能需求,绘制出系统功能模块图。
第四章是系统总体设计。对系统功能模块进行划分和数据库设计。
第五章是系统实现。本章阐述了医疗大数据系统功能模块的实现功能。
第六章是系统测试。本章阐述了使用黑盒测试对系统进行测试。
本医疗大数据系统使用的开发工具为idea,idea能够为JavaEE系统提供丰富的继承环境,它包括了测试功能、代码编写功能和打包发布功能。目前idea能够支持JavaEE框架和数据库连接工具等多项功能,idea差不多囊括了Eclipse的所有功能。
Tomcat属于Web服务器,能够运用由B/S模式编写的Web应用,在本次开发的医疗大数据系统中使用的Web服务器为Tomcat。Tomcat底层由Servlet实现,可以说是一个Servlet容器。
我们基本可以这样认为,假如我们在一台服务器上配置Apache服务器,那么在服务器上就可以利用Apache服务器相应Html页面的请求。Tomcat部分是Apache的扩展,但是Tomcat是完全独立于Apache的。当我们运行Apache的时候,实际Tomcat运行的线程与Apache是不同的,Tomcat独立于Apache运行JSP和Servlet,Apache服务于HTML页面。
MySQL数据库能够存储大量的数据,在操作上不仅方便快捷,如果想加快查询的速度,可以在数据库表上加上索引,MySQL通过SQL语句可以管理系统的信息。如果系统需要添加数据的时候,可以调用insert语句更新数据库记录,通过少量的SQL语句可以管理系统的信息。MySQL是开源免费使用的数据库,通过标准的SQL语句可以操作系统的信息,安装和部署MySQL数据库也较为方便,通过数据库管理工具Navicat for MySQL可以以可视化的方式管理数据库的信息。开源框架封装的数据库操作语言能够根据开源框架的配置文件转化为数据库的SQL语言。MySQL数据库配合开源框架能够方便对数据库记录进行修改。
MVC框架能够处理医疗大数据系统的超链接,用户填写表单所发送的请求,不能够直接发送到前端页面中的请求中进行处理,而是需要先发送到后端控制器中进行处理在返回到前端页面当中,由后端框架处理前端页面传递过来的请求。通过后端框架可以避免用户直接访问前端页面,能够较大提高系统的安全性。
Spring的依赖注入能够使得医疗大数据系统各个部分松耦合在一起,组件与组件结合的方式依赖于Spring框架的依赖注入,Spring框架使用了大量接口编程能够降低重构的成本,方便系统后续的修改。
Spring框架的事务声明框架能够应用于事务之中,如果有了声明式事务则不用将事务策略与代码结合起来,通过配置文件实现以便业务逻辑组件能够专注于业务逻辑的实现,能在一定程度上减少程序员开发的难度。
MyBatis属于关系映射框架,对象关系映射的功能可以对数据库访问方式进行简化,并在JDBC基础上提供进一步地封装数据库操作方法进行访问MySQL数据库,使用封装的MySQL操作方法对数据库进行访问更加符合面向对象的方法。
开源框架MyBatis以灵活的方式通过数据库语句操作数据库记录,开发者不需要编写复杂的SQL语句对多张表进行操作,而是通过对象的方式对数据库记录进行操作,为核心底层DAO对象提供支持。
Vue框架属于渐进式框架中的一种,能够用于构建用户界面,不用编写后端逻辑业务的代码,只需要关注前端界面代码的编写,通过和第三方View库进行整合,通过脚手架进行开发出对应的前端界面,这有助于提供强大的伸缩能力,通过采用向上增量的开发设计能够有助于减少系统代码的冗余度。Vue属于动态页面的一种技术,与静态页面具有不少的差别。程序开发者使用Vue和后端框架进行结合的话能够实现数据在前后端进行交互,这样可以使得数据交互的时候相对简单。前端开发者需要负责编写前端页面,而不用编写逻辑业务处理代码,这部分需要由后端开发者进行完成。Vue框架不仅能够编写动态页面还能够与前端页面进行结合,这样有助于后续对程序的扩展。Vue框架能够将视图层与业务层的代码分离,如果使用了Vue框架,前端开发者可以减少编写过多的重复html代码。
图3.1 医生用例图
图3.2 用户用例图
图3.3 管理员用例图
如果管理员有了医疗大数据系统,便可以对用户挂号和取药缴费进行管理,在资金花费上可以节省不少。医疗大数据系统的设计开发与实现目的是解决传统模式带来的多余经济支出,尤其是人力资源带来的成本支出[5]。传统的医疗大数据系统不仅需要消耗大量人力资源,而且往往需要管理员手工记载数据。本医疗大数据系统设计实现的目的为降低开发成本,并且可以节省管理员的时间和提高用户的体验感。考虑到目前的互联网开源框架和硬件设备,所以经济上是可行的[6]。
根据前期对医疗大数据系统功能的分析和确定,最后选择合适的软件架构和技术实现系统的开发,系统在设计实现的时候无论是开发工具还是系统架构使用的都是较为方便的开发模型,还包括了较为成熟的解决方法。综合市场上现有的医疗大数据系统,本次所使用的技术基本可行,并且能够满足用较少的开发和学习的成本。此次使用的开发模式能够快速构建系统,有不少现成的系统可供参考,所以后期的系统维护和升级较为容易,因此在技术上是可行的。
医疗大数据系统开发出来的目的是为了用户访问的操作的,因此医疗大数据系统在设计的时候需要注意到用户操作和访问的问题,用户群体普遍能够接受信息化的使用操作,所以用户的学习成本不是很高。本医疗大数据系统在设计的时候没有采用过于繁杂的操作,使用的操作界面和按钮在设计上较为简单,参考了不少的主流医疗大数据系统,因此系统在操作性上是可行的。
医疗大数据系统在设计的时候需要注意非功能性需求,还要满足系统业务流程的需要。
(1)兼容性
一般软件系统可以分为服务器和客户端,服务器需要运行程序,客户端显示程序的界面,系统的机器需要放置在机房中,软件开发者在平常的时候需要对其维护,用户所能接触到的界面其实是由客户端运行的,属于人机交互的接口。为了提高医疗大数据系统的兼容率,需要考虑代码实现的时候和前端界面的样式是否能够相互适配。
(2)可扩展性
软件系统随着事件的推移需要更新系统,本医疗大数据系统也不例外,如果需求发生了改变,那么就需要调整系统的功能。如果采用的是面向对象程序设计方法,那么可以使用接口编程技术,严格遵循软件开发规范,最后对系统进行修改的时候会具有较高的适应性。
所设计的医疗大数据系统需要适应在未来管理的时候能够适应需求的变化。从侧面要求系统需要具有扩展性。因此系统开发的时候需要遵循一定的软件规范从而能够便于后期对系统的修改。
(3)可靠性
软件系统需要由可靠性,否则很多实际对系统的管理会失效,使得业务功能不能够正常地流转。系统的可靠性包括了硬件能力、应用和数据。一个系统可靠性越高那么代表系统从异常到能成功运行的能力和使用价值也会越高,用户的体验感会变得更好。
通过需求分析分析系统需要具有功能之后,之后需要从系统总体设计分析功能流程,每个角色具有不同的功能,每个功能模块需要有不同的代码实现。
本医疗大数据系统采用的是B/S模式,B/S模式又称浏览器/服务器模式,B/S模式有个很大的好处为如果系统有网络那么就可以运行,它依赖于Web浏览器的技术,因此在使用的时候不需要管理人员安装任何较为专业的软件,管理员在维护软件的时候也无需花费过多的精力。
浏览器端在向用户提供操作界面的时候还需要保存前端用户输入的各项信息和处理用户提交的请求,业务逻辑执行相关操作处理前端界面传递过来的数据,最后把处理结果显示给用户。服务器端主要处理用户点击页面传递过来的请求,最后去数据库端请求数据库服务器执行相关的操作,从而能够得到相应的数据记录,之后根据情况对取得的数据记录进行处理返回到浏览器端显示相应的结果。
数据库 |
返回操作结果 |
开源框架操作 |
浏览器 |
服务器 |
返回操作结果 |
操作请求 |
图4.1 架构设计图
医疗大数据系统的目的就是管理用户取药和挂号的日常事务,通过分析,医疗大数据系统的业务主体包括不同的角色。因此在医疗大数据系统当中首先需要实现角色之间具有不同的权限,要为不同用户分配相应的权限,区分不同角色区别需要使用用户表,用户表中需要设置特殊列区分不同的用户,用户表中存储着用户的个人信息。
(1)注册
在医疗大数据系统中点击注册按钮实现注册功能,用户点击注册按钮之后会跳转到注册界面中,用户在注册的时候需要输入必要的信息。
输入用户信息 |
提示错误 |
结束 |
添加成功 |
用户表中是否存在用户 |
用户注册页面 |
开始 |
是 |
否 |
图4.2 注册流程图
(2)登录
如果用户输入的信息和数据库的记录存在相同的时候,表示验证成功,此时会跳转到医疗大数据系统的主界面当中,则这时表示登录成功。用户如果想要退出登录的话则需要点击退出按钮。
提示用户名和密码错误 |
结束 |
将用户名写入session |
跳转至首页面 |
用户记录 |
刷新登录界面 |
获取用户名和密码 |
开始 |
是 |
否 |
是 |
图4.3 登录流程图
(3)挂号
用户登录系统后可以预约挂号。
开始 |
输入用户信息 |
显示登录界面 |
进入系统 |
输入是否正确 |
结束 |
挂号 |
是 |
否 |
图4.4 挂号流程图
(4)用户管理
管理员在后台登录系统之后可以对用户信息管理。
结束 |
查询用户信息 |
删除用户信息 |
修改用户信息 |
增加用户信息 |
选择要进行的操作 |
进入用户管理页面 |
开始 |
图4.5 用户管理流程图
医疗大数据系统 |
病人信息管理 |
医生 |
管理员 |
用户 |
挂号信息管理 |
病历信息管理 |
收藏管理 |
排班信息管理 |
费用信息管理 |
病人信息管理 |
科室信息管理 |
开药信息管理 |
挂号信息管理 |
科室信息管理 |
病人信息管理 |
图4.6 功能结构图
数据库概念模型可以利用E-R图进行表示,E-R图又称为实体-联系模型。E-R图通常包括实体、联系和属性。通过实体、联系和属性能够反映出系统各实体的关系,从概念上来说反映了数据库信息的组织的情况。
病人 |
医生 |
N |
N |
N |
N |
N |
N |
N |
N |
病历 |
评论 |
挂号 |
收藏 |
留言板 |
包含 |
科室 |
包含 |
1 |
N |
N |
1 |
包含 |
开药信息 |
1 |
N |
包含 |
费用 |
N |
N |
图4.7 全局E-R图
(1)病历信息表
表4.1 病历信息表
列名 | 数据类型 | 长度 | 主外键 |
id | bigint | 20 | 是 |
addtime | timestamp | 0 |
|
zhanghao | varchar | 200 | 是 |
xingming | varchar | 200 |
|
xingbie | varchar | 200 |
|
nianling | int | 11 |
|
zhusuzhengzhuang | longtext | 0 |
|
zhenduanjieguo | longtext | 0 |
|
zhiliaofangan | longtext | 0 |
|
yishengbianhao | varchar | 200 | 是 |
yishengxingming | varchar | 200 |
|
(2)病人信息表
表4.2 病人信息表
列名 | 数据类型 | 长度 | 主外键 |
id | bigint | 20 | 是 |
addtime | timestamp | 0 |
|
zhanghao | varchar | 200 |
|
xingming | varchar | 200 |
|
xingbie | varchar | 200 |
|
nianling | int | 11 |
|
bingshi | longtext | 0 |
|
guominshi | longtext | 0 |
|
bingzhengmiaoshu | longtext | 0 |
|
(3)评论信息表
表4.3 评论信息表
列名 | 数据类型 | 长度 | 主外键 |
id | bigint | 20 | 是 |
addtime | timestamp | 0 |
|
refid | bigint | 20 | 是 |
userid | bigint | 20 | 是 |
nickname | varchar | 200 |
|
content | longtext | 0 |
|
reply | longtext | 0 |
|
(4)挂号信息表
表4.4 挂号信息表
列名 | 数据类型 | 长度 | 主外键 |
id | bigint | 20 | 是 |
addtime | timestamp | 0 |
|
keshimingcheng | varchar | 200 |
|
keshileixing | varchar | 200 |
|
yishengbianhao | varchar | 200 | 是 |
yishengxingming | varchar | 200 |
|
guahaoshijian | datetime | 0 |
|
bingzhengmiaoshu | varchar | 200 |
|
zhanghao | varchar | 200 | 是 |
xingming | varchar | 200 |
|
sfsh | varchar | 200 |
|
shhf | longtext | 0 |
|
(5)留言板信息表
表4.5 留言板信息表
列名 | 数据类型 | 长度 | 主外键 |
id | bigint | 20 | 是 |
addtime | timestamp | 0 |
|
userid | bigint | 20 | 是 |
username | varchar | 200 |
|
content | longtext | 0 |
|
cpicture | varchar | 200 |
|
reply | longtext | 0 |
|
rpicture | varchar | 200 |
|
(6)收藏信息表
表4.6 收藏信息表
列名 | 数据类型 | 长度 | 主外键 |
id | bigint | 20 | 是 |
addtime | timestamp | 0 |
|
userid | bigint | 20 | 是 |
refid | bigint | 20 | 是 |
tablename | varchar | 200 |
|
name | varchar | 200 |
|
picture | varchar | 200 |
|
type | varchar | 200 |
|
inteltype | varchar | 200 |
|
为了保证医疗大数据系统的数据库设计因此需要使用存取控制方法和用户身份鉴别方法进行加强保护。
(1)存取控制方法:存取控制方法能够为不同的用户赋予相应的权限。在本次设计的医疗大数据系统中为了保证数据的安全,本系统严格限制了用户、医生和管理员使用的功能权限,用户不能够修改系统中的信息。
(2)用户身份鉴别:数据库用户表有用户的记录,用户表中需要有主键标识每个用户,系统会将用户输入的用户名和密码与数据库用户表中的记录相比较,如果两者相同才能够登录。用户身份鉴别是医疗大数据系统基本保护措施,用户在登录的时候都需要通过身份的验证,只有成功登录之后才能够使用相应的权限,从而防止怀有不好意的用户修改数据库记录。
在设计医疗大数据系统的时候,经历了需求分析和总体设计以后,便需要实现系统。系统实现的时候需要根据系统总体设计和需求分析进行实现系统。
在本医疗大数据系统中,为了保证系统运行的安全性,想要使用本系统的功能需要先通过登录的验证,在登录功能中需要使用login页面进行表示前端页面,在login标签中需要进行定义CSS标签从而将登录界面能够显示在浏览器当中,还需要对表单进行定义。登录界面中的输入框需要使用placeholder进行提示用户输入相应的信息。当用户点击登录按钮的时候需要传递信息到loginForm中。
图5.1 登录界面
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("zhanghao", username));
if(user==null || !user.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(), username,"yonghu", "用户" );
return R.ok().put("token", token);
}
在用户管理界面中首先需要使用script标签引入样式供标签进行调用。查看用户信息依赖于form标签显示用户的信息,在form标签中需要定义好CSS样式才能够让表格正常显示在界面当中[7]。添加按钮需要使用button进行表示,在添加按钮中需要设置点击事件,需要设置相应的方法处理前端页面中添加的用户信息。用户详情页面中需要设置detail页面进行表示,使用CSS样式对用户信息进行美化设置,后端从数据库记录取出的信息显示在前端页面当中。管理员如果想要寻找用户的信息,则需要在输入框中输入用户编号传递到业务逻辑模块中根据SQL语句搜索用户信息,搜索出来的信息需要传递到前端页面中进行显示用户的信息。
图5.2 用户管理界面
/**
* 查询
*/
@RequestMapping("/query")
public R query(YonghuEntity yonghu){
EntityWrapper< YonghuEntity> ew = new EntityWrapper< YonghuEntity>();
ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu"));
YonghuView yonghuView = yonghuService.selectView(ew);
return R.ok("查询用户成功").put("data", yonghuView);
}
在挂号管理界面中需要使用Vue框架表示界面的样式,添加挂号输入框需要使用input标签实现,用户输入的信息需要能够存储在挂号实体中,由input标签传递到挂号实体从而进行保存在实体中,当点击提交按钮则需要跳转到form表单定义好的路径把数据转移到后端逻辑处理代码中,在前端页面中还需要设置检测用户输入的数据是否正确,如果用户输入的数据为空,则需要使用layer进行提示。
图5.3 挂号管理界面
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
GuahaoxinxiEntity guahaoxinxi = guahaoxinxiService.selectById(id);
return R.ok().put("data", guahaoxinxi);
}
在病历管理界面中首先需要使用script标签引入样式供标签进行调用。查看病历信息依赖于form标签显示病历的信息,在form标签中需要定义好CSS样式才能够让表格正常显示在界面当中。添加按钮需要使用button进行表示,在添加按钮中需要设置点击事件,需要设置相应的方法处理前端页面中添加的病历信息。病历详情页面中需要设置detail页面进行表示,使用CSS样式对病历信息进行美化设置,后端从数据库记录取出的信息显示在前端页面当中。管理员如果想要寻找病历的信息,则需要在输入框中输入病历编号传递到业务逻辑模块中根据SQL语句搜索病历信息,搜索出来的信息需要传递到前端页面中进行显示病历的信息。
图5.4 病历管理界面
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody BinglixinxiEntity binglixinxi, HttpServletRequest request){
binglixinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(binglixinxi);
binglixinxiService.insert(binglixinxi);
return R.ok();
}
在费用管理界面中需要使用Vue框架表示界面的样式,添加费用输入框需要使用input标签实现,用户输入的信息需要能够存储在费用实体中,由input标签传递到费用实体从而进行保存在实体中,当点击提交按钮则需要跳转到form表单定义好的路径把数据转移到后端逻辑处理代码中,在前端页面中还需要设置检测用户输入的数据是否正确,如果用户输入的数据为空,则需要使用layer进行提示。
图5.5 费用管理界面
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
feiyongxinxiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
用户登录系统之后可以进入到科室展示界面中,科室展示界面可以以表格的形式展示出科室的信息,当用户点击科室图片的时候可以跳转到相应的科室详细界面当中,当用户点击的时候实际是发送请求到客户端中,客户端使用适配器经过解析之后传递请求到服务端中,服务端利用数据库SQL语句取出数据库记录。
图5.6 科室展示界面
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,KeshixinxiEntity keshixinxi,
HttpServletRequest request){
EntityWrapper<KeshixinxiEntity> ew = new EntityWrapper<KeshixinxiEntity>();
PageUtils page = keshixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, keshixinxi), params), params));
return R.ok().put("data", page);
}
在挂号界面中用户能够浏览科室的详细信息,科室详细信息能够展示主要依赖于客户端发送请求和科室编号到服务端中,服务端传送科室编号到数据库服务器中,数据库服务器利用数据库SQL语句取出科室的详细信息并传递到客户端中。
图5.7 挂号界面
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
KeshixinxiEntity keshixinxi = keshixinxiService.selectById(id);
keshixinxi.setClicknum(keshixinxi.getClicknum()+1);
keshixinxi.setClicktime(new Date());
keshixinxiService.updateById(keshixinxi);
return R.ok().put("data", keshixinxi);
}
用户登录系统之后可以进入到医疗资讯展示界面中,医疗资讯展示界面可以以表格的形式展示出医疗资讯的信息,当用户点击医疗资讯图片的时候可以跳转到相应的医疗资讯详细界面当中,当用户点击的时候实际是发送请求到客户端中,客户端使用适配器经过解析之后传递请求到服务端中,服务端利用数据库SQL语句取出数据库记录。
图5.8 医疗资讯展示界面
/**
* 列表
*/
@RequestMapping("/lists")
public R list( NewsEntity news){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
return R.ok().put("data", newsService.selectListView(ew));
}
在医疗资讯详细信息界面中用户能够浏览医疗资讯的详细信息,医疗资讯详细信息能够展示主要依赖于客户端发送请求和医疗资讯编号到服务端中,服务端传送医疗资讯编号到数据库服务器中,数据库服务器利用数据库SQL语句取出医疗资讯的详细信息并传递到客户端中。
图5.9 医疗资讯详细信息界面
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
软件开发完成之后需要进行测试,如果发现有问题的代码块可以通过打断点的方式对代码块进行处理。在医疗大数据系统设计实现的过程当中难免有潜在的错误,因此离不开测试的环节。通过软件测试之后,软件才能够上线运行,不然会增加后续维护的费用。本次测试通过实际测试用例完成功能的测试判断是否能够达到功能的要求,通过软件测试能够提前发现医疗大数据系统的错误,这样可以在上线之前就完成。
系统完成之后还需要对程序进行测试。因为在开发的过程当中可能会留下潜在的错误以及缺陷,如果在使用软件之前没有解决掉这些错误,后续会影响软件的使用。虽然软件被开发出来了,但是没有办法使用软件也会造成困扰,这会造成非常大的损失。软件测试能够在一定程度上保证系统的质量。测试的最终目的为系统上线之前尽可能发现系统中存在的潜在错误,潜在错误还包括用户体验不佳等[8]。
为了提高医疗大数据系统测试效率和成本,本测试方案采用的黑盒测试的方法。
边界值分析法,边界值分析法能够将软件测试工作按同样形式进行划分,对用户输入的数据测试,还可以选择等价类边界的测试用例,返回的计算结果表示是否正确[9]。
因果图方法,使用多种条件的组合从而产生出多种不同的测试用例,因国图能够产生出不同的判定表,它能够检测程序输入条件的各个组合情况,使用正交表格进行检测数据并进行分析,目的为提高测试覆盖率。
错误推测法,基于测试者的直觉进行推算出医疗大数据系统所可能存在的错误,从而设计出能够解决错误的专门方法,错误推测法基本核心思想是列举程序中很大可能存在的错误,根据这些错误选择相应的测试用例[10]。
(1) 用户登录测试用例
表6.1 登录用例表
测试用例 | 步骤 | 预期结果 | 实际结果 |
如果用户没有输入用户名和密码 | 在登录界面中没有输入用户名和密码,点击对应的登录按钮 | 登录失败 | 登录失败 |
如果用户输入的用户名和密码与数据库记录相符 | 在登录界面中输入用户名和密码,点击对应的登录按钮 | 登录成功 | 登录成功 |
如果用户输入的用户名与数据库记录相符,密码错误 | 在登录界面中输入用户名和密码,点击对应的登录按钮 | 登录失败 | 登录失败 |
如果用户输入的密码与数据库记录相符,用户名错误 | 在登录界面中输入用户名和密码,点击对应的登录按钮 | 登录失败 | 登录失败 |
(2)病历管理测试用例
表6.2 病历管理用例表
测试用例 | 步骤 | 预期结果 | 实际结果 |
管理员想要搜索病历的信息,则需要在搜索框输入病历的部分信息搜索病历的信息 | 在病历管理界面中输入的病历信息跟数据库病历表记录不符合 | 搜索失败 | 搜索失败 |
管理员想要搜索病历的信息,则需要在搜索框输入病历的部分信息搜索病历的信息 | 在病历管理界面中输入的病历信息跟数据库病历表记录符合 | 搜索成功 | 搜索成功所 |
管理员想要添加病历的信息,则需要点击添加按钮之后输入病历的信息 | 在病历管理界面中输入的病历信息跟数据库病历表记录冲突 | 添加失败 | 添加失败 |
管理员想要添加病历的信息,则需要点击添加按钮之后输入病历的信息 | 在病历管理界面中输入的病历信息为全新记录 | 添加成功 | 添加成功
|
管理员想要删除病历的信息,则需要点击删除按钮 | 在病历管理界面中点击删除按钮,如果被删除的病历信息跟其它表有关联 | 删除失败 | 删除失败 |
管理员想要删除病历的信息,则需要点击删除按钮 | 在病历管理界面中点击删除按钮,如果被删除的病历信息跟其它表没有主外键的关联 | 删除成功 | 删除成功 |
管理员想要修改病历的信息,则需要点击修改按钮后输入病历新的信息 | 在病历管理界面中输入的病历信息跟数据库病历表记录冲突 | 修改失败 | 修改失败 |
管理员想要修改病历的信息,则需要点击修改按钮后输入病历新的信息 | 在病历管理界面中输入的病历信息为合法信息且不会跟数据库记录相冲突 | 修改成功 | 修改成功 |
(3) 用户管理测试用例
表6.3 用户管理用例表
测试用例 | 步骤 | 预期结果 | 实际结果 |
管理员想要搜索用户的信息,则需要在搜索框输入用户的部分信息搜索用户的信息 | 在用户管理界面中输入的用户信息跟数据库用户表记录不符合 | 搜索失败 | 搜索失败 |
管理员想要搜索用户的信息,则需要在搜索框输入用户的部分信息搜索用户的信息 | 在用户管理界面中输入的用户信息跟数据库用户表记录符合 | 搜索成功 | 搜索成功所 |
管理员想要添加用户的信息,则需要点击添加按钮之后输入用户的信息 | 在用户管理界面中输入的用户信息跟数据库用户表记录冲突 | 添加失败 | 添加失败 |
管理员想要添加用户的信息,则需要点击添加按钮之后输入用户的信息 | 在用户管理界面中输入的用户信息为全新记录 | 添加成功 | 添加成功
|
管理员想要删除用户的信息,则需要点击删除按钮 | 在用户管理界面中点击删除按钮,如果被删除的用户信息跟其它表有关联 | 删除失败 | 删除失败 |
管理员想要删除用户的信息,则需要点击删除按钮 | 在用户管理界面中点击删除按钮,如果被删除的用户信息跟其它表没有主外键的关联 | 删除成功 | 删除成功 |
管理员想要修改用户的信息,则需要点击修改按钮后输入用户新的信息 | 在用户管理界面中输入的用户信息跟数据库用户表记录冲突 | 修改失败 | 修改失败 |
管理员想要修改用户的信息,则需要点击修改按钮后输入用户新的信息 | 在用户管理界面中输入的用户信息为合法信息且不会跟数据库记录相冲突 | 修改成功 | 修改成功 |
在开发医疗大数据系统之前,我对管理系统的了解还在仅仅是理论水平上,学习知识的目的是为了通过考试,在软件开发经验上几乎为0,没有把知识融会贯通起来。通过这次设计的医疗大数据系统,我通过网络上的资源学习了相关的开发知识,完成了医疗大数据系统的设计与开发。在软件设计和论文撰写过程当中遇到了不少的问题,我在学习的过程当中慢慢克服了。非常幸运的是,在编写毕业设计代码和撰写论文的过程当中指导老师给了很多的帮助和鼓励,使得我通过这次毕业设计学到了很多动手知识。在自学和设计的过程当中,我请教了不少同学和老师。在每一次修改过程中技术不断地提高,遗憾的是有些功能无法实现,由于时间比较紧的关系,在接下来的时间中我会更加深入地研究编程语言。这次毕业设计是我在大学所学知识的应用,这相当于温习了大学所学的新知识。
最后,通过几个月的论文撰写和代码的设计,我最终完成了医疗大数据系统的开发,在开发医疗大数据系统的时候,我学会了Java语言和MySQL数据库结合开发医疗大数据系统。对于不足之处在于界面设计没有采用过多的CSS样式进行美化。在技术方面,通过开发医疗大数据系统,本人对软件体系结构有了更加深刻地认识。
致 谢
光阴似箭,大学生活很快就过去了,四年的青春老少,包括了很多的情感,让人感觉念念不舍,我衷心地感谢这几年来学院的领导和老师对我的培养,你们教会了我知识和文化,让我能够在社会中更好地适应。
在设计医疗大数据系统的过程中,由于之前没有开发医疗大数据系统的相关经验,因此会有不少的错误,如果没有同学们的支持和老师的监督,医疗大数据系统可能最终会完成不了。通过这次软件设计和论文撰写提高了我很大的能力,虽然指导老师平时有不少的事情需要处理,但是老师还是抽出不少时间对我进行指导,对我的文档进行指点。如果没有指导老师的帮助,系统最后可能实现不了,指导老师不仅教会了我很多的知识,还教会了我除了学习之外的很多能力,这让我的工作和学习都有很大的帮助。毕业设计不仅能够总结多年以来学习的知识,还是对即将踏入社会工作的一份检测,在这个过程当中,我将在大学学习的知识进行结合,学会了独立思考和学习的能力,从零开发实现一个系统让我收益颇丰。在开发软件和论文撰写过程当中,我身边的朋友和舍友给了我很大的帮助。通过这次的经历,我充分了解到了未来工作将要面临的难度,在今后的生活和工作中会不断地努力学习新的知识。
参 考 文 献