# 个人信息保护影响评估 · 患者账号与订阅通知

**版本：2026-09-08 · 面向部署方与主管部门，不是面向终端用户的文书**

> **这份文件不是法律意见。** 它由开发者按本产品的实际数据流撰写，**未经执业律师审阅**。
> 《个人信息保护法》第五十五条要求处理敏感个人信息前进行个人信息保护影响评估并留存记录；
> 这份文档是那份记录的**技术底稿**，正式对外提供服务前请由熟悉医疗健康信息合规的执业律师
> 审阅并按实际业务补齐主体、责任人与流程部分。

## 1. 为什么要处理这些信息

患者门户此前是一次性的：填报告、拿结果、离开。而癌症治疗是长期的——今天没有对应
药物的靶点，明年可能就有。站内已有每日向各国药监核对获批状态的能力，把「你关注的
靶点有新药获批了」送到人手上，是这份数据唯一能直接改变某个人处境的用法。

要送达，就必须知道如何联系；要判断该不该送，就必须知道他关注什么。这是处理这些
信息的**唯一目的**，也是范围的上限。

## 2. 处理什么

| 信息 | 是否敏感 | 为什么需要 | 存储方式 |
|---|---|---|---|
| 手机号 | 是（可识别） | 身份凭据与通知通道 | **AES-256-GCM 加密**；另存 HMAC 摘要用于登录与去重 |
| 昵称 | 否 | 界面称呼 | 明文。**文书明确允许使用化名** |
| 性别、年龄段 | 是（健康相关） | 治疗相关性判断 | 加密。年龄**按段存**，不存出生日期 |
| 癌种、关注靶点 | 是 | 订阅匹配 | **明文**——理由见第 4 节 |
| 分期、指标取值、既往治疗 | 是 | 报告解读 | 加密 |
| 化验单 / 病理报告原文 | 是（可能含人类遗传资源信息） | 报告解读与缺口提示 | 加密 |

**不收集**：真实姓名、身份证号、住址、住院号、就诊机构、支付信息、位置、设备指纹。

## 3. 法律依据与同意

- **依据**：个人同意（《个人信息保护法》第十三条第一项）。
- **单独同意**：存储任何健康信息之前，必须已签署《敏感个人信息处理单独同意书》与
  《人类遗传资源与生物安全合规承诺书》。**这是代码层面的拒绝，不是界面提示**——
  未签署时注册接口直接返回错误，一个字节都不落盘（`tests/patients.test.ts`
  「没签单独同意书，一个字节健康信息都不落盘」）。
- **版本绑定**：签署记录绑定文书版本。文书更新后，旧版本的签署不被接受，用户
  需重新确认。
- **撤回**：删除账号即撤回同意，见第 6 节。

## 4. 最小化：为什么癌种与靶点是明文

新药获批时要匹配「谁关注这个」。若癌种也加密，每次匹配都必须解开**全表**的病历——
为了发一条通知而把所有档案解密到内存里，暴露面远大于让这两个字段明文存放。

单独看「某账号关注 EGFR」，不构成可识别到个人的健康档案：它不含手机号明文、不含
姓名、不含诊断细节。**手机号只在真正要发送的那一行代码里解开**，用完不留、不进日志、
不进返回值。

## 5. 安全措施

| 风险 | 措施 |
|---|---|
| 文件被拖走 | 敏感字段 AES-256-GCM 加密；密钥来自环境变量，不在仓库、不在备份归档里 |
| 密文被篡改 | GCM 认证标签；解密失败即报错，不返回错误数据 |
| 密钥更换后读不出 | 密文头带密钥指纹，用旧密钥写的记录会被明确识别并报错，而不是解出乱码 |
| 撞库还原手机号 | 查找摘要用**密钥**做 HMAC，而非固定盐；拿到文件而没有密钥无法用手机号字典比对 |
| 冒用他人手机号注册 | 短信验证码；**未配置短信通道时直接关闭注册**，不接受「先存着以后再验」 |
| 验证码爆破 | 十分钟有效、最多五次尝试、失败即作废；按 IP 限流 |
| 管理员越权查看 | 管理端只提供**不含任何个人信息**的统计，连昵称都不返回 |
| 数据无限留存 | 保留期 730 天，按**最后活跃**计算，到期自动清除；每日执行 |
| 备份泄露 | 备份归档里的患者数据同样是密文；密钥不随备份分发 |

## 6. 个人权利

- **查阅**：登录后可见自己的全部资料（报告正文不回显——界面不需要它，少一处出口
  就少一处泄露面）。
- **更正**：订阅与资料随时可改。
- **删除**：一键删除，**是真删不是标记**——记录从文件中移除，会话立即失效
  （`tests/patients.test.ts`「删除是真删」「删除后会话立即失效」）。
- **撤回同意**：等同于删除。
- **拒绝通知**：可只关闭短信通道而保留账号。

## 7. 数据出境

**无。** 患者信息全部存储在境内服务器，短信通道使用境内服务商（腾讯云短信），
机器翻译改用境内服务商后本站与患者信息相关的处理不产生跨境传输。

站内仍有一处不含个人信息的出境：向 ClinicalTrials.gov、NCI、openFDA、EMA 等公开
数据源发起查询（见《隐私政策》第 3.1 节）。**这些请求不携带任何患者信息**。

## 8. 尚未完成的事项

以下事项**不是代码能解决的**，正式对外提供服务前必须由部署方完成：

- [ ] 由执业律师审阅本评估与全部文书，并按实际业务补齐；
- [ ] **ICP 经营许可证**——本站计划收费，属经营性互联网信息服务，备案不足以覆盖；
- [ ] 指定个人信息保护负责人，公布联系方式；
- [ ] 启用 HTTPS 并设置 `ONCOFORGE_SECURE_COOKIE=1`——当前手机号与验证码明文过网；
- [ ] 与短信服务商签署数据处理协议；
- [ ] 建立个人信息安全事件应急预案与告知流程；
- [ ] 确认涉及人类遗传资源的采集与保藏是否需要单独的行政许可；
- [ ] 云硬盘自动快照与异地备份（当前备份与数据同盘）。

## 9. 结论

在第 5 节的措施到位、且第 8 节事项完成之前，**本功能不应对公众开放**。技术措施
已经实现并有测试守护；剩下的是行政与运营层面的义务，那部分的责任主体是部署方。
