Columbia Suicide Severity Rating Scale — 基于 FastAPI 的电子化自杀风险评估工具
一个完整的自杀风险评估电子化解决方案,支持患者扫码答题、自动评分、风险分层,以及云端-本地分离架构保障数据隐私。
让自杀的人越来越少。
C-SSRS 是国际公认最广泛使用的自杀风险评估工具,但传统的纸质量表存在评分慢、易遗漏、数据统计困难等问题。本项目将其电子化,目标是:
- 降低基层使用门槛:任何社区工作者、乡村医生,只需一个二维码就能开展标准化评估
- 提高响应速度:自动评分 + 风险分层,无需专业训练即可识别高危个案
- 数据驱动科研:结构化存储评估数据,支持流行病学研究和干预效果评估
- 保护患者隐私:数据仅存本地,云端零感知,从架构上杜绝泄露
适用于:精神科门诊、社区心理服务、学校心理咨询、危机干预热线。
患者手机(流量) → 云端网关(YOUR_SERVER_IP:PORT) → SSH隧道(8889) → 本地电脑(8000)
医生手机(流量) → 云端网关(YOUR_SERVER_IP:PORT) → SSH隧道(8889) → 本地电脑(8000)
| 组件 | 位置 | 功能 |
|---|---|---|
| 云端网关 | Ubuntu 服务器 | Nginx 纯转发,不存储任何评估数据 |
| SSH 隧道 | 自动建立 | 加密传输评估数据 |
| 本地服务 | Mac/PC | FastAPI + SQLite,数据存储 + 评分 |
| 入口 | 认证方式 | 功能 |
|---|---|---|
/ |
无 | 入口页:显示医生入口和管理员入口两个卡片 |
/mobile |
4 位医生 PIN | 医生端:新建评估、查看患者列表、查看报告 |
/admin |
4-6 位管理密码 | 管理后台:创建/撤销医生 PIN、查看所有患者量表、批量删除 |
/doctor-qr |
无 | 医生入口二维码展示页(可截图打印) |
/patient.html |
无 | 患者扫码答题页 |
/code |
无 | 患者手动输入访问码页 |
- 手机扫描「医生入口二维码」(可在
/doctor-qr查看或打印) - 进入入口页,点击「医生入口」
- 输入 4 位准入码(首次需要,之后自动记住)
- 进入患者列表,点击「+」新建评估
- 输入患者信息,生成患者二维码
- 患者扫码答题(约 2-3 分钟)
- 自动跳转到报告页:显示风险等级 + 评分摘要
- 点击「查看完整量表内容」→ 红色高亮显示患者填写内容
权限说明:医生只能看到自己创建的评估记录,看不到其他医生的数据。
- 手机扫描「医生入口二维码」
- 进入入口页,点击「管理员入口」
- 输入管理密码(首次启动时在控制台显示)
- 进入管理后台:
- 医生管理:创建/撤销医生准入码
- 患者量表:查看所有医生的全部评估记录,点击查看完整量表内容
- 批量删除:多选模式批量删除评估记录
- 修改密码:点击顶部「改密码」按钮修改管理密码
- 医生生成患者二维码
- 患者用手机扫码(支持微信/系统相机)
- 进入答题页面,逐题作答
- 提交后医生端自动收到通知
| 层级 | 维度 | 范围 | 说明 |
|---|---|---|---|
| 筛查 | 自杀意念 | 阴性/阳性 | C-SSRS 筛查问题 |
| 意念严重度 | 最高级别 | 0-5 | 从渴望死亡到有计划有意图 |
| 意念强度 | 5 维度总分 | 0-25 | 频率、持续时间、可控性、阻止因素、现实性 |
| 行为 | 自杀行为 | 5 类 | 实际企图、中断、中止、准备行为、非自杀性自伤 |
| 致死性 | 企图致死性 | 0-6 | 基于医疗干预程度 |
| 等级 | 标签 | 条件 |
|---|---|---|
| none | 无风险 | 筛查阴性 |
| low | 低风险 | 仅渴望死亡,无计划意图 |
| medium | 中风险 | 有方法的主动意念 |
| high | 高风险 | 有计划或有意图 |
| critical | 极高风险 | 有计划且有意图 |
- Python 3.10+
- Ubuntu 22.04+ (云端)
- macOS/Windows (本地)
# 克隆仓库
git clone https://github.com/yangyongyy624-cmd/cssrs-system.git
cd cssrs-system
# 安装依赖
python3 -m venv .venv
source .venv/bin/activate
pip install -r backend/requirements.txt# 启动服务
bash scripts/start-local.sh
# 查看状态
bash manage.sh status
# 停止服务
bash manage.sh stop服务启动后访问:
- 配置服务器(参考
docs/deployment.md) - 设置防火墙(开放端口 22, PORT)
- 部署 Nginx 网关
- 建立 SSH 反向隧道
- 生成医生入口二维码
详细步骤见 docs/ 目录。
- 所有评估数据仅存储在本地
- 云端 Nginx 仅做转发,不保留任何评估内容
- 数据传输通过 SSH 加密隧道
- 医生端 PIN 认证,支持随时撤销
- 管理员密码可自由修改(4-6 位数字)
- GitHub 仓库已脱敏(无 IP 地址、PIN 码、密码等敏感信息)
cssrs-system/
├── backend/ # FastAPI 后端
│ ├── main.py # 入口路由
│ ├── database.py # 数据库操作
│ ├── scorer.py # C-SSRS 评分逻辑
│ └── models.py # 数据模型
├── frontend/ # H5 前端页面
│ ├── landing.html # 入口页(双卡片)
│ ├── mobile-doctor.html # 医生端
│ ├── admin.html # 管理后台
│ ├── patient.html # 患者答题页
│ ├── doctor-qr.html # 医生入口二维码页
│ └── code.html # 手动输入访问码页
├── docs/ # 部署和临床文档
├── scripts/ # 服务管理脚本
├── manage.sh # 服务管理
└── deploy.sh # 部署脚本
杨勇(Yang Yong)
武汉市普仁医院精神科医生。致力于用标准化评估工具和数字化手段降低自杀风险,让每一位有自杀倾向的患者都能被及时发现、及时干预。本项目为开源作品,欢迎任何人为此添砖加瓦。
- Fork 本仓库
- 创建分支
git checkout -b feature/your-feature - 提交更改
git commit -m 'feat: add your feature' - 推送分支
git push origin feature/your-feature - 提交 Pull Request
贡献者请注意:
- 不要将真实的评估数据、患者信息、服务器 IP 提交到代码库
- 配置文件使用
.example模板,真实配置加入.gitignore
MIT License
基于 Columbia Lighthouse Project 的 C-SSRS 量表开发。