博主简介:🍅博客专家、Java领域优质创作者、掘金特邀作者、InfoQ/华为云/阿里云等平台优质作者、专注于IT技术领域和学生毕业项目实战,指导学生毕业设计并参与学生毕业答辩指导🍅
技术范围:✌Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、安卓app、大数据、物联网、机器学习等设计与开发、简历模板、学习资料、面试题库、就业指导、技术互助等✌。
业务领域:✌免费功能设计定制、任务书、中期检查PPT、开题报告、系统功能实现、项目定制、论文辅导、撰写和降重、长期答辩辅导答疑、远程会议一对一专业讲解答辩辅导、模拟演练答辩、和代码讲解理解逻辑思路✌。
🍅 文章底部获取项目源码联系方式🍅
👇🏻 精彩专栏 推荐订阅 👇🏻 在下方专栏👇🏻不然下次找不到哟
《Java精品推荐项目》
《springboot+vue项目100套》
《ssm项目100套》
【万字文档+PPT+源码】基于springboot+vue的医院挂号系统-可用于毕设-课程设计-练手学习
摘 要
信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对医院排队挂号等问题,对线上挂号进行研究分析,然后开发设计出医院挂号系统以解决问题。
医院挂号系统主要功能模块包括医生管理、科室信息管理、挂号预约管理、科室管理、挂号取消管理、核酸预约管理、患者病例管理等,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用Springboot框架、JSP技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对医院挂号系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现医院挂号系统和部署运行使用它。
第1章绪论
1.1研究背景与意义
随着越来越多的人工智能不断融入和应用于医疗领域,医疗服务正逐步走入智能化,在中国新医改的大背景下,线上挂号已经成为民生工程的重点和热点领域。
医院线上挂号系统的研究意义:
(1)节约病人挂号的排队时间。传统医院的挂号手续繁琐,具有很强的不确定性,就诊人员流量不均,有明显的高峰期和低谷期,高峰期病人需要长时间排队,也易出现熟人插队等现象,低谷期会造成医生溜号,医疗资源闲置等问题。医院挂号系统可以自动计算病人的等待时间,合理分配就诊时段,提高了病人就诊的效率。
(2)提高病人的就诊质量。有些病人到医院就诊前对医院的信息了解并不十分清楚,对所要挂的专家科室和医生的资历等信息也并不了解,只能凭借自身的感觉和印象进行选择,具有盲目性。医院挂号系统可以根据病人的病情和医生资历进行挂号,选择最为合适的医生,具有针对性,大大提高了病人的就诊质量。
(3)减少“号贩子”的违法行为。传统医院尤其是大型医院的名专家号特别难挂,出现倒号炒号的行为,造成了“专家号一号难求”的现象,严重损害了病人的利益,影响了医院医生的声誉。医院挂号系统的出现使“专家号”的意义没有那么重要,病人只需选择最为合适自身病情的医生即可。
(4)操作方便简洁。病人利用互联网就可以随时随地的挂号预约,操作简单便捷,方便用户使用,提高了病人的就诊效率。
(5)增强医院的社会竞争力。医院挂号系统的出现使传统繁琐拥挤的就诊环境得到改善,提高了医院的医疗服务质量,增强了医院的社会竞争力,提高医院的经济效益和社会效益。
1.2 发展以及研究现状
本课题研究的医院挂号系统,是集患者挂号,科室医生管理,就诊预约,医疗资讯以及支付体系为一体的综合性的一个方便民众从看病挂号到就诊的网站,之所以叫做医院挂号系统,顾名思义,本系统的使用者能够不受医院地域性的影响,能够达到不论何时何地,只要有可接入网络终端移动设备,就能够随时进行预约专家或者挂号。
目前,国内以及有了许多类似的挂号网站,比较大的如上海助医(www.91985.com)、浙江省人民医院(www.hospi-talstar.com)等,但是大部分的医院挂号系统都参差不起,并没有形成统一的操作流程规范,也有不少的站点仅仅只是针对某地区的某个医院提供预约服务,因此并不能达到方便所有病患的目的,而且由于就诊观念、医院资金、技术平台等原因,预约挂号服务在推行过程中,也出现了一些问题,诸如挂号成功率低、爽约率高、难以真正遏制“号贩子”等,特别是由于需要医院提供更多的人力、物力和财力,增加了医院的运作成本。因此,一些医院尝试引入第三方机构来进行预约挂号,甚至有医院取消了自身的预约系统。如果说出于成本和技术的考虑,这些合作也无可厚非,但是其中越来越明显的商业化倾向却值得忧虑。
天下没有免费的午餐,各种名号的公司与医院“合作”,目的当然在于牟取利润。于是预约服务便附加了各种费用,由于缺乏统一标准,高额的预约服务费便在所难免。作为公益性机构,医院把部分稀缺优质公共医疗资源提供给合作公司,允许其收取服务资费,这种做法是否妥当本身就值得商榷。而合作公司对号源的截流,势必造成排队号源减少和普通百姓挂号“难上加难”。
相对国内的医疗系统,发达国家医院预约信息系统的开发建设实现已经有三十多年的历史,至今有了长足的进步。有许多举世公认的成功的系统在医院有效的运转,例如美国盐湖城LDS医院的HELP系统。纵观美国的HIS发展历史,大约可以分为三个阶段:第一个十年,集中在开发医院行政管理的功能上,像财务收费管理、住院病人和门诊病人的管理等。但直到1972年美国仍然没有一个成功的全面的计算机系统。第二个十年,在继续完成和实现医院的挂号信息化的同时,开发者的努力已经进入医疗信息的处理领域。最后一个十年至今,研究者又把重点放在了信息系统的小型化、智能化、集成化的改造过程。
第2章相关技术介绍
2.1J2EE技术
人可以掌握多门外语,而一个计算机科学家精通的大多是编程语言,它不是人类的自然语言,比如C语言、Java、Perl等等。由于不同的公司开发出的“中间件”不够规范,所以Sun公司推出J2EE,用这个标准来解决弊病。它提供了良好的机制,让每个层次允许与之相对的服务器、组件运行,使得系统的搭建稳定可用、开发高效、维护方便。
2.2MVVM模式
MVVM模式是常用的开发模式,主要是在代码实现上将其分为M层、V层和C层。
视图(View)代表用户交互界面,一个 Web 应用就可能有很多的界面,在 MVVM 模式中,视图仅仅处理的只有数据采集、处理,还有用户的请求, 并不包括业务流程的处理,业务流程由模型(Model)来处理。
模型(Model)就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的,它就像黑箱子,在接受视图请求的数据之后,然后返回最终的处理结果。MVVM 最主要的核心就是业务模型的设计,一个典型的应用例子就是目前流行的 EJB 模型,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但是它不能作为应用设计模型的框架。
控制器(Controller)可以理解为接收用户的请求,然后视图和模型匹配在一起,一起再完成用户请求。它有非常明显的作用在划分控制层上,可以很清晰地告诉你,它就是一个分发器,选择什么样的模型、视图,可以完成用户的什么样的请求。控制层不做所有的数据处理,比如说:用户点击一个连接,控制层接受到请求之后,并不处理业务信息,它只是向模型传递用户的信息,同时告诉模型做什么,然后选择符合需求的视图返回给用户。
2.3B/S结构
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
2.4Spring boot框架
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。
2.5Mysql数据库
Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
针对本文中设计的医院挂号系统在实际的实现过程中,最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对医院挂号系统后台数据进行存储操作。
第3章系统分析
3.1可行性分析
技术性方面,采用当前主流的Springboot框架进行系统主体框架的搭建,前台使用jquery,ajax,实现前台页面的设计与美观调整,以上技术,均由本人经过系统学习,并且都是在课程设计中实践过的,可以使得开发更加便捷和系统。从技术角度看,这个系统是完全可以实现的。
实用性方面,本次设计的主要任务是在医院挂号系统内挂号预约、医生信息查询、核酸预约、取消预约、医疗资讯浏览等,符合当前潮流的发展。从用户角度出发,同时也考虑系统运营成本和人力资源,采用网络上的便捷方式,实现线上业务,使得业务流程更系统,也更方便用户的体验,比较实用。
经济性方面,由于本课题中设计的医院挂号系统的主要目的是为了能够更加方便及快捷的进行信息的查询及检索服务,也就是能够可以直接投入使用的信息化软件。系统的主要成本主要是集中在对使用数据后期继续维护及其管理更新这个操作上。但是一旦系统投入到实际的运行及使用之后就能够很好的提高信息查询检索的效率,同时也需要有效的保证查询者的信息方面的安全性,同时这个医院挂号系统所带来的实际应用方面的价值是远远的超过了实际系统进行开发与维护方面的成本,因此,从经济上来说开发这个软件是可行的。
3.2功能需求分析
医院挂号系统的功能主要分为前台用户根据自己的需求进行注册登录,浏览医生信息并对选中的医生进行挂号预约操作。后台系统管理员因职责的不同,分为医生和管理员,医生主要对挂号预约订单进行处理,而管理员主要对注册用户,资讯数据,科室详细信息,医生详细信息,挂号预约,核酸预约、核酸报告进行管理。
管理员用例图如下所示。
用户用例图如下所示。
医生用例图如下所示。
3.2.1前台用户功能
前台用户可分为未注册用户需求和已注册用户需求。
未注册用户的功能如下:
注册账号:用户填写个人信息,并验证手机号码。
浏览医院资讯数据:用户可以浏览主页面的医院资讯数据来了解系统的最新医院资讯数据。
浏览科室:用户可以根据科室类型浏览科室的信息,并选中某个科室查看详情,例如:科室名称、科室类别、科室图片等。
浏览医生:用户可以根据医生类型浏览医生的信息,并选中某个医生查看详情,例如:医生姓名、性别、职称、所在科室、主治症状、照片等。
已注册用户的功能如下:
登录:根据账号密码进行登录操作。
维护个人信息:用户因个人信息的变更可以随时修改自己注册信息。
挂号预约:用户根据自己的病症选中某个科室医生放出得号源进行挂号预约操作。
挂号取消:用户可以根据自己的实际情况提交挂号取消申请。
核酸预约:用户可以在线进行核酸预约。
核酸报告:用户可以查看个人的核酸检测报告。
3.2.2后台管理员功能
后台可分为医生和管理员。
医生功能如下。
修改密码:管理员可以随时修改自己进入系统的登录密码,以保证系统的安全性。
挂号预约管理:处理用户提交的挂号预约信息。
对核酸预约:查看核酸预约订单信息,办理预约审核等。
患者病例:管理病人的病例信息。
管理员功能如下:
修改密码:管理员可以随时修改自己进入系统的登录密码,以保证系统的安全性。
挂号预约信息进行处理:办理挂号预约订单审核等。
科室信息管理:对科室信息进行维护,添加、删除、修改信息。
医生信息管理:对医生信息进行维护,添加、删除、修改信息。
患者病例管理:对患者病例进行维护,添加、删除、修改信息。
挂号预约管理:对患者用户系统提交的挂号,预约处理。
挂号取消管理:对患者用户系统提交的挂号取消进行审核。
资讯信息管理:发布、删除相关的资讯数据信息。
核酸报告管理:对核酸检测报告信息进行维护管理。
第4章系统设计
4.1系统架构设计
本医院挂号系统的架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
系统架构如下图所示。
4.2系统总体设计
医院挂号系统总体分为前台用户模块和后台管理员模块。
两个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。
综上所述,系统功能结构图如下图所示。
4.3系统功能设计
资讯数据模块:可分为资讯数据浏览、资讯数据检索、资讯数据维护三个模块,管理员对资讯数据有维护的权限,发布新的资讯数据、更新已有的资讯数据等。
科室管理模块:科室管理分为科室添加、修改和科室购买。科室信息由管理员进行修改、添加、删除操作;科室购买由普通用户来执行。
医生管理模块:医生管理分为医生添加、修改和医生线上沟通。医生信息由管理员进行修改、添加、删除操作;医生线上沟通由普通用户来执行。
挂号就诊管理模块:预约就诊管理分为:就诊预约的添加、修改、提交。用户提交后医生能查询到,后台管理员对预约进行处理。
第5章系统实现
5.1 注册模块的实现
用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过JavaScript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有@符号,密码和密码确认必须相同,你输入的密码,系统会根据你输入密码的强度给出指定的值,电话号码和身份证号码必须要求输入格式与生活相符合,当你前台验证通过的时候你点击注册,表单会将你输入的值通过name值传递给后台并保存到数据库中。
用户注册流程图如下图所示。
用户注册界面如下图所示。
5.3登录模块的实现
主要由两部分组成,登录前的登录界面以及登录后的用户功能界面。登录界面,要求用户输入用户名和密码,当用户名和密码其中一个输入为空时,给出提示“用户名,密码不能为空”。获取用户名和密码后到数据库中查找,如果用户名存在,以及对应的密码正确,则登录成功,否则登录失败。登录失败后给出提示,并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。登录成功后进入会员的功能模块,主要有会员基本信息修改,已经发布药品信息管理,发布信息,和退出功能。退出功能是清除全局变量username的值,并跳回到首页。
登录流程图如下图所示。
用户登录界面如下图所示。
5.4用户资料修改模块的实现
用户登录/注册成功之后可以修改自己的基本信息。修改页面的表单中每一个input的name值都要与实体类中的参数相匹配,在用户点击修改页面的时候,如果改后用户名与数据库里面重复了,页面会提示该用户名已经存在了,否则通过Id来查询用户,并将用户的信息修改为表单提交的数据。
5.5科室信息模块的实现
如果科室信息的信息需要修改,管理员可以通过查询科室的基本信息来查询科室信息,查询科室信息是通过ajax技术来进行查询的,需要传递科室名称、编号等参数然后在返回到该页面中,可以选中要修改或删除的那条信息,如果选中了超过一条数据,页面会挑一个窗口提醒只能选择一条数,如果没有选中数据会挑一个窗口题型必须选择一条数据。当选择确认修改的时候,后台会根据传过来的id到数据库查询,并将结果返回到修改页面中,可以在修改页面中修改刚刚选中的信息当点击确认的时候from表单会将修改的数据提交到后台并保存到数据库中,就是说如果提交的数据数据库中存在就修改,否则就保存。
科室信息展示界面如下图所示。
5.6评论模块的实现
用户可以发表自己的评论。将页面session中的用户账号userId和发表评论文字框内容传入控制层PinlunAction,调用addPinlun方法,通过PinlunDAOImp向数据库评论表插入,将结果返回lyb界面。
评论添加流程图如下图所示。
5.7 挂号预约模块的实现
挂号预约功能需要考虑高并发,防止出现挂号重复预约、挂号状态显示出错等情况,特预约这一共享数据增加锁机制。在乐观锁、悲观锁以及线程锁中,综合考虑性能效率和错误的可接受性选择了乐观锁机制。乐观锁的实现方式是使用版本标识来确定读到的数据与提交时的数据是否一致,提交后修改版本标识,不一致时可以采取丢弃和再次尝试的策略。在数据库预约表(对应号源)设计中增加了version字段,每次数据提交时(更改号源状态)会判断version是否匹配,若不匹配停止本次提交,若匹配则提交成功并增加version的值。
挂号预约功能整体流程:用户浏览号源信息时,同时会显示状态,系统会在其显示详细信息的页面时便会判断号源的状态,若号源状态为可预约,则会显示预约的链接按钮。在用户点击预约按钮时,会先通过拦截器判断用户是否登录,若未登录,会跳转至登录页面,提示用户先登录,若为登录用户就会跳转至填写预约信息的页面,填写好预约信息之后,点击提交按钮,预约成功之后返回提示信息,告知用户预约成功。
挂号预约流程图如下图所示。
挂号预约界面如下图所示。
5.8医生管理模块的实现
根据需求,需要对医生进行添加、删除或修改详情信息。删除或修改医生时,系统根据医生的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询医生状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。
添加医生时,会给出数据填写的页面,该页面根据填写好的医生编号同样会事先发送Ajax请求查询编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
医生管理流程图如下图所示。
医生管理页面设计效果如下图所示。
文档截图
项目获取
👇🏻 精彩专栏 推荐订阅 👇🏻 在下方专栏👇🏻不然下次找不到哟
《Java精品推荐项目》
《springboot+vue项目100套》
《ssm项目100套》
欢迎大家点赞、收藏、关注、评论啦 、查看下方二维码👇🏻获取项目👇🏻资料联系方式👇🏻