tyt-api-nest/docs/patients.md
EL 6ec2d0b0e0 新增 B 端设备模块(后端 CRUD、分页筛选、权限隔离)并接入前端设备管理页面与路由菜单
鉴权改为登录态回库校验,新增 tokenValidAfter 失效时间,支持密码变更与 seed 重置后旧 token 立即失效
患者字段由 idCardHash 统一迁移为 idCard,新增身份证标准化逻辑并同步 C 端生命周期查询参数
组织模块增加小组删除限制(有成员时返回 409)并补充中文错误消息
任务取消接口支持可选 reason 字段(先透传事件层)
补齐 Prisma 迁移、文档说明和 E2E 用例(含设备模块与 token 失效场景)
2026-03-18 20:23:55 +08:00

1.7 KiB
Raw Blame History

患者模块说明(src/patients

1. 目标

  • B 端:按组织与角色范围查询患者(强依赖 hospitalId)。
  • C 端:按 phone + idCard 做跨院聚合查询。
  • 患者档案直接保存身份证号原文,不再做哈希转换。
  • 服务端只做轻量格式整理:去空格、统一末尾 x/X 为大写。

2. B 端可见性

  • DOCTOR:仅可查自己名下患者
  • LEADER:可查本组医生名下患者(按医生当前 groupId 反查)
  • DIRECTOR:可查本科室医生名下患者(按医生当前 departmentId 反查)
  • HOSPITAL_ADMIN:可查本院全部患者
  • SYSTEM_ADMIN:需显式传入目标 hospitalId

2.1 B 端 CRUD

  • GET /b/patients:按角色查询可见患者
  • GET /b/patients/doctors:查询当前角色可见的归属人员候选(医生/主任/组长,用于患者表单)
  • POST /b/patients:创建患者
  • GET /b/patients/:id:查询患者详情
  • PATCH /b/patients/:id:更新患者
  • DELETE /b/patients/:id:删除患者(若存在关联设备返回 409

说明: 患者表只绑定 doctorId + hospitalId,不直接绑定小组/科室。医生调组或调科后, 可见范围会按医生当前组织归属自动变化,无需迁移患者数据。

3. C 端生命周期聚合

接口:GET /c/patients/lifecycle?phone=...&idCard=...

查询策略:

  1. 不做医院隔离(跨租户)
  2. 先将 idCard 做轻量标准化,再做双字段精确匹配
  3. 关联查询 Patient -> Device -> TaskItem -> Task
  4. 返回扁平生命周期列表(按 Task.createdAt DESC

4. 响应结构

全部接口统一返回:

  • 成功:{ code: 0, msg: "成功", data: ... }
  • 失败:{ code: x, msg: "中文错误", data: null }