病人档案信息管理查询系统_第1页
病人档案信息管理查询系统_第2页
病人档案信息管理查询系统_第3页
病人档案信息管理查询系统_第4页
病人档案信息管理查询系统_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

绪论1.1论文的背景与意义随着互联网、物联网、智慧网络的发展,采用传统的纸制类型,用手写记录病人相关的病历信息,已经不能满足现代医院,对病历信息实现自动化、科学规范化、归一化的要求。因此我着眼于现实研发了这个操作简单、功能完善的病人档案信息管理查询系统。本论文着重介绍系统涉及的理论基础知识、需求设计、系统设计、系统实现以及功能性测试。病人档案信息管理查询系统针对医院纸质资料实现计算机网络进行收集和整理的相关需求进行开发和编制的。病人档案信息整理是指将病人档案信息,处于杂乱无章纸质或者照片类型的文字资料需要进行归一化、规范化的病人档案(住院、出院记录、诊疗记录、用药规范、所属科室、病人信息、病历记录、体检记录、照片、录音、录像、计算机盘片以及本人相关的资料等),进行基本的分类、组合、排列、编号、编制目录、建立全宗等,组成有序体系的过程。1.2论文的可行性分析回顾医院发展历史,病人档案信息的收集和整理,是医生和病人关键信息的桥梁,历史发展过程中,人们将病人档案信息以纸质文档进行留存记录,其缺点是,人工整理繁琐,且不易长时间保留、查询起来费时且不准确。所以医院迫切需要根据当前社会发展,利用计算机的优良特效,进行病人档案信息留存建设,为医院各个部门开设查询、新增病人档案的相关服务,并满足病人及时了解自身健康状况的目地。本论文围绕这一特性,进行了病人档案信息管理查询系统的建设和开发,主要介绍了医院相关信息系统的调研和目前存在的切实问题,同时本文章还描述了软件开发过程中的标准流程,系统建设的目的,使用范围,其次介绍了本论文的开发环境、技术选型、功能设计、流程设计、开发设计、系统开发及最终测试、上线、用户使用手册,最后完成用户使用并对医院信息系统的发展有一个预想和建议。1.3论文的研究内容伴随着互联网络时代的到来,现代病人信息管理工作已经演变为复杂的系统,病人档案管理查询系统的开发又分病人信息录入和病人信息展示两部分,病人信息录入病人基本信息、所属科室、所属医生等,病人信息展示提供基本信息、以往病人信息查询构成。整个病人档案信息管理查询系统应运而生。病人档案信息管理查询系统的最终目的是为医生、护士、病人提供资料信息支持,病人档案信息管理查询系统的结构即根据这一原则而设置。本论文设计运用Java、HTML、Vue技术,在Vue前端框架中,用HTML做数据展现,配合css做样式美化,vue前端应用使用nginx作为服务器,数据存储使用MySQL数据库,java后端应用使用Tomcat作为服务器,作为实现病人档案信息管理查询系统的桥梁。2系统涉及的理论基础知识2.1Java技术Java技术由Java虚拟机JVM和Java应用编程接口API构成。总的分类为:Java编程语言、java类文件格式、java虚拟机、java应用程序接口,当编辑与运行一个java源程序时,牵扯到java底层原理,java编辑器通过调用java类的方法来,生成class源文件中,然后通过提前配置好的环境变量,用来支持运行java虚拟机来运行class文件,执行编译产生的二进制字节码,调用class文件中实现的方法来满足系统程序的调用。Java语言特点:1.具有跨平台性:java编译生成的class文件可以运行在不同操作系统中,不同服务器中,不同数据库中。2.具有面向对象特点:贴近现实生活,使用计算机模拟现实世界,万物皆对象。3.具有安全性特点:编译生成的class文件,自身具有很高的安全性。4.具有多线程特点:java内置多线程调用的相关接口,可以将其他语言实现不了的多线程进行完美的解决、使其可以更加高效的处理java的相关事务等。5.具有简单易用特点:相对与C++、VB、net代码量减少1/3并且结构清晰、接口众多分类明确。2.2Vue技术Vue.js是一套功能完善的渐进式前端框架,用来构建前端界面的。与其他重量级框架不同的是,Vue技术采用兼容其他框架及自身简单的设计原则。Vue的核心库只关注前端视图表现层,并且非常容易学习,非常容易与其它库兼容。另外一方面,Vue自身完全有能力来驱动采用vue单文件组件和Vue生态系统库的支持用来开发出一个复杂单页应用的能力。Vue.js包括JavaScript类库,它之所以非常火,是因为有众多突出的特点,其中主要的特点有以下几个。1)轻量级的框架Vue.js能够自动追踪依赖的模板表达式和计算属性,具有操作简单、灵活的接口API,使得开发人员更加容易理解,能够快速上手开发。2)双向数据绑定双向数据绑定就是所谓的响应式数据绑定,这里的响应式不是@media,媒体查询中的响应式布局,而是指vue.js会自动对页面中某些数据的变化做出同步的响应。3)指令Vue.js与前端页面进行交互,主要通过内置类库指令来完成的,vue指令的作用是当其js表达式的值改变时,能够及时的将某些行为应用到前端系统页面上。4)组件化组件化是Vue.js最强大的支持功能。组件化可以扩展HTML元素样式,封装可复用的工具代码。5)客户端路由前端客户端路由是用于前端页面设定访问跳转路径页面,并将路径地址和页面组件映射起来,相对于传统的前端页面是通过超链接的方式来实现页面的切换和跳转的。2.3Mysql技术Mysql是一个开源的关系型数据库,第一个提供一些客户端和相关连接服务,包含本地的websock通信,主要完成一些类似于连接处理、安全认证及其他相关的安全方案,在该层上引用了线程池,为接入用户提供多线程多接口访问。第二个核心服务功能。是sql接口,sql的语句分析、部分内置函数的执行。第三个对与接入用户提交的数据,进行加锁事物的提交、事物的管理。第四个,主要是将数据存储在运行不同的应用环境文件系统之上,使得数据可以永久化保存,不受其他条件的影响。MySQL是一个优秀的关系型数据库管理系统,并且是开源数据库,因此被更多开发人员和开发公司使用。支持多线程,可以充分利用电脑的CPU资源、高效SQL查询算法,及时有效地查询速度,并且提供多种开发语言数据库连接途径、自身提供用于安全管理、安全检查、数据sql优化数据库操作的界面化管理工具等。2.4Tomcat技术tomcat服务器是一个免费开放源代码的应用服务器,相对于其他服务器属于轻量级应用,现在被普遍使用是程序开发和系统调试、系统上线运行的首选,具有以下特点:1.具有可扩展性和安全性特点。假如系统使用的用户较多,可以使用tomcat部署为集群方式,安全性方面支持http和https两种方式。2.具有易扩展特点。由于部署的时候是可以支持分开部署,部署到不同linux服务上,通过自身提供的方法,支持扩展。3.具有自由性特点。后端服务器部署方式的自由选择,因此在外界地址访问不到,网络上的黑客只能访问前端的web服务器地址,不能直接访问后端的应用服务器,这就相对于提高安全性、减少维护成本。2.5Nginx技术Nginx是一款相对于其他服务器较轻量级的服务器/反向代理服务器及代理服务器,底层语言使用C++,更好的扩展性。其特点是占有服务器内存较少,多并发能力较高,事实上nginx应用服务器的并发能力在相同类型的网页服务器中表现较好,具有以下特点:Nginx是一个安装非常的简单、系统配置文件非常简洁。Nginx应用服务器启动特别容易,并且可以做到7*24不间断运行,或者运行数个月也不需要重新启动、日志收集完善,支持多机部署、单机部署。3系统需求设计3.1需求描述病人档案信息管理查询管理系统中,需要提供用户注册,按照不同用户查询不同功能模块,系统管理员,可以进行科室机构新增、机构信息修改,主治医生用户可以进行病人信息录入;护士用户可以查询病人信息,已注册的用户可以随时修改用户密码,系统用户可以按照不同科室进行病人浏览信息的浏览,并提供相应用户菜单权限查询功能,系统机构可以分别展示医院所属机构关系;病人信息的录入需要具体到病人的病情分类、原因、基本信息的完善和修改,支持查询病人历史数据的功能;系统后期需要添加功能或者数据清理时需要有相关接口或者页面进行配合、定期进行数据备份等。3.2系统总体需求分析本系统功能主要实现对病人信息进行收集、整理管理,本着这一原则只有合理的将病人信息、医生用户、护士用户和系统管理员进行管理,才能从根本上提升病人档案信息管理查询系统的实际业务水平,让医生、护士人员能够更加高效、简单的工作。病人档案信息查询系统管理的登录角色有系统管理和医生用户、护士用户。病人用户是系统的业务数据,医生用户可以进行病人信息新增个人信息,查询病人信息等,护士用户只能查询病人信息,系统管理员拥有所有权限。最终系统达到以下要求:(1)能够将新来的病人的信息录入系统,并对系统中的病人信息可以快速查找,对于已经逝世的病人可以合理的删除等相关操作;(2)能够在病人档案信息管理查询系统中查询病人信息基本信息、以往病历信息的查询、所属科室既往病历类型的查询;(3)系统管理员或者科室负责人能够轻松的对科室信息的新增和维护的功能;(4)完全正确的能够提供病人病历信息的归档和备份的功能。3.3功能性分析3.3.1用户管理医生用户、护士用户、系统管理员基本信息查询、医生、护士、系统管理员用户基本信息新增操作、用户相关基本信息修改操作,医生、护士用户查询相关所属科室信息、不同用户所属科室不同等。3.3.2科室管理提供系统管理员进行科室信息的新增、修改、查询,普通用户不能进行科室信息并更。3.3.3菜单管理不同用户查询不同菜单功能,系统管理员可以进行菜单新增或者修改等,例如护士用户只能查询病人信息菜单,医生用户可以新增病人基础信息、修改病人基础信息,查询病人基础信息、病历分类用药信息等。3.3.4病人信息管理提供病人基本信息查询、医生用户新增病人信息、修改病人信息,新增时需要完善病人相关基本信息,如:联系方式、所有病情分类、病情原因及备注信息等,护士用户查询病人当前数据和历史数据的功能。3.3.5医生护士信息管理提供医生用户基本信息查询、医生用户新增病、修改医生信息,护士用户信息查询,需要提供护士用户基本信息新增,两种类型的用户需要能添加以下信息:用户姓名、邮箱、联系方式、所有科室分类等功能。3.3.6用药信息管理提供医生用户可以给病人开具相关药物信息,包括:用药时间、用药剂量、药品的次数,及药物的过敏源等。3.3.7病历管理病人的病历数据,需要进行归档和分类整理,医生用户需要新增病人信息和修改病人的用药及病情信息,护士用户只能查看病人的基本信息和病情信息等。3.4非功能性需求分析病人档案信息管理查询系统的设计对象为医院,病人档案信息管理查询系统的使用频率及高,因此对系统性能的要求特别高,所以在系统的设计和系统的实现中要保证其安全、稳定、保密、清晰,主要的要求有以下几点:系统性能安全度要求极高、所需功能全面完善。实际运用性方面,操作简单,前端界面美观,数据安全性数据存储安全、可靠、保密性好;扩展性及后续维护方面用最大限度提高易用性和易维护性。1.系统性能鉴于医院病人数较多,使用系统的医生用户、护士用户、科室繁多复杂量大,系统需要支持高并发访问、多请求,系统需要及时高效的完成普通医生用户、护士用户请求的响应。2.可靠性系统需要可以实现全天24小时不间断稳定运行,并且定期进行数据备份。将数据刻录到其他地方,进行永久保存。3.可维护性系统的使用过程中,对应医院的运维负责人员,可以很简单的进行系统维护等相关操作。4、可用性系统首先保证正常运行、其次才能提供界面展示和相关信息的录入等操作。4系统设计4.1系统总体架构该系统采用主流的开发模型,多级模型,前端分开模型、后端分开模型、数据库分开模型。实现系统开发的解耦合,用户访问网络路由,路由负责转发前端服务器,前端服务器,收到相关指令,调用后端特定接口服务,后端根据响应报文结构,调用数据库,查询等相关操作,由数据库服务实时返回数据格式,由后端统一数据格式类型,响应给前端服务器,前端服务器,进行个性化展示。最后告知用户相关信息。图4-1图示系统总体架构4.2系统功能模块病人档案信息查询系统具有平台自由度,数据所有权,应用程序权限和高性能。根据平台业务的特征,系统需要能够横向和纵向扩展。这就要求将系统的方法引入平台,并且每个级别的要求必须清晰明确。该系统功能主要:分为用户管理模块、科室机构管理模块、病人管理模块、病类管理模块。图4-2-1系统模块4.2.1用户管理模块主要功能:分为系统管理员用户及医生用户、护士用户新增、用户基本信息变更,系统提供安全登录、用户相关密码校验、实现浏览/修改个人资料、修改密码及创建医生用户、修改所属科室、用户密码等。此系统设计简要为主,达到满足实际使用。因此,将医生与管理者权限区分,管理者登陆,可看到医院科室及病类详情,医生用户不能看到医院其他科室详情。管理者用户,可以对用户进行新增、修改等操作、普通用户可以使用自己的用户名、密码进行登录,修改自己的部分信息。4.2.2科室管理模块主要功能:主要是系统管理员,可以进行科室机构新增和科室机构修改。科室机构管理展示医院各大部门及部门间关联关系。该功能是根据医院实际科室、部门制定后,根据科室、病类来查询病人档案信息。目的:更加清晰的管理医院科室、方便医院医生用户维护病人所属科室等。4.2.3菜单管理模块主要功能:对系统使用的人员进行菜单划分,区分不同科室,不同医生查询不同的菜单,方便用户进行查询。医生用户查询和新增病人信息,护士查询医生用户新增的病人信息等。4.2.4病人信息管理模块主要功能:病人信息的新增、删除、修改、查询功能该功能主要是医生用户新增病人信息、删除病人无关信息、修改病人入院档案以及日期查询,为病人提供准确的病历数据,护士用户只能查询病人信息。其中,医生用户进行病人信息收集及录入系统,护士查看病人相关信息;医生用户对新来问诊的病人信息,进行新增、修改;护士用户对存在系统中的病人进行查询。告知病人相关病历信息等;还包括,病人财务管理,医生开具药品,并告知护士附加信息;4.2.5医生护士信息管理模块主要功能:医生用户、护士用户信息的新增、删除、修改、查询功能。该功能主要是提供不同用户岗位新增查询,区分不同人员身份,医生用户、护士用户所属科室,区分不同职业分类,用户状态是否可用,用户新增时提供手机号、联系方式等必输条件,记录用户的创建时间和更新时间等。4.2.6用药信息管理模块主要功能:查询病人的用药信息、新增用药信息、修改用药信息等该功能主要是医生用户对病人的用药信息,包括每天用药剂量,用药时间、用药次数等,为病人提供准确的用药信息,护士用户只能查询病人信息,告知病人用药详细。4.2.7病历管理模块主要功能:按照不同类型、进行病历分类、筛选等功能。此功能还可以由医生用户、管理员添加病类信息,及时维护病类种类等细节信息,此功能模块区分医生用户和系统用户,包括护士普通用户,医生用户可以进行病历新增、修改等操作。4.3流程设计图图4-2流程设计图示4.3.1流程描述病人通过线上网站或者线下医院,咨询医生了解自身病情、病历、用药情况等,由医生用户登录到病人档案系统,该系统会根据用户输入的用户名和密码校验当前输入的用户是否合规,如果用户不存在,需要向所属科室领导负责人处,新增医生用户,创建成功的医生用户,查询病人相关病情分为两种情况:第一种情况:病人如果是第一次来咨询,会触发病人信息录入即病人新增流程,由医生用户输入病人的基本信息、病人所属科室、所属医生、所属护士、用药信息、缴费信息等,即可完成病人基本信息的录入,方便后续查询病人档案信息,新数据存档。第二种情况:该医生登录系统后发现,该病人之前已经记录过,输入病人关键信息,就会查询到病人的相关病历信息,包括:用药禁忌、入院记录、出院记录、病类、平时生活注意事项等关键信息,从而使病人及时了解自己的健康状况,方便医生更好的掌握病人的病历记录,从而发挥病人档案系统的优点。4.4结构设计er图设计整体E-R模型,如图4-4所示。图4-4整体ER图示4.5数据库设计4.5.1用户信息表序号字段类型允许为空注释1idint(20)NO编号id主键key自增2namevarchar(50)YES用户名3nick_namevarchar(50)YES昵称4avatarvarchar(150)YES头像5passwordvarchar(100)YES密码6emailvarchar(100)YES邮箱7mobileint(11)YES手机8statusint(2)YES状态0禁用1正常9dept_idint(20)YES科室id10create_byvarchar(100)YES创建人11create_timedateYES创建时间12last_update_byvarchar(100)YES更新人13last_update_timedateYES更新时间4.5.2科室信息表序号字段类型允许为空注释1idint(20)NO科室id主键key自增2namevarchar(50)YES科室名称3parent_idvarchar(30)YES上级科室ID,一级科室为04create_byvarchar(100)YES创建人5create_timedateYES创建时间6last_update_byvarchar(100)YES更新人7last_update_timedateYES更新时间8del_flagint(2)YES是否删除-1:已删除0:正常4.5.3菜单表序号字段类型允许为空注释1idint(20)YES菜单id主键key自增2namevarchar(100)YES菜单名称3parent_idint(20)YES父菜单ID,一级菜单为04urlvarchar(100)YES菜单URL,类型:1.普通页面2.嵌套完整外部页面3.嵌套服务器页面)5permsvarchar(100)YES授权(多个用逗号分隔,如:sys:user:add,sys:user:edit)6typevarchar(100)YES类型0:目录1:菜单2:按钮7iconvarchar(100)YES菜单图标8create_byvarchar(100)YES创建人9create_timedateYES创建时间10last_update_byvarchar(100)YES更新人11last_update_timedateYES更新时间12del_flagint(2)YES菜单状态-1:已删除0:正常4.5.4病人信息表序号字段类型允许为空注释1user_idint(20)NO病人id主键key自增2user_namevarchar(100)NO病人姓名3sexint(2)NO性别0男1女4ageint(10)NO年龄5birth_datedateYES出生年月6addressvarchar(100)YES住址7telvarchar(50)NO联系方式8phonevarchar(50)YES手机号9emailvarchar(50)YES邮箱10dep_idint(20)NO科室id12lllness_typeint(2)NO病情分类0骨科1皮肤科2神经科12lllness_namevarchar(100)YES病情名称13lnspect_datedateYES检查日期14lllness_tempvarchar(200)YES病情备注15create_byvarchar(100)NO创建人16create_timedateNO创建时间17last_update_byvarchar(100)YES更新人18last_update_timedateYES更新时间19patient_flagint(2)YES病人状态0正常1异常2住院4.5.5医生护士信息表序号字段类型允许为空注释1idint(20)NO医生/护士id主键key自增2namevarchar(100)NO姓名3sexint(2)NO性别:0男,1女4phoneint(20)YES手机号5emailvarchar(50)YES邮箱6dep_idint(20)NO科室id7occupation_typeint(2)NO职业分类:1医生,2护士8department_typevarchar(100)YES科室分类:1神经科,2内科,3外科,4新生儿科9create_byvarchar(100)NO创建人10create_timedateNO创建时间11last_update_byvarchar(100)YES更新人12last_update_timedateYES更新时间13personnel_flagint(2)YES人员状态:1正常,2离职,3退休4.5.6用药信息表序号字段类型允许为空注释1idint(20)NO用药id主键key自增2namevarchar(100)NO药品名称3drugs_typeint(2)NO药品种类:1处方药,2非处方药4create_datedateNO生产日期5manufacturervarchar(100)YES生产厂商6user_idint(20)NO病人id7personnel_idint(20)YES医生id8invalid_datedateNO药品失效日期4.5.7病人财务信息表序号字段类型允许为空注释1idint(20)NO财务id主键key自增2moneydecimal(8,2)NO金额3create_datedateNO缴费日期4user_idint(20)NO病人id5系统实现5.1系统登录用户通过电脑浏览器,在地址栏输入访问地址,http://ip:端口号+项目名,首先需要访问系统登录入口,输入主要参数用户名、用户密码、验证码等,如图所示:图5-1-1系统登录图示系统基本菜单展示图5-1-2基础菜单功能图示主程序MangoApplication启动,接口访问到SysLoginController系统管理模块下,进行相关鉴权校验,首先判断用户名是否存储在数据库中,密码格式和实际存储的是否一致,验证码是否和前端传递到后台的是否一致,如果一致,则成功登录到,系统管理模块下。否则,重新输入用户名,当然,需要前端页面及时告知用户错误部分。@GetMapping("captcha.jpg") publicvoidcaptcha(HttpServletResponseresponse,HttpServletRequestrequest)throwsException{ response.setHeader("Cache-Control","no-store,no-cache"); response.setContentType("image/jpeg"); //生成文字验证码 Stringtext=producer.createText(); //生成图片验证码 BufferedImageimage=producer.createImage(text); //保存到验证码到session request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY,text); ServletOutputStreamout=response.getOutputStream(); ImageIO.write(image,"jpg",out); IOUtils.closeQuietly(out); } /** *登录接口 */ @PostMapping(value="/login")publicHttpResultlogin(@RequestBodyLoginBeanloginBean,HttpServletRequestrequest)throwsIOException{ Stringusername=loginBean.getAccount(); Stringpassword=loginBean.getPassword(); Stringcaptcha=loginBean.getCaptcha(); //从session中获取之前保存的验证码跟前台传来的验证码进行匹配 Objectkaptcha=request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY); if(kaptcha==null){ returnHttpResult.error("验证码已失效"); } if(!captcha.equals(kaptcha)){ returnHttpResult.error("验证码不正确"); } //用户信息 SysUseruser=sysUserService.findByName(username); //账号不存在、密码错误 if(user==null){ returnHttpResult.error("账号不存在"); } if(!PasswordUtils.matches(user.getSalt(),password,user.getPassword())){ returnHttpResult.error("密码不正确"); } //账号锁定 if(user.getStatus()==0){ returnHttpResult.error("账号已被锁定,请联系管理员"); } //系统登录认证 JwtAuthenticatioTokentoken=SecurityUtils.login(request,username,password,authenticationManager); returnHttpResult.ok(token);}5.2用户管理用户管理,主要包括病人信息管理,对病人信息查询、添加、修改、可以具体到对某个病人进行查询,按照不同条件查询,修改病人的基础病人信息,(备注:基本信息不允许修改,只能修改病历相关信息,维护基本信息等),可以根据不同科室进行病人信息的新增,满足不同的情景需求。 图5-2-1用户管理查询图示图5-2-2用户修改图示主程序MangoApplication启动,接口访问到SysUserController用户管理模块下,进行相关鉴权校验,首先判断用户是否存储在数据库中,如果存在,则成功查询到用户基本信息,否则,查询列表为空,当然,需要前端页面及时告知用户错误部分。使用用户可以自己对病人进行添加,调用“添加”按钮,触发添加动作,保存数据库,也可以对病人信息进行修改等相关操作。@GetMapping(value="/findByName") publicHttpResultfindByName(@RequestParamStringname){ System.out.println(HttpResult.ok(sysUserService.findByName(name))); returnHttpResult.ok(sysUserService.findByName(name)); }@PostMapping(value="/save") publicHttpResultsave(@RequestBodySysUserrecord){ SysUseruser=sysUserService.findById(record.getId()); if(user!=null){ if(SysConstants.ADMIN.equalsIgnoreCase(user.getName())){ returnHttpResult.error("超级管理员不允许修改!"); } } if(record.getPassword()!=null){ Stringsalt=PasswordUtils.getSalt(); if(user==null){ //新增用户 if(sysUserService.findByName(record.getName())!=null){ returnHttpResult.error("用户名已存在!"); } Stringpassword=PasswordUtils.encode(record.getPassword(),salt); record.setSalt(salt); record.setPassword(password); }else{ //修改用户,且修改了密码 if(!record.getPassword().equals(user.getPassword())){Stringpassword=PasswordUtils.encode(record.getPassword(),salt); record.setSalt(salt); record.setPassword(password); } } } System.out.println(HttpResult.ok(sysUserService.save(record))); returnHttpResult.ok(sysUserService.save(record)); }5.3机构管理机构管理,医生或者医院主任用户登录到,病人档案信息查询系统,可以根据不同机构名称进行查询。医院各个科室负责人,可以进行机构信息的添加和修改。图5-3-1机构查询图示图5-3-2机构新增图示主程序MangoApplication启动,接口访问到SysDeptController机构管理模块下,进行相关鉴权校验,首先判断机构信息是否存储在数据库中,如果存在,则成功返回给前端接口,告知机构及机构上下级信息存在,否则,查询列表为空,当然,需要前端页面及时告知用户错误部分。使用用户可以自己对机构进行添加,调用“添加”按钮,触发添加动作,保存数据库,也可以对机构信息进行修改等相关操作。(备注:必须是科室负责人,医院领导负责人才有权限修改和新增机构信息)5.4菜单管理系统管理员用户,成功登录到病人档案信息管理查询系统中,才可以进行菜单名称的添加和修改,普通医生或者值班医生、护士,只能查询到相关的科室的相关菜单及功能按钮。图5-4-1菜单查询图示图5-4-2菜单新增图示图5-4-3菜单修改图示主程序MangoApplication启动,接口访问到SysMenuController菜单管理模块下,进行相关鉴权校验,首先判断菜单信息是否存储在数据库中,如果存在,则成功返回给前端接口,告知使用用户信息存在,否则,查询列表为空,当然,需要前端页面及时告知用户菜单错误部分。其次使用用户可以相关菜单进行添加,调用“添加”按钮,触发添加动作,保存数据库,也可以对菜单信息进行修改等相关操作。(备注:必须是科室负责人,医院领导负责人才有权限修改和新增菜单信息)5.5病人信息管理医生用户,成功登录到病人档案信息管理查询系统中,对病人信息添加和修改,普通医生或者非主治医生、护士,只能查询到病人相关病历信息,不能进行修改和删除操作。图5-5-1病人信息新增图示图5-5-2病人信息查询图示主程序MangoApplication启动,接口访问到SysUserController病人信息管理模块下,进行相关鉴权校验,首先判断病人信息是否存储在数据库中,如果存在,则成功返回给前端接口,告知使用用户信息存在,否则,查询列表为空,当然,需要前端页面及时告知医生用户错误部分。医生用户,调用“添加”按钮,触发添加动作,保存数据库,也可以对病人信息进行修改等相关操作。(备注:必须是主治医生负责人,才有权限修改和新增病人信息)@Override publicintsave(SysUserrecord){ Longid=null; if(record.getId()==null||record.getId()==0){ //新增用户 sysUserMapper.insertSelective(record); id=record.getId(); }else{ //更新用户信息 sysUserMapper.updateByPrimaryKeySelective(record); } //更新用户角色 if(id!=null&&id==0){ return1; } if(id!=null){ for(SysUserRolesysUserRole:record.getUserRoles()){ sysUserRole.setUserId(id); } }else{ sysUserRoleMapper.deleteByUserId(record.getId()); } for(SysUserRolesysUserRole:record.getUserRoles()){ sysUserRoleMapper.insertSelective(sysUserRole); } return1; }5.6病历管理医生用户,成功登录到病人档案信息管理查询系统中,对病人信息添加、护士用户单独进行区分,主治用户用户有权限进行修改病历,当病人病情好转或者异常时,主治医生用户,有权限进行修改操作;护士用户,可以根据病人姓名或者编号进行查询等操作;图5-6-1病人信息录入主程序MangoApplication启动,接口访问到SysUserController病历管理模块下,进行相关鉴权校验,首先判断病人信息是否存储在数据库中,如果存在,则成功返回给前端接口,告知使用用户信息存在,否则查询列表为空,医生用户调用“添加”按钮,触发添加动作,保存数据库。5.7系统运行本章节介绍如何本地安装运行病人档案信息管理查询系统,建议运维部署人员结合源码和文档内容逐步安装。因为是前后端分离项目,所以,系统安装指南分为前端页面部署和后端服务部署指南。5.7.1前端部署指南该系统前端使用Vue框架和Element饿了么前端框架搭建,基于CNPM、YAM环境开发和实现,所以在部署环境之前,需要先安装Node.JS,开发工具为WebStorm,当然用户也可以根据自己的喜好选择其他开发工具,比如说VisualStudioCode,具体开发环境的搭建请自行参考或者自行百度,这里着重说明以下现有源码的安装和运行。编译源码在项目根目录下打开命令行,输入cnpminstall命令,下载和安装项目依赖包。项目打包使用webStrom,单击执行打包命令,进行前端项目集体打包,打包完成之后会生成单独运行的前端目录文件。将生成的目录文件直接放置到如Tomcat、nginx之类的WEB服务器,启动服务即可访问。修改配置如果想自定义端口(默认是8080),可以修改config/index.js下的port属性。后台接口和备份服务器地址配置在src/utils/global.js,如有修改请做相应变更。启动系统执行npmrundev命令,启动项目,启动之后通过http://localhost:8080访问。5.7.2后端部署指南导入工程使用Eclipse导入Maven项目,在此之前请确认已安装JDK和Maven工具。编译代码找到mango-pom工程的pom.xml,执行mavencleaninstall命令编译一键打包。导入数据库新建mango数据库,导入kitty-admin工程doc/mango.sql脚本,导入初始化数据库。修改mango下application.yml中的数据库连接和账号密码为自己的数据库配置。启动系统将后端项目打包成war包,放到tomcat的webapp目录下,然后进入/apache-tomcat-8.5.50/bin目录下,启动startup.bat(Windows系统启动),linux系统启动(startup.sh)6系统测试6.1测试内容此次测试内容分为:用户登录用户新增病人信息录入被测系统病人档案信息管理查询系统开发人员朱文婷测试时间2020年1月12日测试数量20测试人基础测试部缺陷数量0测试内容一、用户登录:1.1、用户名是否校验:是1.2、用户密码是否校验:是验证码是否校验:是二、用户新增:2.1、用户名是否必输:是

