🎈系统亮点:AI助手、协同过滤算法、webSocket实时聊天、Echarts图形化分析;
一.系统开发工具与环境搭建
1.系统设计开发工具
后端使用Java编程语言的Spring boot框架
项目架构:B/S架构
运行环境:win10/win11、jdk17
前端:
技术:框架Vue3 ;UI库:Element-Plus;
开发工具:Visual Studio Code;
后端:
技术:Java语言、mybatis-plus、Spring boot框架;
开发工具:IDEA 2025版本;
数据库:
数据库:mysql5.7/8.0
数据库工具:Navicat12版本;
二.系统功能需求
2.1. 患者用例分析
(1)预约医生模块:患者可查看医生列表信息,对医生发起咨询,进行预约,等待医生确定接诊。确认后,可进行WebSocket实时聊天,支持发起语音、视频、文件、图片,详细说明自己的病情,医生会进行诊断开药。
(2)健康宣教模块:患者可通过健康宣教分类或关键字搜索健康宣教,查看健康宣教的文章,系统通过基于内容的推荐算法为患者推荐健康宣教。
(3)我的预约模块:患者可通过预约状态筛选预约订单,查看订单目前的状态。
(4)AI助手模块:AI助手可开展诊疗咨询、解答健康知识,能够帮助医护人员提高诊疗效率。
(5)健康检测模块:医生借助测仪器测量患者的血糖、血压、心率以及血氧饱和度等指标,患者可随时查看自己的历史的检测记录。
(6)个人中心模块:支持患者登录、注册,也支持用户修改个人基础信息、登录密码,以及完善患者健康资料。
2.2. 医生用例分析
(1)预约管理模块:医生可查看所有患者的预约记录,针对待确认的预约单,完成接诊确认或拒绝接诊。接诊后可以和患者实时聊天,了解病情并开展诊疗,完成开药。
(2)患者档案模块:医生能够查看所有患者的档案,涵盖患者的历史诊疗记录、随访记录以及血糖、血压、血氧和心率的相关检测记录。
(3)随访管理模块:医生为患者创建随访记录,开展线下随访,记录病情的恢复情况。
(4)健康测量模块:医生为患者检测血压、血糖、血氧饱和度和心率等指标,并做好相关数据的记录。
(5)健康宣教模块:医生可对健康宣教类的文章进行编辑、更新与维护。
(6)数据分析模块:对系统内的诊疗、健康检测、随访等各类医疗数据进行汇总分析,形成数据统计结果。
2.3. 管理员用例分析
(1)账号管理模块:管理员可对账号进行新增、删除、修改、查询和导出操作,也能完成密码重置。
(2)医生管理模块:管理员对医生的相关信息进行维护管理。
(3)预约管理模块:管理员能够查看患者与医生之间的全部预约记录。
(4)患者档案模块:管理员可以浏览患者的档案,包括历史诊疗情况、随访情况,以及血压、血糖、血氧和心率的相关记录。
(5)健康检测模块:管理员可查看医生为患者测量的血压、血糖、血氧饱和度和心率的各项记录。
(6)健康宣教模块:管理员维护健康宣教的分类,以及各类分类对应的宣教内容。
(7)知识库模块:专门为AI助手提供知识支撑的知识库。
(8)数据分析模块:对诊疗趋势、健康指标异常情况、预约状态分布和随访状态分布,进行数据的统计与分析。
三.系统实现(部分截图)
3.1 患者
3.1.1 首页

3.1.2 预约医生
患者在Doctors医生列表页面,可以通过医生姓名、所在科室进行筛选,通过POST请求访问/doctor/list接口,获取符合条件的医生列表。找到目标医生后,点击该医生的卡片就能进入DoctorDetail详情页面,页面会通过POST请求调用/doctor/findById接口,获取该医生的详细信息,方便患者全面了解医生情况。若患者确定预约,触发预约咨询事件,可跳转到AppointmentForm预约表单页面,患者需选择合适的预约时间,填写病情描述和备注信息,其中病情描述为必填项,通过POST请求提交至/doctorAppointment/addOrEdit接口。后端的DoctorAppointmentController控制器会将预约信息传递给DoctorAppointmentService进行数据存储,完成数据库添加操作后,前端会弹出提示"预约提交成功,请等待医生确认",同时跳转到"我的预约"页面。

