25 KiB
生长激素缺乏预测模型项目需求文档
项目名称: 生长激素缺乏(GHD)预测模型系统
项目类型: 医疗健康小程序 + 后台管理系统
技术架构: 微信小程序(前端)+ ThinkPHP 5.0(后端)
数据库: MySQL
文档版本: v1.0
创建日期: 2025年1月28日
一、项目概述
1.1 项目背景
生长激素缺乏(Growth Hormone Deficiency, GHD)是儿童内分泌疾病中的常见问题,早期诊断和预测对患者的治疗和预后具有重要意义。本项目旨在开发一个基于多因素分析的GHD预测模型系统,通过微信小程序为医生和患者提供便捷的预测工具,并通过后台管理系统进行数据管理和内容维护。
1.2 项目目标
-
提供GHD预测功能:基于骨龄、实际年龄、IGF-1、IGFBP-3等指标,计算GHD患病概率
-
数据管理:记录用户计算历史,便于医生和患者追踪
-
资讯管理:提供相关医疗资讯的发布和管理功能
-
用户管理:管理小程序注册用户信息
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
-
功能: 提交计算参数,返回计算结果并保存记录
请求参数:
{
"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
}
响应数据:
{
"erro": 0,
"msg": "计算成功",
"calculate_resutlt": 0.661
}
错误响应:
{
"erro": -1,
"msg": "错误信息(如:未传入用户id、未传入姓名等)"
}
历史记录查询接口:
-
接口路径:
/app/Ghdwechat/selectRecordList或/app/Ruilaiwechat/selectRecordList -
请求方式: POST
-
请求参数:
{
"uid": "用户ID",
"page": 1,
"page_size": 30
}
响应数据:
{
"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
-
请求参数:
{
"uid": "用户ID",
"id": "记录ID"
}
5.1.3 资讯相关接口
获取资讯列表:
-
接口路径:
/app/Ghdwechat/selectRealtimeInfoList或/app/Ruilaiwechat/selectRealtimeInfoList -
请求方式: POST
-
请求参数:
{
"page": 1,
"page_size": 20
}
响应数据:
{
"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
-
请求参数:
{
"code": "微信登录code",
"encryptedData": "加密的用户数据",
"iv": "初始向量"
}
响应数据:
{
"erro": 0,
"msg": "登录成功",
"uid": "用户ID"
}
错误响应:
{
"erro": -1,
"msg": "错误信息(如:未传入code、解析数据失败等)"
}
5.2 后台管理API接口
5.2.1 登录接口
接口路径: /adminghd/Login/login
请求方式: POST
请求参数:
{
"username": "13212345678",
"password": "123456",
"loginsubmit": "true"
}
响应数据:
{
"status": 1,
"msg": "登录成功",
"token": 1
}
5.2.2 用户信息接口
接口路径: /adminghd/Menu/getUserInfor
请求方式: GET/POST
响应数据:
{
"status": 1,
"msg": "查询成功",
"infro": {
"user_name": "管理员",
"user_head": null
}
}
5.2.3 微信用户列表接口
接口路径: /adminghd/Wechatinfro/getWechatUserList
请求方式: POST
请求参数:
{
"page": 1,
"page_size": 30,
"title": "搜索关键词(可选)"
}
响应数据:
{
"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
请求参数:
{
"page": 1,
"page_size": 30,
"title": "搜索关键词(可选)"
}
响应数据:
{
"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
-
请求参数:
{
"id": "资讯ID(更新时必填)",
"title_plain": "标题",
"thumbnail": "缩略图URL",
"excerpt_plain": "简介",
"url": "跳转链接"
}
删除资讯:
-
接口路径:
/adminghd/Wechatset/delWechatRealTimeInfo -
请求方式: POST
-
请求参数:
{
"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之间)
计算步骤:
-
计算骨龄差值:BA-CA
-
代入公式计算Y值
-
通过Logistic函数计算概率P
-
将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位小数
计算步骤:
-
计算指数部分:exp(-5.908 + 0.008×IGF-1 + 2.146×LH + 0.286×子宫厚度)
-
通过Logistic函数计算概率P
-
将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个月)
- 功能优化:
- 完善输入验证
- 优化用户界面
- 添加计算历史功能
- 性能优化:
- 数据库查询优化
- 缓存机制引入
- 接口响应时间优化
- 文档完善:
- 编写API文档
- 编写用户手册
11.2 中期规划(3-6个月)
- 功能扩展:
- 多模型支持
- 数据统计分析
- 报告生成功能
- 技术升级:
- PHP版本升级
- 框架版本升级
- 前端框架优化
11.3 长期规划(6-12个月)
- 智能化:
- 机器学习模型集成
- 个性化推荐
- 智能诊断辅助
- 平台化:
- 多租户支持
- 开放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