2.2、邮箱格式是否校验:是2.3、用户所属机构是否必选:是2.4、用户所属角色是否必选:是用户手机号输入数字校验:是三、病人信息录入3.1、病人姓名是否必输:是

3.2、性别是否单选:是3.3、年龄是否数字:是3.4、出生日期是否日期:是3.5、住址是否必输:是3.6、联系方式是否必输:是3.7、手机号是否是数字:是3.8、邮箱是否是邮箱格式:是3.9、病情分类是否是下拉列表选择3.10、病情名称是否必输:是3.11、病情描述是否必输:是3.12、检查日期是否是日期格式:是3.13、创建时间是否是日期格式:是测试步骤用户登录测试步骤访问系统地址,输入注册好的用户名、用户密码和验证码,用户点击“登录”按钮,系统自动验证用户名和密码、验证码是否正确,如果都正确跳转系统首页,情况一:用户名不正确时:提示“用户名不存在,请您重新检查”,情况二,密码不正确时:提示“密码不正确,请您重新输入”情况三:验证码不正确时:提示“验证码不正确”。用户新增测试步骤进入用户新增的页面,输入用户名、邮箱格式、用户所属机构、用户手机号等,点击保存,如果内容格式都正确则提示用户“添加成功”,格式不正确会提示“添加失败”。病人信息录入测试步骤进入病人信息新增的页面,输入病人姓名、性别、年龄、出生日期、住址、联系方式、手机号、邮箱、病情分类、病情名称、病情描述等,点击保存,如果内容格式都正确则提示用户“病人信息添加成功”,格式不正确会提示“病人信息添加失败”。测试结论1.功能完善2.易于操作3.检验完善4.页面清晰个性测试负责(签字)基础测试部6.2测试工具Postman、第三方测试工具、谷歌浏览器等结论病人档案信息管理查询系统,使用当下流行框架VUE,前后端项目分离,系统优缺点优点:1、实现解耦合、代码拆分;2、易用性、新增明确;3、易扩展、新增其他菜单、不影响当前框架;4、易维护。结构简单、分开部署;缺点:1、菜单较少;2、暂不支持手机端登录;后期改动点:1、实现手机登录;2、兼容微信或者支付宝小程序;最终实现效果:将先前存储在纸质的病人档案,转为计算机存储,符合当下主流、为医生提供较好的人机交互、更好的管理平台。使得病人及时了解病历详情。对与这次的系统设计带给了我很大的体验,即检验了我所学习的知识内容,也让我及时认识到自己的不足之处,非常感谢老师对我的教诲,未来得我肯定会更加努力。参考文献[1]徐丽健.著,SpringBoot+SpringCloud+Vue+Element项目实战:手把手教你开发权限管理系统,清华大学出版社,2019-06-01.[2]杨恩雄.著,SpringBoot2+Thymeleaf企业应用实战[M].电子工业出版社,2018-9[3]\o"孙卫琴"孙卫琴.著,Tomcat与JavaWeb开发技术详解[M].电子工业出版社,2004-4-1.[4]李刚.著,疯狂Java讲义[M].电子工业出版社,2008-09.[5]周志明著,深入理解Java虚拟机[M].机械工业出版社,2011-6-27.[6](美国)布里泰恩著,Tomcat权威指南[M].中国电力出版社,2009-09[7]陶辉.著.深入理解Nginx[M].机械工业出版社,2013-4-15.[8](美)弗拉纳根.著,李强译,JavaScript权威指南,2007-08第1版[9]曾探.著,JavaScript设计模式与开发实践,人民邮电出版社,2015-05[10]刘博文.著,深入浅出Vue·js,人民邮电出版社,2020-04-1.[11]陆凌牛.著,Node・js权威指南,机械工业出版社,2014-04-16.[12]刘汉伟.著,Vue.js从入门到项目实战,清华大学出版社,2019-04-01.附录提交部分代码-用户信息User.vue<template>