3.1.3 健康宣教
健康宣教模块,为患者提供日常可用的健康科普内容。患者进入该模块页面后,前端会依据当前设置的筛选条件,向/healthArticle/list接口发送POST请求,请求中可附带分类Id、文章标题关键字等查询条件。后端控制器接收到请求后,会将其转交给对应的业务服务层,由服务层完成分页查询操作,并返回健康宣教文章的列表数据。前端获取到返回结果后,以列表形式展示出来,方便患者快速浏览筛选。当患者点击某一篇文章时,系统会进一步调用文章详情接口,获取文章正文内容并在详情页面呈现。

3.1.4 健康宣教详情
相关推荐为协同过滤算法。

3.1.4 我的预约
我的预约MyAppointments页面,会根据当前登录患者的Id信息,向/doctorAppointment/list接口发起POST请求,请求中会传递患者Id以及可选的预约状态筛选条件。后端的DoctorAppointmentController控制器会将该请求转交至DoctorAppointmentService进行处理,返回该患者的所有预约列表,列表中会包含医生信息等相关关联字段,方便患者查看。前端收到返回结果后,展示出患者的预约信息。针对"待确认"状态的预约,患者可点击"取消预约"按钮,系统会通过POST请求调用/doctorAppointment/cancel接口,将该预约状态更新为已取消,并同步刷新预约列表。处于已接诊状态的预约,患者可点击"咨询医生"按钮,系统会先调用/wechatCollection/insertWechatCollection接口,创建患者与对应医生的会话,会话创建完成后,自动跳转到weChatList聊天页面,患者可在此页面与医生进行咨询交流。

3.1.5 AI助手
在AiAssistant页面中,有会话列表和聊天界面两个部分,当用户输入咨询问题后,会通过POST方式向/aiChat/stream接口发起流式请求。后端的AiChatController控制器中,chatStream方法会先查找已有会话或创建新会话,并保存用户输入的消息,接着根据用户的问题去知识库中检索相关内容,并将这些内容整合到系统提示词里14。然后通过DeepSeekService调用大模型并采用流式返回方式,把生成的token以SSE事件message的形式推送给前端。前端读取响应流,按照"双换行"的规则拆分SSE事件,解析出事件类型和对应数据,将message事件的数据逐段添加到当前AI的回复中,并自动滚动到聊天界面底部。AI助手界面图如图5-1所示。

3.1.6 健康检测
健康检测模块主要供患者查看自己的个人健康监测数据,涵盖血压、血糖、血氧、心率这四类核心健康指标。患者进入健康检测页面后,前端会根据当前登录患者的Id,向/healthMonitor/overview、/healthMonitor/bloodPressureTrend等接口发送POST请求,获取健康概览、趋势及异常数据;后端控制器分发请求至服务层,服务层聚合统计后返回结果,前端可视化展示数据,异常数据同步提示。

3.1.7 个人中心
个人中心模块供患者维护个人及账号信。患者进入页面后,前端调用用户与患者档案相关接口,加载并展示个人资料;修改资料时,前端向用户信息及患者档案更新接口发送POST请求,后端服务层完成校验保存并返回结果,前端提示并刷新页面。此外,密码修改时,患者提交新旧密码,后端校验更新保障安全。

3.2 医生
3.2.1数据统计
数据分析模块帮助医生掌握诊疗与健康管理运行情况。医生进入后台首页后,前端向/dashboard/getData接口发送POST请求,获取各类统计数据;后端DashboardController调用DashboardService聚合统计,从相关业务表汇总结果并返回,前端渲染卡片、图表等展示数据。

