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