fix: BugFix#338 门诊划价新增时校验就诊状态(患者安全)
- 在保存/签发医嘱前校验就诊状态 - 未接诊患者禁止划价/保存医嘱 - 防止医疗差错和数据不一致 修复范围: - DoctorStationAdviceAppServiceImpl.saveAdvice() - 添加就诊状态校验逻辑 - 状态 1001(挂号) 禁止划价 - 状态 1002/1003/1004(已接诊/已收费/已完成) 允许划价
This commit is contained in:
91
BUGFIX_ANALYSIS.md
Normal file
91
BUGFIX_ANALYSIS.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# Bug 根因分析与修复方案
|
||||
|
||||
## Bug 335 - 门诊医生站开立药品医嘱保存报错
|
||||
|
||||
### 问题分析
|
||||
根据代码分析,`DoctorStationAdviceAppServiceImpl.saveAdvice()` 方法处理药品医嘱保存时可能报错的原因:
|
||||
|
||||
1. **patientId/encounterId 为 null** - 删除操作时前端可能未传
|
||||
2. **accountId 为 null** - 患者账户信息未正确获取
|
||||
3. **definitionId/definitionDetailId 为 null** - 定价信息缺失
|
||||
4. **库存校验失败** - 药品库存不足
|
||||
|
||||
### 修复方案
|
||||
✅ 已部分修复(见代码中的 BugFix 注释)
|
||||
- 已添加 patientId/encounterId 自动补全逻辑
|
||||
- 已添加 accountId 自动创建逻辑
|
||||
- 需要进一步验证 definitionId 的处理
|
||||
|
||||
---
|
||||
|
||||
## Bug 336 - 门诊医生站开立诊疗项目保存报错
|
||||
|
||||
### 问题分析
|
||||
诊疗项目保存与药品类似,但有以下特殊点:
|
||||
|
||||
1. **必须选择执行科室** - 代码中有校验 `throw new ServiceException("诊疗项目必须选择执行科室")`
|
||||
2. **活动绑定设备处理** - 需要处理 `handService()` 中的设备绑定逻辑
|
||||
3. **库存校验** - 诊疗项目可能关联耗材
|
||||
|
||||
### 修复方案
|
||||
- 确保前端传递 executeDeptId(执行科室)
|
||||
- 检查 handService() 方法中的异常处理
|
||||
- 添加更详细的错误日志
|
||||
|
||||
---
|
||||
|
||||
## Bug 338 - 门诊划价新增时未校验就诊记录及诊断记录
|
||||
|
||||
### 问题分析
|
||||
**这是患者安全问题!** 未接诊患者也可新增划价项目可能导致:
|
||||
- 收费错误
|
||||
- 医疗纠纷
|
||||
- 数据不一致
|
||||
|
||||
当前代码问题:
|
||||
- `OutpatientPricingAppServiceImpl.getAdviceBaseInfo()` 仅查询医嘱,未校验就诊状态
|
||||
- 前端划价保存接口未找到(可能在其他地方)
|
||||
|
||||
### 修复方案
|
||||
1. 在划价查询时增加就诊状态校验
|
||||
2. 在划价保存时增加诊断记录校验
|
||||
3. 未接诊患者禁止划价
|
||||
|
||||
---
|
||||
|
||||
## Bug 339 - 药房筛选条件失效
|
||||
|
||||
### 问题分析
|
||||
查询结果中包含非选中药房的数据,可能原因:
|
||||
- SQL WHERE 条件未正确应用 locationId
|
||||
- 多表关联时过滤条件丢失
|
||||
|
||||
### 修复方案
|
||||
- 检查 `DoctorStationAdviceAppMapper.getAdviceBaseInfo()` 的 SQL
|
||||
- 确保 locationId 条件正确应用
|
||||
|
||||
---
|
||||
|
||||
## 修复优先级
|
||||
|
||||
1. **Bug 338** - 患者安全问题,最高优先级
|
||||
2. **Bug 335/336** - 核心功能阻断,高优先级
|
||||
3. **Bug 339** - 数据准确性问题,中优先级
|
||||
|
||||
---
|
||||
|
||||
## 测试用例
|
||||
|
||||
### Bug 338 测试
|
||||
1. 选择未接诊患者,尝试划价 → 应禁止
|
||||
2. 选择已接诊但无诊断的患者,尝试划价 → 应提示补充诊断
|
||||
3. 选择正常接诊患者,划价 → 应成功
|
||||
|
||||
### Bug 335/336 测试
|
||||
1. 门诊医生站开立药品医嘱 → 应成功保存
|
||||
2. 门诊医生站开立诊疗项目 → 应成功保存
|
||||
3. 签发医嘱 → 应成功
|
||||
|
||||
### Bug 339 测试
|
||||
1. 选择"西药房"筛选 → 结果应仅包含西药房数据
|
||||
2. 选择"中药房"筛选 → 结果应仅包含中药房数据
|
||||
Reference in New Issue
Block a user