Files
code/(红头)生长激素缺乏预测模型项目需求文档.md

927 lines
23 KiB
Markdown
Raw Normal View History

2026-01-29 17:48:51 +08:00
# 生长激素缺乏预测模型项目需求文档
**项目名称:** 生长激素缺乏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计算输入参数**
- **用户IDuid**:必填
- **患者姓名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中间变量
- PGHD预测概率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×子宫厚度))
```
其中:
- PGHD预测概率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`(初始向量)
- 返回用户IDuid和登录状态
- **计算历史记录**
- 查看历史计算记录:`/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 服务器环境
- **操作系统**LinuxCentOS 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