3.2.2 预约管理
DoctorAppointmentList预约管理页面,通过POST请求访问/doctorAppointment/list接口,获取预约列表。针对处于"待确认"状态的预约,医生可直接点击"确认接诊"或"拒绝预约"按钮进行操作。点击"确认接诊"时,系统会调用/doctorAppointment/confirm接口,将该预约单状态更新为已接诊,同时自动生成就诊号;点击"拒绝预约"时,医生需填写拒绝原因,提交后系统通过/doctorAppointment/reject接口完成状态更新。对于"已接诊"状态的预约,医生可点击"完成预约"按钮,调用/doctorAppointment/complete接口,将预约状态修改为已完成。

3.2.3 当前就诊

3.2.4 患者档案
患者档案管理模块供医生查看维护患者档案。医生进入页面后,前端按查询条件向/patient/list接口发送POST请求。后端PatientController转交PatientService完成分页查询并返回档案列表。医生点击查看详情时,前端调用/patient/findById接口获取并展示患者信息。编辑档案时,前端通过/patient/addOrEdit接口提交数据,后端服务层校验保存后返回结果,前端提示并刷新列表。

3.2.5 诊疗记录

3.2.6 随访管理
FollowUpList随访管理页面,通过POST请求访问/followUp/list接口,实现随访记录列表显示15。当需要新增或编辑随访记录时,医生可在弹出的弹窗中,填写相关信息,填写完成提交后,系统会调用/followUp/addOrEdit接口,完成随访记录的保存或更新操作。新建的随访记录会将状态为待随访。医生线下完成随访工作后,可在随访列表中找到对应记录进行编辑,补充填写实际随访时间和实际随访记录,并将随访状态更新为已完成。

3.2.7 健康检测
医生可分别进入血压、血糖、血氧饱和度、心率四个专项测量管理页面,对应页面分别为BloodPressureList、BloodSugarList、BloodOxygenList、HeartRateList。每个页面都能通过对应的列表接口发起POST请求,实现测量记录的分页查询,比如血压页面调用/bloodPressure/list接口、血糖页面调用/bloodSugar/list接口,血氧和心率页面也对应调用各自的list接口。当需要新增或编辑某类健康指标的测量记录时,医生可在页面弹出的弹窗中进行操作,填写完成提交后,系统会调用对应指标的addOrEdit接口,比如血压调用/bloodPressure/addOrEdit接口,以此完成测量记录的保存或更新。后端分别由BloodPressureController、BloodSugarController、BloodOxygenController、HeartRateController四个控制器,对应处理相关请求,每个控制器都会将列表查询、记录新增、编辑及删除等操作,委托给各自对应的Service进行处理,通过这些Service完成数据的查询与增删改操作。

3.2.8 健康宣教文章
医生端健康宣教模块供医生发布维护科普内容。医生进入页面后,前端按条件向/healthArticle/list接口发送POST请求,后端HealthArticleController转交HealthArticleService查询并返回文章列表。新增/修改文章时,前端调用/healthArticle/addOrEdit接口提交数据,后端保存后返回结果。删除文章时,系统通过对应接口处理并刷新列表。文章分类通过/articleCategory/list接口获取,用于前端选择展示。

3.3 管理员
3.3.1 账号管理
账号管理页面,通过发送POST请求调用/sysUser/list接口,实现系统账号分页查询,管理员可按账号、姓名、邮箱等条件检索。新增或修改账号时,管理员在弹窗填写相关信息后,系统调用/sysUser/addOrEdit接口完成操作。对于已经存在的账号,管理员还可以执行删除和密码重置操作。后端的SysUserController控制器会统一交给SysUserService处理,实现系统账号的新增、删除、修改、查询等全部操作。

3.3.2 预约管理
预约管理模块对应 DoctorAppointmentList 页面。系统通过 POST 请求访问 /doctorAppointment/list 实现预约信息分页查询,支持按患者姓名、状态和时间段筛选。管理员查看详情时,前端调用 /doctorAppointment/findById 弹窗展示患者信息、时间、病情、备注及状态。待确认预约可调用 /doctorAppointment/confirm确认接诊或 /doctorAppointment/reject拒绝;已接诊可调用 /doctorAppointment/complete 完成。支持单条及批量删除,对应 /doctorAppointment/deleteById 和 /doctorAppointment/batchDeleteByIds。后端 DoctorAppointmentController 将业务统一交由 DoctorAppointmentService 处理。

