🔥【Java 圈顶流大神!】CSDN 博客专家 + 阿里云专家双 buff 叠满!公司资深架构师亲驻!全网狂揽 5 万 + 死忠粉!专注 Java 技术深耕 + 毕业设计实战落地,高校老师 / 讲师 / 同行看过来 —— 这波合作绝对让你直呼 “捡到宝”!
💥【毕设救星!告别烂大街模板!】
不管你是卡壳的 Javaweb 项目、难啃的小程序开发,还是 Python 数据可视化、SSM/SpringBoot 框架搭建,甚至 Vue/HTML/Jsp/PHP 全栈需求,咱全是纯手写高含金量代码!拒绝千篇一律的 “僵尸模板”,每一行代码都适配学生学习逻辑,二次开发轻松上手,答辩时导师都得夸你 “功底扎实”!
📚【学习 & 求职硬核资源库炸了!】
简历模板直接给你 “面试加分款”!学习资料覆盖从入门到精通全阶段,面试题库更是刷完就能 “手撕面试官”!技术咨询秒回不拖沓,文档编写 / 论文降重直接给你 “学术级优化”,长期答辩答疑辅导更是全程护航 —— 哪怕你是 “答辩小白”,经咱腾讯会议一对一精讲,也能变身 “答辩王者”,轻松 hold 住全场!
⚠️ 别划走!文末联系方式赶紧存!
这波资源错过绝对拍大腿!先收藏!先收藏!先收藏!(重要的事说三遍)不管是毕设选题卡壳、文档写不下去,还是代码 bug 卡到崩溃,随时来问!
🌟 想瞅更多神仙案例?翻主页!
项目全是 “定制级水准”,不管是学习提升还是毕设通关,跟着李小陆工作室,绝对让你在同学里 “卷” 出重围,求职时 “赢在起跑线”!
获取项目源码,请关注❤点赞收藏并私信博主,谢谢-
1. 引言
1.1 编写目的
本文档是智慧医养大数据公共服务平台个人健康档案系统的软件需求规约说明书。本文档详细描述了系统的功能需求、性能需求、设计约束以及质量属性等内容,为系统的设计、开发、测试和验收提供依据。
**预期读者**:
- 项目经理: 了解项目范围和功能需求
- 系统分析师: 进行系统设计
- 开发人员: 进行系统开发
- 测试人员: 编写测试用例
- 客户/用户: 确认需求符合预期
1.2 项目背景
1.2.1 项目背景说明
随着我国人口老龄化趋势加剧和居民健康意识的提升,个人健康管理需求日益增长。传统的纸质健康档案管理方式存在以下问题:
本项目旨在构建一个集健康档案管理、智能健康分析、健康科普、数据导入导出于一体的综合性健康管理平台,为用户、医护人员、健康管理师提供便捷的健康管理工具。
1.2.2 项目目标
- 建立统一的个人健康档案管理平台
- 实现多角色协同的健康管理模式
- 提供智能化的健康风险评估和分析
- 促进健康知识科普和传播
- 支持多种格式的数据导入导出
1.3 定义、首字母缩写词和缩略语
|
术语 |
定义/说明 |
|
PHR |
Personal Health Record,个人健康档案 |
|
EHR |
Electronic Health Record,电子健康档案 |
|
BMI |
Body Mass Index,身体质量指数 |
|
收缩压 |
Systolic Blood Pressure,血压的高压值 |
|
舒张压 |
Diastolic Blood Pressure,血压的低压值 |
|
RESTful API |
符合REST架构风格的Web API |
|
RBAC |
Role-Based Access Control,基于角色的访问控制 |
1.4 参考资料
1.5 文档概述
本文档共分为4个主要部分:
- **第1章 引言**: 说明文档编写目的、项目背景、术语定义等
- **第2章 综合描述**: 描述产品前景、主要功能、用户特征和约束条件
- **第3章 详细需求描述**: 详细说明系统的功能需求、性能需求、数据库需求等
- **第4章 附录**: 提供用例图、流程图、数据字典等辅助资料
__________________________________________________
2. 综合描述
2.1 产品前景
2.1.1 业务需求
**BR1: 个人健康档案管理**
用户需要一个统一的平台来管理所有健康相关信息,包括体检报告、病历记录、运动饮食数据等,并能够长期追踪健康状态变化。
**BR2: 智能健康分析**
系统需要根据用户的健康数据自动进行风险评估,提供科学的健康建议,帮助用户及时发现潜在健康问题。
**BR3: 专业医疗支持**
医护人员和健康管理师需要便捷的工具来查看和管理患者/客户的健康信息,提供专业的健康指导服务。
**BR4: 健康知识获取**
用户需要便捷地获取权威、可靠的健康知识,提升健康素养。
**BR5: 健康数据互通**
支持从其他系统导入健康数据,打破数据孤岛,实现数据的互联互通。
2.1.2 业务机会
2.1.3 业务目标和成功标准
|
业务目标 |
成功标准 |
时间框架 |
|
用户规模 |
注册用户数达到10万+ |
上线后12个月 |
|
用户活跃度 |
月活跃用户(MAU)达到3万+ |
上线后12个月 |
|
数据规模 |
健康档案记录数达到100万+ |
上线后12个月 |
|
用户满意度 |
用户满意度评分≥4.5分(满分5分) |
持续监测 |
|
系统可用性 |
系统可用率≥99.5% |
持续监测 |
2.2 产品功能
系统主要包含以下功能模块:
2.2.1 功能模块概览

