版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计题目基于SpringBoot的医院门诊预约系统的设计与实现目录TOC\o"1-3"\h\u240441绪论 1绪论1.1课题背景及意义1.1.1课题背景现在,随着科技的不断发展变化,我国已经进入了信息化的时代。因为这一发展,也使国内很多行业进行了创新改革,其中就包括了医疗机构,计算机技术正在逐渐成熟,广泛的应用到了医疗行业中。医疗水平的不断提高,国内拥有众多数一数二的大型三甲医院,而在医院门诊流程中重要的一个部分就是挂号系统REF_Ref20978\r\h[1],它直接影响了医院的服务质量REF_Ref21569\r\h[2]。所以将医院挂号系统与计算机技术结合起来是十分必要的。如今,大家的生活几乎都离不开互联网,相比起传统的挂号模式,人们更喜欢坐在家中就可以完成挂号,无需现场排队等候REF_Ref21612\r\h[3]。1.1.2课题意义传统的挂号模式有着排队等候时间长,挂号难、看病难的现象,这对于医院挂号厅的管理也有一定的压力和难度。在医院大厅人流庞大的情况下还使用人工叫号模式很容易发生差错,而医院门诊预约系统则解决了这个问题REF_Ref5695\r\h[4]。使用网上预约模式,可以大大减少挂号窗的人流压力。人们在家就可以预约看病,无需到现场排队REF_Ref7896\r\h[5]。这种模式能很大提高医院的挂号效率,也使挂号流程变得简单,缩短了现场候诊的时间,同时也提高了医院的服务水平REF_Ref7530\r\h[6]。所以建立医院门诊预约挂号系统,对医疗行业的发展具有重要意义REF_Ref4970\r\h[7]。1.2国内外研究现状目前来说,随着移动互联网的发展,医院挂号系统的移动化、智能化等方向的研究逐渐受到关注。随着医疗水平的不断提高发展,国内很多医院不止只采用传统的预约挂号方式,有多种预约途径可供患者选择,包括电话预约、挂号系统预约、手机预约和自助机预约等各种形式的预约方式。这为患者和医院提供了极大的便利,也提高了患者对医院的满意度REF_Ref7060\r\h[8]。每种预约方式又都有一定的区别,通过医院门诊预约系统,可以看到医院的大致概况,查看到医院科室分布位置等信息。患者只需要按照页面提示选择科室和专家进行分时间段预约挂号,全程用时时间段,仅动动手指即可完成挂号REF_Ref3566\r\h[9]。医院门诊预约系统有完善的隐私保护机制,因此不需要担心会泄露个人隐私问题REF_Ref19071\r\h[10]。总之,医院门诊预约系统还在不断的发展和探索中,还需要加强研究与实践的结合,推动医院挂号系统的创新与发展。对于国外来说,网上挂号系统已经得到了广泛的研究和应用,美国的KaiserPermanente医院是最早实现网上预约挂号的医疗机构之一,患者可以通过计算机或电话预约挂号,预约成功后,患者可以前往医院或诊所进行线下就诊。也可以通过网上视频就诊,医生会进行远程诊断和治疗,尤其在疫情期间被广泛应用。而且国外的研究者通过对挂号系统的用户满意度进行调查研究,不断地去完善网上挂号系统。总之,网上预约挂号系统的研究和应用,对于现代医疗服务的发展和优化起到了重要的推动和促进作用,成果和影响也得到了广泛的认可和肯定。但是如今网上预约系统还存在一些弊端:挂号难:虽然网上预约挂号可以方便患者看病,但是由于一部分医院设置不合理,号源少,需要排队等候才能预约到号。挂号系统容易崩溃:由于网站访问量过大,一些网上预约挂号系统就容易崩溃,给患者带来了极大不便。综上,网上预约挂号系统在方便的同时,也存在一些问题,需要医院和相关部门进一步加强管理和监管,以保障患者的就诊体验和医院服务质量。2开发平台和开发工具2.1关键性知识及技术简介2.1.1JAVA框架Java框架是一种基于Java语言的软件框架,它提供了一种软件开发的结构化方法,使得开发者可以更加快速、高效地开发出复杂的Java应用程序。Java框架通常是基于模块化的设计思想,使用了面向对象编程的方法,并提供了一些现成的解决方案,以方便开发人员使用。Java框架有以下几个特点:面向对象编程:Java框架大多采用面向对象编程思想,使得开发人员可以更加方便地进行模块化设计和开发,提高了代码的可重用性和可维护性。简化开发流程:Java框架提供了一些现成的解决方案,例如依赖注入、面向切面编程等,可以帮助开发人员更加方便地完成一些繁琐的开发工作,提高了开发效率。跨平台支持:Java框架可以在不同的操作系统和硬件平台上运行,具有很好的跨平台支持能力,这使得Java框架成为了企业级应用程序开发的主流选择。2.1.2springboot框架SpringBoot框架是一款非常适合快速应用开发的框架,它可以帮助开发者更快速、更便捷地构建Spring应用程序,并提供了很多现成的解决方案,使得开发工作更加高效。同时,SpringBoot框架具有很好的可扩展性和微服务支持,适合用于构建各种类型的应用程序,包括Web应用程序、企业级应用程序和微服务应用程序等。2.1.3MybtaisMybatis是基于Java的持久层的开源框架,可以将Java对象映射到关系型数据库中的数据,并提供了一种优雅的方式来进行数据库操作。2.1.4MavenMaven是一款非常实用的项目管理工具,它可以帮助开发人员更加方便地管理项目的构建、依赖和文档等方面的工作,同时还提供了丰富的插件机制和多模块支持,使得开发人员可以更加灵活地定制和管理项目。2.1.4JavaScriptJavaScript是一种重要的脚本语言,可以用于Web开发、移动应用、桌面应用等多种场景,是Web前端技术中不可或缺的一部分。2.1.5JQueryjQuery是一款非常实用的JavaScript库,它可以简化JavaScript编程中的许多常见任务,让开发人员更加高效地开发Web应用程序。同时,jQuery还具有良好的跨浏览器兼容性和丰富的插件,使得开发人员可以更加灵活地开发和定制自己的应用程序。2.2数据库平台2.2.1MySQL简介MySQL是一种功能强大且易于使用的关系型数据库管理系统,广泛用于Web应用程序、企业应用、移动应用等多种场景。MySQL具有高性能、可扩展性和安全性等特点,是数据管理和处理的重要工具。2.3开发环境及工具开发系统:Windows或MacJAVA版本:JDK1.8开发工具:IDEA、Eclipse、Myeclipsetomcat版本:Tomcat8、Tomcat9数据库系统:MySQL5.7maven版本:无限制浏览器:360浏览器、谷歌浏览器3系统分析3.1功能需求本次研究的医院门诊预约系统主要是为了使患者就医便捷,没有医院窗口挂号的繁琐步骤,使人们更能快速的预约进行检查。同时减少了人们排队等候时间,实现快捷挂号就医的目的。本系统一共拥有三种角色,分别为管理员、医生、患者。管理员模块:用户管理:管理员可以对医生、患者个人信息进行管理。检查科目管理:管理员可以对医院门诊挂号系统中显示的检查科目进行管理。病史管理:管理员可以对患者历史患病信息进行管理。预约管理:管理员可以对患者预约情况进行查看管理。住院信息管理:管理员可以对患者历史住院信息进行管理。医生模块:个人信息管理:对自己的个人信息进行管理。诊断:为患者进行诊断、查看病人的历史病例。患者模块:个人信息管理:对自己的个人信息进行管理。挂号:选择合适科室-选择医生进行预约挂号。挂号信息管理:对自己近期和历史挂号信息进行查看和删除。查看病例:查看近期和历史病例。查看住院信息:查看历史的住院信息。3.2可行性研究技术可行性基于SpringBoot的医院门诊预约系统使用的是springboot框架进行开发。基于Java的jdk1.8和tomcat8。SpringBoot其实是一个启动Spring项目的一个工具,从根本上讲,SpringBoot就是一些库的集合,它能够被任意项目的构建系统所使用。它可以使编码和配置变得简单。因此,应用Springboot框架进行开发是最佳的选择。操作可行性此次项目参考了几个在该模式下网站开发的案例,将众多案例结合起来,实现了相对简单的系统操作。患者可以根据提示信息就能完成对应的操作。该系统在操作上是比较简易可行的。经济可行性在项目上使用的工具都是当下流行开源免费的。所以在开发前期使用的经费会大大降低,开发需求比较低,所以经济上是可行的。运营成本也比较低,尽量用最少的花费去满足用户的需求。总体经济支出有限所以经济可行性没有问题。4系统设计4.1实现功能简介4.1.1总体功能简介本系统分为前台和后台。前台主要是医院首页,浏览医院概况。后台主要分为三大模块,分别是患者模块、医生模块、管理员模块。其中管理员模块包括:医生管理、患者管理、科目管理、病史管理、预约管理、住院信息管理。患者模块包括:查看个人信息、查看挂号信息、挂号、查看病例、查看住院信息。医生模块包括:查看个人信息、诊断、住院、查看病人病史。其总体的设计模块图如下图4.1所示:图4.1系统功能模块图管理员用户模块设计后台管理员能够实现对用户信息进行增删改查操作,管理员模块结构图如下图4.2所示:图4.2管理员用户模块结构图4.1.3登录页面功能设计本系统主要面对的对象有医生、患者和管理员。用户未登录时,无法进行挂号操作。可选择对象登录后在进行操作。系统登录功能流程图如下图4.3所示:图4.3登录功能流程图4.1.4注册页面功能设计该系统能注册患者和医生,患者和医生需要添加用户名、密码、身份证号、姓名、手机号进行注册操作。患者注册功能流程图如下图4.4所示:图4.4患者注册功能流程图数据库设计4.2.1数据库需求分析本系统采用的是MySQL数据库。MySQL是一款功能强大、性能优越、安全可靠的关系型数据库管理系统,广泛应用于各种企业应用和网站系统中。医院门诊预约系统的数据库需求分析需要考虑用户管理、医生管理、科室管理、挂号管理等多个方面的需求,保证系统数据的完整性和准确性,提高系统的性能和可靠性。4.2.2设计数据库E-R图根据系统的功能和数据库分析,设计出本系统所需要的数据库实体分别为患者实体、医生实体、登录实体、管理员实体、病例实体、住院信息实体、科目实体、预约信息实体。下面将介绍几个关键的实体E-R图。医生实体医生实体包括编号、姓名、电话、年龄、性别、身份证号、地址和所在科室。医生实体的E-R图如图4.5所示。患者实体患者实体包括编号、姓名、电话、年龄、性别、身份证号、地址和主治医生编号。患者实体E-R图如图4.6所示。图4.5医生实体E-R图4.6患者实体E-R图挂号信息实体预约信息实体包括编号、患者id、预约科室、预约医生和预约时间等属性。预约信息实体E-R图如图4.7所示。病例信息实体病例信息实体包括编号、患者id、确诊医生id、患者描述、医生建议和患病时间。病例信息实体E-R图如图4.8所示。4.7预约信息实体E-R图4.8病例信息实体E-R图4.2.3数据表的设计根据系统的需求设计和实现的功能,设计了hospital数据库,其中包含八张表,以下是各个表的具体情况:表4-1表示管理员表(admin):该表主要用于存放管理员数据,表中包含了3个字段,即管理员编号、管理员账号和管理员密码。表4-1admin表列名数据类型长度主键非空idint0是是usernamevarchar255否否passwordvarchar255否否表4-2表示的是登陆表(login):该表主要分成医生、患者、管理员三种角色并存放登录账号和密码数据,表中包含了4个字段,即用户编号、用户账号、用户密码、用户角色。表4-2login表列名数据类型长度主键非空idint0是是usernamevarchar255否否passwordvarchar255否否roleint0否否表4-3表示的是医生表(doctor):该表存放医生信息数据,用来实现医生的统一管理。表中包含了8个字段。即医生编号、医生姓名、医生年龄、医生身份证号、医生性别、医生科室、医生家庭地址、医生手机号、医生登录id。表4-3doctor表列名数据类型长度主键非空idint0是是namevarchar255否是ageint0否是cerIdvarchar255否否sexint0否是departmentvarchar255否否addressvarchar255否否loginidint0否否phonevarchar255否否表4-4表示的是科目管理表(option):该表存储检查科目信息。该表共有4个字段。即序号、科目名称、科目地址、价格。表4-4option表列名数据类型长度主键非空idint0是是namevarchar255否是typevarchar255否是pricedecimal10否否表4-5表示的是患者表(patient):该表存放患者信息,用来实现患者的统一管理。该表共有10个字段:患者编号、患者姓名、患者年龄、患者身份证号、患者性别、患者地址、患者手机号、患者登录id、患者挂号id、住院id。表4-5patient表列名数据类型长度主键非空idint0是是namevarchar255否是ageint0否是cerIdvarchar255否否sexint0否是addressvarchar255否否Hospitalizationidint0否否appointmentidint0否否loginidint0否否phonevarchar255否否表4-6表示的是住院信息管理表(hospitalization):该表存放所有患者的住院情况,方便实现统一管理。该表共有8个字段:序号、楼层号、门牌号、床号、患者id、患病、住院时间、出院时间。表4-6hospitalization表列名数据类型长度主键非空idint0是是floorvarchar10否是bedvarchar255否是doorvarchar255否否medicalnamevarchar255否是patientidint0否否intimedate0否否outtimedate0否否表4-7表示的是病例信息表(seek):该表存储所有患者的病例信息。该表共有10个字段。即序号、患者id、患病名称、患者描述、检查科目、住院天数、检查费用、患病时间、确诊医生id、医生建议。表4-7seek表列名数据类型长度主键非空idint0是是patientidint0否是namevarchar255否是timedate0否否doctoridint0否否describesvarchar255否否optionsvarchar255否否daysvarchar255否否pricedecimal10否否suggestvarchar255否否表4-8表示的是预约信息表(apportionment):该表存储所有患者预约信息。该表共有5个字段。即预约编号、患者名称id、预约医生id、预约时间、门诊费。表4-8apportionment表列名数据类型长度主键非空idint0是是patientidint0否是doctoridint0否是timedate0否否expensesdecimal10否否5系统功能实现5.1主界面设计系统主界面主要包括顶部导航栏、科室导航、医院公告、快捷导航、底部版权信息五个模块。其中顶部导航栏又包括网站首页、医院简介、科室介绍、专家介绍、就医导航、医院公告、登陆注册。主界面运行结果如图5.1所示。图5.1主界面运行结果图主界面布局代码如下所示://顶部导航栏<nav><divclass="nav"><divclass="reg_titleclearfix"><ul><liclass="PMenu"><ahref="/hospital"class="PAMenu"id="Nav_AMenu6">网站首页</a></li><liclass="PMenu"><ahref="/hospital/introduction"id="Nav_AMenu0"class="PAMenu"title="医院简介">医院简介</a><liclass="PMenu"><ahref="/hospital/neike"id="Nav_AMenu1"class="PAMenu"title="科室介绍">科室介绍</a></li><liclass="PMenu"><ahref="/hospital/expert"id="Nav_AMenu3"class="PAMenu"title="专家介绍">专家介绍</a></li><liclass="PMenu"><ahref="/hospital/guide"id="Nav_AMenu2"class="PAMenu"title="就医导航">就医导航</a></li><liclass="PMenu"><ahref="/hospital/news"id="Nav_AMenu4"class="PAMenu"title="医院公告">医院公告</a></li><liclass="PMenu"><ahref="/hospital/login"id="Nav_AMenu5"class="PAMenu"title="登录注册">登录注册</a></li></ul><divclass="clear"></div></div></div></nav>医院公告index.html<divclass="title">医院公告</div><ul><li><em>.</em><atitle='采购结果公示(20230301)'href="#">采购结果公示(20230301)</a></li><li><em>.</em><atitle='采购结果公示(20230316)'href="#">采购结果公示(20230316)</a></li><li><em>.</em><atitle='采购结果公示(20230326)'href="#">采购结果公示(20230326)</a></li><li><em>.</em><atitle='采购结果公示(20230401)'href="#">采购结果公示(20230401)</a></li><li><em>.</em><atitle='采购结果公示(20230416)'href="#">采购结果公示(20230416)</a></li></ul>便捷导航index.html<divclass="title"><span>快捷导航</span></div><divclass="list"><ul><li><ahref="/hospital/expert"><spanclass="style01"></span>专家介绍</a></li><liclass="grey"><ahref="/hospital/neike"><spanclass="style02"></span>科室介绍</a></li><liclass="bggreybgff"><ahref="/hospital/notice"><spanclass="style03"></span>就医指南</a></li><liclass="bggrey"><ahref="/hospital/guide"><spanclass="style06"></span>来院路线</a></li><liclass="grey"><ahref="/patient/search"><spanclass="style08"></span>信息查询</a></li></ul></div>5.2登录注册模块5.2.1用户登录功能用户进入主页面后,点击顶部导航栏中登录注册就会进入系统登录页面,在该页面中,医生、患者和管理员可以输入用户名和密码分别进入系统。当用户没有输入账号或密码,系统会通过用户名和密码是否为空来进行判断,并给予页面提示信息。系统登录的运行结果如下图5.2所示:图5.2系统登录结果图用户登录部分核心代码:通过发送POST请求将用户名和密码传送到相应的处理器中,再验证数据库用户表中是否存在该用户,若存在该用户,即可完成登录并进入到相应的页面中,若不存在该用户或用户名和密码输入错误,则提示相应错误信息。@RequestMapping(value="/login",method=RequestMethod.POST)@ResponseBodypublicJSONObjectlogin(@RequestBodyLoginlogin,HttpSessionsession){JSONObjectjson=newJSONObject();json.put("message",loginService.login(login));session.setAttribute("login",login);returnjson;}@OverridepublicStringlogin(Loginlogin){Stringmessage="";Loginlogin2=loginMapper.findByUsername(login.getUsername());if(StringUtils.isEmpty(login.getUsername())||StringUtils.isEmpty(login.getPassword())){message="登录名、密码不能为空。";}elseif(login2!=null){if(!login2.getPassword().equals(login.getPassword())){message="密码错误";}else{login.setId(login2.getId());login.setRole(login2.getRole());message="登录成功"+login2.getRole();}}else{message="用户名不存在";}returnmessage;}5.2.2用户注册功能当用户未注册信息,可以在系统登录页面选择医生或患者注册,点击并跳转到注册页面。医生和患者可以输入信息进行注册。注册成功会返回登录页面。当用户没有输入或输入错误表单信息,系统会通过用户提交的表单信息进行判断,并给予相应提示信息。系统注册的运行结果如下图5.3所示:图5.3注册结果图用户注册部分核心代码:通过发送POST请求将用户名、密码、身份证、姓名、手机号传送到相应的处理器中,即完成注册。@RequestMapping(value="/regest",method=RequestMethod.POST)@ResponseBodypublicJSONObjectregest(@RequestBodyLoginlogin){JSONObjectjson=newJSONObject();json.put("message",loginService.regist(login));returnjson;}@OverridepublicStringregist(Loginlogin){//TODO:注册判断逻辑函数Stringmessage;Patientpatient=patientMapper.findPatientByCertId(login.getCertId());if(StringUtils.isEmpty(login.getUsername())||StringUtils.isEmpty(login.getPassword())||StringUtils.isEmpty(login.getCertId())||StringUtils.isEmpty(login.getName())||StringUtils.isEmpty(login.getPhone())){message="必填项不能为空。";}elseif(patient!=null){if(patient.getLoginid()==null){login.setRole(3);loginMapper.insert(login);patient.setLoginid(loginMapper.findByUsername(login.getUsername()).getId());patientMapper.updateByPrimaryKeySelective(patient);message="注册成功";}else{message="该证件号已被注册";}}elseif(loginMapper.findByUsername(login.getUsername())!=null){message="该用户名已被注册";}elseif(login.getCertId()!=null){patient=newPatient();patient.setCertId(login.getCertId());patient.setName(login.getName());patient.setPhone(login.getPhone());login.setRole(3);loginMapper.insert(login);patient.setLoginid(loginMapper.findByUsername(login.getUsername()).getId());patientMapper.insert(patient);patientMapper.updateByPrimaryKeySelective(patient);message="注册成功";}else{message="注册失败";}returnmessage;}5.3患者操作模块5.3.1患者登录首页患者登录成功后会进入到患者首页,该页面主要包含头部、侧边导航栏和底部,其中侧边导航栏包括个人信息模块、挂号模块、挂号信息模块、病例模块和住院模块。患者首页运行结果如下图5.4所示。图5.4患者首页5.3.2患者个人信息模块查看个人信息患者点击个人信息会进入到个人信息页面。在这个页面可以选择对个人信息进行增删改、挂号、查询、病史、住院以及退出登录。个人信息页运行结果如下图5.5所示:图5.5患者个人信息页部分关键代码如下:@RequestMapping(value="/patient/person")publicStringpatient(HttpSessionsession,HttpServletRequestrequest){Loginlogin=(Login)session.getAttribute("login");Patientpatient=patientService.findPatientByLoginId(login.getId());request.setAttribute("patients",patientService.getPatientById(patient.getId()));return"patient/person";}person.html:<#listpatientsaspatient><tableclass="layui-table"lay-evenlay-skin="nob"style="width:60%;margin:0auto"><thead><tr><tdcolspan="2">基本信息</td></tr></thead><tr><td>姓名:</td><td>${!''}</td></tr>以上代码从session中获取login对象,通过login.getId()查找与之对应的patient对象,将其赋值给patient变量。然后通过patient.getId()查找具有相应id值的Patient对象。该页面使用FreeMarker模板语言<#listpatientsaspatient>来遍历patients列表。修改个人信息患者点击信息下方修改按钮后,页面会弹出一个小界面可以让患者查看并修改自己的个人资料,更新成功后会提交到个人信息页面上。运行结果如下图5.6所示:图5.6修改个人信息页患者修改个人信息部分核心代码如下:onclick="edit('/admin/personinfo/',${patient.id})"functionedit(url,id){layer.open({type:2,title:'详情页面',closeBtn:0,area:['800px','500px'],content:[url+id,'yes'],btn:['取消'],yes:function(index){//事件layer.close(index);}});}上述代码中调用JavaScript函数,调用layer.open()方法打开一个弹出窗口,在弹出窗口中显示指定URL的页面,并在窗口中显示关闭按钮。页面还使用了FreeMarker模板语言<#listpatientsaspatient>,来遍历patients列表。@RequestMapping(value="/admin/person",method=RequestMethod.PUT)@ResponseBodypublicJSONObjectpersonInfo(@RequestBodyPatientpatient){JSONObjectjson=newJSONObject();json.put("message",patientService.updatePerson(patient));returnjson;}@OverridepublicStringupdatePerson(Patientpatient){Loginlogin=loginMapper.selectByPrimaryKey(patient.getLoginid());if(login==null){returnpatientMapper.updateByPrimaryKey(patient)>0?CommonService.upd_message_success2:CommonService.upd_message_error;}else{login.setUsername(patient.getUsername());login.setPassword(patient.getPassword());login.setId(patient.getLoginid());return(patientMapper.updateByPrimaryKey(patient)>0&&loginMapper.updateByPrimaryKey(login)>0)?CommonService.upd_message_success:CommonService.upd_message_error;}}上述代码使用SpringMVC控制器的PUT请求处理方法,更新一个Patient对象,并创建一个JSONObject对象json来存储更新结果。然后通过patient.getLoginid()获取Patient对象对应的Login对象,并将其赋值给login变量。5.3.3患者挂号模块患者点击挂号之后,会出现挂号页面。选择科室、医生、时间后点击预约,即可预约成功。具体页面如下图5.7所示:图5.7患者挂号页页面功能部分关键代码如下:该页面通过发送GET请求获取到所有的科室信息并完成展示。@RequestMapping(value="/patient/appointment")publicStringappointmentInfo(HttpServletRequestrequest,HttpSessionsession){Loginlogin=(Login)session.getAttribute("login");Patientpatient=patientService.findPatientByLoginId(login.getId());request.setAttribute("patientid",patient.getId());request.setAttribute("doctors",doctorService.getAllDoctor());return"patient/appointment";}以上代码是一个SpringMVC控制器的请求处理方法。该方法的作用是查询登录用户对应的患者对象,并将其ID存储到请求对象中,同时获取所有医生对象的信息并存储到请求对象中,最后返回一个字符串表示使用指定的模板文件来展示患者预约页面。5.3.4患者查看挂号信息模块患者点击挂号信息,可以查看到自己所有的挂号记录信息,并能进行删除操作。具体页面如下图5.8所示:图5.8患者查看个人信息页面页面部分关键代码如下:@RequestMapping(value="/patient/appointinfo")publicStringAppointInfo(HttpSessionsession,HttpServletRequestrequest){Loginlogin=(Login)session.getAttribute("login");Patientpatient=patientService.findPatientByLoginId(login.getId());request.setAttribute("appointment",appointmentService.getappointByPatientId(patient.getId()));return"patient/appointinfo";}<#listappointmentasa><trclass="a"><td>${a.patientname}</td><td>${a.doctorname}</td><td>${a.department}</td><td>${(a.time?string("yyyy-MM-dd"))!}</td>以上代码是一个SpringMVC控制器的请求处理方法,该方法的作用是查询登录用户对应的患者对象的所有预约信息,并将其存储到请求对象中,最后返回一个字符串表示使用指定的模板文件来展示患者预约信息页面。该页面还使用FreeMarker模板语言<#listappointmentasa>来遍历appointment列表。删除操作具体代码如下:@RequestMapping(value="/patient/appoint/{id}",method=RequestMethod.DELETE)@ResponseBodypublicJSONObjectdelAppoint(@PathVariableIntegerid){JSONObjectjson=newJSONObject();json.put("message",appointmentService.delAppointment(id));returnjson;}以上代码是一个SpringMVC控制器的请求处理方法,该方法的作用是处理客户端发送的DELETE请求,将指定id的预约信息从数据库中删除,并将删除操作的结果信息返回给客户端。5.3.5患者病例查看模块患者点击病例后,可以查看到自己所有病例信息,包括既往病史、患病时间、就诊医生和医生建议。具体页面如下图5.9所示:图5.9患者病例查看页面页面部分关键代码如下:@RequestMapping(value="/patient/seekhistory")publicStringseekhistory(HttpSessionsession,HttpServletRequestrequest){Loginlogin=(Login)session.getAttribute("login");Patientpatient=patientService.findPatientByLoginId(login.getId());request.setAttribute("seeks",seekService.getseekhistoryByPatientId(patient.getId()));return"patient/seekhistory";}以上代码是一个SpringMVC控制器的请求处理方法,作用是查询登录用户对应的患者对象的所有病历信息,并将其存储到请求对象中,最后返回一个字符串表示使用指定的模板文件来展示患者病历信息页面。该页面使用FreeMarker模板语言<#listseeksasseek>来遍历seek列表。5.3.6患者住院信息查看模块患者点击住院后,可以查看到自己的住院信息。包括楼层、门牌号、床号、患病、住院时间、出院时间。再点击住院历史信息,可以查看到以往的住院信息。具体页面如下图5.10所示:图5.10患者住院信息页面页面及部分关键代码如下:@RequestMapping(value="/patient/hospitalization")publicStringhospitalization(HttpSessionsession,HttpServletRequestrequest){Loginlogin=(Login)session.getAttribute("login");Patientpatient=patientService.findPatientByLoginId(login.getId());request.setAttribute("theLast",hospitalizationService.findTheLastHospitalization(patient.getHospitalizationid()));Hospitalizationhospitalization=newHospitalization();hospitalization.setPatientid(patient.getId());hospitalization.setId(patient.getHospitalizationid());request.setAttribute("others",hospitalizationService.findOtherHospitalization(hospitalization));return"patient/hospitalization";}以上代码一个SpringMVC控制器的请求处理方法,该方法的作用是查询登录用户对应的患者对象的最后一次住院信息和其他住院信息,并将其存储到请求对象中,最后返回一个字符串表示使用指定的模板文件来展示患者住院信息页面。住院历史信息具体代码:<buttonclass="layui-btnlayui-btn-normal"onclick="showHistroy()">住院历史信息</button>functionshowHistroy(){$("#table").show();}以上代码是一个JavaScript函数,调用show()方法将历史住院信息显示出来。退出登录功能在患者点击退出登录后,会回到系统主页面。具体代码如下:@RequestMapping(value="/loginout",method=RequestMethod.GET)publicStringloginout(HttpSessionsession){session.removeAttribute("login");return"/hospital";}5.4管理员操作模块5.4.1管理员登录首页管理员登录成功后会进入到管理员首页,该页面主要包含头部、侧边导航栏和底部,其中侧边导航栏包括医生管理模块、患者管理模块、科目管理模块、预约管理模块、病例管理模块、住院信息管理模块、管理员管理模块。管理员首页运行结果如下图5.11所示。图5.11管理员登录首页5.4.2管理员医生管理模块查看医生信息该模块主要是查看所有医生的个人信息并对他们进行管理。根据医生姓名或证件号来查找相关医生。具体页面如下图5.12所示:图5.12管理员查看医生页面部分关键代码如下:@RequestMapping("/admin/doctorManage")publicStringdoctorManage(HttpServletRequestrequest,@RequestParam(value="name",required=false)Stringname,@RequestParam(value="certId",required=false)StringcertId,@RequestParam(value="phone",required=false)Stringphone){request.setAttribute("name",name);request.setAttribute("certId",certId);request.setAttribute("phone",phone);request.setAttribute("doctors",doctorService.getAllDoctor(name,certId,phone));return"admin/doctorManage";}以上代码是一个SpringMVC控制器的请求处理方法,该方法的作用是根据搜索条件查询医生列表,并将其存储到请求对象中,最后返回一个字符串表示使用指定的模板文件来展示管理员医生管理页面。添加医生信息点击添加按钮会弹出一个添加窗口页面,填写相关信息后点击添加即可添加成功。具体页面如下图5.13所示:图5.13管理员医生添加页面页面部分关键代码如下:@RequestMapping(value="/admin/doctor",method=RequestMethod.POST)@ResponseBodypublicJSONObjectAddDoctor(@RequestBodyDoctordoctor){JSONObjectjson=newJSONObject();json.put("message",doctorService.addDoctor(doctor));returnjson;}@OverridepublicStringaddDoctor(Doctordoctor){Stringmessage="";if(doctorMapper.getDoctorByCertId(doctor.getCertId())!=null||patientMapper.findPatientByCertId(doctor.getCertId())!=null){message="该身份证已被注册或使用";}else{message=doctorMapper.insert(doctor)>0?CommonService.add_message_success:CommonService.add_message_error;}returnmessage;}以上代码通过POST请求方法,接收前端页面提交的医生信息,并将其添加到数据库中,最后将添加结果信息以JSON格式返回给前端页面。首先创建一个医生服务类,该方法的作用是向数据库中添加一位医生,并返回添加结果信息。在添加医生之前,该方法会先查询数据库中是否已经存在该医生的身份证号,以避免重复添加。修改医生信息点击修改按钮后,会弹出一个窗口,该窗口显示医生修改信息,改写完成后点击修改即修改成功并更新医生信息页。具体页面如下图5.10所示:图5.14修改医生信息页面部分关键代码如下:@RequestMapping(value="/admin/doctor",method=RequestMethod.PUT)@ResponseBodypublicJSONObjectupdateDoctor(@RequestBodyDoctordoctor){JSONObjectjson=newJSONObject();json.put("message",doctorService.upDoctor(doctor));returnjson;}以上代码通过发送PUT请求接收前端页面提交的医生信息,并将其更新到数据库中,最后将更新结果信息以JSON格式返回给前端页面。@OverridepublicStringupDoctor(Doctordoctor){Loginlogin=loginMapper.selectByPrimaryKey(doctor.getLoginid());if(login==null){returndoctorMapper.updateByPrimaryKey(doctor)>0?CommonService.upd_message_success2:CommonService.upd_message_error;}else{login.setId(doctor.getLoginid());return(doctorMapper.updateByPrimaryKey(doctor)>0&&loginMapper.updateByPrimaryKey(login)>0)?CommonService.upd_message_success:CommonService.upd_message_error;}}以上代码是一个医生服务类的方法,作用是更新数据库中的一位医生信息,并且如果该医生已注册过登录信息,则同时更新该医生对应的登录信息。在更新医生信息之前,该方法会先查询数据库中是否存在该医生对应的登录信息。5.4.3管理员患者管理模块查看患者信息该模块主要实现管理员对所有患者进行集中管理操作,包括对患者信息进行增加、删除和修改。具体页面如下图5.15所示:图5.15管理员患者查看页面部分关键代码如下:@RequestMapping("/admin/patientManage")publicStringpatientlist(HttpServletRequestrequest,@RequestParam(value="name",required=false)Stringname,@RequestParam(value="certId",required=false)StringcertId){request.setAttribute("name",name);request.setAttribute("certId",certId);request.setAttribute("patients",patientService.getAllPatients(name,certId));return"admin/patientManage";}以上代码是一个SpringMVC控制器的请求处理方法,该方法的作用是根据搜索条件查询患者列表,并将其存储到请求对象中,最后返回一个字符串表示使用指定的模板文件来展示管理员患者管理页面。添加患者页面点击添加按钮会弹出一个添加窗口页面,填写患者相关信息后点击添加即可添加成功。具体页面如下图5.16所示:图5.16添加患者页面部分关键代码如下:@RequestMapping(value="/admin/patient",method=RequestMethod.POST)@ResponseBodypublicJSONObjectdelPatient(@RequestBodyPatientpatient){JSONObjectjson=newJSONObject();json.put("message",patientService.addPatient(patient));returnjson;}@OverridepublicStringaddPatient(Patientpatient){Stringmessage="";if(patientMapper.findPatientByCertId(patient.getCertId())!=null){message=CommonService.add_message_error2;}else{message=patientMapper.insert(patient)>0?CommonService.add_message_success:CommonService.add_message_error;}returnmessage;}以上代码通过POST请求方法,接收前端页面提交的患者信息,并将其添加到数据库中,最后将添加结果信息以JSON格式返回给前端页面。首先创建一个患者服务类,该方法的作用是向数据库中添加一位患者,并返回添加结果信息。在添加患者之前,该方法会先查询数据库中是否已经存在该患者的身份证号,以避免重复添加。修改患者页面点击修改按钮后,会弹出一个窗口,该窗口显示患者修改信息,改写完成后点击修改即修改成功并更新患者信息页。具体页面如下图5.17所示:图5.17患者修改管理页面部分关键代码如下:@RequestMapping(value="/admin/patient",method=RequestMethod.PUT)@ResponseBodypublicJSONObjectpatientInfo(@RequestBodyPatientpatient){JSONObjectjson=newJSONObject();json.put("message",patientService.updatePatient(patient));returnjson;}以上代码通过发送PUT请求接收前端页面提交的患者信息,并将其更新到数据库中,最后将更新结果信息以JSON格式返回给前端页面。@OverridepublicStringupdatePatient(Patientpatient){Loginlogin=loginMapper.selectByPrimaryKey(patient.getLoginid());if(login==null){returnpatientMapper.updateByPrimaryKey(patient)>0?CommonService.upd_message_success2:CommonService.upd_message_error;}else{//login.setUsername(patient.getUsername());//login.setPassword(patient.getPassword());login.setId(patient.getLoginid());return(patientMapper.updateByPrimaryKey(patient)>0&&loginMapper.updateByPrimaryKey(login)>0)?CommonService.upd_message_success:CommonService.upd_message_error;}}以上代码是一个患者服务类的方法,作用是更新数据库中的一位患者信息,并且如果该患者已注册过登录信息,则同时更新该患者对应的登录信息。在更新医生信息之前,该方法会先查询数据库中是否存在该医生对应的登录信息。5.4.4管理员科目管理模块查看科目信息该模块主要实现管理员对医院检查项目进行查看管理操作,包括对科目信息进行增加、删除和修改。具体页面如下图5.18所示:图5.18管理员科目管理页面部分关键代码如下:@RequestMapping("/admin/optionManage")publicStringoptionManage(HttpServletRequestrequest){request.setAttribute("options",optionService.getAll());return"/admin/optionManage";}以上代码是一个SpringMVC控制器的请求处理方法,该方法的作用是根据搜索条件查询科目列表,并将其存储到请求对象中,最后返回一个字符串表示使用指定的模板文件来展示管理员科目管理页面。添加科目点击添加按钮会弹出一个添加窗口页面,填写科目相关信息后点击添加即可添加成功。具体页面如下图5.19所示:图5.19管理员添加科目页面部分关键代码如下:@RequestMapping(value="/admin/option",method=RequestMethod.POST)@ResponseBodypublicJSONObjectaddOption(@RequestBodyOptionoption){JSONObjectjson=newJSONObject();json.put("message",optionService.insert(option));returnjson;}@OverridepublicStringinsert(Optionoption){returnoptionMapper.insert(option)>0?CommonService.add_message_success:CommonService.add_message_error;}以上代码通过POST请求方法,接收前端页面提交的科目信息,并将其添加到数据库中,最后将添加结果信息以JSON格式返回给前端页面。修改科目信息点击修改按钮后,会弹出一个窗口,该窗口显示科目修改信息,改写完成后点击修改即修改成功并更新科目信息页。具体页面如下图5.20所示:图5.20管理员修改科目页面部分关键代码如下:@RequestMapping(value="/admin/option",method=RequestMethod.PUT)@ResponseBodypublicJSONObjectupdateOption(@RequestBodyOptionoption){JSONObjectjson=newJSONObject();json.put("message",optionService.updateBOption(option));returnjson;}@OverridepublicStringupdateBOption(Optionoption){returnoptionMapper.updateById(option)>0?CommonService.upd_message_success:CommonService.upd_message_error;}以上代码通过PUT请求方法接收前端页面提交的选项信息,并将其更新到数据库中,最后将更新结果信息以JSON格式返回给前端页面。选项服务类的updateBOption方法则是实现具体的更新逻辑,其作用是将选项信息更新到数据库中,并返回更新结果信息。5.4.5管理员预约管理模块查看预约信息该模块主要用于对预约患者进行查看管理,该页面可以查看到各个患者的预约情况。并进行增加、修改、删除。也可以根据患者名称查看预约情况。具体页面展示如下图5.21所示:图5.21管理员查看预约信息页面部分关键代码如下:@RequestMapping("/admin/appointmentManage")publicStringappointmentManage(HttpServletRequestrequest,@RequestParam(value="doctorname",required=false)Stringdoctorname,@RequestParam(value="patientname",required=false)Stringpatientname){request.setAttribute("doctorname",doctorname);request.setAttribute("patientname",patientname);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国家区块链产业园区基地建设标准
- 园林绿化工程木栈道防腐木安装施工作业指导书
- 破零散管理立系统思维-管理格局提升总结
- 英语作文测试题目及答案
- 固态电池锂金属负极的界面亲锂层设计结题报告
- 数据安全保障困境与数据安全体系建设-基于数据安全保障体系的实证分析
- 高中物理 第1章 2 运动的合成与分解教案 教科版必修2
- 六年级下册第二单元爱护地球共同责任4地球-我们的家园表格教学设计
- CN119402849A 蓝牙耳机的连接控制方法、装置、设备及存储介质 (深圳禾胜成科技有限公司)
- 中学心育课教学设计:亲密与孤独
- 2025年成都中和中学初一入学数学分班考试真题含答案
- GB/T 47827.1-2026航空器全生命周期xBOM定义与管理第1部分:总则
- 绿色简约风新能源汽车充电桩模板
- 沪科版七年级数学上册《第三章一次方程与方程组》单元测试卷(带答案)
- 湖南省2026年高考招生计划-历史类
- 2026年陕西省中考英语试题(含答案)
- 护理文书书写质量评价标准
- 2026年郑州财税金融职业学院教师招聘考试参考题库及答案解析
- 肝硬化失代偿期患者的护理
- 2026年植物学复习通关试题库带答案详解(完整版)
- k近邻算法课件
评论
0/150
提交评论