3.3.3 患者档案
患者档案 PatientList 页面通过POST调用/patient/list 接口加载患者列表,支持按姓名、身份证号、联系电话查询。管理员新增或修改档案时提交/patient/addOrEdit 保存或更新;删除调用/patient/deleteById 或/patient/batchDeleteByIds 实现单条或批量删除。查看详情时联动调用 /medicalRecord/list、/followUp/list、/bloodPressure/list、/bloodSugar/list、/bloodOxygen/list、/heartRate/list 展示历史诊疗、随访及健康检测信息。后端 PatientController 将请求交由 PatientService 处理,服务层在增删改查外,还会在新增时同步创建系统用户账号并绑定,修改时同步更新用户信息,保证档案与账号数据一致。

3.3.4 诊疗记录

3.3.5 随访管理

3.3.6 血压测量
健康检测模块包含四个子页面:血压管理、血糖管理、血氧管理和心率管理,对应 BloodPressureList、BloodSugarList、BloodOxygenList、HeartRateList。各页面通过POST请求分别访问/bloodPressure/list、/bloodSugar/list、bloodOxygen/list、/heartRate/list 实现分页查询,支持按患者、录入人、检测时间及是否异常筛选。新增或编辑时弹窗填写指标后调用对应的/addOrEdit 接口保存或修改,支持单条和批量删除。前端根据预设阈值自动判断异常。后端 BloodPressureController、BloodSugarController、BloodOxygenController、HeartRateController 将请求交由各自 Service 层,完成数据查询、保存、删除及信息关联,形成完整功能。

3.3.7 健康宣教管理
健康宣教模块对应 HealthArticleList 页面,用于发布和管理文章。通过 POST 请求访问 /healthArticle/list 查询文章列表,支持按标题、分类、状态、发布人、时间及是否置顶筛选。管理员新增或修改时,在弹窗中填写标题、分类、封面、时间及正文,提交后调用 /healthArticle/addOrEdit 保存;回显通过 /healthArticle/findById 加载。支持单条及批量删除,对应 /healthArticle/deleteById 和 /healthArticle/batchDeleteByIds。后端 HealthArticleController 将请求交由 HealthArticleService 处理,服务层除增删改查外,还负责封装分类和发布人信息。

3.3.8 知识库
知识库管理KnowledgeBaseList页面,通过POST请求访/knowledgeBase/list接口,实现知识库的列表查询。当需要新增或编辑知识条目时,管理员可在页面弹出的弹窗中,填写知识库所需的内容,填写完成提交后,系统会调用对应/knowledgeBase/addOrEdit接口,完成知识的保存或修改操作。支持单条知识的删除操作和多条知识的批量删除操作。后端KnowledgeBaseController控制器会将相关操作,统一委托给KnowledgeBaseService进行处理,完成所有知识的增删改查操作。当患者使用AI助手发起咨询时,AiChatController控制器会通过KnowledgeBaseService的searchByQuestion方法,检索知识库中对应的问题与答案,将其整合到系统提示词中,供大模型优先参考。

3.3.9数据分析
数据分析界面,页面加载完成后,会自动向/dashboard/getData接口发起POST请求,一次性获取所有综合统计数据。后端的DashboardController控制器收到请求后,会将其转交给DashboardService的getDashboardData()方法进行处理,该方法会汇总各类统计数据。前端收到后端返回的所有数据后,会将这些数据分别与对应的数据展示组件进行绑定并渲染,实现所有关键数据的集中展示与数据分析呈现。

四.系统代码结构截图
4.1 前端

4.2 后端

4.3 数据库
19张

四.源码获取
1.原创系统非商用,非开源,非无偿。
2.项目有很多,并未全部上传,如果未找到想要的,可直接咨询。