第一章 绪论
1.1 研究背景与意义
社区老年人的用药管理一直依靠纸质的服药清单和家属的口头提醒,药品的信息传递是单向的,不能及时反馈到患者身上来,而患者的健康数据分散在不同的测量仪器、体检报告里,没有被整合起来。线下沟通和电话咨询为主要的服务方式,由于存在信息不对称的问题,用药差错的风险一直居高不下,家属不能及时了解老人的实际服药情况,社区医疗服务同老人日常生活需求存在着明显的断层现象1。早期出现的单机版用药提醒软件或者简单的健康记录工具虽然提高了部分信息记录的速度,但是功能孤立、数据不能互相传递,碎片化的服务体验很难满足老年人对于用药安全和健康监护的综合需求,优质的健康指导内容以及社区服务资源也不能有效地触及到目标人群2。
创建老年人用药智能管理系统可以将用药计划、健康监测以及社区服务融合到同一个平台上,打通老人、家属和管理员三者之间的信息链条,从根本上减少由于信息滞后或者遗漏而造成的人为错误。系统给社区养老服务规范化运行提供支持,提高家属参与照护的及时性和准确性,促进社区医疗和服务业资源的有效对接,在营造积极互动的社区健康生态系统上起到实际推动的作用,也给其他面向特殊群体的智慧服务系统的创建给予可以参照的实践途径。
1.2 国内外研究现状
国内针对老年人群的健康管理平台发展脉络比较清楚,早期多为单向资讯型网站,主要包含基本的健康科普内容以及药品信息查询等服务,用户处在被动接受的状态中3。移动互联网的普及催生了以慢病管理为应用主体、智能硬件为支撑的系列软件,实现了基本的数据记录和简单的提醒功能,但是各个应用之间存在着明显的壁垒,不能形成一个连续的健康档案4。部分社区养老服务平台把用药提醒同上门服务融合起来,服务流程依靠人工调度来执行,响应速度受线下交流成本的限制5。近些年来,以"互联网+医护"为特点的整合型平台渐渐显现出来,重视家属远程参与以及多角色协作,用药计划审核、健康数据异常警报等功效也被慢慢加入到系统的规划当中6。国内有关研究在用药依从性干预、老年健康数据挖掘等方面有所突破,但是真正形成起用药、健康、社区服务三者闭环管理体系的系统还很少见7。
国外的相关实践开始得比较早,早期的健康管理主要关注的是个人健康数据的记录和图表展示,社交属性比较弱8。伴随着智能手机的普及,用药提醒类的应用也越来越多,有些产品也开始加入到家属监督的模式当中来,以共享服药的状态来加强家庭照护之间的联系9。欧洲一些国家依靠已经建立起来的社区医疗系统,创建起包含电子健康档案和用药计划在内的区域型平台,实现医生对药物进行远程审查以及药师给予用药指导的功能10。体育和健康领域的跨界应用Fantasy Premier League虽然不是直接服务于老年人的,但是它所具有的数据驱动的实时反馈以及多角色互动的特点给健康管理系统的设计提供了一些参考11。国外主流平台都十分看重数据开放接口以及第三方服务对接,用户健康数据可以授权给药店、诊所等服务机构,从而构建起从用药到咨询再到配送的全流程服务体系,这是智慧健康管理发展的大势所趋12。
1.3 主要研究内容
本课题设计并实现了一个以Spring Boot为基础的老年人用药智能管理系统,该系统主要作用是搭建起老人、家属和社区管理员之间的协同服务平台。研究内容包含三个主要的角色,即需求分析阶段的功能需求分析以及业务流程梳理工作都依照了软件工程的规则执行完毕。系统采用前后端分离架构和B/S模式,后端用Spring Boot框架搭建起来,前端用Vue框架来开发,数据存储依靠MySQL数据库。最终达到老年用户用药计划管理、健康数据记录和社区服务对接的目的,家属端的远程监护和服务协同的功能,管理员端的用户档案管理、用药计划审核、服务资源调度和活动管理等功能,主要解决老年群体用药安全缺少多方面监管、健康信息分散无法共享、社区服务供需匹配效率低下的实际问题。
第二章 相关技术介绍
2.1 Spring Boot框架
Spring Boot是在Spring框架的基础上发展起来的一种快速的应用开发方案。它用自动化的配置以及起步依赖来简化Spring应用的搭建和部署过程,使开发者可以不用过多地关心繁琐的XML配置就可以快速创建出一个生产级的独立应用。内嵌的Servlet容器使应用打包之后可以直接运行,大大提高了开发和交付的效率13。在系统运行时,Spring Boot通过自动配置的DispatcherServlet接收前端请求,依据请求路径映射至对应的Controller组件,Controller调用Service层封装的业务逻辑进行处理,Service层则借助Repository或Mapper接口与持久层完成数据交互。整个过程利用Spring Boot的依赖注入特性把各个层次的组件解耦开,使业务逻辑清楚、便于维护。本系统后端使用的是Spring Boot这个主要的支持框架,所有的用药计划审核、健康数据异常判定、代购服务调度等复杂的业务规则都在Service层进行集中处理,框架的事务管理保证了健康档案更新、订单状态流转等操作的数据一致性、完整性。
2.2 Vue.js框架
Vue.js是一个用来创建用户界面的渐进式JavaScript框架。核心库主要针对视图层进行开发,采用自下而上增量式的开发方式,可以自由地选择使用哪些配套的生态组件。Vue.js响应式数据绑定机制使数据模型和DOM视图自动同步,老人端健康数据录入或者家属端服药记录追踪状态发生改变的时候,页面对应区域不需要人工干预就可以及时刷新。组件化开发模式把界面拆分成药品清单卡片、趋势图表、预约表单这些可以重复使用的独立单元,每一个组件都包含自身模板、逻辑和样式,这样的结构既提高了代码的复用性,又让老年用户端简洁的交互界面同管理员端复杂的数据显示可以在同一个项目里同时创建和维持14。本系统的前端全部使用Vue.js来搭建,所有的用户操作界面都是用组件嵌套的方式来展现,前端路由实现各个角色功能页面之间的切换导航,状态管理模块用来保存登录的状态以及跨组件共享的实时提醒信息。
2.3 MySQL数据库
MySQL是关系型数据库系统,被广泛使用在各种各样的场景中。它用表格的形式来组织数据,使用预先设定好的模式对每一张表进行严格的限制,使得老年人的基础信息、药品的知识库、体检报告的关键指标等数据具有完整的、一致性的特点。InnoDB存储引擎支持行级锁、外键约束等,在多用户并发操作时能保证事务的原子性、隔离性,不会因为代购订单分发或者用药计划改变而导致数据混乱15。SQL语言是统一数据操作接口,开发者利用查询语句可以从多个相关的表中获取想要的信息,如根据慢病种类对重点关注老人进行筛选、统计某个时间段内血糖异常出现的次数等。本系统用MySQL来保存所有的业务数据,健康档案库中体检指标和正常值范围的对比逻辑、用药依从性月度总结的生成都依靠数据库高效查询和聚合的能力。
2.4 Java编程语言
Java是面向对象的编程语言,它的设计思想就是"一次编写,到处运行"。字节码和Java虚拟机配合起来使编译后的程序可以在不同的操作系统下正常运行,跨平台性给系统部署和迁移提供基本支持。Java有自动内存管理和垃圾回收功能,不需要像C++一样自己去管理内存的分配和释放,从而降低内存泄露的风险。从代码组织上看,Java使用类和接口来实现抽象和封装,把用药计划、健康记录、服务订单等业务实体映射成程序中的对象模型,继承和多态特性使不同的角色用户共有的属性和行为可以被抽象复用16。本系统的后端业务逻辑全部使用Java语言实现,从控制器接收前端参数开始,经过服务层的用药禁忌判断规则处理,最后由数据访问层进行持久化操作,整个调用链路都在Java虚拟机上运行。语言严格类型的类型检查可以在编译时发现可能发生的类型不匹配问题,给系统稳定的运行提供早期保护。
第三章 系统分析
3.1 可行性分析
3.1.1 技术可行性
系统采用前后端分离架构构建,后端基于Spring Boot框架处理业务逻辑与数据接口,前端使用Vue.js框架实现用户界面交互,MySQL数据库承担数据持久化存储。Spring Boot在Java企业级应用开发领域拥有广泛实践,其自动化配置与起步依赖机制能够快速搭建稳定可靠的后端服务。Vue.js凭借响应式数据绑定与组件化开发模式,可高效构建老年人端简洁操作界面与管理员端复杂数据看板。MySQL作为成熟的关系型数据库,事务处理与数据一致性保障机制能够满足用药计划、健康档案、服务订单等核心数据的存储需求。开发过程中可能出现的性能负载集中在健康数据趋势图表生成与多用户并发访问场景,通过合理设计数据库索引与优化查询语句可缓解压力。数据安全层面依托框架提供的参数校验与SQL预处理机制防范注入风险。因此,系统在技术方面是可行的。
3.1.2 操作可行性
系统界面设计充分考虑老年人群体操作习惯,用药清单采用大字体与图示化展示,提醒方式为弹窗提示,确认服药仅需点击单一按钮。家属端功能布局侧重远程监护与服务协同,健康数据查看与异常预警信息层级清晰,操作路径符合日常移动应用使用习惯。管理员端功能模块划分依据用户档案、用药服务、健康监测、社区活动等业务领域,数据看板与筛选查询操作流程贴近社区管理工作实际场景。系统上线后原有电话沟通与纸质记录方式被线上数据同步取代,家属可实时掌握老人状态,社区管理员从线下调度转向平台统一分配。后续维护聚焦于用药知识库更新与活动内容发布,社区工作人员经过基础培训即可独立操作。因此,系统在操作方面是可行的。
3.1.3 经济可行性
项目投入主要集中于开发阶段的人力成本,硬件依托现有个人计算机与服务器设备,无需额外采购专用设施。软件开发基于Spring Boot、Vue.js、MySQL等开源技术,开发工具采用社区版IDE与免费资源,未产生授权费用。系统部署后替代部分人工记录与电话沟通工作,降低社区管理的人力消耗,家属通过远程监护减少往返探视频率,老人获得及时用药指导与代购服务,多方均能从中获得实际价值。投入规模有限而应用效果显著,具备良好的投入产出比。因此,系统在经济方面是可行的。
3.2 功能需求分析
3.2.1 老年人用例
老人用户在系统中执行在线聊天操作以进行沟通。系统依据定时提醒设置向用户推送通知。用户通过社区服务查询功能获取服务项目列表并可进行服务预约。活动信息查询功能展示活动内容,活动报名功能记录用户参与意向。用药计划功能呈现每日用药安排,用药记录查询功能追溯历史执行情况。健康记录管理功能支持录入与维护血压心率等数据,体检报告管理功能上传并归档体检文件。症状记录管理功能记录身体不适情况,评价信息查询功能查阅过往服务反馈。常用药品管理功能维护个人药品清单。老年人角色用例图如图3-1所示。