<divclass="container">

<!--工具栏-->

<divclass="toolbar"style="float:left;padding-top:10px;padding-left:15px;">

<el-form:inline="true":model="filters":size="size">

<el-form-item>

<el-inputv-model=""placeholder="用户名"></el-input>

</el-form-item>

<el-form-item>

<kt-buttonicon="fafa-search":label="$t('action.search')"perms="sys:role:view"type="primary"@click="findPage(null)"/>

</el-form-item>

<el-form-item>

<kt-buttonicon="fafa-plus":label="$t('action.add')"perms="sys:user:add2"type="primary"@click="handleAdd"/>

</el-form-item>

</el-form>

</div>

<divclass="toolbar"style="float:right;padding-top:10px;padding-right:15px;">

<el-form:inline="true":size="size">

<el-form-item>

<el-button-group>

<el-tooltipcontent="刷新"placement="top">

<el-buttonicon="fafa-refresh"@click="findPage(null)"></el-button>

</el-tooltip>

<el-tooltipcontent="列显示"placement="top">

<el-buttonicon="fafa-filter"@click="displayFilterColumnsDialog"></el-button>

</el-tooltip>

<el-tooltipcontent="导出"placement="top">

<el-buttonicon="fafa-file-excel-o"></el-button>

</el-tooltip>

