Files
2025-06-25 12:27:52 +08:00

927 lines
24 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 中医慢病管理平台项目文档
## 📋 项目概述
### 项目简介
本项目是一个基于 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实现实时通信
- **处方开具**: 医生可开具电子处方
- **咨询记录**: 完整的咨询历史管理
#### 核心功能
```typescript
// 主要API接口
- getDoctors(): 获取医生列表
- createConsultation(): 创建咨询
- sendMessage(): 发送消息
- endConsultation(): 结束咨询
- rateConsultation(): 评价咨询
```
#### 页面流程
```
问诊首页 → 选择医生 → 发起咨询 → 实时聊天 → 咨询结束 → 评价反馈
```
### 2. 健康检测模块
#### 功能特性
- **生命体征监测**: 血压、心率、体温、血氧等
- **健康报告生成**: 基于检测数据自动生成报告
- **趋势分析**: 长期健康数据趋势分析
- **异常预警**: 健康指标异常及时提醒
#### 核心算法
```typescript
// 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. 慢病管理模块
#### 功能特性
- **疾病档案管理**: 糖尿病、高血压等慢病档案
- **数据监测**: 血糖、血压等关键指标监测
- **用药管理**: 药物提醒、用药记录
- **目标管理**: 设置和跟踪健康目标
#### 数据验证
```typescript
// 血糖数据验证
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. 膳食管理模块
#### 功能特性
- **营养计算**: 自动计算食物营养成分
- **膳食计划**: 个性化膳食计划制定
- **饮食记录**: 详细的饮食记录和分析
- **食谱推荐**: 基于用户需求的食谱推荐
#### 营养计算
```typescript
// 每日热量需求计算
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. 体质辩识模块
#### 功能特性
- **中医体质测试**: 标准化体质辩识问卷
- **体质分析**: 详细的体质分析报告
- **调理建议**: 个性化的调理建议
- **体质跟踪**: 体质变化趋势跟踪
#### 体质类型
```typescript
// 九种体质类型
const constitutionTypes = [
"平和质",
"气虚质",
"阳虚质",
"阴虚质",
"痰湿质",
"湿热质",
"血瘀质",
"气郁质",
"特禀质",
];
```
### 6. 运动管理模块
#### 功能特性
- **运动计划**: 个性化运动计划制定
- **运动记录**: 详细的运动数据记录
- **卡路里计算**: 精准的运动消耗计算
- **目标跟踪**: 运动目标设置和跟踪
#### 卡路里计算
```typescript
// 运动消耗卡路里计算
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. 移动端适配
- **响应式设计**: 适配不同屏幕尺寸
- **触摸友好**: 按钮大小适合手指操作
- **手势支持**: 支持常见的移动端手势操作
### 关键页面设计
#### 健康管理首页
```scss
// 渐变背景设计
.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. 开发工具安装
```bash
# 安装Node.js (推荐v16+)
node --version
# 安装HBuilderX或配置VS Code
# HBuilderX: https://www.dcloud.io/hbuilderx.html
# VS Code + uni-app插件
# 安装依赖
npm install
# 或
yarn install
```
#### 2. 项目配置
```javascript
// manifest.json配置
{
"name": "健康管理平台",
"appid": "__UNI__XXXXXX",
"description": "专业的移动端健康管理应用",
"versionName": "1.0.0",
"versionCode": "100"
}
```
### 开发规范
#### 1. 代码规范
```typescript
// 组件命名规范
export default defineComponent({
name: "HealthDashboard",
// ...
});
// API接口规范
const HealthAPI = {
getHealthData(): Promise<HealthDataResult> {
return request<HealthDataResult>({
url: "/api/v1/health/data",
method: "GET",
});
},
};
```
#### 2. 样式规范
```scss
// 使用SCSS变量
$primary-color: #007aff;
$success-color: #34c759;
$warning-color: #ff9500;
$danger-color: #ff3b30;
// 组件样式命名
.health-component {
&__header {
}
&__content {
}
&__footer {
}
}
```
#### 3. 类型定义规范
```typescript
// 接口定义
export interface HealthData {
id: string;
userId: string;
measureTime: string;
indicators: HealthIndicator[];
}
// 响应数据格式
export interface ApiResponse<T> {
code: number;
message: string;
data: T;
}
```
### 状态管理
#### Pinia Store使用
```typescript
// 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接口开发
#### 请求封装
```typescript
// 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. 微信小程序
```bash
# 编译微信小程序
npm run build:mp-weixin
# 上传代码
# 使用微信开发者工具上传
```
#### 2. APP发布
```bash
# Android打包
npm run build:app-android
# iOS打包
npm run build:app-ios
```
#### 3. H5发布
```bash
# H5编译
npm run build:h5
# 部署到服务器
# 将dist/build/h5目录上传到Web服务器
```
### 服务器部署
#### 1. Nginx配置
```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配置
```nginx
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# 其他配置...
}
```
## 📊 性能优化
### 1. 代码分割
```typescript
// 路由懒加载
const routes = [
{
path: "/health/consultation",
component: () => import("@/pages/health/consultation/index.vue"),
},
];
```
### 2. 图片优化
```vue
<!-- 使用适当的图片格式和尺寸 -->
<image :src="imageUrl" mode="aspectFill" lazy-load @error="handleImageError" />
```
### 3. 数据缓存
```typescript
// 使用Pinia持久化
import { createPinia } from "pinia";
import { createPersistedState } from "pinia-plugin-persistedstate";
const pinia = createPinia();
pinia.use(createPersistedState());
```
## 🔒 安全措施
### 1. 数据加密
```typescript
// 敏感数据加密存储
const encryptData = (data: string): string => {
// 使用AES等加密算法
return encrypt(data, SECRET_KEY);
};
```
### 2. API安全
```typescript
// JWT Token验证
const getAuthHeader = (): Record<string, string> => {
const token = getToken();
return token ? { Authorization: `Bearer ${token}` } : {};
};
```
### 3. 输入验证
```typescript
// 严格的输入验证
export const validateHealthData = (data: any): ValidationResult => {
const errors: string[] = [];
if (!data.bloodPressure || !isValidBloodPressure(data.bloodPressure)) {
errors.push("血压数据格式错误");
}
return {
isValid: errors.length === 0,
errors,
};
};
```
## 🧪 测试策略
### 1. 单元测试
```typescript
// 健康计算函数测试
describe("Health Calculations", () => {
test("BMI calculation should be correct", () => {
const bmi = calculateBMI(70, 175);
expect(bmi).toBe(22.9);
});
});
```
### 2. 集成测试
```typescript
// 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测试
```typescript
// 用户流程测试
describe("Health Management Flow", () => {
test("user can record vital signs", async () => {
// 模拟用户操作流程
});
});
```
## 📈 监控与分析
### 1. 错误监控
```typescript
// 全局错误处理
uni.onError((error) => {
console.error("应用错误:", error);
// 上报错误信息到监控平台
reportError(error);
});
```
### 2. 性能监控
```typescript
// 页面性能监控
const performanceObserver = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
console.log("性能指标:", entry);
});
});
```
### 3. 用户行为分析
```typescript
// 埋点统计
const trackUserAction = (action: string, params: any) => {
// 发送用户行为数据
analytics.track(action, params);
};
```
## 🔮 扩展功能
### 1. AI智能推荐
- **健康风险评估**: 基于AI模型评估用户健康风险
- **个性化建议**: 机器学习生成个性化健康建议
- **疾病预测**: 基于历史数据预测疾病风险
### 2. IoT设备集成
- **智能硬件对接**: 支持智能手环、血压计等设备
- **数据自动同步**: 设备数据自动同步到应用
- **实时监控**: 24小时健康数据监控
### 3. 社交健康
- **健康社区**: 用户健康经验分享社区
- **家庭健康**: 家庭成员健康管理
- **健康挑战**: 健康目标挑战活动
### 4. 医疗服务扩展
- **预约挂号**: 在线预约医院挂号
- **体检预约**: 体检项目预约和管理
- **健康保险**: 健康保险产品推荐
## ❓ 常见问题
### Q1: 如何处理跨平台兼容性问题?
**A**: 使用uni-app的条件编译功能针对不同平台编写特定代码
```vue
<!-- #ifdef MP-WEIXIN -->
<!-- 微信小程序特有功能 -->
<!-- #endif -->
<!-- #ifdef APP-PLUS -->
<!-- APP特有功能 -->
<!-- #endif -->
```
### Q2: 健康数据的隐私保护如何处理?
**A**:
1. 数据加密存储和传输
2. 用户隐私权限控制
3. 数据访问日志记录
4. 符合GDPR等隐私法规
### Q3: 如何保证健康数据的准确性?
**A**:
1. 多重数据验证机制
2. 异常数据检测和提醒
3. 专业医疗团队审核
4. 用户反馈和纠错机制
### Q4: 离线功能如何实现?
**A**:
1. 关键数据本地缓存
2. 离线操作队列管理
3. 网络恢复后数据同步
4. 离线提醒功能
### Q5: 如何处理大量健康数据?
**A**:
1. 数据分页加载
2. 虚拟滚动优化
3. 数据压缩和缓存
4. 后台数据清理
更新日志\*\*: [更新日志地址]
### 开源协议
本项目采用 MIT 开源协议,欢迎贡献代码和提出改进建议。
---
**版本**: v1.0.0
**更新时间**: 2024年12月
**文档维护**: 开发团队