图3-1老年人用例图
3.2.2 家属用例
家属用户在系统中通过在线聊天功能与老人或管理人员联系。社区服务查询功能展示社区提供的服务资源。活动信息查询功能浏览相关活动内容。用药计划查询功能查看老人用药安排,用药记录查询功能跟踪用药完成情况。健康记录查询功能掌握老人健康数据,体检报告查询功能调阅体检结果。症状记录查询功能了解老人身体异常反馈。家属角色用例图如图3-2所示。
图3-2家属用例图
3.2.3 管理员用例
系统管理员在系统中执行用药计划管理操作,包含计划的新增、修改与审核。健康记录管理与体检报告管理负责维护健康数据。症状记录管理处理用户提交的身体不适记录。社区服务管理控制服务项目发布与更新。预约信息管理处理服务预约的审核。服务记录管理与评价信息管理跟踪服务过程与反馈。活动信息管理与报名信息管理统筹活动发布与报名审核。常用药品管理维护药品基础信息。管理员角色用例图如图3-3所示。

图3-3管理员用例图
第四章 系统设计
4.1 系统架构设计
系统采用模块化分层的架构设计,把前端展示、业务处理和数据存储分离开来。前端使用Vue.js搭建单页面应用,实现用户的交互界面以及数据的可视化展示。用户通过浏览器访问系统,所有的请求都是用Axios库异步的方式发往后端服务器。Spring Boot框架构建的RESTful API层接收请求,调用对应的Service层组件执行业务逻辑处理。Service层实现了用药计划审核、健康数据阈值判断和服务订单调度这些主要的业务规则。服务层用数据访问对象和MySQL数据库进行交互,保证用户信息、健康监测记录等重要的信息一致并且能够及时响应。本地缓存机制用来保存高频访问的静态数据,比如药品禁忌库、社区活动信息等,减少数据库的访问量,提高系统的整体性能。模块化的结构使各个层次的职责清楚,有利于以后的维护和功能扩展,符合高内聚低耦合的软件工程设计原则17。整个系统架构如图4-1所示。