</el-button-group>

</el-form-item>

</el-form>

<!--表格显示列界面-->

<table-column-filter-dialogref="tableColumnFilterDialog":columns="columns"

@handleFilterColumns="handleFilterColumns">

</table-column-filter-dialog>

</div>

<!--表格内容栏-->

<kt-tablepermsEdit="sys:user:edit"permsDelete="sys:user:delete"

:data="pageResult":columns="filterColumns"

@findPage="findPage"@handleEdit="handleEdit"@handleDelete="handleDelete">

</kt-table>

<!--新增编辑界面-->

<el-dialog:title="operation?'新增':'编辑'"width="40%":visible.sync="dialogVisible":close-on-click-modal="false">

<el-form:model="dataForm"label-width="80px":rules="dataFormRules"ref="dataForm":size="size"

label-position="right">

<el-form-itemlabel="ID"prop="id"v-if="false">

<el-inputv-model="dataForm.id":disabled="true"auto-complete="off"></el-input>

</el-form-item>

<el-form-itemlabel="用户名"prop="name">

<el-inputv-model="dataF"auto-complete="off"></el-input>

</el-form-item>

<el-form-itemlabel="密码"prop="password">

<el-inputv-model="dataForm.password"type="password"auto-complete="off"></el-input>

</el-form-item>

