# 设备模块说明(`src/devices`) ## 1. 目标 - 提供“全局植入物目录”管理,供患者手术表单选择。 - 维护患者手术下的植入实例记录。 - 支持为可调压器械配置挡位列表。 - 支持管理员按医院、患者、状态和关键词分页查询患者植入实例。 ## 2. 设备实例 `Device` 现在表示“患者某次手术下的植入设备实例”,不是独立库存主数据。 核心字段: - `snCode`:设备唯一标识 - `patientId`:归属患者 - `surgeryId`:归属手术,可为空 - `implantCatalogId`:型号字典 ID,可为空 - `implantModel` / `implantManufacturer` / `implantName`:历史快照 - `isPressureAdjustable`:是否可调压 - `isAbandoned`:是否弃用 - `currentPressure`:当前压力 - `status`:设备状态 补充: - `currentPressure` 不允许在创建/编辑设备实例时手工指定。 - 新植入设备默认以 `initialPressure`(或系统默认值)作为当前压力起点,后续只允许在调压任务完成时更新。 ## 3. 植入物目录 新增 `ImplantCatalog`: - `modelCode`:型号编码,唯一 - `manufacturer`:厂商 - `name`:名称 - `pressureLevels`:可调压器械的挡位列表 - `isPressureAdjustable`:是否可调压 - `notes`:目录备注 可见性: - 全部已登录 B 端角色都可读取,用于患者手术录入 - 仅 `SYSTEM_ADMIN` 可做目录 CRUD - 目录是全局共享的,不按医院隔离 ## 4. 接口 设备实例: - `GET /b/devices`:分页查询设备列表 - `GET /b/devices/:id`:查询设备详情 - `POST /b/devices`:创建设备 - `PATCH /b/devices/:id`:更新设备 - `DELETE /b/devices/:id`:删除设备 型号字典: - `GET /b/devices/catalogs`:查询植入物型号字典 - `POST /b/devices/catalogs`:新增植入物目录 - `PATCH /b/devices/catalogs/:id`:更新植入物目录 - `DELETE /b/devices/catalogs/:id`:删除植入物目录 ## 5. 约束 - 设备必须绑定到一个患者。 - 设备 SN 在全库唯一,服务端会统一转成大写后再校验。 - 删除已被任务明细引用的设备会返回 `409`。 - 删除已被患者手术引用的植入物目录会返回 `409`。 - 可调压植入物若配置了 `pressureLevels`,患者手术录入和任务调压时的压力值必须命中该挡位列表。 - 调压任务仅允许针对 `ACTIVE + isPressureAdjustable=true + isAbandoned=false` 的设备发布。 - `Device.currentPressure` 只允许由调压任务完成时更新,患者手术录入和设备实例编辑都不开放手工写入。