图4-1系统架构图
4.2 系统结构功能设计
该系统以老人用户、家属及系统管理员为核心角色,构建覆盖用药管理、健康监测与服务互动的综合平台。老人用户可进行在线沟通、接收定时提醒、查询社区服务与活动信息、完成服务与活动预约、管理个人用药计划与记录、维护健康与体检报告、记录症状、查询评价反馈及管理常用药品。家属用户通过在线聊天与老人保持联系,可查询社区服务、活动信息、老人用药计划与记录、健康与体检数据及症状记录。系统管理员统筹管理用药计划、健康记录、体检报告、症状记录、社区服务、预约信息、服务记录、评价信息、活动信息、报名信息及常用药品。系统功能结构图如图4-2所示。
图4-2系统功能结构图
4.3 系统流程设计
4.3.1 系统总体业务流程设计
用户通过登录进入系统,依据身份获得不同操作权限。老人用户进入后查看用药计划与定时提醒,可自行记录健康数据或预约社区服务。家属用户登录后查询老人用药执行情况与健康记录,进行监督与沟通。系统管理员对用药计划、服务预约、活动报名等业务进行审核与维护。数据在角色之间流转形成闭环,老人健康信息经记录后供家属查阅,服务与活动申请经管理员处理反馈至用户。各业务模块通过数据交互支撑整体运行。系统总体业务流程如图4-1所示。
图4-1系统总体业务流程图
4.3.2 用药计划管理流程设计
管理员制定用药计划并推送至对应老人用户。老人用户登录系统后查看计划详情,依据提醒执行用药操作。执行完毕后老人用户可在系统中标记完成状态,该状态同步反馈至家属用户端供其查阅。若老人用户未按时执行,系统记录未执行状态并持续提醒。家属用户根据反馈信息与老人沟通确认用药情况。用药计划管理流程如图4-2所示。

图4-2用药计划管理流程图
4.3.3 服务预约流程设计
老人用户在社区服务模块选择所需服务项目,填写预约信息并提交申请。系统接收请求后生成预约记录并将状态标记为待审核。管理员登录后台查看待审核预约,依据服务资源情况做出通过或驳回处理。审核通过的预约转入服务记录模块,待服务完成后由管理员更新服务状态。老人用户可查询预约结果,家属用户同步查看预约进展。服务预约流程如图4-3所示。

图4-3服务预约流程图
4.3.4 健康记录管理流程设计
老人用户进入健康记录模块录入血压、心率等测量数据,系统对数据进行格式校验后保存至数据库。老人用户可对已录入数据进行修改或删除操作,每次操作均生成操作日志。家属用户登录系统后查看老人健康数据,了解健康变化趋势。管理员在后台对健康记录进行统一管理,必要时可对异常数据进行标注或删除。健康记录管理流程如图4-4所示。
图4-4健康记录管理流程图
4.3.5 活动报名流程设计
老人用户在活动信息模块浏览活动列表,选择感兴趣的活动查看详情后填写报名信息提交。系统接收报名请求后生成报名记录并推送至管理员端。管理员对报名信息进行审核,根据活动名额等条件决定是否通过。审核通过的报名进入活动参与名单,未通过的报名退回并反馈原因。老人用户可在报名信息中查看审核状态,家属用户亦可查阅老人报名情况。活动报名流程如图4-5所示。

