960c4b7da46ba71e8eb840149634ce82d1742466
中医慢病管理平台项目文档
📋 项目概述
项目简介
本项目是一个基于 uni-app + Vue 3 + TypeScript 的移动端跨平台健康管理应用,旨在为用户提供全方位的数字化健康管理服务。平台集成了传统中医理论与现代医学技术,为用户提供个性化的健康管理解决方案。
核心价值
- 一站式健康管理:集成多种健康功能,提供完整的健康管理闭环
- 智能化数据分析:基于用户健康数据,提供个性化建议和预警
- 中西医结合:融合传统中医理论与现代医学检测技术
- 专业医疗服务:提供在线问诊、专家咨询等专业医疗服务
- 持续健康监测:长期跟踪用户健康状态,形成健康档案
目标用户
- 慢病患者:糖尿病、高血压等慢性疾病患者
- 健康管理爱好者:注重健康生活方式的用户
- 中老年群体:需要定期健康监测的用户
- 亚健康人群:工作压力大、生活不规律的都市人群
- 医疗专业人士:需要远程患者管理的医护人员
🛠 技术架构
技术栈
前端技术
- 框架: uni-app(支持多端发布)
- UI框架: Vue 3 Composition API
- 类型检查: TypeScript
- 状态管理: Pinia
- 样式处理: SCSS
- 图表组件: qiun-data-charts
- 工具库: lodash, dayjs
开发工具
- 开发环境: HBuilderX / VS Code
- 版本控制: Git
- 包管理: npm / yarn
- 代码规范: ESLint + Prettier
- API管理: 基于Promise的请求封装
部署平台
- APP: Android、iOS
- 小程序: 微信、支付宝、百度、字节跳动
- H5: 移动端浏览器
系统架构
┌─────────────────────────────────────┐
│ 展示层 (Presentation) │
├─────────────────────────────────────┤
│ Vue 3 + TypeScript + uni-app │
│ ├─ 健康管理首页 │
│ ├─ 在线问诊模块 │
│ ├─ 健康检测模块 │
│ ├─ 慢病管理模块 │
│ ├─ 膳食管理模块 │
│ ├─ 体质辩识模块 │
│ ├─ 运动管理模块 │
│ ├─ 中医百科模块 │
│ ├─ 健康讲堂模块 │
│ └─ 个人档案模块 │
├─────────────────────────────────────┤
│ 业务层 (Business) │
├─────────────────────────────────────┤
│ 状态管理 (Pinia Store) │
│ ├─ 用户状态管理 │
│ ├─ 健康数据管理 │
│ ├─ 咨询会话管理 │
│ └─ 缓存数据管理 │
├─────────────────────────────────────┤
│ 数据层 (Data) │
├─────────────────────────────────────┤
│ API接口服务 │
│ ├─ RESTful API │
│ ├─ WebSocket (实时通信) │
│ ├─ 文件上传服务 │
│ └─ 数据同步服务 │
├─────────────────────────────────────┤
│ 工具层 (Utils) │
├─────────────────────────────────────┤
│ ├─ 健康计算工具 │
│ ├─ 数据验证工具 │
│ ├─ 格式化工具 │
│ ├─ 提醒服务 │
│ └─ 缓存管理 │
└─────────────────────────────────────┘
📁 项目结构
src/
├─ api/ # API接口
│ ├─ auth/ # 认证相关API
│ ├─ file/ # 文件上传API
│ ├─ system/ # 系统API
│ └─ health/ # 健康管理API
│ ├─ consultation.ts # 在线问诊API
│ ├─ detection.ts # 健康检测API
│ ├─ chronic.ts # 慢病管理API
│ ├─ diet.ts # 膳食管理API
│ ├─ constitution.ts # 体质辩识API
│ ├─ exercise.ts # 运动管理API
│ ├─ encyclopedia.ts # 中医百科API
│ ├─ education.ts # 健康讲堂API
│ └─ profile.ts # 个人档案API
├─ components/ # 组件库
│ ├─ health/ # 健康管理组件
│ │ ├─ consultation-card/ # 咨询卡片组件
│ │ ├─ health-chart/ # 健康图表组件
│ │ ├─ diet-calendar/ # 饮食日历组件
│ │ ├─ exercise-tracker/ # 运动追踪组件
│ │ ├─ constitution-test/ # 体质测试组件
│ │ ├─ health-indicator/ # 健康指标组件
│ │ └─ medicine-reminder/ # 用药提醒组件
│
├─ pages/ # 页面
│ |─ health/ # 健康管理页面
│ ├─ index/ # 健康首页
│ ├─ consultation/ # 在线问诊
│ │ ├─ index.vue # 问诊首页
│ │ ├─ doctor-list.vue # 医生列表
│ │ ├─ chat.vue # 咨询聊天
│ │ └─ history.vue # 咨询历史
│ ├─ detection/ # 健康检测
│ │ ├─ index.vue # 检测首页
│ │ ├─ vitals.vue # 生命体征
│ │ ├─ report.vue # 健康报告
│ │ └─ history.vue # 检测历史
│ ├─ chronic/ # 慢病管理
│ │ ├─ index.vue # 慢病首页
│ │ ├─ diabetes.vue # 糖尿病管理
│ │ ├─ hypertension.vue # 高血压管理
│ │ └─ medication.vue # 用药管理
│ ├─ diet/ # 膳食管理
│ │ ├─ index.vue # 膳食首页
│ │ ├─ plan.vue # 膳食计划
│ │ ├─ record.vue # 饮食记录
│ │ └─ analysis.vue # 营养分析
│ ├─ constitution/ # 体质辩识
│ │ ├─ index.vue # 体质首页
│ │ ├─ test.vue # 体质测试
│ │ ├─ result.vue # 测试结果
│ │ └─ advice.vue # 调理建议
│ ├─ exercise/ # 运动管理
│ │ ├─ index.vue # 运动首页
│ │ ├─ plan.vue # 运动计划
│ │ ├─ record.vue # 运动记录
│ │ └─ analysis.vue # 运动分析
│ ├─ encyclopedia/ # 中医百科
│ │ ├─ index.vue # 百科首页
│ │ ├─ herbs.vue # 中药材
│ │ ├─ acupoints.vue # 穴位
│ │ └─ meridians.vue # 经络
│ ├─ education/ # 健康讲堂
│ │ ├─ index.vue # 讲堂首页
│ │ ├─ articles.vue # 文章列表
│ │ ├─ videos.vue # 视频列表
│ │ └─ courses.vue # 课程列表
│ └─ profile/ # 个人档案
│ ├─ index.vue # 档案首页
│ ├─ basic-info.vue # 基本信息
│ ├─ medical-history.vue # 病史信息
│ └─ family-history.vue # 家族史
│
├─ store/ # 状态管理
│ └─ modules/
│ └─ health/ # 健康管理状态
│ ├─ consultation.ts # 咨询状态
│ ├─ detection.ts # 检测状态
│ ├─ chronic.ts # 慢病状态
│ ├─ diet.ts # 膳食状态
│ ├─ constitution.ts # 体质状态
│ ├─ exercise.ts # 运动状态
│ ├─ encyclopedia.ts # 百科状态
│ ├─ education.ts # 讲堂状态
│ └─ profile.ts # 档案状态
│
├─ types/ # 类型定义
│ |─ health/ # 健康管理类型
│ ├─ consultation.ts # 咨询类型
│ ├─ detection.ts # 检测类型
│ ├─ chronic.ts # 慢病类型
│ ├─ diet.ts # 膳食类型
│ ├─ constitution.ts # 体质类型
│ ├─ exercise.ts # 运动类型
│ ├─ encyclopedia.ts # 百科类型
│ ├─ education.ts # 讲堂类型
│ └─ profile.ts # 档案类型
│
├─ utils/ # 工具函数
│ ├─ health/ # 健康工具
│ │ ├─ calculation.ts # 健康计算
│ │ ├─ validation.ts # 数据验证
│ │ ├─ formatter.ts # 数据格式化
│ │ └─ reminder.ts # 提醒管理
│ └─
└─ static/ # 静态资源
├─ health/ # 健康相关图片
├─ icons/ # 图标资源
└─ images/ # 图片资源
🚀 功能模块详述
1. 在线问诊模块
功能特性
- 医生筛选: 按科室、专业、评分筛选医生
- 多种咨询方式: 支持文字、语音、视频咨询
- 实时聊天: WebSocket实现实时通信
- 处方开具: 医生可开具电子处方
- 咨询记录: 完整的咨询历史管理
核心功能
// 主要API接口
- getDoctors(): 获取医生列表
- createConsultation(): 创建咨询
- sendMessage(): 发送消息
- endConsultation(): 结束咨询
- rateConsultation(): 评价咨询
页面流程
问诊首页 → 选择医生 → 发起咨询 → 实时聊天 → 咨询结束 → 评价反馈
2. 健康检测模块
功能特性
- 生命体征监测: 血压、心率、体温、血氧等
- 健康报告生成: 基于检测数据自动生成报告
- 趋势分析: 长期健康数据趋势分析
- 异常预警: 健康指标异常及时提醒
核心算法
// BMI计算
export const calculateBMI = (weight: number, height: number): number => {
const heightInMeters = height / 100;
return Number((weight / (heightInMeters * heightInMeters)).toFixed(1));
};
// 基础代谢率计算
export const calculateBMR = (
weight: number,
height: number,
age: number,
gender: "male" | "female"
): number => {
if (gender === "male") {
return Math.round(88.362 + 13.397 * weight + 4.799 * height - 5.677 * age);
} else {
return Math.round(447.593 + 9.247 * weight + 3.098 * height - 4.33 * age);
}
};
3. 慢病管理模块
功能特性
- 疾病档案管理: 糖尿病、高血压等慢病档案
- 数据监测: 血糖、血压等关键指标监测
- 用药管理: 药物提醒、用药记录
- 目标管理: 设置和跟踪健康目标
数据验证
// 血糖数据验证
export const validateBloodSugar = (value: number, mealRelation: string) => {
let level: "normal" | "low" | "high" = "normal";
switch (mealRelation) {
case "fasting":
if (value < 3.9) level = "low";
else if (value > 6.1) level = "high";
break;
case "after_meal":
if (value < 3.9) level = "low";
else if (value > 11.1) level = "high";
break;
}
return { level, isValid: value >= 2 && value <= 30 };
};
4. 膳食管理模块
功能特性
- 营养计算: 自动计算食物营养成分
- 膳食计划: 个性化膳食计划制定
- 饮食记录: 详细的饮食记录和分析
- 食谱推荐: 基于用户需求的食谱推荐
营养计算
// 每日热量需求计算
export const calculateTDEE = (bmr: number, activityLevel: string): number => {
const activityFactors = {
sedentary: 1.2, // 久坐
light: 1.375, // 轻度运动
moderate: 1.55, // 中度运动
active: 1.725, // 重度运动
very_active: 1.9, // 极重度运动
};
return Math.round(bmr * (activityFactors[activityLevel] || 1.2));
};
5. 体质辩识模块
功能特性
- 中医体质测试: 标准化体质辩识问卷
- 体质分析: 详细的体质分析报告
- 调理建议: 个性化的调理建议
- 体质跟踪: 体质变化趋势跟踪
体质类型
// 九种体质类型
const constitutionTypes = [
"平和质",
"气虚质",
"阳虚质",
"阴虚质",
"痰湿质",
"湿热质",
"血瘀质",
"气郁质",
"特禀质",
];
6. 运动管理模块
功能特性
- 运动计划: 个性化运动计划制定
- 运动记录: 详细的运动数据记录
- 卡路里计算: 精准的运动消耗计算
- 目标跟踪: 运动目标设置和跟踪
卡路里计算
// 运动消耗卡路里计算
export const calculateCaloriesBurned = (
activity: string,
weight: number,
duration: number
): number => {
const metValues: Record<string, number> = {
walking: 3.5,
running: 8.0,
cycling: 6.0,
swimming: 8.0,
// ...更多运动类型
};
const met = metValues[activity] || 3.0;
return Math.round(met * weight * (duration / 60));
};
7. 中医百科模块
功能特性
- 中药材查询: 详细的中药材信息
- 穴位定位: 穴位位置和功效介绍
- 经络系统: 经络走向和功能说明
- 中医理论: 中医基础理论学习
8. 健康讲堂模块
功能特性
- 健康文章: 专业的健康科普文章
- 视频讲座: 专家健康讲座视频
- 在线课程: 系统化的健康教育课程
- 学习跟踪: 学习进度和成果跟踪
9. 个人档案模块
功能特性
- 基本信息: 个人基本健康信息
- 病史管理: 详细的病史记录
- 家族史: 家族遗传病史管理
- 健康目标: 个人健康目标设置
📱 界面设计
设计原则
1. 用户体验优先
- 简洁直观: 界面设计简洁明了,操作流程直观
- 响应迅速: 页面加载和交互响应快速
- 个性化: 根据用户偏好提供个性化界面
2. 健康主题
- 色彩搭配: 以绿色、蓝色为主色调,体现健康主题
- 图标设计: 使用直观的健康相关图标
- 数据可视化: 通过图表展示健康数据趋势
3. 移动端适配
- 响应式设计: 适配不同屏幕尺寸
- 触摸友好: 按钮大小适合手指操作
- 手势支持: 支持常见的移动端手势操作
关键页面设计
健康管理首页
// 渐变背景设计
.health-dashboard {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
// 卡片式布局
.health-header {
background: rgba(255, 255, 255, 0.9);
backdrop-filter: blur(10px);
border-radius: 20rpx;
}
}
数据可视化
- 环形进度条: 显示健康评分和目标完成度
- 趋势图表: 展示健康数据变化趋势
- 状态指示器: 直观显示健康状态
🔧 开发指南
环境准备
1. 开发工具安装
# 安装Node.js (推荐v16+)
node --version
# 安装HBuilderX或配置VS Code
# HBuilderX: https://www.dcloud.io/hbuilderx.html
# VS Code + uni-app插件
# 安装依赖
npm install
# 或
yarn install
2. 项目配置
// manifest.json配置
{
"name": "健康管理平台",
"appid": "__UNI__XXXXXX",
"description": "专业的移动端健康管理应用",
"versionName": "1.0.0",
"versionCode": "100"
}
开发规范
1. 代码规范
// 组件命名规范
export default defineComponent({
name: "HealthDashboard",
// ...
});
// API接口规范
const HealthAPI = {
getHealthData(): Promise<HealthDataResult> {
return request<HealthDataResult>({
url: "/api/v1/health/data",
method: "GET",
});
},
};
2. 样式规范
// 使用SCSS变量
$primary-color: #007aff;
$success-color: #34c759;
$warning-color: #ff9500;
$danger-color: #ff3b30;
// 组件样式命名
.health-component {
&__header {
}
&__content {
}
&__footer {
}
}
3. 类型定义规范
// 接口定义
export interface HealthData {
id: string;
userId: string;
measureTime: string;
indicators: HealthIndicator[];
}
// 响应数据格式
export interface ApiResponse<T> {
code: number;
message: string;
data: T;
}
状态管理
Pinia Store使用
// store/modules/health/detection.ts
export const useDetectionStore = defineStore("detection", {
state: () => ({
vitalSigns: [] as VitalSigns[],
loading: false,
error: null as string | null,
}),
getters: {
latestVitalSigns: (state) => state.vitalSigns[0],
healthTrend: (state) => {
// 计算健康趋势逻辑
},
},
actions: {
async fetchVitalSigns() {
this.loading = true;
try {
const response = await DetectionAPI.getVitalSignsHistory();
this.vitalSigns = response.list;
} catch (error) {
this.error = "获取数据失败";
} finally {
this.loading = false;
}
},
},
});
API接口开发
请求封装
// utils/request.ts
const request = <T = any>(config: RequestConfig): Promise<T> => {
return new Promise((resolve, reject) => {
uni.request({
url: baseURL + config.url,
method: config.method || "GET",
data: config.data,
header: {
Authorization: getToken(),
"Content-Type": "application/json",
...config.header,
},
success: (res) => {
if (res.statusCode === 200) {
resolve(res.data);
} else {
reject(new Error(`请求失败: ${res.statusCode}`));
}
},
fail: reject,
});
});
};
🚀 部署指南
多端发布
1. 微信小程序
# 编译微信小程序
npm run build:mp-weixin
# 上传代码
# 使用微信开发者工具上传
2. APP发布
# Android打包
npm run build:app-android
# iOS打包
npm run build:app-ios
3. H5发布
# H5编译
npm run build:h5
# 部署到服务器
# 将dist/build/h5目录上传到Web服务器
服务器部署
1. Nginx配置
server {
listen 80;
server_name your-domain.com;
location / {
root /var/www/health-app/h5;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://backend-server:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
2. HTTPS配置
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# 其他配置...
}
📊 性能优化
1. 代码分割
// 路由懒加载
const routes = [
{
path: "/health/consultation",
component: () => import("@/pages/health/consultation/index.vue"),
},
];
2. 图片优化
<!-- 使用适当的图片格式和尺寸 -->
<image :src="imageUrl" mode="aspectFill" lazy-load @error="handleImageError" />
3. 数据缓存
// 使用Pinia持久化
import { createPinia } from "pinia";
import { createPersistedState } from "pinia-plugin-persistedstate";
const pinia = createPinia();
pinia.use(createPersistedState());
🔒 安全措施
1. 数据加密
// 敏感数据加密存储
const encryptData = (data: string): string => {
// 使用AES等加密算法
return encrypt(data, SECRET_KEY);
};
2. API安全
// JWT Token验证
const getAuthHeader = (): Record<string, string> => {
const token = getToken();
return token ? { Authorization: `Bearer ${token}` } : {};
};
3. 输入验证
// 严格的输入验证
export const validateHealthData = (data: any): ValidationResult => {
const errors: string[] = [];
if (!data.bloodPressure || !isValidBloodPressure(data.bloodPressure)) {
errors.push("血压数据格式错误");
}
return {
isValid: errors.length === 0,
errors,
};
};
🧪 测试策略
1. 单元测试
// 健康计算函数测试
describe("Health Calculations", () => {
test("BMI calculation should be correct", () => {
const bmi = calculateBMI(70, 175);
expect(bmi).toBe(22.9);
});
});
2. 集成测试
// API接口测试
describe("Health API", () => {
test("should fetch vital signs data", async () => {
const data = await DetectionAPI.getVitalSignsHistory({
page: 1,
pageSize: 10,
});
expect(data.list).toBeDefined();
});
});
3. E2E测试
// 用户流程测试
describe("Health Management Flow", () => {
test("user can record vital signs", async () => {
// 模拟用户操作流程
});
});
📈 监控与分析
1. 错误监控
// 全局错误处理
uni.onError((error) => {
console.error("应用错误:", error);
// 上报错误信息到监控平台
reportError(error);
});
2. 性能监控
// 页面性能监控
const performanceObserver = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
console.log("性能指标:", entry);
});
});
3. 用户行为分析
// 埋点统计
const trackUserAction = (action: string, params: any) => {
// 发送用户行为数据
analytics.track(action, params);
};
🔮 扩展功能
1. AI智能推荐
- 健康风险评估: 基于AI模型评估用户健康风险
- 个性化建议: 机器学习生成个性化健康建议
- 疾病预测: 基于历史数据预测疾病风险
2. IoT设备集成
- 智能硬件对接: 支持智能手环、血压计等设备
- 数据自动同步: 设备数据自动同步到应用
- 实时监控: 24小时健康数据监控
3. 社交健康
- 健康社区: 用户健康经验分享社区
- 家庭健康: 家庭成员健康管理
- 健康挑战: 健康目标挑战活动
4. 医疗服务扩展
- 预约挂号: 在线预约医院挂号
- 体检预约: 体检项目预约和管理
- 健康保险: 健康保险产品推荐
❓ 常见问题
Q1: 如何处理跨平台兼容性问题?
A: 使用uni-app的条件编译功能,针对不同平台编写特定代码:
<!-- #ifdef MP-WEIXIN -->
<!-- 微信小程序特有功能 -->
<!-- #endif -->
<!-- #ifdef APP-PLUS -->
<!-- APP特有功能 -->
<!-- #endif -->
Q2: 健康数据的隐私保护如何处理?
A:
- 数据加密存储和传输
- 用户隐私权限控制
- 数据访问日志记录
- 符合GDPR等隐私法规
Q3: 如何保证健康数据的准确性?
A:
- 多重数据验证机制
- 异常数据检测和提醒
- 专业医疗团队审核
- 用户反馈和纠错机制
Q4: 离线功能如何实现?
A:
- 关键数据本地缓存
- 离线操作队列管理
- 网络恢复后数据同步
- 离线提醒功能
Q5: 如何处理大量健康数据?
A:
- 数据分页加载
- 虚拟滚动优化
- 数据压缩和缓存
- 后台数据清理
更新日志**: [更新日志地址]
开源协议
本项目采用 MIT 开源协议,欢迎贡献代码和提出改进建议。
版本: v1.0.0
更新时间: 2024年12月
文档维护: 开发团队
Languages
Vue
46.6%
JavaScript
36.5%
TypeScript
16.2%
SCSS
0.6%