<el-form-itemlabel="机构"prop="deptName">

<popup-tree-input

:data="deptData"

:props="deptTreeProps"

:prop="dataForm.deptName"

:nodeKey="''+dataForm.deptId"

:currentChangeHandle="deptTreeCurrentChangeHandle">

</popup-tree-input>

</el-form-item>

<el-form-itemlabel="邮箱"prop="email">

<el-inputv-model="dataForm.email"auto-complete="off"></el-input>

</el-form-item>

<el-form-itemlabel="手机"prop="mobile">

<el-inputv-model="dataForm.mobile"auto-complete="off"></el-input>

</el-form-item>

<el-form-itemlabel="角色"prop="userRoles"v-if="!operation">

<el-selectv-model="dataForm.userRoles"multipleplaceholder="请选择"

style="width:100%;">

<el-optionv-for="iteminroles":key="item.id"

:label="item.remark":value="item.id">

</el-option>

</el-select>

</el-form-item>

</el-form>

<divslot="footer"class="dialog-footer">

<el-button:size="size"@click.native="dialogVisible=false">{{$t('action.cancel')}}</el-button>

<el-button:size="size"type="primary"@click.native="submitForm":loading="editLoading">{{$t('action.submit')}}</el-button>

</div>

</el-dialog>

</div>