图4-5活动报名流程图
4.4 数据库设计
4.4.1 E-R图设计
活动信息实体主要包括活动名称、活动类型、活动时间、活动地点等。实体属性图如图4-8所示。
图4-8活动信息实体属性图
预约信息实体主要包括预约日期、预约地点、老人姓名、服务名称等。实体属性图如图4-9所示。
图4-9预约信息实体属性图
文章实体主要包括标题、文章分类、点击数、正文等。实体属性图如图4-10所示。
图4-10文章实体属性图
常用药品实体主要包括药品名称、药品类型、药品数量、老人用户等。实体属性图如图4-11所示。
图4-11常用药品实体属性图
社区服务实体主要包括服务名称、服务类型、服务时间、服务详情等。实体属性图如图4-12所示。
图4-12社区服务实体属性图
老人用户实体主要包括老人姓名、老人年龄、老人性别、审核状态等。实体属性图如图4-13所示。
图4-13老人用户实体属性图
评价信息实体主要包括评价日期、老人姓名、评价内容、服务评价等。实体属性图如图4-14所示。
编辑 图4-14评价信息实体属性图
家属用户实体主要包括家属姓名、家属电话、家属性别、审核状态等。实体属性图如图4-15所示。
图4-15家属用户实体属性图
健康记录实体主要包括老人血糖、老人血压、老人体温、记录日期等。实体属性图如图4-16所示。
图4-16健康记录实体属性图
用药计划实体主要包括药品名称、药品剂量、用药时间、用药备注等。实体属性图如图4-17所示。
图4-17用药计划实体属性图
系统ER图如图4-18所示。
图4-18系统ER图
4.4.2 数据库表设计
预约信息表主要是用来记录老人用户对社区服务或活动的预约详情。主要包括预约日期、预约地点、老人姓名、服务名称等字段。如表4-1所示。
表4-1预约信息表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 预约信息id | int | 11 | 预约信息ID |
| 2 | 预约日期 | date | - | 预约日期 |
| 3 | 预约地点 | varchar | 100 | 预约地点 |
| 4 | 预约备注 | text | 65535 | 预约备注 |
| 5 | 老人用户 | int | 11 | 老人用户 |
| 6 | 老人姓名 | varchar | 50 | 老人姓名 |
| 7 | 服务名称 | varchar | 50 | 服务名称 |
| 8 | 服务类型 | varchar | 50 | 服务类型 |
| 9 | 审核状态 | varchar | 16 | 审核状态 |
| 10 | 创建时间 | datetime | - | 创建时间 |
活动信息表主要是用来记录发布的各类活动详情。主要包括活动名称、活动类型、活动时间、活动地点等字段。如表4-2所示。
表4-2活动信息表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 活动信息id | int | 11 | 活动信息ID |
| 2 | 活动名称 | varchar | 50 | 活动名称 |
| 3 | 活动类型 | varchar | 50 | 活动类型 |
| 4 | 封面图片 | varchar | 255 | 封面图片 |
| 5 | 活动时间 | varchar | 50 | 活动时间 |
| 6 | 活动地点 | varchar | 100 | 活动地点 |
| 7 | 活动详情 | longtext | 255 | 活动详情 |
| 8 | 点赞数 | int | 11 | 点赞数 |
| 9 | 收藏数 | int | 11 | 收藏数 |
| 10 | 评论数 | int | 11 | 评论数 |
社区服务表主要是用来记录社区提供的各类服务项目。主要包括服务名称、服务类型、服务时间、服务详情等字段。如表4-3所示。
表4-3社区服务表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 社区服务id | int | 11 | 社区服务ID |
| 2 | 服务名称 | varchar | 50 | 服务名称 |
| 3 | 服务类型 | varchar | 50 | 服务类型 |
| 4 | 封面图片 | varchar | 255 | 封面图片 |
| 5 | 服务时间 | varchar | 50 | 服务时间 |
| 6 | 服务须知 | varchar | 200 | 服务须知 |
| 7 | 服务详情 | longtext | 255 | 服务详情 |
| 8 | 点赞数 | int | 11 | 点赞数 |
| 9 | 收藏数 | int | 11 | 收藏数 |
| 10 | 评论数 | int | 11 | 评论数 |
老人用户表主要是用来记录接受服务的老人基本信息。主要包括老人姓名、老人年龄、老人性别、审核状态等字段。如表4-4所示。
表4-4老人用户表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 老人用户id | int | 11 | 老人用户ID |
| 2 | 老人姓名 | varchar | 50 | 老人姓名 |
| 3 | 老人年龄 | varchar | 10 | 老人年龄 |
| 4 | 老人性别 | varchar | 2 | 老人性别 |
| 5 | 审核状态 | varchar | 16 | 审核状态 |
| 6 | 用户id | int | 11 | 用户ID |
| 7 | 创建时间 | datetime | - | 创建时间 |
| 8 | 更新时间 | timestamp | - | 更新时间 |
家属用户表主要是用来记录与老人关联的家属信息。主要包括家属姓名、家属电话、家属性别、审核状态等字段。如表4-5所示。
表4-5家属用户表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 家属用户id | int | 11 | 家属用户ID |
| 2 | 家属姓名 | varchar | 50 | 家属姓名 |
| 3 | 家属电话 | varchar | 20 | 家属电话 |
| 4 | 家属性别 | varchar | 2 | 家属性别 |
| 5 | 审核状态 | varchar | 16 | 审核状态 |
| 6 | 用户id | int | 11 | 用户ID |
| 7 | 创建时间 | datetime | - | 创建时间 |
| 8 | 更新时间 | timestamp | - | 更新时间 |
健康记录表主要是用来记录老人的日常健康数据。主要包括老人血糖、老人血压、老人体温、记录日期等字段。如表4-6所示。
表4-6健康记录表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 健康记录id | int | 11 | 健康记录ID |
| 2 | 老人血糖 | double | - | 老人血糖 |
| 3 | 老人血压 | double | - | 老人血压 |
| 4 | 老人体温 | double | - | 老人体温 |
| 5 | 老人用户 | int | 11 | 老人用户 |
| 6 | 家属用户 | int | 11 | 家属用户 |
| 7 | 记录日期 | date | - | 记录日期 |
| 8 | 记录备注 | text | 65535 | 记录备注 |
| 9 | 创建时间 | datetime | - | 创建时间 |
| 10 | 更新时间 | timestamp | - | 更新时间 |
用药计划表主要是用来为老人制定的用药安排。主要包括药品名称、药品剂量、用药时间、用药备注等字段。如表4-7所示。
表4-7用药计划表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 用药计划id | int | 11 | 用药计划ID |
| 2 | 老人用户 | int | 11 | 老人用户 |
| 3 | 药品名称 | varchar | 50 | 药品名称 |
| 4 | 药品剂量 | varchar | 20 | 药品剂量 |
| 5 | 用药时间 | varchar | 50 | 用药时间 |
| 6 | 家属用户 | int | 11 | 家属用户 |
| 7 | 用药备注 | text | 65535 | 用药备注 |
| 8 | 审核状态 | varchar | 16 | 审核状态 |
| 9 | 创建时间 | datetime | - | 创建时间 |
| 10 | 更新时间 | timestamp | - | 更新时间 |
常用药品表主要是用来记录老人家中常备的药品信息。主要包括药品名称、药品类型、药品数量、存放位置等字段。如表4-8所示。
表4-8常用药品表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 常用药品id | int | 11 | 常用药品ID |
| 2 | 药品编号 | varchar | 50 | 药品编号 |
| 3 | 药品名称 | varchar | 50 | 药品名称 |
| 4 | 药品类型 | varchar | 50 | 药品类型 |
| 5 | 药品数量 | double | - | 药品数量 |
| 6 | 老人用户 | int | 11 | 老人用户 |
| 7 | 家属用户 | int | 11 | 家属用户 |
| 8 | 存放位置 | varchar | 100 | 存放位置 |
| 9 | 创建时间 | datetime | - | 创建时间 |
| 10 | 更新时间 | timestamp | - | 更新时间 |
评价信息表主要是用来记录对已完成服务的评价内容。主要包括评价日期、老人姓名、评价内容、服务评价等字段。如表4-9所示。
表4-9评价信息表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 评价信息id | int | 11 | 评价信息ID |
| 2 | 评价日期 | date | - | 评价日期 |
| 3 | 老人用户 | int | 11 | 老人用户 |
| 4 | 老人姓名 | varchar | 50 | 老人姓名 |
| 5 | 评价内容 | text | 65535 | 评价内容 |
| 6 | 服务名称 | varchar | 50 | 服务名称 |
| 7 | 服务评价 | varchar | 20 | 服务评价 |
| 8 | 服务类型 | varchar | 50 | 服务类型 |
| 9 | 创建时间 | datetime | - | 创建时间 |
| 10 | 更新时间 | timestamp | - | 更新时间 |
文章表主要是用来发布和存储各类资讯文章。主要包括标题、文章分类、正文、封面图等字段。如表4-10所示。
表4-10文章表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 文章id | mediumint | 9 | 文章id |
| 2 | 标题 | varchar | 125 | 标题 |
| 3 | 文章分类 | varchar | 50 | 文章分类 |
| 4 | 点击数 | int | 11 | 点击数 |
| 5 | 点赞数 | int | 11 | 点赞数 |
| 6 | 来源 | varchar | 200 | 来源 |
| 7 | 正文 | longtext | 255 | 正文 |
| 8 | 封面图 | varchar | 255 | 封面图 |
| 9 | 创建时间 | timestamp | - | 创建时间 |
| 10 | 更新时间 | timestamp | - | 更新时间 |
第五章 系统实现
5.1 老人用户功能实现
5.1.1 在线聊天功能实现
老人用户通过在线聊天功能可与家属或系统进行实时沟通。系统通过UserChatFriendController和UserChatGroupController提供支持,分别管理好友与群聊。当用户选择好友发起聊天时,前端调用UserChatFriendController的get_friend_list方法获取好友列表,随后通过UserChatGroupController的get_group_list方法获取群聊信息,实现消息的收发与状态更新。在线聊天界面如图5-1所示。
图5-1在线聊天界面
核心代码实现如下:
@GetMapping("get_friend_list")
public Map<String, Object> getFriendList(HttpServletRequest request) {
Map<String,String> query = service.readQuery(request);
String userIdStr = query.get("user_id");
Map<String,Object> map = new HashMap<>();
if (StringUtils.isEmpty(userIdStr)){
map.put("list",new ArrayList<>());
return success(map);
}else {
Integer userId = Integer.parseInt(userIdStr);
map.put("list",service.selectUserChatFriend(userId));
return success(map);
}
}
5.1.2 定时提醒功能实现
定时提醒功能通过用户端配置,在指定时间向老人用户推送服药或活动提醒。该功能主要依赖后端定时任务框架,在用户设定的提醒时间触发,通过UserController获取当前登录用户状态,结合相关服务类调用消息推送接口,将提醒内容发送至老人用户端。系统确保提醒准确、及时,并记录提醒状态,防止重复推送。定时提醒界面如图5-2所示。
图5-2定时提醒界面
核心代码实现如下:
@GetMapping("state")
public Map<String, Object> state(HttpServletRequest request) {
JSONObject ret = new JSONObject();
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
log.info("返回userId {}",userId);
if(userId == null || userId == 0){
return error(10000,"用户未登录!");
}
}
5.1.3 社区服务查询功能实现
老人用户可在社区服务模块查询各类服务项目。系统通过CommunityServiceController处理请求,其get_list方法接收前端传递的查询参数,调用CommunityService服务的selectToPage方法进行分页查询,并将结果集封装返回至前端展示。该功能支持按服务名称、服务类型等条件进行筛选,方便用户快速定位所需服务。社区服务查询界面如图5-3所示。
图5-3社区服务查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.1.4 服务预约功能实现
用户选择社区服务后,可填写预约信息进行提交。AppointmentInformationController的add方法负责处理预约请求,其首先通过readBody方法获取前端提交的预约数据,并对数据中空字符串进行过滤,随后将数据封装至AppointmentInformation实体,最终调用addEntity方法完成预约记录持久化。服务预约界面如图5-4所示。
图5-4服务预约界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
AppointmentInformation appointment_information = new AppointmentInformation();
this.addEntity(appointment_information);
return success(1);
}
5.1.5 活动信息查询功能实现
老人用户通过活动信息模块查看已发布的活动。ActivityInformationController的get_list方法接收用户请求,调用其服务层的分页查询方法,从数据库获取活动列表并返回。该方法支持根据活动名称、类型等字段进行模糊匹配,并能对查询结果进行排序,为用户提供便捷的活动浏览体验。活动信息查询界面如图5-5所示。
图5-5活动信息查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.1.6 活动报名功能实现
用户查看到心仪活动后,可进行在线报名。RegistrationInformationController的add方法处理报名请求,从请求体中读取参数并构建RegistrationInformation对象。系统会对表单数据进行非空校验,并将报名状态默认设置为"未审核",随后调用addEntity方法插入数据,完成报名信息入库。活动报名界面如图5-6所示。
图5-6活动报名界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
RegistrationInformation registration_information = new RegistrationInformation();
this.addEntity(registration_information);
return success(1);
}
5.1.7 用药计划功能实现
用药计划模块为老人用户生成并展示每日用药方案。MedicationPlanController的get_list方法接收前端请求,根据登录用户身份,调用服务层方法查询关联该老人的用药计划数据。系统支持分页展示,并将计划的详细内容如药品名称、剂量、用药时间等信息清晰列出。用药计划界面如图5-7所示。
图5-7用药计划界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.1.8 用药记录查询功能实现
老人用户可查询历史用药记录,了解用药执行情况。MedicationRecordsController的get_list方法处理查询请求,通过读取请求中的查询条件,调用服务层方法获取符合条件的记录,并返回分页结果。该功能支持按时间、药品名称等维度筛选,帮助用户回顾用药历史。用药记录查询界面如图5-8所示。
图5-8用药记录查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.1.9 健康记录管理功能实现
老人用户可自主记录并管理个人健康数据。HealthRecordsController的add方法允许用户新增健康记录,如心率、血压等。系统从请求参数中解析数值数据,并进行类型转换和日期格式化,然后调用addEntity将健康记录存入数据库,支持用户随时查看和管理个人健康档案。健康记录管理界面如图5-9所示。
图5-9健康记录管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
HealthRecords health_records = new HealthRecords();
this.addEntity(health_records);
return success(1);
}
5.1.10 体检报告管理功能实现
老人用户可通过体检报告管理模块上传或查看体检报告。MedicalExaminationReportController的add方法处理报告的上传,系统从请求参数中获取报告关联的老人信息及文件附件,进行数据封装后调用addEntity方法保存。用户可通过get_list方法查看已上传的报告列表,便于随时调阅。体检报告管理界面如图5-10所示。
图5-10体检报告管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
MedicalExaminationReport medical_examination_report = new MedicalExaminationReport();
this.addEntity(medical_examination_report);
return success(1);
}
5.1.11 症状记录管理功能实现
老人用户可记录日常身体不适症状,供健康分析参考。SymptomRecordController的add方法接收用户提交的症状记录,包括症状标题、描述及图片附件,将数据封装至SymptomRecord实体后调用addEntity完成入库。该功能支持用户随时补充和更新症状记录,完善个人健康档案。症状记录管理界面如图5-11所示。
图5-11症状记录管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
SymptomRecord symptom_record = new SymptomRecord();
this.addEntity(symptom_record);
return success(1);
}
5.1.12 评价信息查询功能实现
老人用户完成服务后可查看自己的评价记录。EvaluationInformationController的get_list方法根据请求参数中的老人用户ID,调用服务层查询关联的评价信息,并将结果集进行分页处理。用户可通过该模块浏览历史评价,了解自身反馈记录。评价信息查询界面如图5-12所示。
图5-12评价信息查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.1.13 常用药品管理功能实现
老人用户可维护个人常用的药品清单。CommonlyUsedDrugsController的add方法允许用户新增常用药品,系统从请求参数中获取药品代码、名称、类型及数量等信息,构建实体对象后调用addEntity方法完成数据存储,为用户提供便捷的药品管理工具。常用药品管理界面如图5-13所示。
图5-13常用药品管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
CommonlyUsedDrugs commonly_used_drugs = new CommonlyUsedDrugs();
this.addEntity(commonly_used_drugs);
return success(1);
}
5.2 家属功能实现
5.2.1 在线聊天功能实现
家属用户通过与老人用户在线聊天功能,可以实时了解老人状况。家属端通过UserChatFriendController的get_friend_list方法获取老人好友列表,并通过UserChatGroupController的get_group_list方法参与群聊。系统确保消息的即时性和可靠性,方便家属与老人进行高效沟通。在线聊天界面如图5-14所示。
图5-14在线聊天界面
核心代码实现如下:
@GetMapping("get_friend_list")
public Map<String, Object> getFriendList(HttpServletRequest request) {
Map<String,String> query = service.readQuery(request);
String userIdStr = query.get("user_id");
Map<String,Object> map = new HashMap<>();
if (StringUtils.isEmpty(userIdStr)){
map.put("list",new ArrayList<>());
return success(map);
}else {
Integer userId = Integer.parseInt(userIdStr);
map.put("list",service.selectUserChatFriend(userId));
return success(map);
}
}
5.2.2 社区服务查询功能实现
家属用户可以查询社区发布的各项服务信息,为老人选择合适的服务。CommunityServiceController的get_list方法处理查询请求,接收前端传递的搜索条件,通过服务层进行数据检索,并以分页形式返回社区服务列表,方便家属全面了解服务资源。社区服务查询界面如图5-15所示。
图5-15社区服务查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.2.3 活动信息查询功能实现
家属可查询社区或系统发布的各类活动信息,了解适合老人参与的活动。ActivityInformationController的get_list方法接收查询请求,调用服务层方法获取活动列表并进行分页。该功能支持多条件组合查询,帮助家属为老人筛选感兴趣的活动。活动信息查询界面如图5-16所示。
图5-16活动信息查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.2.4 用药计划查询功能实现
家属可查询老人的用药计划,监督用药情况。MedicationPlanController的get_list方法根据家属关联的老人信息,通过服务层查询相应老人的用药计划数据,并返回分页结果。该功能帮助家属清晰了解老人用药安排,确保用药安全。用药计划查询界面如图5-17所示。
图5-17用药计划查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.2.5 用药记录查询功能实现
家属可以查询老人的历史用药记录,掌握用药执行情况。MedicationRecordsController的get_list方法接收查询参数,通过服务层获取老人用药记录并分页展示。系统支持按时间段筛选,方便家属进行用药情况追踪和健康管理。用药记录查询界面如图5-18所示。
图5-18用药记录查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.2.6 健康记录查询功能实现
家属可查询老人的健康记录,关注其健康状况。HealthRecordsController的get_list方法根据家属身份,通过服务层获取关联老人的健康数据,如心率、血压等,并以分页形式展示。家属可通过此模块全面了解老人的健康变化趋势。健康记录查询界面如图5-19所示。
图5-19健康记录查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.2.7 体检报告查询功能实现
家属可查看老人的体检报告,了解其健康状况。MedicalExaminationReportController的get_list方法接收家属的查询请求,通过服务层获取关联老人的体检报告数据,并进行分页处理,方便家属随时查阅历史报告。体检报告查询界面如图5-20所示。
图5-20体检报告查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.2.8 症状记录查询功能实现
家属可查询老人记录的身体症状,及时发现健康隐患。SymptomRecordController的get_list方法根据查询条件,通过服务层获取老人症状记录,并分页返回。家属可通过该功能了解老人的近期不适症状,为健康干预提供依据。症状记录查询界面如图5-21所示。
图5-21症状记录查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.3 系统管理员功能实现
5.3.1 用药计划管理功能实现
管理员可对所有老人的用药计划进行统一管理。MedicationPlanController提供了完整的CRUD操作,包括新增、修改和审核功能。其中update_examine_state方法专门处理用药计划的审核状态变更,管理员通过调用该方法,可更新计划的审核结果为"已通过"或"未通过",确保用药计划的有效性。用药计划管理界面如图5-22所示。
图5-22用药计划管理界面
核心代码实现如下:
@GetMapping("/update_examine_state")
public String updateExamineState(Long id, String newState) throws IOException {
if (!newState.equals("未审核") && !newState.equals("已通过") && !newState.equals("未通过")) {
return "非法的审核状态";
}
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
MedicationPlan medication_plan = service.findOne(queryMap);
return "审核成功";
}
5.3.2 健康记录管理功能实现
管理员可以管理所有老人的健康记录,进行增删改查操作。HealthRecordsController的add和set方法分别处理健康记录的添加和修改请求。系统从请求中解析健康数据,进行数据校验和封装后,调用服务层方法完成数据持久化,确保健康信息的准确性和完整性。健康记录管理界面如图5-23所示。
图5-23健康记录管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
HealthRecords health_records = new HealthRecords();
this.addEntity(health_records);
return success(1);
}
5.3.3 体检报告管理功能实现
管理员负责维护所有老人的体检报告,包括上传、修改和删除等操作。MedicalExaminationReportController的add方法处理新报告的提交,从请求中获取报告数据并构建实体,调用addEntity保存;set方法则处理报告的修改,通过查询条件定位记录后更新报告内容。体检报告管理界面如图5-24所示。
图5-24体检报告管理界面
核心代码实现如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
Map<String,String> queryMap = service.readQuery(request);
Map<String,String> configMap = service.readConfig(request);
Map<String,Object> paramMap = service.readBody(request.getReader());
MedicalExaminationReport medical_examination_report = new MedicalExaminationReport();
this.setEntity(queryMap,configMap,medical_examination_report);
return success(1);
}
5.3.4 症状记录管理功能实现
管理员可对老人的症状记录进行统一管理和审核。SymptomRecordController的add和set方法提供数据录入与更新功能,支持管理员新增或修改症状记录。系统通过数据过滤和格式校验,确保记录信息的规范性,为健康管理提供可靠数据支持。症状记录管理界面如图5-25所示。
图5-25症状记录管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
SymptomRecord symptom_record = new SymptomRecord();
this.addEntity(symptom_record);
return success(1);
}
5.3.5 社区服务管理功能实现
管理员通过该模块发布和管理社区服务项目。CommunityServiceController的add方法允许管理员新增服务,接收服务名称、类型、服务说明等数据,构建实体并保存至数据库。set方法则用于修改已存在的服务信息,管理员可通过该方法更新服务内容,维护服务库的准确性。社区服务管理界面如图5-26所示。
图5-26社区服务管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
CommunityService community_service = new CommunityService();
this.addEntity(community_service);
return success(1);
}
5.3.6 预约信息管理功能实现
管理员可查看和管理所有用户的服务预约记录。AppointmentInformationController的get_list方法提供预约信息列表展示,管理员可通过条件筛选查询预约数据。此外,update_examine_state方法用于处理预约的审核状态,管理员可对预约申请进行"未审核"、"已通过"或"未通过"的状态变更。预约信息管理界面如图5-27所示。
图5-27预约信息管理界面
核心代码实现如下:
@GetMapping("/update_examine_state")
public String updateExamineState(Long id, String newState) throws IOException {
if (!newState.equals("未审核") && !newState.equals("已通过") && !newState.equals("未通过")) {
return "非法的审核状态";
}
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
AppointmentInformation appointment_information = service.findOne(queryMap);
return "审核成功";
}
5.3.7 服务记录管理功能实现
管理员对已完成的服务进行记录管理。ServiceRecordController的add和set方法负责服务记录的创建与更新。当服务完成后,管理员可通过add方法录入服务详情,包括服务时间、服务状态等;若需修改记录,则调用set方法根据查询条件进行数据更新。服务记录管理界面如图5-28所示。
图5-28服务记录管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
ServiceRecord service_record = new ServiceRecord();
this.addEntity(service_record);
return success(1);
}
5.3.8 评价信息管理功能实现
管理员可查看所有用户对服务的评价,并进行管理。EvaluationInformationController的get_list方法用于评价列表的展示,支持多条件查询。管理员通过该功能可以监控服务质量,了解用户反馈,为服务改进提供依据。评价信息管理界面如图5-29所示。
图5-29评价信息管理界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = this.service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.3.9 活动信息管理功能实现
管理员负责发布和管理各类活动信息。ActivityInformationController的add和set方法分别处理活动的发布与修改。管理员通过add方法提交活动名称、类型、时间、地点等信息,调用addEntity保存;set方法则允许管理员更新活动内容,确保活动信息及时准确。活动信息管理界面如图5-30所示。
图5-30活动信息管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
ActivityInformation activity_information = new ActivityInformation();
this.addEntity(activity_information);
return success(1);
}
5.3.10 报名信息管理功能实现
管理员可对活动的报名情况进行审核和管理。RegistrationInformationController的get_list方法用于报名信息的列表查询,update_examine_state方法则专门处理报名审核。管理员通过该方法可更改报名状态,对用户的报名申请进行审批,保障活动参与的有序性。报名信息管理界面如图5-31所示。
图5-31报名信息管理界面
核心代码实现如下:
@GetMapping("/update_examine_state")
public String updateExamineState(Long id, String newState) throws IOException {
if (!newState.equals("未审核") && !newState.equals("已通过") && !newState.equals("未通过")) {
return "非法的审核状态";
}
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
RegistrationInformation registration_information = service.findOne(queryMap);
return "审核成功";
}
5.3.11 常用药品管理功能实现
管理员对系统中所有老人的常用药品库进行统一维护。CommonlyUsedDrugsController的add和set方法提供新增和修改药品的功能。管理员可添加新药品信息,或对现有药品记录进行更新,确保药品信息的准确性和时效性,为用药管理提供基础数据。常用药品管理界面如图5-32所示。
图5-32常用药品管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
CommonlyUsedDrugs commonly_used_drugs = new CommonlyUsedDrugs();
this.addEntity(commonly_used_drugs);
return success(1);
}
第六章 系统测试
6.1 测试方法
系统测试采用黑盒测试与白盒测试相结合的方式。黑盒测试关注系统功能是否符合需求规格,从用户角度模拟实际操作场景,验证各模块输入输出是否正确。白盒测试针对核心业务逻辑进行代码层面的路径覆盖,检查条件分支与循环结构的执行正确性。测试过程中使用JUnit框架编写单元测试用例,针对控制器层、服务层与数据访问层分别进行验证。集成测试模拟多模块协同工作场景,检验接口调用与数据流转的一致性。测试用例覆盖正常流程与异常情况,确保系统在各种条件下稳定运行。
6.2 测试目的
测试目的旨在验证系统功能实现的完整性与正确性,确保各业务模块满足设计需求。通过测试发现系统中潜在的错误与逻辑缺陷,包括功能缺失、数据校验失误、权限控制漏洞等问题。测试过程检验系统在不同用户角色下的访问隔离性,确认数据操作的安全性。性能方面考察系统响应时间与并发处理能力,保证日常使用场景下的流畅体验。测试结果作为系统质量评估的依据,为后续优化与维护提供参考,确保系统达到交付标准。
6.3 测试内容
用药计划管理功能测试主要验证管理员制定与发布用药计划的业务逻辑。测试关注计划信息在系统中的生成流程,以及计划向指定老人用户推送的准确性。同时验证老人用户接收计划后执行标记的反馈机制,确保执行状态能够同步更新至家属端,实现用药监督闭环。用药计划管理测试如表6-1所示。
表6-1用药计划管理测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 用药计划管理 | 计划信息新增 | 填写完整计划内容 | 计划保存成功 | 符合预期 | 测试成功 |
| 用药计划管理 | 计划状态同步 | 老人标记执行完成 | 家属端显示已执行 | 符合预期 | 测试成功 |
| 用药计划管理 | 未执行提醒 | 老人未执行标记 | 系统持续提醒 | 符合预期 | 测试成功 |
服务预约功能测试聚焦预约申请在系统中的完整流转过程。测试验证老人用户提交预约后能否正确生成待审核记录,管理员审核操作能否正常执行通过或驳回逻辑,审核结果能否准确反馈至老人端,同时确认家属端是否能同步查阅预约进展状态。服务预约测试如表6-2所示。
表6-2服务预约测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 服务预约 | 预约信息提交 | 填写服务预约表单 | 生成待审核记录 | 符合预期 | 测试成功 |
| 服务预约 | 审核通过处理 | 管理员点击通过 | 转入服务记录 | 符合预期 | 测试成功 |
| 服务预约 | 审核驳回处理 | 管理员点击驳回 | 退回并反馈原因 | 符合预期 | 测试成功 |
健康记录管理功能测试验证老人用户录入健康数据的完整业务流程。测试关注数据录入后的格式校验机制,确保不符合规范的数据能够被拦截并提示重新输入。同时验证老人用户对已录入数据的修改与删除操作能够正确执行,家属用户能否正常查阅老人健康数据。健康记录管理测试如表6-3所示。
表6-3健康记录管理测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 健康记录管理 | 数据录入保存 | 填写各项健康指标 | 数据存储成功 | 符合预期 | 测试成功 |
| 健康记录管理 | 数据格式校验 | 输入异常数值 | 提示重新输入 | 符合预期 | 测试成功 |
| 健康记录管理 | 家属查阅功能 | 家属端登录查看 | 显示老人数据 | 符合预期 | 测试成功 |
活动报名功能测试验证老人用户参与活动的完整流程。测试关注老人用户浏览活动列表后提交报名信息的处理逻辑,管理员对报名申请进行审核的操作路径,审核通过后报名状态能否正确更新至参与名单,审核驳回时能否将原因准确反馈至老人用户端。活动报名测试如表6-4所示。
表6-4活动报名测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 活动报名 | 报名信息提交 | 填写报名表单 | 生成待审核记录 | 符合预期 | 测试成功 |
| 活动报名 | 审核通过处理 | 管理员确认通过 | 加入参与名单 | 符合预期 | 测试成功 |
| 活动报名 | 审核驳回处理 | 管理员退回申请 | 反馈驳回原因 | 符合预期 | 测试成功 |
社区服务管理功能测试验证管理员对服务项目的维护能力。测试关注服务项目新增时各项信息的保存完整性,修改服务内容后前端展示能否同步更新,服务上下架操作能否正确控制前端可见性,确保用户端仅能查看已上架的服务项目。社区服务管理测试如表6-5所示。
表6-5社区服务管理测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 社区服务管理 | 服务项目新增 | 填写服务完整信息 | 服务保存成功 | 符合预期 | 测试成功 |
| 社区服务管理 | 服务信息修改 | 更新服务内容 | 前端展示更新 | 符合预期 | 测试成功 |
| 社区服务管理 | 服务上下架 | 调整服务状态 | 前端显示变化 | 符合预期 | 测试成功 |
评价信息管理功能测试验证管理员对用户评价内容的审核与处置能力。测试关注评价列表的展示是否完整准确,管理员审核评价时通过或删除操作能否正常执行,审核结果能否影响前端评价内容的可见性,确保平台评价信息符合规范要求。评价信息管理测试如表6-6所示。
表6-6评价信息管理测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 评价信息管理 | 评价列表查询 | 筛选查看评价 | 显示完整列表 | 符合预期 | 测试成功 |
| 评价信息管理 | 评价审核通过 | 管理员确认通过 | 评价公开可见 | 符合预期 | 测试成功 |
| 评价信息管理 | 评价删除处理 | 管理员删除评价 | 评价不再显示 | 符合预期 | 测试成功 |
报名信息管理功能测试验证管理员对活动报名记录的统一管理能力。测试关注报名列表的查询筛选功能是否准确,审核报名申请时通过与驳回操作能否正确执行,报名状态变更后能否同步反映至用户端,保证活动参与名单的准确性与时效性。报名信息管理测试如表6-7所示。
表6-7报名信息管理测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 报名信息管理 | 报名记录查询 | 按条件筛选 | 显示对应记录 | 符合预期 | 测试成功 |
| 报名信息管理 | 报名审核通过 | 管理员确认通过 | 加入活动名单 | 符合预期 | 测试成功 |
| 报名信息管理 | 报名驳回处理 | 管理员退回 | 状态变为驳回 | 符合预期 | 测试成功 |
测试结论
经过对用药计划管理、服务预约、健康记录管理、活动报名、社区服务管理、评价信息管理、报名信息管理七个核心功能模块的系统测试,各模块的预期结果与实际结果均保持一致。用药计划管理功能中计划推送与状态同步机制运行正常。服务预约功能中预约申请提交、审核通过与驳回操作均能正确执行。健康记录管理功能中数据录入、格式校验及家属查阅功能均符合预期。活动报名功能中报名提交与审核流程完整。社区服务管理功能中服务项目维护与上下架操作有效。评价信息管理与报名信息管理功能中审核与状态变更逻辑正确。所有测试用例均得到符合预期的结果。