37 lines
1.2 KiB
Markdown
37 lines
1.2 KiB
Markdown
# 患者模块说明(`src/patients`)
|
||
|
||
## 1. 目标
|
||
|
||
- B 端:按组织与角色范围查询患者(强依赖 `hospitalId`)。
|
||
- C 端:按 `phone + idCardHash` 做跨院聚合查询。
|
||
|
||
## 2. B 端可见性
|
||
|
||
- `DOCTOR`:仅可查自己名下患者
|
||
- `LEADER`:可查本组医生名下患者(按医生当前 `groupId` 反查)
|
||
- `DIRECTOR`:可查本科室医生名下患者(按医生当前 `departmentId` 反查)
|
||
- `HOSPITAL_ADMIN`:可查本院全部患者
|
||
- `SYSTEM_ADMIN`:需显式传入目标 `hospitalId`
|
||
|
||
说明:
|
||
患者表只绑定 `doctorId + hospitalId`,不直接绑定小组/科室。医生调组或调科后,
|
||
可见范围会按医生当前组织归属自动变化,无需迁移患者数据。
|
||
|
||
## 3. C 端生命周期聚合
|
||
|
||
接口:`GET /c/patients/lifecycle?phone=...&idCardHash=...`
|
||
|
||
查询策略:
|
||
|
||
1. 不做医院隔离(跨租户)
|
||
2. 双字段精确匹配 `phone + idCardHash`
|
||
3. 关联查询 `Patient -> Device -> TaskItem -> Task`
|
||
4. 返回扁平生命周期列表(按 `Task.createdAt DESC`)
|
||
|
||
## 4. 响应结构
|
||
|
||
全部接口统一返回:
|
||
|
||
- 成功:`{ code: 0, msg: "成功", data: ... }`
|
||
- 失败:`{ code: x, msg: "中文错误", data: null }`
|