鉴权改为登录态回库校验,新增 tokenValidAfter 失效时间,支持密码变更与 seed 重置后旧 token 立即失效 患者字段由 idCardHash 统一迁移为 idCard,新增身份证标准化逻辑并同步 C 端生命周期查询参数 组织模块增加小组删除限制(有成员时返回 409)并补充中文错误消息 任务取消接口支持可选 reason 字段(先透传事件层) 补齐 Prisma 迁移、文档说明和 E2E 用例(含设备模块与 token 失效场景)
1.7 KiB
1.7 KiB
患者模块说明(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=...
查询策略:
- 不做医院隔离(跨租户)
- 先将
idCard做轻量标准化,再做双字段精确匹配 - 关联查询
Patient -> Device -> TaskItem -> Task - 返回扁平生命周期列表(按
Task.createdAt DESC)
4. 响应结构
全部接口统一返回:
- 成功:
{ code: 0, msg: "成功", data: ... } - 失败:
{ code: x, msg: "中文错误", data: null }