功能模块架构图
2.2.2 核心功能说明
**F1. 用户管理**
- 支持用户注册、登录、找回密码
- 多角色管理:普通用户、医护人员、健康管理师、系统管理员
- 个人信息完善:基本信息、医疗信息、紧急联系等
- 医护人员专属信息:职称、执业证书、所属机构等
**F2. 健康档案管理**
- 体检报告录入和管理
- 支持血压、血糖、血脂、尿酸等多项指标
- 健康档案历史记录,支持版本追溯
- 档案权限控制,保护用户隐私
**F3. 智能健康分析**
- 自动分析最新健康数据
- 多维度评分:血压、血糖、血脂、尿酸
- 风险等级判定:低危、中危、高危
- 生成个性化健康建议
**F4. 生活方式管理**
- 饮食记录:记录三餐及加餐,计算营养成分
- 运动记录:记录运动项目、时长、强度、消耗卡路里
- 数据统计和趋势分析
**F5. 健康科普**
- 权威健康知识文章发布
- 支持图文并茂的内容展示
- 用户可浏览、收藏、讨论科普内容
- 浏览量统计和热门文章推荐
**F6. 数据导入**
- 支持Excel批量导入健康数据
- 支持JSON格式数据导入
- 提供标准模板下载
- 导入记录追踪和错误日志
2.3 用户特征
2.3.1 用户角色
本系统服务于以下四类用户:
**角色1: 普通用户**
- 人员数量: 主要用户群体,预计占比90%+
- 年龄范围: 18-80岁
- 技术水平: 基本的计算机和手机操作能力
- 教育背景: 初中及以上
- 职业背景: 各行各业
- 主要需求:
- 记录和管理个人健康数据
- 查看健康分析报告
- 获取健康知识
- 与他人交流健康经验
**角色2: 医护人员**
- 人员数量: 预计占比5-8%
- 年龄范围: 25-60岁
- 技术水平: 熟练使用各类医疗信息系统
- 教育背景: 医学专业本科及以上
- 职业背景: 医生、护士等
- 主要需求:
- 查看和管理患者健康档案
- 提供专业医疗建议
- 远程健康咨询
- 健康数据分析
**角色3: 健康管理师**
- 人员数量: 预计占比2-3%
- 年龄范围: 25-55岁
- 技术水平: 熟练使用各类管理系统
- 教育背景: 营养学、护理学、公共卫生等专业
- 职业背景: 健康管理机构从业人员
- 主要需求:
- 管理客户健康档案
- 制定健康管理方案
- 跟踪健康改善进度
- 提供健康指导服务
**角色4: 系统管理员**
- 人员数量: 少量,1-3人
- 年龄范围: 25-45岁
- 技术水平: 精通系统管理和运维
- 教育背景: 计算机相关专业
- 职业背景: IT运维人员
- 主要需求:
- 系统配置和维护
- 用户权限管理
- 数据安全管理
- 系统监控和优化
2.3.2 用户使用场景
**场景1: 用户记录体检报告**
张女士今年45岁,刚做完年度体检。她登录系统,点击"体检报告管理",录入体检编号、体检时间、血压、血糖、血脂等指标,并上传体检报告文件。系统自动分析这些数据并生成健康分析报告。
**场景2: 用户查看健康趋势**
李先生想了解自己近半年的血压变化趋势。他进入"健康分析"模块,查看血压趋势图表,发现血压有上升趋势,系统建议他控制饮食、增加运动,并预约医生进行复查。
**场景3: 医生远程查看患者健康档案**
王医生的患者赵先生因工作原因无法到医院复诊。王医生通过系统查看赵先生的最新健康档案,包括最近的血糖监测数据和用药记录,然后通过系统给出调整用药的建议。
**场景4: 健康管理师批量导入客户数据**
健康管理师小刘服务的社区进行了集体体检,她收到了包含100位居民体检数据的Excel文件。她登录系统,选择"数据导入",上传Excel文件,系统自动解析并导入所有体检数据,节省了大量手工录入时间。
2.4 约束条件
2.4.1 技术约束
**TC1: 开发技术栈**
- 后端必须使用Spring Boot框架
- 前端必须使用Vue.js框架
- 数据库使用MySQL
**TC2: 兼容性要求**
- 支持主流浏览器:Chrome、Firefox、Edge、Safari
- 支持PC端和移动端访问
- 兼容Windows、Mac、Linux操作系统
**TC3: 第三方服务依赖**
- 地图服务依赖高德地图API
**TC4: 开发环境**
- Java 8+
- Node.js 12+
- MySQL 8.0+
2.4.2 业务约束
**BC1: 法规遵从**
- 符合《网络安全法》
- 符合《数据安全法》
- 符合《个人信息保护法》
- 符合《医疗健康数据安全管理规范》
**BC2: 数据隐私**
- 健康数据加密存储
- 严格的访问权限控制
- 数据不得用于商业用途(用户授权除外)
- 用户有权删除个人数据
**BC3: 医疗免责**
- 系统提供的健康建议仅供参考
- 不能替代医生的专业诊断
- 需明确免责声明
2.4.3 运营约束
**OC1: 成本约束**
- 项目总预算:30万元
- 服务器成本:2万元/年
- AI API调用成本:1万元/年
**OC2: 时间约束**
- 项目开发周期:6个月
- 第一版上线时间:2025年6月
**OC3: 人员约束**
- 开发团队:5-8人
- 运维团队:1-2人
2.5 假设和依赖关系
2.5.1 假设
**A1: 用户假设**
- 假设用户具备基本的计算机/手机操作能力
- 假设用户能够准确录入健康数据
- 假设用户愿意长期使用系统记录健康数据
**A2: 技术假设**
- 假设第三方API服务稳定可靠
- 假设网络环境良好,支持实时数据传输
- 假设服务器资源充足,能够支撑用户增长
**A3: 数据假设**
- 假设用户提供的健康数据真实有效
- 假设导入的外部数据格式规范
- 假设医疗知识库数据准确权威
2.5.2 依赖关系
**D1: 外部依赖**
- 依赖高德地图API提供地图服务
- 依赖第三方短信服务商提供验证码服务
**D2: 内部依赖**
- 健康分析功能依赖体检报告数据
- 风险评估功能依赖完整的用户健康档案
**D3: 数据依赖**
- 依赖标准的医疗术语和编码体系
- 依赖权威的健康参考标准(如血压、血糖正常值范围)
__________________________________________________
3. 详细需求描述
3.1 功能需求
3.1.1 用户管理模块
**FR1.1 用户注册**
- **功能描述**: 新用户可以通过系统注册账号
- **输入**: 手机号、验证码、密码
- **处理**: 验证手机号唯一性,验证码正确性,密码强度检查
- **输出**: 注册成功/失败提示
- **前置条件**: 手机号未被注册
- **后置条件**: 创建用户账号,初始化用户信息
- **优先级**: 高
**FR1.2 用户登录**
- **功能描述**: 已注册用户可以登录系统
- **输入**: 账号、密码或手机号、验证码
- **处理**: 验证账号密码/验证码,生成Token
- **输出**: 登录成功跳转首页/登录失败提示
- **前置条件**: 用户已注册
- **后置条件**: 用户处于登录状态,获得访问权限
- **优先级**: 高
**用例图**

