927 lines
23 KiB
Markdown
927 lines
23 KiB
Markdown
|
|
# 生长激素缺乏预测模型项目需求文档
|
|||
|
|
|
|||
|
|
**项目名称:** 生长激素缺乏(GHD)预测模型系统
|
|||
|
|
**项目类型:** 医疗健康小程序 + 后台管理系统
|
|||
|
|
**技术架构:** 微信小程序(前端)+ ThinkPHP 5.0(后端)
|
|||
|
|
**数据库:** MySQL
|
|||
|
|
**文档版本:** v1.0
|
|||
|
|
**创建日期:** 2025年1月28日
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 一、项目概述
|
|||
|
|
|
|||
|
|
### 1.1 项目背景
|
|||
|
|
|
|||
|
|
生长激素缺乏(Growth Hormone Deficiency, GHD)是儿童内分泌疾病中的常见问题,早期诊断和预测对患者的治疗和预后具有重要意义。本项目旨在开发一个基于多因素分析的GHD预测模型系统,通过微信小程序为医生和患者提供便捷的预测工具,并通过后台管理系统进行数据管理和内容维护。
|
|||
|
|
|
|||
|
|
### 1.2 项目目标
|
|||
|
|
|
|||
|
|
1. **提供GHD预测功能**:基于骨龄、实际年龄、IGF-1、IGFBP-3等指标,计算GHD患病概率
|
|||
|
|
2. **数据管理**:记录用户计算历史,便于医生和患者追踪
|
|||
|
|
3. **资讯管理**:提供相关医疗资讯的发布和管理功能
|
|||
|
|
4. **用户管理**:管理小程序注册用户信息
|
|||
|
|
|
|||
|
|
### 1.3 用户群体
|
|||
|
|
|
|||
|
|
- **主要用户**:医生、患者及其家属
|
|||
|
|
- **管理员**:医疗机构的系统管理员
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 二、系统架构
|
|||
|
|
|
|||
|
|
### 2.1 技术架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────┐
|
|||
|
|
│ 微信小程序前端 │
|
|||
|
|
│ (WeChat Mini │
|
|||
|
|
│ Program) │
|
|||
|
|
└────────┬────────┘
|
|||
|
|
│ HTTP/HTTPS
|
|||
|
|
│ API调用
|
|||
|
|
┌────────▼────────┐
|
|||
|
|
│ ThinkPHP 5.0 │
|
|||
|
|
│ 后端服务 │
|
|||
|
|
└────────┬────────┘
|
|||
|
|
│
|
|||
|
|
┌────────▼────────┐
|
|||
|
|
│ MySQL数据库 │
|
|||
|
|
└─────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.2 目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
/www/wwwroot/code/
|
|||
|
|
├── application/ # 应用目录
|
|||
|
|
│ ├── adminghd/ # 后台管理模块
|
|||
|
|
│ │ ├── controller/ # 控制器
|
|||
|
|
│ │ │ ├── Login.php # 登录控制器
|
|||
|
|
│ │ │ ├── Menu.php # 菜单管理
|
|||
|
|
│ │ │ ├── Wechatinfro.php # 微信用户信息管理
|
|||
|
|
│ │ │ └── Wechatset.php # 微信设置管理
|
|||
|
|
│ │ ├── model/ # 模型
|
|||
|
|
│ │ └── view/ # 视图
|
|||
|
|
│ ├── app/ # 小程序API模块
|
|||
|
|
│ │ └── controller/
|
|||
|
|
│ │ ├── Ghdwechat.php # GHD相关API
|
|||
|
|
│ │ └── Ruilaiwechat.php # 瑞来相关API
|
|||
|
|
│ └── database.php # 数据库配置
|
|||
|
|
├── public/ # 公共访问目录
|
|||
|
|
│ ├── index.php # 入口文件
|
|||
|
|
│ └── static/ # 静态资源
|
|||
|
|
├── szjs/ # 微信小程序源码
|
|||
|
|
│ ├── pages/ # 小程序页面
|
|||
|
|
│ │ ├── ghdCalculator/ # GHD计算器页面
|
|||
|
|
│ │ ├── home/ # 首页
|
|||
|
|
│ │ ├── my/ # 个人中心
|
|||
|
|
│ │ └── ...
|
|||
|
|
│ ├── app.js # 小程序入口
|
|||
|
|
│ └── app.json # 小程序配置
|
|||
|
|
└── thinkphp/ # ThinkPHP框架核心
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 三、功能需求
|
|||
|
|
|
|||
|
|
### 3.1 微信小程序功能
|
|||
|
|
|
|||
|
|
#### 3.1.1 GHD预测计算器
|
|||
|
|
|
|||
|
|
**功能描述:** 用户输入相关指标,系统自动计算GHD患病概率
|
|||
|
|
|
|||
|
|
**前端计算器输入参数:**
|
|||
|
|
- **骨龄(BA)**:单位:年,支持小数
|
|||
|
|
- **实际年龄(CA)**:单位:年,支持小数
|
|||
|
|
- **IGF-1值**:单位:ng/ml,支持小数
|
|||
|
|
- **IGFBP-3值**:单位:mg/L,支持小数
|
|||
|
|
|
|||
|
|
**后端API计算输入参数:**
|
|||
|
|
- **用户ID(uid)**:必填
|
|||
|
|
- **患者姓名(name)**:必填
|
|||
|
|
- **年龄(age)**:必填,数字
|
|||
|
|
- **身高(height)**:必填,数字
|
|||
|
|
- **骨龄(bone_age)**:必填,数字
|
|||
|
|
- **父亲身高(father_height)**:必填,数字
|
|||
|
|
- **母亲身高(mother_height)**:必填,数字
|
|||
|
|
- **IGF-1值(IGF)**:必填,数字,单位:ng/ml
|
|||
|
|
- **LH值(LH)**:必填,数字,单位:mIU/ml
|
|||
|
|
- **子宫厚度(uterus_thickness)**:必填,数字,单位:mm
|
|||
|
|
|
|||
|
|
**前端计算公式:**
|
|||
|
|
```
|
|||
|
|
Y = 3.726 - 0.876×(BA-CA) - 0.058×(IGF-1) + 0.229×(IGFBP-3)
|
|||
|
|
P = e^Y / (1 + e^Y)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
其中:
|
|||
|
|
- Y:中间变量
|
|||
|
|
- P:GHD预测概率(0-1之间)
|
|||
|
|
- BA-CA:骨龄与实际年龄的差值
|
|||
|
|
|
|||
|
|
**后端API计算公式:**
|
|||
|
|
```
|
|||
|
|
P = exp(-5.908 + 0.008×IGF-1 + 2.146×LH + 0.286×子宫厚度) /
|
|||
|
|
(1 + exp(-5.908 + 0.008×IGF-1 + 2.146×LH + 0.286×子宫厚度))
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
其中:
|
|||
|
|
- P:GHD预测概率(0-1之间),保留3位小数
|
|||
|
|
|
|||
|
|
**输出结果:**
|
|||
|
|
- GHD预测概率(百分比形式)
|
|||
|
|
- 计算过程详情(分步骤展示)
|
|||
|
|
- 结果解释和建议
|
|||
|
|
|
|||
|
|
**结果分级:**
|
|||
|
|
- **P ≥ 0.8**:GHD可能性较大,建议进一步进行相关检查
|
|||
|
|
- **0.5 ≤ P < 0.8**:存在GHD可能,建议进行相关检查
|
|||
|
|
- **P < 0.5**:GHD可能性较小,但仍需结合临床表现进行综合判断
|
|||
|
|
|
|||
|
|
**参考范围:**
|
|||
|
|
系统内置IGF-1和IGFBP-3的参考范围(按性别和年龄段):
|
|||
|
|
- IGF-1参考范围(男性/女性,0-17岁,分9个年龄段)
|
|||
|
|
- IGFBP-3参考范围(男性/女性,0-17岁,分9个年龄段)
|
|||
|
|
|
|||
|
|
#### 3.1.2 其他工具页面
|
|||
|
|
|
|||
|
|
根据小程序配置,还包含以下页面:
|
|||
|
|
- **首页(home)**:展示资讯和功能入口
|
|||
|
|
- **个人中心(my)**:用户信息、历史记录
|
|||
|
|
- **IGF参考值(igfrefer)**:IGF-1和IGFBP-3参考范围查询
|
|||
|
|
- **身高SDS计算器(heightSdsCalculator)**:身高标准差评分计算
|
|||
|
|
- **工具集合(tool)**:其他医疗工具
|
|||
|
|
- **性发育图表(sexChart)**:性发育相关图表
|
|||
|
|
- **关于(guanyu)**:关于小程序的信息
|
|||
|
|
|
|||
|
|
#### 3.1.3 用户功能
|
|||
|
|
|
|||
|
|
- **微信授权登录**:
|
|||
|
|
- 通过微信授权获取用户信息
|
|||
|
|
- 接口:`/app/Ghdwechat/wechatLogin` 或 `/app/Ruilaiwechat/wechatLogin`
|
|||
|
|
- 参数:`code`(微信登录code)、`encryptedData`(加密数据)、`iv`(初始向量)
|
|||
|
|
- 返回:用户ID(uid)和登录状态
|
|||
|
|
|
|||
|
|
- **计算历史记录**:
|
|||
|
|
- 查看历史计算记录:`/app/Ghdwechat/selectRecordList` 或 `/app/Ruilaiwechat/selectRecordList`
|
|||
|
|
- 删除历史记录:`/app/Ghdwechat/deleteRecord` 或 `/app/Ruilaiwechat/deleteRecord`
|
|||
|
|
- 支持分页查询(默认每页30条)
|
|||
|
|
|
|||
|
|
- **资讯浏览**:
|
|||
|
|
- 获取资讯列表:`/app/Ghdwechat/selectRealtimeInfoList` 或 `/app/Ruilaiwechat/selectRealtimeInfoList`
|
|||
|
|
- 支持分页查询(默认每页20条)
|
|||
|
|
|
|||
|
|
### 3.2 后台管理系统功能
|
|||
|
|
|
|||
|
|
#### 3.2.1 用户登录
|
|||
|
|
|
|||
|
|
**功能描述:** 管理员登录后台管理系统
|
|||
|
|
|
|||
|
|
**登录方式:**
|
|||
|
|
- 用户名/手机号 + 密码登录
|
|||
|
|
- Session会话管理(1小时有效期)
|
|||
|
|
|
|||
|
|
**权限控制:**
|
|||
|
|
- 基于Session的用户身份验证
|
|||
|
|
- 不同用户类型可能有不同权限(当前代码中部分权限检查被注释)
|
|||
|
|
|
|||
|
|
#### 3.2.2 微信用户管理
|
|||
|
|
|
|||
|
|
**功能描述:** 查看和管理小程序注册用户
|
|||
|
|
|
|||
|
|
**功能列表:**
|
|||
|
|
- **用户列表查询**:
|
|||
|
|
- 支持按昵称搜索
|
|||
|
|
- 分页显示(默认每页30条)
|
|||
|
|
- 显示字段:用户ID、昵称、头像、注册时间
|
|||
|
|
- **用户信息查看**:查看用户详细信息
|
|||
|
|
|
|||
|
|
**数据表:** `ghd_wechat_user`
|
|||
|
|
- `uid`:用户ID
|
|||
|
|
- `nickname`:昵称
|
|||
|
|
- `headimg`:头像
|
|||
|
|
- `create_time`:注册时间
|
|||
|
|
|
|||
|
|
#### 3.2.3 计算记录管理
|
|||
|
|
|
|||
|
|
**功能描述:** 查看和管理用户的GHD预测计算记录
|
|||
|
|
|
|||
|
|
**功能列表:**
|
|||
|
|
- **记录列表查询**:
|
|||
|
|
- 支持按姓名搜索
|
|||
|
|
- 分页显示(默认每页30条)
|
|||
|
|
- 显示字段:序号、姓名、年龄、身高、骨龄、父亲身高、母亲身高、IGF、LH、子宫厚度、计算结果、创建时间
|
|||
|
|
- **记录详情查看**:查看完整的计算记录详情
|
|||
|
|
|
|||
|
|
**数据表:** `wechat_calculate_record`
|
|||
|
|
- `id`:记录ID
|
|||
|
|
- `name`:姓名
|
|||
|
|
- `age`:年龄
|
|||
|
|
- `height`:身高
|
|||
|
|
- `bone_age`:骨龄
|
|||
|
|
- `father_height`:父亲身高
|
|||
|
|
- `mother_height`:母亲身高
|
|||
|
|
- `IGF`:IGF-1值
|
|||
|
|
- `LH`:LH值
|
|||
|
|
- `uterus_thickness`:子宫厚度
|
|||
|
|
- `calculate_resutlt`:计算结果
|
|||
|
|
- `create_time`:创建时间
|
|||
|
|
|
|||
|
|
#### 3.2.4 资讯管理
|
|||
|
|
|
|||
|
|
**功能描述:** 管理小程序中展示的医疗资讯
|
|||
|
|
|
|||
|
|
**功能列表:**
|
|||
|
|
- **资讯列表**:
|
|||
|
|
- 支持按标题搜索
|
|||
|
|
- 分页显示(默认每页30条)
|
|||
|
|
- 显示字段:标题、缩略图、简介、跳转链接、创建时间
|
|||
|
|
- **添加资讯**:
|
|||
|
|
- 标题(必填)
|
|||
|
|
- 缩略图(必填)
|
|||
|
|
- 简介(必填)
|
|||
|
|
- 跳转链接(必填)
|
|||
|
|
- **编辑资讯**:修改已有资讯信息
|
|||
|
|
- **删除资讯**:删除不需要的资讯
|
|||
|
|
|
|||
|
|
**数据表:** `wechat_real_time_info`
|
|||
|
|
- `id`:资讯ID
|
|||
|
|
- `title_plain`:标题
|
|||
|
|
- `thumbnail`:缩略图
|
|||
|
|
- `excerpt_plain`:简介
|
|||
|
|
- `url`:跳转链接
|
|||
|
|
- `create_time`:创建时间
|
|||
|
|
|
|||
|
|
#### 3.2.5 菜单管理
|
|||
|
|
|
|||
|
|
**功能描述:** 管理系统菜单(当前部分功能被注释)
|
|||
|
|
|
|||
|
|
**功能列表:**
|
|||
|
|
- 获取菜单列表
|
|||
|
|
- 添加菜单
|
|||
|
|
- 修改菜单
|
|||
|
|
- 删除菜单
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 四、数据库设计
|
|||
|
|
|
|||
|
|
### 4.1 核心数据表
|
|||
|
|
|
|||
|
|
#### 4.1.1 用户表(t_sys_user)
|
|||
|
|
|
|||
|
|
**用途:** 存储后台管理员用户信息
|
|||
|
|
|
|||
|
|
**主要字段:**
|
|||
|
|
- `id`:用户ID(主键)
|
|||
|
|
- `user_name`:用户名
|
|||
|
|
- `phone`:手机号(登录账号)
|
|||
|
|
- `password`:密码(MD5加密)
|
|||
|
|
- `user_head`:头像
|
|||
|
|
- `status`:状态(1:启用,0:禁用)
|
|||
|
|
- `type`:用户类型(1:管理员)
|
|||
|
|
|
|||
|
|
#### 4.1.2 微信用户表(ghd_wechat_user / wechat_user)
|
|||
|
|
|
|||
|
|
**用途:** 存储小程序注册用户信息
|
|||
|
|
|
|||
|
|
**主要字段:**
|
|||
|
|
- `uid`:用户ID(主键,自增)
|
|||
|
|
- `openid`:微信OpenID(唯一标识)
|
|||
|
|
- `nickname`:昵称
|
|||
|
|
- `headimg`:头像URL
|
|||
|
|
- `create_time`:注册时间
|
|||
|
|
|
|||
|
|
**注意:** 代码中同时使用了 `ghd_wechat_user` 和 `wechat_user` 两个表名,需要确认实际使用的表名
|
|||
|
|
|
|||
|
|
#### 4.1.3 计算记录表(wechat_calculate_record)
|
|||
|
|
|
|||
|
|
**用途:** 存储用户的GHD预测计算记录
|
|||
|
|
|
|||
|
|
**主要字段:**
|
|||
|
|
- `id`:记录ID(主键)
|
|||
|
|
- `name`:姓名
|
|||
|
|
- `age`:年龄
|
|||
|
|
- `height`:身高
|
|||
|
|
- `bone_age`:骨龄
|
|||
|
|
- `father_height`:父亲身高
|
|||
|
|
- `mother_height`:母亲身高
|
|||
|
|
- `IGF`:IGF-1值
|
|||
|
|
- `uid`:用户ID(关联微信用户)
|
|||
|
|
- `LH`:LH值(促黄体生成素),单位:mIU/ml
|
|||
|
|
- `uterus_thickness`:子宫厚度,单位:mm
|
|||
|
|
- `calculate_resutlt`:计算结果(GHD概率,0-1之间,保留3位小数)
|
|||
|
|
- `create_time`:创建时间
|
|||
|
|
|
|||
|
|
#### 4.1.4 资讯表(wechat_real_time_info)
|
|||
|
|
|
|||
|
|
**用途:** 存储小程序展示的医疗资讯
|
|||
|
|
|
|||
|
|
**主要字段:**
|
|||
|
|
- `id`:资讯ID(主键,MD5生成)
|
|||
|
|
- `title_plain`:标题
|
|||
|
|
- `thumbnail`:缩略图URL
|
|||
|
|
- `excerpt_plain`:简介
|
|||
|
|
- `url`:跳转链接
|
|||
|
|
- `create_time`:创建时间
|
|||
|
|
|
|||
|
|
#### 4.1.5 菜单表(t_sys_menu)
|
|||
|
|
|
|||
|
|
**用途:** 存储后台管理系统菜单
|
|||
|
|
|
|||
|
|
**主要字段:**
|
|||
|
|
- `id`:菜单ID(主键)
|
|||
|
|
- `pid`:父菜单ID
|
|||
|
|
- `menu_name`:菜单名称
|
|||
|
|
- `url`:菜单链接
|
|||
|
|
- `menu_icon`:菜单图标
|
|||
|
|
- `seq_on`:排序序号
|
|||
|
|
- `create_time`:创建时间
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 五、API接口设计
|
|||
|
|
|
|||
|
|
### 5.1 小程序API接口
|
|||
|
|
|
|||
|
|
#### 5.1.1 用户相关接口
|
|||
|
|
|
|||
|
|
**接口路径:** `/app/Ghdwechat/xxx` 或 `/app/Ruilaiwechat/xxx`
|
|||
|
|
|
|||
|
|
**主要接口:**
|
|||
|
|
- 用户登录/注册
|
|||
|
|
- 获取用户信息
|
|||
|
|
- 更新用户信息
|
|||
|
|
|
|||
|
|
#### 5.1.2 计算相关接口
|
|||
|
|
|
|||
|
|
**计算接口:**
|
|||
|
|
- **接口路径:** `/app/Ghdwechat/calculate` 或 `/app/Ruilaiwechat/calculate`
|
|||
|
|
- **请求方式:** POST
|
|||
|
|
- **功能:** 提交计算参数,返回计算结果并保存记录
|
|||
|
|
|
|||
|
|
**请求参数:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"uid": "用户ID",
|
|||
|
|
"name": "患者姓名",
|
|||
|
|
"age": 10.5,
|
|||
|
|
"height": 140,
|
|||
|
|
"bone_age": 9.5,
|
|||
|
|
"father_height": 175,
|
|||
|
|
"mother_height": 160,
|
|||
|
|
"IGF": 250,
|
|||
|
|
"LH": 0.8,
|
|||
|
|
"uterus_thickness": 10
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"erro": 0,
|
|||
|
|
"msg": "计算成功",
|
|||
|
|
"calculate_resutlt": 0.661
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**错误响应:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"erro": -1,
|
|||
|
|
"msg": "错误信息(如:未传入用户id、未传入姓名等)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**历史记录查询接口:**
|
|||
|
|
- **接口路径:** `/app/Ghdwechat/selectRecordList` 或 `/app/Ruilaiwechat/selectRecordList`
|
|||
|
|
- **请求方式:** POST
|
|||
|
|
- **请求参数:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"uid": "用户ID",
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 30
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"erro": 0,
|
|||
|
|
"msg": "查询成功",
|
|||
|
|
"lists": [
|
|||
|
|
{
|
|||
|
|
"id": "记录ID",
|
|||
|
|
"name": "患者姓名",
|
|||
|
|
"age": 10.5,
|
|||
|
|
"height": 140,
|
|||
|
|
"bone_age": 9.5,
|
|||
|
|
"father_height": 175,
|
|||
|
|
"mother_height": 160,
|
|||
|
|
"IGF": 250,
|
|||
|
|
"LH": 0.8,
|
|||
|
|
"uterus_thickness": 10,
|
|||
|
|
"calculate_resutlt": 0.661,
|
|||
|
|
"create_time": "2024-05-19 17:47:17"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"lastPage": 10,
|
|||
|
|
"currentPage": 1
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**删除记录接口:**
|
|||
|
|
- **接口路径:** `/app/Ghdwechat/deleteRecord` 或 `/app/Ruilaiwechat/deleteRecord`
|
|||
|
|
- **请求方式:** POST
|
|||
|
|
- **请求参数:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"uid": "用户ID",
|
|||
|
|
"id": "记录ID"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.1.3 资讯相关接口
|
|||
|
|
|
|||
|
|
**获取资讯列表:**
|
|||
|
|
- **接口路径:** `/app/Ghdwechat/selectRealtimeInfoList` 或 `/app/Ruilaiwechat/selectRealtimeInfoList`
|
|||
|
|
- **请求方式:** POST
|
|||
|
|
- **请求参数:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 20
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"erro": 0,
|
|||
|
|
"msg": "查询成功",
|
|||
|
|
"lists": [
|
|||
|
|
{
|
|||
|
|
"title_plain": "资讯标题",
|
|||
|
|
"thumbnail": "图片URL",
|
|||
|
|
"excerpt_plain": "简介",
|
|||
|
|
"url": "跳转链接"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"lastPage": 10,
|
|||
|
|
"currentPage": 1
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.1.4 用户登录接口
|
|||
|
|
|
|||
|
|
**微信授权登录:**
|
|||
|
|
- **接口路径:** `/app/Ghdwechat/wechatLogin` 或 `/app/Ruilaiwechat/wechatLogin`
|
|||
|
|
- **请求方式:** POST
|
|||
|
|
- **请求参数:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": "微信登录code",
|
|||
|
|
"encryptedData": "加密的用户数据",
|
|||
|
|
"iv": "初始向量"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"erro": 0,
|
|||
|
|
"msg": "登录成功",
|
|||
|
|
"uid": "用户ID"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**错误响应:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"erro": -1,
|
|||
|
|
"msg": "错误信息(如:未传入code、解析数据失败等)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5.2 后台管理API接口
|
|||
|
|
|
|||
|
|
#### 5.2.1 登录接口
|
|||
|
|
|
|||
|
|
**接口路径:** `/adminghd/Login/login`
|
|||
|
|
|
|||
|
|
**请求方式:** POST
|
|||
|
|
|
|||
|
|
**请求参数:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"username": "13212345678",
|
|||
|
|
"password": "123456",
|
|||
|
|
"loginsubmit": "true"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"status": 1,
|
|||
|
|
"msg": "登录成功",
|
|||
|
|
"token": 1
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.2.2 用户信息接口
|
|||
|
|
|
|||
|
|
**接口路径:** `/adminghd/Menu/getUserInfor`
|
|||
|
|
|
|||
|
|
**请求方式:** GET/POST
|
|||
|
|
|
|||
|
|
**响应数据:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"status": 1,
|
|||
|
|
"msg": "查询成功",
|
|||
|
|
"infro": {
|
|||
|
|
"user_name": "管理员",
|
|||
|
|
"user_head": null
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.2.3 微信用户列表接口
|
|||
|
|
|
|||
|
|
**接口路径:** `/adminghd/Wechatinfro/getWechatUserList`
|
|||
|
|
|
|||
|
|
**请求方式:** POST
|
|||
|
|
|
|||
|
|
**请求参数:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 30,
|
|||
|
|
"title": "搜索关键词(可选)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"erro": 0,
|
|||
|
|
"msg": "查询成功",
|
|||
|
|
"lists": [
|
|||
|
|
{
|
|||
|
|
"uid": "xxx",
|
|||
|
|
"nickname": "用户昵称",
|
|||
|
|
"headimg": "头像URL",
|
|||
|
|
"create_time": "2024-05-19 17:47:17",
|
|||
|
|
"no_id": 1
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"lastPage": 10,
|
|||
|
|
"currentPage": 1
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.2.4 计算记录列表接口
|
|||
|
|
|
|||
|
|
**接口路径:** `/adminghd/Wechatinfro/getWechatRecordList`
|
|||
|
|
|
|||
|
|
**请求方式:** POST
|
|||
|
|
|
|||
|
|
**请求参数:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 30,
|
|||
|
|
"title": "搜索关键词(可选)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"erro": 0,
|
|||
|
|
"msg": "查询成功",
|
|||
|
|
"lists": [
|
|||
|
|
{
|
|||
|
|
"id": "xxx",
|
|||
|
|
"name": "患者姓名",
|
|||
|
|
"age": 10.5,
|
|||
|
|
"height": 140,
|
|||
|
|
"bone_age": 9.5,
|
|||
|
|
"father_height": 175,
|
|||
|
|
"mother_height": 160,
|
|||
|
|
"IGF": 250,
|
|||
|
|
"LH": 0.8,
|
|||
|
|
"uterus_thickness": 10,
|
|||
|
|
"calculate_resutlt": 0.661,
|
|||
|
|
"create_time": "2024-05-19 17:47:17",
|
|||
|
|
"no_id": 1
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"lastPage": 10,
|
|||
|
|
"currentPage": 1
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.2.5 资讯管理接口
|
|||
|
|
|
|||
|
|
**获取资讯列表:**
|
|||
|
|
- **接口路径:** `/adminghd/Wechatset/getWechatRealTimeInfoList`
|
|||
|
|
- **请求方式:** POST
|
|||
|
|
|
|||
|
|
**添加/更新资讯:**
|
|||
|
|
- **接口路径:** `/adminghd/Wechatset/saveWechatRealTimeInfo`
|
|||
|
|
- **请求方式:** POST
|
|||
|
|
- **请求参数:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": "资讯ID(更新时必填)",
|
|||
|
|
"title_plain": "标题",
|
|||
|
|
"thumbnail": "缩略图URL",
|
|||
|
|
"excerpt_plain": "简介",
|
|||
|
|
"url": "跳转链接"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**删除资讯:**
|
|||
|
|
- **接口路径:** `/adminghd/Wechatset/delWechatRealTimeInfo`
|
|||
|
|
- **请求方式:** POST
|
|||
|
|
- **请求参数:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": "资讯ID"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 六、预测模型算法
|
|||
|
|
|
|||
|
|
### 6.1 GHD预测模型(小程序前端模型 - 基于骨龄和IGF指标)
|
|||
|
|
|
|||
|
|
**模型公式:**
|
|||
|
|
```
|
|||
|
|
Y = 3.726 - 0.876×(BA-CA) - 0.058×(IGF-1) + 0.229×(IGFBP-3)
|
|||
|
|
P = e^Y / (1 + e^Y)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**参数说明:**
|
|||
|
|
- **BA**:骨龄(Bone Age),单位:年
|
|||
|
|
- **CA**:实际年龄(Chronological Age),单位:年
|
|||
|
|
- **IGF-1**:胰岛素样生长因子-1,单位:ng/ml
|
|||
|
|
- **IGFBP-3**:胰岛素样生长因子结合蛋白-3,单位:mg/L
|
|||
|
|
- **Y**:中间变量(对数几率)
|
|||
|
|
- **P**:GHD预测概率(0-1之间)
|
|||
|
|
|
|||
|
|
**计算步骤:**
|
|||
|
|
1. 计算骨龄差值:BA-CA
|
|||
|
|
2. 代入公式计算Y值
|
|||
|
|
3. 通过Logistic函数计算概率P
|
|||
|
|
4. 将P转换为百分比形式
|
|||
|
|
|
|||
|
|
**使用场景:** 小程序前端计算器页面(`ghdCalculator`),用于前端实时计算展示
|
|||
|
|
|
|||
|
|
### 6.2 GHD预测模型(后端API模型 - 基于IGF、LH和子宫厚度)
|
|||
|
|
|
|||
|
|
**模型公式:**
|
|||
|
|
```
|
|||
|
|
P = exp(-5.908 + 0.008×IGF-1 + 2.146×LH + 0.286×子宫厚度) /
|
|||
|
|
(1 + exp(-5.908 + 0.008×IGF-1 + 2.146×LH + 0.286×子宫厚度))
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**参数说明:**
|
|||
|
|
- **IGF-1**:胰岛素样生长因子-1,单位:ng/ml
|
|||
|
|
- **LH**:促黄体生成素(Luteinizing Hormone),单位:mIU/ml
|
|||
|
|
- **子宫厚度**:单位:mm
|
|||
|
|
- **P**:预测概率(0-1之间),保留3位小数
|
|||
|
|
|
|||
|
|
**计算步骤:**
|
|||
|
|
1. 计算指数部分:exp(-5.908 + 0.008×IGF-1 + 2.146×LH + 0.286×子宫厚度)
|
|||
|
|
2. 通过Logistic函数计算概率P
|
|||
|
|
3. 将P四舍五入保留3位小数
|
|||
|
|
|
|||
|
|
**使用场景:** 后端API接口(`/app/Ghdwechat/calculate` 和 `/app/Ruilaiwechat/calculate`),用于服务器端计算并保存记录
|
|||
|
|
|
|||
|
|
**输入参数(后端API):**
|
|||
|
|
- `uid`:用户ID(必填)
|
|||
|
|
- `name`:患者姓名(必填)
|
|||
|
|
- `age`:年龄(必填,数字)
|
|||
|
|
- `height`:身高(必填,数字)
|
|||
|
|
- `bone_age`:骨龄(必填,数字)
|
|||
|
|
- `father_height`:父亲身高(必填,数字)
|
|||
|
|
- `mother_height`:母亲身高(必填,数字)
|
|||
|
|
- `IGF`:IGF-1值(必填,数字)
|
|||
|
|
- `LH`:LH值(必填,数字)
|
|||
|
|
- `uterus_thickness`:子宫厚度(必填,数字)
|
|||
|
|
|
|||
|
|
**输出结果:**
|
|||
|
|
- `calculate_resutlt`:计算结果(概率值,0-1之间)
|
|||
|
|
- 计算结果自动保存到数据库表 `wechat_calculate_record`
|
|||
|
|
|
|||
|
|
**注意:**
|
|||
|
|
- 小程序前端和后端API使用不同的预测模型公式
|
|||
|
|
- 前端模型基于骨龄和IGF指标,后端模型基于IGF、LH和子宫厚度
|
|||
|
|
- 两个模型可能适用于不同的预测场景或患者群体
|
|||
|
|
- 建议统一模型或明确说明两个模型的适用场景
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 七、非功能性需求
|
|||
|
|
|
|||
|
|
### 7.1 性能需求
|
|||
|
|
|
|||
|
|
- **响应时间**:API接口响应时间 < 500ms
|
|||
|
|
- **并发支持**:支持至少100个并发用户
|
|||
|
|
- **数据库查询**:优化查询性能,使用索引
|
|||
|
|
|
|||
|
|
### 7.2 安全需求
|
|||
|
|
|
|||
|
|
- **数据加密**:用户密码使用MD5加密存储
|
|||
|
|
- **Session管理**:使用Session进行用户身份验证
|
|||
|
|
- **HTTPS支持**:生产环境使用HTTPS协议
|
|||
|
|
- **SQL注入防护**:使用ThinkPHP的ORM防止SQL注入
|
|||
|
|
- **XSS防护**:对用户输入进行过滤和转义
|
|||
|
|
|
|||
|
|
### 7.3 可用性需求
|
|||
|
|
|
|||
|
|
- **系统可用性**:99%以上
|
|||
|
|
- **数据备份**:定期备份数据库
|
|||
|
|
- **错误处理**:友好的错误提示信息
|
|||
|
|
|
|||
|
|
### 7.4 兼容性需求
|
|||
|
|
|
|||
|
|
- **微信小程序**:支持微信小程序最新版本
|
|||
|
|
- **浏览器**:后台管理系统支持主流浏览器(Chrome、Firefox、Safari、Edge)
|
|||
|
|
- **移动端**:后台管理系统支持移动端访问
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 八、部署要求
|
|||
|
|
|
|||
|
|
### 8.1 服务器环境
|
|||
|
|
|
|||
|
|
- **操作系统**:Linux(CentOS 7+)
|
|||
|
|
- **Web服务器**:Nginx 1.20+
|
|||
|
|
- **PHP版本**:PHP 5.6+(推荐PHP 7.3+)
|
|||
|
|
- **数据库**:MySQL 5.7+
|
|||
|
|
- **PHP扩展**:mysqli、pdo_mysql、mbstring、openssl
|
|||
|
|
|
|||
|
|
### 8.2 目录权限
|
|||
|
|
|
|||
|
|
- `runtime/`:可写权限(日志、缓存)
|
|||
|
|
- `public/uploads/`:可写权限(文件上传)
|
|||
|
|
- `public/static/`:可读权限(静态资源)
|
|||
|
|
|
|||
|
|
### 8.3 配置文件
|
|||
|
|
|
|||
|
|
- **数据库配置**:`/www/wwwroot/code/application/database.php`
|
|||
|
|
- **应用配置**:`/www/wwwroot/code/application/config.php`
|
|||
|
|
- **Nginx配置**:`/etc/nginx/conf.d/default.conf` 或宝塔面板配置
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 九、项目现状
|
|||
|
|
|
|||
|
|
### 9.1 已完成功能
|
|||
|
|
|
|||
|
|
✅ **后台管理系统:**
|
|||
|
|
- 用户登录功能
|
|||
|
|
- 微信用户管理
|
|||
|
|
- 计算记录管理
|
|||
|
|
- 资讯管理
|
|||
|
|
- 菜单管理(部分功能)
|
|||
|
|
|
|||
|
|
✅ **小程序前端:**
|
|||
|
|
- GHD计算器页面
|
|||
|
|
- 首页、个人中心等基础页面
|
|||
|
|
- 计算逻辑实现
|
|||
|
|
|
|||
|
|
✅ **后端API:**
|
|||
|
|
- 用户相关接口
|
|||
|
|
- 计算记录接口
|
|||
|
|
- 资讯接口
|
|||
|
|
|
|||
|
|
### 9.2 待完善功能
|
|||
|
|
|
|||
|
|
⏳ **数据验证:**
|
|||
|
|
- 输入参数的范围验证
|
|||
|
|
- 计算结果合理性检查
|
|||
|
|
|
|||
|
|
⏳ **用户体验:**
|
|||
|
|
- 错误提示优化
|
|||
|
|
- 加载状态提示
|
|||
|
|
- 结果可视化展示
|
|||
|
|
|
|||
|
|
⏳ **功能扩展:**
|
|||
|
|
- 计算历史记录查看(小程序端)
|
|||
|
|
- 数据导出功能
|
|||
|
|
- 统计分析功能
|
|||
|
|
|
|||
|
|
⏳ **文档完善:**
|
|||
|
|
- API接口文档
|
|||
|
|
- 用户使用手册
|
|||
|
|
- 管理员操作手册
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十、风险评估
|
|||
|
|
|
|||
|
|
### 10.1 技术风险
|
|||
|
|
|
|||
|
|
- **PHP版本兼容性**:当前使用PHP 5.6,建议升级到PHP 7.3+
|
|||
|
|
- **数据库连接**:需要确保MySQL服务稳定运行
|
|||
|
|
- **Session管理**:需要确保Session配置正确
|
|||
|
|
|
|||
|
|
### 10.2 业务风险
|
|||
|
|
|
|||
|
|
- **数据准确性**:预测模型需要定期验证和优化
|
|||
|
|
- **医疗责任**:系统仅作为辅助工具,不能替代专业医疗诊断
|
|||
|
|
- **数据隐私**:需要保护患者隐私信息
|
|||
|
|
|
|||
|
|
### 10.3 运维风险
|
|||
|
|
|
|||
|
|
- **数据备份**:需要建立定期备份机制
|
|||
|
|
- **系统监控**:需要监控系统运行状态
|
|||
|
|
- **安全更新**:需要及时更新安全补丁
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十一、后续规划
|
|||
|
|
|
|||
|
|
### 11.1 短期规划(1-3个月)
|
|||
|
|
|
|||
|
|
1. **功能优化**:
|
|||
|
|
- 完善输入验证
|
|||
|
|
- 优化用户界面
|
|||
|
|
- 添加计算历史功能
|
|||
|
|
|
|||
|
|
2. **性能优化**:
|
|||
|
|
- 数据库查询优化
|
|||
|
|
- 缓存机制引入
|
|||
|
|
- 接口响应时间优化
|
|||
|
|
|
|||
|
|
3. **文档完善**:
|
|||
|
|
- 编写API文档
|
|||
|
|
- 编写用户手册
|
|||
|
|
|
|||
|
|
### 11.2 中期规划(3-6个月)
|
|||
|
|
|
|||
|
|
1. **功能扩展**:
|
|||
|
|
- 多模型支持
|
|||
|
|
- 数据统计分析
|
|||
|
|
- 报告生成功能
|
|||
|
|
|
|||
|
|
2. **技术升级**:
|
|||
|
|
- PHP版本升级
|
|||
|
|
- 框架版本升级
|
|||
|
|
- 前端框架优化
|
|||
|
|
|
|||
|
|
### 11.3 长期规划(6-12个月)
|
|||
|
|
|
|||
|
|
1. **智能化**:
|
|||
|
|
- 机器学习模型集成
|
|||
|
|
- 个性化推荐
|
|||
|
|
- 智能诊断辅助
|
|||
|
|
|
|||
|
|
2. **平台化**:
|
|||
|
|
- 多租户支持
|
|||
|
|
- 开放API平台
|
|||
|
|
- 第三方集成
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十二、附录
|
|||
|
|
|
|||
|
|
### 12.1 术语表
|
|||
|
|
|
|||
|
|
- **GHD**:Growth Hormone Deficiency,生长激素缺乏
|
|||
|
|
- **IGF-1**:Insulin-like Growth Factor-1,胰岛素样生长因子-1
|
|||
|
|
- **IGFBP-3**:Insulin-like Growth Factor Binding Protein-3,胰岛素样生长因子结合蛋白-3
|
|||
|
|
- **BA**:Bone Age,骨龄
|
|||
|
|
- **CA**:Chronological Age,实际年龄
|
|||
|
|
- **LH**:Luteinizing Hormone,促黄体生成素
|
|||
|
|
|
|||
|
|
### 12.2 参考文档
|
|||
|
|
|
|||
|
|
- ThinkPHP 5.0 官方文档:http://www.kancloud.cn/manual/thinkphp5
|
|||
|
|
- 微信小程序开发文档:https://developers.weixin.qq.com/miniprogram/dev/framework/
|
|||
|
|
- MySQL官方文档:https://dev.mysql.com/doc/
|
|||
|
|
|
|||
|
|
### 12.3 联系方式
|
|||
|
|
|
|||
|
|
- **项目地址**:`/www/wwwroot/code`
|
|||
|
|
- **后台管理地址**:`https://www.ruilaizipj.com/adminghd/login`
|
|||
|
|
- **数据库**:MySQL (`ruilai`)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**文档结束**
|
|||
|
|
|
|||
|
|
**创建时间:** 2025年1月28日
|
|||
|
|
**最后更新:** 2025年1月28日
|
|||
|
|
**文档版本:** v1.0
|