Files
code/(红头)生长激素缺乏预测模型项目需求文档.md
2026-01-29 17:48:51 +08:00

23 KiB
Raw Blame History

生长激素缺乏预测模型项目需求文档

项目名称: 生长激素缺乏(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
  • 功能: 提交计算参数,返回计算结果并保存记录

请求参数:

{
  "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之间)

计算步骤:

  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 参考文档

12.3 联系方式

  • 项目地址:/www/wwwroot/code
  • 后台管理地址:https://www.ruilaizipj.com/adminghd/login
  • 数据库:MySQL (ruilai)

文档结束

创建时间: 2025年1月28日
最后更新: 2025年1月28日
文档版本: v1.0