</template>

<script>

importPopupTreeInputfrom"@/components/PopupTreeInput"

importKtTablefrom"@/views/Core/KtTable"

importKtButtonfrom"@/views/Core/KtButton"

importTableColumnFilterDialogfrom"@/views/Core/TableColumnFilterDialog"

import{format}from"@/utils/datetime"

exportdefault{

components:{

PopupTreeInput,

KtTable,

KtButton,

TableColumnFilterDialog

},

data(){

return{

size:'small',

filters:{

name:''

},

columns:[],

filterColumns:[],

pageRequest:{pageNum:1,pageSize:10},

pageResult:{},

operation:false,//true:新增,false:编辑

dialogVisible:false,//新增编辑界面是否显示

editLoading:false,

dataFormRules:{

name:[

{required:true,message:'请输入用户名',trigger:'blur'}

]

},

//新增编辑界面数据

dataForm:{

id:0,

name:'',

password:'123456',

deptId:1,

deptName:'',

email:'test@',

mobile:,

status:1,

userRoles:[]

},

deptData:[],

deptTreeProps:{

label:'name',

children:'children'

},

roles:[]

}

},

methods:{

//获取分页数据

findPage:function(data){

if(data!==null){

this.pageRequest=data.pageRequest

}

this.pageRequest.columnFilters={name:{name:'name',value:}}

this.$api.user.findPage(this.pageRequest).then((res)=>{

this.pageResult=res.data

this.findUserRoles()

}).then(data!=null?data.callback:'')

},

//加载用户角色信息

findUserRoles:function(){

this.$api.role.findAll().then((res)=>{

//加载角色集合

this.roles=res.data

})

},

//批量删除

handleDelete:function(data){

this.$api.user.batchDelete(data.params).then(data!=null?data.callback:'')

},

//显示新增界面

handleAdd:function(){

this.dialogVisible=true

this.operation=true

this.dataForm={

id:0,

name:'',

password:'',

deptId:1,

deptName:'',

email:'test@',

mobile:,

status:1,

userRoles:[]

}

},

//显示编辑界面

handleEdit:function(params){

this.dialogVisible=true

this.operation=false

this.dataForm=Object.assign({},params.row)

letuserRoles=[]

for(leti=0,len=params.row.userRoles.length;i<len;i++){

userRoles.push(p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论