图2-1 系统用例图
**FR1.3 个人信息管理**
- **功能描述**: 用户可以查看和编辑个人信息
- **输入**: 姓名、性别、生日、身高、体重、联系方式等
- **处理**: 数据验证,更新数据库
- **输出**: 保存成功/失败提示
- **前置条件**: 用户已登录
- **后置条件**: 个人信息已更新
- **优先级**: 高
**FR1.4 角色权限管理**
- **功能描述**: 系统根据用户角色分配不同权限
- **角色类型**:
- 普通用户:管理自己的健康档案
- 医护人员:查看和管理患者健康档案
- 健康管理师:管理客户健康档案,制定健康方案
- 系统管理员:管理所有用户和系统配置
- **处理**: 基于RBAC的权限控制
- **优先级**: 高
**用户信息字段表**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
用户ID |
Long |
是 |
主键,自增 |
|
yonghuzhanghao |
用户账号 |
String(50) |
是 |
唯一 |
|
mima |
密码 |
String(100) |
是 |
MD5加密 |
|
yonghuxingming |
用户姓名 |
String(50) |
是 |
|
|
role |
角色 |
String(20) |
是 |
用户/医护人员/健康管理师/管理员 |
|
touxiang |
头像 |
String(200) |
否 |
图片URL |
|
xingbie |
性别 |
String(10) |
否 |
男/女 |
|
shoujihaoma |
手机号码 |
String(20) |
否 |
|
|
birthday |
生日 |
Date |
否 |
|
|
age |
年龄 |
Integer |
否 |
|
|
idcard |
身份证号 |
String(20) |
否 |
|
|
address |
地址 |
String(200) |
否 |
|
|
emergencyContact |
紧急联系人 |
String(50) |
否 |
|
|
emergencyPhone |
紧急联系电话 |
String(20) |
否 |
|
|
medicalHistory |
既往病史 |
Text |
否 |
|
|
familyHistory |
家族病史 |
Text |
否 |
|
|
allergyHistory |
过敏史 |
Text |
否 |
|
|
medicationHistory |
用药史 |
Text |
否 |
|
|
bloodType |
血型 |
String(10) |
否 |
A型/B型/AB型/O型 |
|
height |
身高(cm) |
Decimal(5,2) |
否 |
|
|
weight |
体重(kg) |
Decimal(5,2) |
否 |
|
|
bmi |
BMI |
Decimal(5,2) |
否 |
自动计算 |
|
professionalTitle |
职称 |
String(50) |
否 |
医护人员/管理师专用 |
|
licenseNumber |
执业证书号 |
String(50) |
否 |
医护人员/管理师专用 |
|
organization |
所属机构 |
String(100) |
否 |
医护人员/管理师专用 |
|
department |
科室/部门 |
String(50) |
否 |
医护人员/管理师专用 |
|
specialty |
专业领域 |
String(100) |
否 |
医护人员/管理师专用 |
|
workYears |
从业年限 |
Integer |
否 |
医护人员/管理师专用 |
|
profile |
个人简介 |
Text |
否 |
医护人员/管理师专用 |
|
addtime |
注册时间 |
DateTime |
是 |
自动生成 |
3.1.2 健康档案管理模块
**FR2.1 体检报告管理**
**FR2.1.1 添加体检报告**
- **功能描述**: 用户可以录入体检报告信息
- **输入**: 体检编号、体检项目、体检时间、血压、血糖、血脂、尿酸、报告文件等
- **处理**: 数据验证,文件上传,保存数据库
- **输出**: 保存成功/失败提示
- **前置条件**: 用户已登录
- **后置条件**: 体检报告已保存
- **优先级**: 高
**FR2.1.2 查看体检报告**
- **功能描述**: 用户可以查看自己的体检报告列表和详情
- **输入**: 查询条件(时间范围、体检项目等)
- **处理**: 从数据库查询数据,分页展示
- **输出**: 体检报告列表和详情
- **前置条件**: 用户已登录
- **后置条件**: 无
- **优先级**: 高
**FR2.1.3 编辑体检报告**
- **功能描述**: 用户可以修改体检报告信息
- **输入**: 修改后的体检报告数据
- **处理**: 数据验证,记录修改历史,更新数据库
- **输出**: 修改成功/失败提示
- **前置条件**: 用户已登录,报告存在
- **后置条件**: 体检报告已更新,历史记录已保存
- **优先级**: 中
**FR2.1.4 删除体检报告**
- **功能描述**: 用户可以删除体检报告
- **输入**: 体检报告ID
- **处理**: 软删除,记录删除历史
- **输出**: 删除成功/失败提示
- **前置条件**: 用户已登录,报告存在
- **后置条件**: 体检报告标记为已删除
- **优先级**: 低
**体检报告字段表**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
报告ID |
Long |
是 |
主键,自增 |
|
tijianbianhao |
体检编号 |
String(50) |
是 |
|
|
tijianxiangmu |
体检项目 |
String(200) |
是 |
|
|
tijianshijian |
体检时间 |
Date |
是 |
|
|
shoushuoya |
收缩压(高压) |
String(20) |
否 |
mmHg |
|
shuzhangya |
舒张压(低压) |
String(20) |
否 |
mmHg |
|
xuetang |
血糖 |
String(20) |
否 |
mmol/L |
|
xuezhi |
血脂 |
String(20) |
否 |
mmol/L |
|
niaosuan |
尿酸 |
String(20) |
否 |
μmol/L |
|
baogaowenjian |
报告文件 |
String(200) |
否 |
文件URL |
|
beizhu |
备注 |
Text |
否 |
|
|
yonghuxingming |
用户姓名 |
String(50) |
是 |
|
|
yonghuzhanghao |
用户账号 |
String(50) |
是 |
|
|
userid |
用户ID |
Long |
是 |
外键 |
|
addtime |
创建时间 |
DateTime |
是 |
自动生成 |
**FR2.2 健康档案历史记录**
- **功能描述**: 系统自动记录健康档案的所有修改历史
- **记录内容**: 表名、记录ID、操作类型、操作人信息、旧数据、新数据、变更字段、IP地址、时间
- **用途**: 数据追溯、审计、数据恢复
- **优先级**: 高
**健康档案历史字段表**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
历史记录ID |
Long |
是 |
主键,自增 |
|
tableName |
表名 |
String(50) |
是 |
|
|
recordId |
记录ID |
Long |
是 |
|
|
userId |
用户ID |
Long |
是 |
|
|
operationType |
操作类型 |
String(20) |
是 |
INSERT/UPDATE/DELETE |
|
operatorId |
操作人ID |
Long |
是 |
|
|
operatorName |
操作人姓名 |
String(50) |
是 |
|
|
operatorRole |
操作人角色 |
String(20) |
是 |
|
|
oldData |
旧数据 |
Text |
否 |
JSON格式 |
|
newData |
新数据 |
Text |
否 |
JSON格式 |
|
changeFields |
变更字段 |
String(500) |
否 |
逗号分隔 |
|
ipAddress |
IP地址 |
String(50) |
否 |
|
|
addtime |
操作时间 |
DateTime |
是 |
自动生成 |
3.1.3 健康分析模块
**FR3.1 健康分析**
**FR3.1.1 生成健康分析报告**
- **功能描述**: 系统根据用户最新的体检数据自动生成健康分析报告
- **输入**: 用户ID
- **处理**:
- **输出**: 健康分析报告
- **前置条件**: 用户有体检数据
- **后置条件**: 保存分析报告
- **优先级**: 高
**健康分析流程图**

