传统纸质病历存在易丢失、难检索、不便长期跟踪等问题,难以满足个人对就医记录的精细化管理需求。本项目构建一套基于 Web 的个人就医管理系统,帮助用户电子化存储病历资料、分类管理就诊记录及附件,实现就医信息的集中化、规范化管理,提升个人健康数据的可追溯性与利用效率。
点击空白处退出提示
传统纸质病历存在易丢失、难检索、不便长期跟踪等问题,难以满足个人对就医记录的精细化管理需求。本项目构建一套基于 Web 的个人就医管理系统,帮助用户电子化存储病历资料、分类管理就诊记录及附件,实现就医信息的集中化、规范化管理,提升个人健康数据的可追溯性与利用效率。
本系统是一个基于 Web 的个人就医管理平台,主要包含以下三大功能模块:
一、用户认证模块
用户注册:支持填写用户名、密码、真实姓名、性别、出生日期、身份证号、手机号等信息完成注册
用户登录:通过用户名和密码登录,系统签发 JWT Token 用于后续接口鉴权
二、病历管理模块(核心功能)
病历查询:支持按关键词、医院、科室、医生、日期范围等多条件筛选,并提供分页查询
病历详情:查看单条病历的完整信息
新增病历:记录就诊日期、医院、科室、医生、诊断、症状、用药、备注、标签等
健康指标:支持记录血压(收缩压/舒张压)、心率、体重、血糖、体温等体征数据
编辑/删除病历:对已有病历进行修改或删除
附件管理:支持为病历上传、查看、删除附件(如检查报告、影像资料等,单文件限制 20MB)
下拉选项:提供医院、科室的下拉列表数据,方便录入
三、后台管理模块(管理员功能)
用户管理:管理员可查看、新增、编辑、删除用户,支持分配角色、启用/禁用账号、重置密码
角色管理:支持角色的增删改查,删除角色时校验是否存在关联用户,防止误删
患者列表:提供患者信息查询接口,便于管理员或医生查看
1. 认证与鉴权(JWT)
使用 JWT(JSON Web Token) 实现无状态认证,令牌有效期 7 天
登录时签发 Token,包含 userId、username、role 三个声明
通过 AuthInterceptor 拦截器拦截 /api/** 请求(排除 /api/auth/**),校验 Token 并将用户信息注入请求属性
下游 Controller 通过 req.getAttribute("_role") 判断角色,实现数据权限控制(患者只看自己的病历)
2. 密码安全
使用 BCrypt 加密存储密码(自带随机盐,防彩虹表攻击)
实现了从旧版 SHA-256 到 BCrypt 的平滑迁移:登录时若检测到 SHA-256 格式密码,自动升级为 BCrypt 并回写数据库
3. 数据初始化
DataInitializer 在应用启动时自动执行:
确保 user_roles 关联表存在(兼容旧版数据库)
初始化默认角色(ADMIN、PATIENT)
创建默认管理员账号(admin / admin123)
检查并升级旧版 SHA-256 密码
4. 文件上传
附件存储在服务器本地磁盘,文件名为 UUID + 原始扩展名(防冲突、防重名)
白名单校验文件类型,仅允许图片、PDF、Office 文档、TXT/CSV 等常见格式
通过 Spring 的静态资源映射,/uploads/** 路径可直接访问文件
5. 多条件搜索 + 分页
病历列表支持按关键词、医院、科室、医生、日期范围组合筛选
通过 MyBatis XML 动态 SQL 实现灵活查询
手动计算 offset 实现分页,返回 {records, total, page, size} 结构
6. 全局异常处理
GlobalExceptionHandler 统一捕获并格式化异常响应:BizException




评论