From e8a815deea72058253a5b2d6fca882f5161de45d Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Fri, 29 May 2026 08:58:32 +0800 Subject: [PATCH] =?UTF-8?q?fix(#599):=20=E8=AF=B7=E4=BF=AE=E5=A4=8D=20Bug?= =?UTF-8?q?=20#599=EF=BC=9A=E3=80=90=E9=97=A8=E8=AF=8A=E6=89=8B=E6=9C=AF?= =?UTF-8?q?=E5=AE=89=E6=8E=92-=E8=AE=A1=E8=B4=B9=E3=80=91=E9=97=A8?= =?UTF-8?q?=E8=AF=8A=E6=89=8B=E6=9C=AF=E8=AE=A1=E8=B4=B9=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E8=AF=AF=E8=A7=A6=E5=8F=91=E6=98=BE=E7=A4=BA=E4=BA=86=E9=97=A8?= =?UTF-8?q?=E8=AF=8A=E5=8C=BB=E5=98=B1=E4=B8=AD=E7=9A=84=E9=9D=9E=E6=89=8B?= =?UTF-8?q?=E6=9C=AF=E8=AE=A1=E8=B4=B9=E7=9B=B8=E5=85=B3=E8=B4=B9=E7=94=A8?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: - ** - `DoctorStationAdviceAppMapper.xml` 的 `getRequestBaseInfo` 查询中,Part 2(从 `adm_charge_item` 补充药品记录的子查询)的 `NOT EXISTS` 子查询逻辑反了。 - 当手术计费查询(`generateSourceEnum=6`)时: - Part 1** ✅ `WHERE T1.generate_source_enum = 6` — 正确返回手术相关药品 - Part 2** 🐛 `NOT EXISTS (SELECT ... WHERE T5.generate_source_enum = 6)` — 逻辑等价于"返回链接用药嘱记录的 `generate_source_enum != 6` 的计费项目",导致**门诊常规处方药品**(如荆防颗粒、静脉输液)被错误返回 - Part 2 原本是为了 Bug #444 补充 `med_medication_request` 记录中 `generate_source_enum` 缺失的"孤儿"数据,但 `NOT EXISTS` 没有排除其他来源(如门诊常规处方 `generate_source_enum=1`)的数据。 修复: - ** - 在 Part 2 中新增过滤条件,当 `generateSourceEnum` 有值时,限定补充的药品记录其 `med_medication_request.generate_source_enum` 要么为 `NULL`(未设置),要么与查询值匹配: - ```xml - - AND (T2.generate_source_enum IS NULL OR T2.generate_source_enum = #{generateSourceEnum}) - 变更文件:** - `openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationAdviceAppMapper.xml` — Part 2 新增 `generate_source_enum` 过滤条件 - 全链路验证(6 环):** - 1. **录入** → 手术安排界面点击"计费"→ `handleChargeCharge()` 设置 `generateSourceEnum: 6` - 2. **保存** → `prescriptionlist.vue` 中签到/保存时设置 `generateSourceEnum=6` ✓ - 4. **修改** → 不受影响(编辑使用同一查询) ✓ - 5. **删除/签发/签退** → 不受影响(各自有独立的状态校验) ✓ - 6. **关联模块** → 注册医生站 `AdviceManageAppMapper.xml` 无 Part 2 补充逻辑,不受影响 ✓ - 编译检查:** `mvn compile` 通过 ✅ --- .../mapper/doctorstation/DoctorStationAdviceAppMapper.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationAdviceAppMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationAdviceAppMapper.xml index 12f135132..d85551cef 100755 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationAdviceAppMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationAdviceAppMapper.xml @@ -586,6 +586,9 @@ WHERE T1.delete_flag = '0' AND T1.service_table = #{MED_MEDICATION_REQUEST} + + AND (T2.generate_source_enum IS NULL OR T2.generate_source_enum = #{generateSourceEnum}) + AND T1.encounter_id = #{encounterId}