图3-1 健康分析业务流程图
**评分标准**
血压评分标准:
|
收缩压(mmHg) |
舒张压(mmHg) |
评分 |
评估结果 |
|
<120 |
<80 |
100 |
理想血压 |
|
120-129 |
80-84 |
85 |
正常血压 |
|
130-139 |
85-89 |
70 |
正常高值 |
|
140-159 |
90-99 |
50 |
1级高血压 |
|
160-179 |
100-109 |
30 |
2级高血压 |
|
≥180 |
≥110 |
10 |
3级高血压 |
血糖评分标准:
|
空腹血糖(mmol/L) |
评分 |
评估结果 |
|
<6.1 |
100 |
正常 |
|
6.1-6.9 |
70 |
空腹血糖受损 |
|
7.0-8.0 |
50 |
糖尿病(轻度) |
|
8.1-10.0 |
30 |
糖尿病(中度) |
|
>10.0 |
10 |
糖尿病(重度) |
血脂评分标准:
|
总胆固醇(mmol/L) |
评分 |
评估结果 |
|
<5.2 |
100 |
正常 |
|
5.2-6.2 |
70 |
边缘升高 |
|
6.2-7.2 |
50 |
升高 |
|
>7.2 |
30 |
严重升高 |
尿酸评分标准:
|
尿酸(μmol/L) |
性别 |
评分 |
评估结果 |
|
<420 |
男 |
100 |
正常 |
|
<360 |
女 |
100 |
正常 |
|
420-540 |
男 |
60 |
升高 |
|
360-480 |
女 |
60 |
升高 |
|
>540 |
男 |
20 |
严重升高 |
|
>480 |
女 |
20 |
严重升高 |
风险等级判定:
|
综合评分 |
风险等级 |
|
90-100 |
低危 |
|
70-89 |
中危 |
|
<70 |
高危 |
**健康分析字段表**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
分析ID |
Long |
是 |
主键,自增 |
|
yonghuzhanghao |
用户账号 |
String(50) |
是 |
|
|
yonghuxingming |
用户姓名 |
String(50) |
是 |
|
|
jiankangqingkuang |
健康情况 |
Text |
是 |
|
|
fengxianDengji |
风险等级 |
String(20) |
是 |
低危/中危/高危 |
|
xueyaPinggu |
血压评估结果 |
String(100) |
否 |
|
|
xuetangPinggu |
血糖评估结果 |
String(100) |
否 |
|
|
xuezhiPinggu |
血脂评估结果 |
String(100) |
否 |
|
|
niaosuanPinggu |
尿酸评估结果 |
String(100) |
否 |
|
|
zonghePingfen |
综合评分 |
Integer |
是 |
0-100 |
|
fenxishijian |
分析时间 |
DateTime |
是 |
|
|
jiankangfenxi |
健康分析详情 |
Text |
是 |
|
|
jiankangJianyi |
健康建议 |
Text |
是 |
|
|
shujuLaiyuan |
数据来源 |
String(100) |
否 |
|
|
userid |
用户ID |
Long |
是 |
外键 |
|
addtime |
创建时间 |
DateTime |
是 |
自动生成 |
**FR3.2 健康风险评估**
- **功能描述**: 对用户健康状况进行多维度风险评估
- **评估维度**: 血压、血糖、血脂、尿酸
- **输出**: 各维度评分、总评分、风险等级、风险因素列表、健康建议
- **优先级**: 高
**健康风险评估字段表**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
评估ID |
Long |
是 |
主键,自增 |
|
userId |
用户ID |
Long |
是 |
外键 |
|
yonghuzhanghao |
用户账号 |
String(50) |
是 |
|
|
yonghuxingming |
用户姓名 |
String(50) |
是 |
|
|
age |
年龄 |
Integer |
是 |
|
|
gender |
性别 |
String(10) |
是 |
|
|
bloodPressureScore |
血压评分 |
Decimal(5,2) |
否 |
|
|
bloodSugarScore |
血糖评分 |
Decimal(5,2) |
否 |
|
|
bloodLipidScore |
血脂评分 |
Decimal(5,2) |
否 |
|
|
uricAcidScore |
尿酸评分 |
Decimal(5,2) |
否 |
|
|
totalScore |
总评分 |
Decimal(5,2) |
是 |
|
|
riskLevel |
风险等级 |
String(20) |
是 |
低危/中危/高危 |
|
riskFactors |
风险因素列表 |
Text |
否 |
JSON格式 |
|
suggestions |
健康建议 |
Text |
是 |
|
|
assessmentTime |
评估时间 |
DateTime |
是 |
|
|
assessorId |
评估人ID |
Long |
否 |
|
|
addtime |
创建时间 |
DateTime |
是 |
自动生成 |
3.1.4 生活方式管理模块
**FR4.1 饮食记录管理**
**FR4.1.1 添加饮食记录**
- **功能描述**: 用户可以记录每日饮食
- **输入**: 饮食类型、餐次、饮食详情、营养成分、记录日期、备注
- **处理**: 数据验证,保存数据库
- **输出**: 保存成功/失败提示
- **前置条件**: 用户已登录
- **后置条件**: 饮食记录已保存
- **优先级**: 中
**FR4.1.2 查看饮食记录**
- **功能描述**: 用户可以查看饮食记录列表和统计
- **输入**: 查询条件(时间范围、餐次等)
- **处理**: 从数据库查询数据,计算营养汇总
- **输出**: 饮食记录列表和营养统计图表
- **前置条件**: 用户已登录
- **后置条件**: 无
- **优先级**: 中
**饮食记录字段表**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
记录ID |
Long |
是 |
主键,自增 |
|
yonghuzhanghao |
用户账号 |
String(50) |
是 |
|
|
yonghuxingming |
用户姓名 |
String(50) |
是 |
|
|
yinshileixing |
饮食类型 |
String(50) |
是 |
|
|
canci |
餐次 |
String(20) |
是 |
早餐/午餐/晚餐/加餐 |
|
yinshijilu |
饮食记录 |
Text |
是 |
|
|
kaluli |
卡路里(千卡) |
Decimal(6,2) |
否 |
|
|
danbai |
蛋白质(克) |
Decimal(6,2) |
否 |
|
|
zhifang |
脂肪(克) |
Decimal(6,2) |
否 |
|
|
tanshui |
碳水化合物(克) |
Decimal(6,2) |
否 |
|
|
jiluriqi |
记录日期 |
Date |
是 |
|
|
beizhu |
备注 |
Text |
否 |
|
|
userid |
用户ID |
Long |
是 |
外键 |
|
addtime |
创建时间 |
DateTime |
是 |
自动生成 |
**FR4.2 运动记录管理**
**FR4.2.1 添加运动记录**
- **功能描述**: 用户可以记录运动情况
- **输入**: 运动项目、运动时长、运动内容、消耗卡路里、运动强度、平均心率、打卡日期
- **处理**: 数据验证,保存数据库
- **输出**: 保存成功/失败提示
- **前置条件**: 用户已登录
- **后置条件**: 运动记录已保存
- **优先级**: 中
**FR4.2.2 查看运动记录**
- **功能描述**: 用户可以查看运动记录列表和统计
- **输入**: 查询条件(时间范围、运动项目等)
- **处理**: 从数据库查询数据,计算运动汇总
- **输出**: 运动记录列表和运动统计图表
- **前置条件**: 用户已登录
- **后置条件**: 无
- **优先级**: 中
**运动记录字段表**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
记录ID |
Long |
是 |
主键,自增 |
|
yundongxiangmu |
运动项目 |
String(100) |
是 |
|
|
yundongshizhang |
运动时长 |
String(50) |
是 |
|
|
yundongneirong |
运动内容 |
Text |
是 |
|
|
xiaohaoKaluli |
消耗卡路里(千卡) |
Integer |
否 |
|
|
yundongQiangdu |
运动强度 |
String(20) |
否 |
低/中/高 |
|
xinlv |
平均心率(次/分) |
Integer |
否 |
|
|
dakariqi |
打卡日期 |
Date |
是 |
|
|
yonghuzhanghao |
用户账号 |
String(50) |
是 |
|
|
yonghuxingming |
用户姓名 |
String(50) |
是 |
|
|
userid |
用户ID |
Long |
是 |
外键 |
|
addtime |
创建时间 |
DateTime |
是 |
自动生成 |
3.1.5 健康科普模块
**FR7.1 科普文章管理**
**FR7.1.1 发布科普文章**
- **功能描述**: 管理员/医护人员可以发布健康科普文章
- **输入**: 标题、图片、知识简介、科普内容
- **处理**: 数据验证,保存数据库
- **输出**: 发布成功/失败提示
- **前置条件**: 用户已登录且有发布权限
- **后置条件**: 科普文章已发布
- **优先级**: 中
**FR7.1.2 浏览科普文章**
- **功能描述**: 所有用户可以浏览健康科普文章
- **输入**: 查询条件(分类、关键词)
- **处理**: 从数据库查询,更新浏览量
- **输出**: 文章列表和详情
- **前置条件**: 无
- **后置条件**: 浏览量+1
- **优先级**: 中
**FR7.1.3 收藏文章**
- **功能描述**: 用户可以收藏感兴趣的科普文章
- **输入**: 文章ID
- **处理**: 保存收藏记录
- **输出**: 收藏成功提示
- **前置条件**: 用户已登录
- **后置条件**: 收藏记录已保存
- **优先级**: 低
**科普文章字段表**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
文章ID |
Long |
是 |
主键,自增 |
|
biaoti |
标题 |
String(200) |
是 |
|
|
tupian |
图片 |
String(200) |
否 |
图片URL |
|
zhishijianjie |
知识简介 |
Text |
是 |
|
|
kepuneirong |
科普内容 |
Text |
是 |
富文本 |
|
faburiqi |
发布日期 |
DateTime |
是 |
|
|
clicktime |
最近点击时间 |
DateTime |
否 |
|
|
clicknum |
浏览量 |
Integer |
否 |
默认0 |
|
addtime |
创建时间 |
DateTime |
是 |
自动生成 |
3.1.6 数据导入导出模块
**FR6.1 数据导入**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
帖子ID |
Long |
是 |
主键,自增 |
|
title |
帖子标题 |
String(200) |
否 |
主帖子有标题 |
|
content |
帖子内容 |
Text |
是 |
|
|
parentid |
父节点ID |
Long |
否 |
回复帖子有父ID |
|
userid |
用户ID |
Long |
是 |
外键 |
|
username |
用户名 |
String(50) |
是 |
|
|
avatarurl |
头像 |
String(200) |
否 |
|
|
isdone |
状态 |
String(20) |
是 |
开放/关闭 |
|
addtime |
发布时间 |
DateTime |
是 |
自动生成 |
**FR6.1.1 Excel数据导入**
- **功能描述**: 用户可以通过Excel批量导入健康数据
- **支持数据类型**: 运动记录、饮食记录、体检报告
- **输入**: Excel文件、数据类型、目标用户ID(可选)
- **处理**:
- **输出**: 成功数量、失败数量、错误日志
- **前置条件**: 用户已登录
- **后置条件**: 数据已导入,导入记录已保存
- **优先级**: 高
**权限规则**:
- 普通用户: 只能导入到自己的账户
- 医护人员/健康管理师: 可以选择目标用户导入
- 管理员: 必须选择目标用户导入
**FR6.1.2 JSON数据导入**
- **功能描述**: 支持通过API接口导入JSON格式数据
- **输入**: JSON数据、数据类型、目标用户ID(可选)
- **处理**: 与Excel导入类似
- **输出**: 成功数量、失败数量
- **前置条件**: 用户已登录
- **后置条件**: 数据已导入,导入记录已保存
- **优先级**: 中
**FR6.1.3 下载导入模板**
- **功能描述**: 提供标准格式的导入模板下载
- **输入**: 数据类型
- **处理**: 生成Excel模板文件
- **输出**: Excel文件下载
- **前置条件**: 用户已登录
- **后置条件**: 无
- **优先级**: 中
**数据导入记录字段表**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
记录ID |
Long |
是 |
主键,自增 |
|
userId |
目标用户ID |
Long |
是 |
导入到哪个用户 |
|
sourceSystem |
来源系统 |
String(50) |
是 |
excel/json/api |
|
dataType |
数据类型 |
String(50) |
是 |
运动/饮食/体检 |
|
importMethod |
导入方式 |
String(20) |
是 |
file/api |
|
fileName |
文件名 |
String(200) |
否 |
|
|
fileType |
文件类型 |
String(20) |
否 |
excel/json |
|
totalRecords |
总记录数 |
Integer |
否 |
|
|
successRecords |
成功记录数 |
Integer |
否 |
|
|
failedRecords |
失败记录数 |
Integer |
否 |
|
|
errorLog |
错误日志 |
Text |
否 |
|
|
status |
状态 |
String(20) |
是 |
processing/success/partial/failed |
|
operatorId |
操作人ID |
Long |
是 |
|
|
operatorName |
操作人姓名 |
String(50) |
是 |
|
|
importTime |
导入时间 |
DateTime |
是 |
|
|
addtime |
创建时间 |
DateTime |
是 |
自动生成 |
**FR6.2 数据导出**
**FR6.2.1 健康档案导出**
- **功能描述**: 用户可以导出自己的健康档案数据
- **输入**: 导出范围(时间范围、数据类型)
- **处理**: 查询数据,生成Excel文件
- **输出**: Excel文件下载
- **前置条件**: 用户已登录
- **后置条件**: 无
- **优先级**: 中
3.1.7 系统管理模块
**FR7.1 权限管理**
**FR7.1.1 角色管理**
- **功能描述**: 管理员可以定义和管理角色
- **输入**: 角色名称、角色描述、权限配置
- **处理**: 保存角色信息和权限关系
- **输出**: 保存成功/失败提示
- **前置条件**: 管理员已登录
- **后置条件**: 角色信息已保存
- **优先级**: 高
**FR7.1.2 菜单管理**
- **功能描述**: 管理员可以配置系统菜单和功能
- **输入**: 菜单名称、路径、图标、父菜单、排序
- **处理**: 保存菜单信息
- **输出**: 保存成功/失败提示
- **前置条件**: 管理员已登录
- **后置条件**: 菜单信息已保存
- **优先级**: 中
**FR7.1.3 用户授权**
- **功能描述**: 管理员可以为用户分配角色和权限
- **输入**: 用户ID、角色列表
- **处理**: 保存用户角色关系
- **输出**: 授权成功/失败提示
- **前置条件**: 管理员已登录
- **后置条件**: 用户权限已更新
- **优先级**: 高
**FR7.2 操作日志**
- **功能描述**: 系统自动记录用户的所有操作
- **记录内容**: 操作类型、操作表、操作内容、操作时间、IP地址、用户信息
- **用途**: 审计、追溯、安全监控
- **优先级**: 高
**操作日志字段表**
|
字段名 |
字段说明 |
数据类型 |
必填 |
备注 |
|
id |
日志ID |
Long |
是 |
主键,自增 |
|
userId |
用户ID |
Long |
是 |
|
|
username |
用户名 |
String(50) |
是 |
|
|
role |
角色 |
String(20) |
是 |
|
|
operationType |
操作类型 |
String(50) |
是 |
增删改查 |
|
tableName |
操作表 |
String(50) |
是 |
|
|
recordId |
记录ID |
Long |
否 |
|
|
operationContent |
操作内容 |
Text |
否 |
|
|
ipAddress |
IP地址 |
String(50) |
是 |
|
|
operationTime |
操作时间 |
DateTime |
是 |
|
|
addtime |
创建时间 |
DateTime |
是 |
自动生成 |
**FR7.3 系统配置**
- **功能描述**: 管理员可以配置系统参数
- **配置项**: 系统名称、LOGO、首页轮播图、底部信息、邮件配置、短信配置等
- **优先级**: 中
**FR7.4 图表统计**
- **功能描述**: 提供多维度的数据统计图表
- **统计内容**:
- 用户增长趋势
- 健康档案数量统计
- 健康指标分布
- 风险等级分布
- 活跃用户统计
- **图表类型**: 折线图、柱状图、饼图、雷达图等
- **优先级**: 中
3.2 性能需求
3.2.1 响应时间
|
功能 |
响应时间要求 |
备注 |
|
用户登录 |
≤2秒 |
90%的请求 |
|
页面加载 |
≤3秒 |
首屏加载 |
|
数据查询 |
≤3秒 |
普通查询 |
|
数据保存 |
≤2秒 |
单条记录 |
|
健康分析 |
≤5秒 |
复杂计算 |
|
数据导入 |
≤30秒 |
100条记录 |
3.2.2 并发性能
|
指标 |
要求 |
备注 |
|
并发用户数 |
≥500 |
同时在线 |
|
最大并发请求 |
≥1000 TPS |
峰值 |
|
数据库连接池 |
50-200 |
可配置 |
3.2.3 容量需求
|
资源 |
初期 |
1年后 |
3年后 |
|
用户数 |
5,000 |
50,000 |
200,000 |
|
健康档案数 |
10,000 |
500,000 |
2,000,000 |
|
数据库大小 |
500MB |
10GB |
50GB |
|
日志大小 |
100MB/月 |
1GB/月 |
5GB/月 |
|
图片/文件存储 |
1GB |
50GB |
200GB |
3.3 数据库需求
3.3.1 数据库类型
- **MySQL 8.0+**: 主数据库,存储关系型数据
3.3.2 数据库设计原则
3.3.3 核心数据表
**主要数据表清单**:
*详细字段说明见各功能模块的字段表*
3.4 设计约束
3.4.1 技术约束
- **开发语言**: 后端Java 8+,前端JavaScript ES6+
- **开发框架**: 后端Spring Boot 2.2.2,前端Vue.js 2.6
- **数据库**: MySQL 8.0+
- **ORM框架**: MyBatis Plus
- **UI框架**: Element UI 2.13
- **图表库**: ECharts 5.4
- **文件上传**: 支持图片、PDF、Excel等格式
3.4.2 接口约束
- **API规范**: RESTful API设计
- **数据格式**: JSON格式
- **编码**: UTF-8
- **HTTP方法**: GET、POST、PUT、DELETE
- **响应格式**: 统一的响应格式(code、message、data)
{ "code": 0, "msg": "success", "data": {} }
3.4.3 浏览器兼容性
- Chrome 80+
- Firefox 75+
- Edge 80+
- Safari 13+
- 不支持IE浏览器
3.5 质量属性
3.5.1 可用性(Availability)
- **系统可用率**: ≥99.5%
- **计划内停机**: ≤4小时/月
- **故障恢复时间**: ≤30分钟
3.5.2 安全性(Security)
- **身份认证**: 基于Token的身份认证
- **权限控制**: 基于角色的访问控制(RBAC)
- **数据加密**: 密码MD5加密,敏感数据AES加密
- **SQL注入防护**: MyBatis预编译
- **XSS防护**: 输入过滤,输出转义
- **CSRF防护**: Token验证
- **HTTPS**: 生产环境强制HTTPS
3.5.3 可维护性(Maintainability)
- **代码规范**: 遵循阿里巴巴Java开发手册
- **代码注释**: 关键代码有注释
- **日志记录**: 关键操作和异常记录日志
- **版本控制**: 使用Git进行版本管理
- **文档完善**: API文档、数据库文档、部署文档
3.5.4 可扩展性(Scalability)
- **水平扩展**: 支持负载均衡,多服务器部署
- **模块化设计**: 功能模块解耦,易于扩展
- **插件机制**: 预留扩展接口
- **数据库扩展**: 支持主从复制,读写分离
3.5.5 易用性(Usability)
- **界面友好**: 简洁直观的UI设计
- **操作便捷**: 3次点击内完成主要操作
- **提示明确**: 操作结果有明确提示
- **帮助文档**: 提供在线帮助和使用手册
- **响应式设计**: 适配不同屏幕尺寸
3.5.6 可靠性(Reliability)
- **数据备份**: 每日全量备份
- **异常处理**: 完善的异常捕获和处理
- **事务管理**: 关键操作使用事务保证数据一致性
- **容错机制**: 外部服务调用失败有降级方案
核心代码
package com.controller;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.entity.HealthRecordHistoryEntity;
import com.service.HealthRecordHistoryService;
import com.utils.PageUtils;
import com.utils.R;
import javax.servlet.http.HttpServletRequest;
/**
* 健康档案历史版本
*/
@RestController
@RequestMapping("/healthRecordHistory")
public class HealthRecordHistoryController {
@Autowired
private HealthRecordHistoryService healthRecordHistoryService;
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request) {
Long userId = (Long) request.getSession().getAttribute("userId");
String role = (String) request.getSession().getAttribute("role");
if (!"管理员".equals(role)) {
params.put("userId", userId);
}
PageUtils page = healthRecordHistoryService.queryPage(params);
return R.ok().put("data", page);
}
/**
* 获取指定记录的历史版本
*/
@RequestMapping("/record/{tableName}/{recordId}")
public R getRecordHistory(@PathVariable("tableName") String tableName,
@PathVariable("recordId") Long recordId) {
List<HealthRecordHistoryEntity> list = healthRecordHistoryService.getRecordHistory(tableName, recordId);
return R.ok().put("data", list);
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id) {
HealthRecordHistoryEntity history = healthRecordHistoryService.selectById(id);
return R.ok().put("data", history);
}
}
视频详细讲解
👇👇👇
【Springboot】智慧医养大数据公共服务平台
https://www.bilibili.com/video/BV1mqCdB2Eir/?spm_id_from=333.1387.upload.video_card.click&vd_source=03bdbe4c11e488e8655a6a1c6dcd16d2
系统展示





获取项目源码,请关注❤点赞收藏并私信博主,谢谢-





