From 8de3c9f4c654b64aade81f9abac18ab4e8eeab08 Mon Sep 17 00:00:00 2001 From: wangjian963 <15215920+aprilry@user.noreply.gitee.com> Date: Mon, 29 Jun 2026 14:17:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(821=20=E3=80=90=E4=BD=8F=E9=99=A2?= =?UTF-8?q?=E6=8A=A4=E5=A3=AB=E7=AB=99-=E5=87=BA=E9=99=A2=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E3=80=91=E5=BE=85=E5=A4=84=E7=90=86=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E5=8D=95=E5=88=97=E8=A1=A8=E8=BF=87=E6=BB=A4=E8=A7=84=E5=88=99?= =?UTF-8?q?=E9=94=99=E8=AF=AF=EF=BC=8C=E9=94=99=E8=AF=AF=E5=BC=95=E5=85=A5?= =?UTF-8?q?=E4=BA=86=E8=8D=AF=E5=93=81=EF=BC=88=E4=B8=AD=E6=88=90=E8=8D=AF?= =?UTF-8?q?=EF=BC=89=E5=8C=BB=E5=98=B1):=20=E8=B0=83=E6=95=B4=E4=BD=8F?= =?UTF-8?q?=E9=99=A2=E6=8A=A4=E7=90=86=E7=AB=99=E6=89=A7=E8=A1=8C=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除原药品医嘱查询逻辑,新增注释说明待处理执行单仅展示非药品医嘱,药品相关查询由单独方法处理 --- .../ATDManageAppMapper.xml | 149 +----------------- 1 file changed, 4 insertions(+), 145 deletions(-) diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalnursestation/ATDManageAppMapper.xml b/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalnursestation/ATDManageAppMapper.xml index 154b9b904..87960fa99 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalnursestation/ATDManageAppMapper.xml +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalnursestation/ATDManageAppMapper.xml @@ -497,149 +497,8 @@ ii.performer_check_id, ii.category_code, ii.org_name - FROM ((SELECT T1.encounter_id, - T1.tenant_id, - #{medMedicationRequest} AS advice_table, - T1.id AS request_id, - T1.effective_dose_start AS start_time, - T1.effective_dose_end AS end_time, - T1.practitioner_id AS requester_id, - T1.create_time AS request_time, - T1.skin_test_flag AS skin_test_flag, - T1.infusion_flag AS inject_flag, - T1.group_id AS group_id, - T1.performer_check_id, - T2."name" AS advice_name, - T2.id AS item_id, - T3.total_volume AS volume, - T1.lot_number AS lot_number, - T1.quantity AS quantity, - T1.unit_code AS unit_code, - T1.status_enum AS request_status, - T1.method_code AS method_code, - T1.rate_code AS rate_code, - T1.dose AS dose, - T1.dose_unit_code AS dose_unit_code, - al1.id AS position_id, - al1."name" AS position_name, - T1.dispense_per_duration AS dispense_per_duration, - T2.part_percent AS part_percent, - ccd."name" AS condition_definition_name, - T1.therapy_enum AS therapy_enum, - T1.sort_number AS sort_number, - T1.execute_num, - af.day_times, - ae.bus_no, - ap."name" AS patient_name, - al2."name" AS bed_name, - ap.gender_enum, - ap.birth_date, - ap.id AS patient_id, - fc.contract_name, - diagnosis.condition_names, - pra."name" AS admitting_doctor_name, - personal_account.balance_amount, - personal_account.id AS account_id, - T2.category_code, - COALESCE(ao.name, al1."name") AS org_name - FROM med_medication_request AS T1 - LEFT JOIN med_medication_definition AS T2 - ON T2.id = T1.medication_id - AND T2.delete_flag = '0' - LEFT JOIN med_medication AS T3 - ON T3.medication_def_id = T2.ID - AND T3.delete_flag = '0' - LEFT JOIN adm_location AS al1 - ON al1.id = T1.perform_location - AND al1.delete_flag = '0' - LEFT JOIN adm_organization AS ao - ON ao.id = T1.perform_org - LEFT JOIN cli_condition AS cc - ON cc.id = T1.condition_id - AND cc.delete_flag = '0' - LEFT JOIN cli_condition_definition AS ccd - ON ccd.id = cc.definition_id - AND ccd.delete_flag = '0' - LEFT JOIN adm_frequency af - ON af.rate_code = T1.rate_code - AND af.delete_flag = '0' - LEFT JOIN adm_encounter ae - ON ae.id = T1.encounter_id - AND ae.class_enum = #{imp} - AND ae.delete_flag = '0' - LEFT JOIN adm_patient ap - ON ae.patient_id = ap.id - AND ap.delete_flag = '0' - LEFT JOIN adm_encounter_location ael - ON ae.id = ael.encounter_id - AND ael.delete_flag = '0' - AND ael.status_enum = #{active} - AND ael.form_enum = #{bed} - LEFT JOIN adm_location al2 - ON ael.location_id = al2.id - AND al2.delete_flag = '0' - LEFT JOIN adm_account aa - ON ae.id = aa.encounter_id - AND aa.encounter_flag = 1 - AND aa.delete_flag = '0' - LEFT JOIN fin_contract fc - ON aa.contract_no = fc.bus_no - AND fc.delete_flag = '0' - LEFT JOIN (SELECT aed.encounter_id, - STRING_AGG(ccd.name, ', ') AS condition_names - FROM adm_encounter_diagnosis aed - INNER JOIN cli_condition cc - ON cc.id = aed.condition_id - AND cc.delete_flag = '0' - INNER JOIN cli_condition_definition ccd - ON ccd.id = cc.definition_id - AND ccd.delete_flag = '0' - WHERE aed.delete_flag = '0' - GROUP BY aed.encounter_id) AS diagnosis - ON ae.id = diagnosis.encounter_id - LEFT JOIN adm_encounter_participant aep - ON ae.id = aep.encounter_id - AND aep.delete_flag = '0' - AND aep.status_enum = #{active} - AND aep.type_code::text = #{admittingDoctor}::text - LEFT JOIN adm_practitioner pra - ON aep.practitioner_id = pra.id - AND pra.delete_flag = '0' - LEFT JOIN (SELECT aa.id, - aa.encounter_id, - (aa.balance_amount - - COALESCE(SUM(CASE - WHEN aci.status_enum IN (#{billed}, #{billable}) - THEN aci.total_price - ELSE 0 END), 0) + - COALESCE(SUM(CASE - WHEN aci.status_enum = #{refunded} - THEN aci.total_price - ELSE 0 END), 0)) AS balance_amount - FROM adm_account aa - LEFT JOIN adm_charge_item aci - ON aa.encounter_id = aci.encounter_id - AND aa.delete_flag = '0' - WHERE aa.type_code = #{personalCashAccount} - AND aa.delete_flag = '0' - GROUP BY aa.id, - aa.encounter_id, - aa.balance_amount) AS personal_account - ON personal_account.encounter_id = ae.id - WHERE T1.delete_flag = '0' - AND T1.refund_medicine_id IS NULL - AND T1.status_enum != #{stopped} - AND T1.status_enum != #{dispenseCompleted} - AND T1.generate_source_enum = #{doctorPrescription} - AND CASE - WHEN T1.status_enum = #{draft} - THEN T1.performer_check_id IS NOT NULL - ELSE 1 = 1 END - ORDER BY T1.status_enum, - T1.sort_number, - T1.group_id) - UNION - (SELECT T1.encounter_id, + + FROM (SELECT DISTINCT T1.encounter_id, T1.tenant_id, #{worServiceRequest} AS advice_table, T1.id AS request_id, @@ -776,7 +635,7 @@ THEN T1.performer_check_id IS NOT NULL ELSE 1 = 1 END AND T1.refund_service_id IS NULL - ORDER BY T1.status_enum)) AS ii + ORDER BY T1.status_enum) AS ii ${ew.customSqlSegment} - \ No newline at end of file + From e1c3aebacd2eebe25dbbd8244cc54b0989090a6c Mon Sep 17 00:00:00 2001 From: wangjian963 <15215920+aprilry@user.noreply.gitee.com> Date: Mon, 29 Jun 2026 14:59:53 +0800 Subject: [PATCH 2/3] =?UTF-8?q?822=20=E3=80=90=E4=BD=8F=E9=99=A2=E6=8A=A4?= =?UTF-8?q?=E5=A3=AB=E7=AB=99-=E5=8C=BB=E5=98=B1=E6=A0=A1=E5=AF=B9?= =?UTF-8?q?=E3=80=91=E8=8D=AF=E5=93=81=E5=8C=BB=E5=98=B1=E2=80=9C=E6=80=BB?= =?UTF-8?q?=E9=87=8F=E2=80=9D=E6=95=B0=E6=8D=AE=E6=8D=A2=E7=AE=97=E5=8F=8A?= =?UTF-8?q?=E5=8D=95=E4=BD=8D=E9=94=99=E8=AF=AF=EF=BC=8C=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E6=9C=AA=E6=A0=A1=E5=AF=B9=E5=88=97=E8=A1=A8=E6=80=BB=E9=87=8F?= =?UTF-8?q?=E6=94=BE=E5=A4=A7=EF=BC=88=E5=8C=BB=E7=94=9F=E5=BC=80=E7=AB=8B?= =?UTF-8?q?2=E7=9B=92=E6=98=BE=E7=A4=BA=E4=B8=BA30=E7=9B=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/AdviceProcessAppServiceImpl.java | 26 +++++++++++++++++-- .../dto/InpatientAdviceDto.java | 7 ++++- .../AdviceProcessAppMapper.xml | 6 ++++- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java index d4feca4b7..a256066af 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java @@ -269,9 +269,9 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService { e.setSingleDose(doseStr + unitStr); } - // 总量:数量(总量就是数量,不需要乘以剂量,单位由前端显示) + // 总量:药品请求数量按最小单位存储时,折算回当前展示单位。 if (e.getQuantity() != null) { - e.setTotalAmount(String.valueOf(e.getQuantity())); + e.setTotalAmount(normalizeTotalAmount(e)); } // 频次/用法组合 @@ -402,6 +402,28 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService { return R.ok(inpatientAdvicePage); } + private String normalizeTotalAmount(InpatientAdviceDto advice) { + BigDecimal quantity = advice.getQuantity(); + if (quantity == null) { + return null; + } + + if (CommonConstants.TableName.MED_MEDICATION_REQUEST.equals(advice.getAdviceTable()) + && advice.getPartPercent() != null + && advice.getPartPercent().compareTo(BigDecimal.ZERO) > 0 + && advice.getUnitCode() != null + && advice.getMinUnitCode() != null + && !advice.getUnitCode().equals(advice.getMinUnitCode())) { + BigDecimal partPercent = advice.getPartPercent(); + BigDecimal[] divideResult = quantity.divideAndRemainder(partPercent); + if (quantity.compareTo(partPercent) >= 0 && BigDecimal.ZERO.compareTo(divideResult[1]) == 0) { + quantity = divideResult[0]; + } + } + + return quantity.stripTrailingZeros().toPlainString(); + } + /** * 医嘱校对通过 * diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/dto/InpatientAdviceDto.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/dto/InpatientAdviceDto.java index 80e26dca3..f9e7fd5ef 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/dto/InpatientAdviceDto.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/dto/InpatientAdviceDto.java @@ -90,13 +90,18 @@ public class InpatientAdviceDto { private String lotNumber; /** 请求数量 */ - private Integer quantity; + private BigDecimal quantity; /** 请求单位编码 */ @Dict(dictCode = "unit_code") private String unitCode; private String unitCode_dictText; + /** 药品最小单位编码 */ + @Dict(dictCode = "unit_code") + private String minUnitCode; + private String minUnitCode_dictText; + /** 请求状态 */ private Integer requestStatus; private String requestStatus_enumText; diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalnursestation/AdviceProcessAppMapper.xml b/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalnursestation/AdviceProcessAppMapper.xml index 1b5146588..eb40ab304 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalnursestation/AdviceProcessAppMapper.xml +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalnursestation/AdviceProcessAppMapper.xml @@ -127,6 +127,7 @@ ii.lot_number, ii.quantity, ii.unit_code, + ii.min_unit_code, ii.request_status, ii.method_code, ii.rate_code, @@ -181,6 +182,7 @@ T1.lot_number AS lot_number, T1.quantity AS quantity, T1.unit_code AS unit_code, + T2.min_unit_code AS min_unit_code, T1.status_enum AS request_status, T1.method_code AS method_code, T1.rate_code AS rate_code, @@ -329,6 +331,7 @@ NULL::varchar AS lot_number, T1.quantity AS quantity, T1.unit_code AS unit_code, + NULL::varchar AS min_unit_code, T1.status_enum AS request_status, NULL::varchar AS method_code, T1.rate_code AS rate_code, @@ -466,6 +469,7 @@ T1.lot_number AS lot_number, T1.quantity AS quantity, T1.unit_code AS unit_code, + NULL::varchar AS min_unit_code, T1.status_enum AS request_status, NULL::varchar AS method_code, T1.rate_code AS rate_code, @@ -583,4 +587,4 @@ ) AS ii ${ew.customSqlSegment} - \ No newline at end of file + From d68f6d646bb3e13e89978fe50e41b772bcd19098 Mon Sep 17 00:00:00 2001 From: wangjian963 <15215920+aprilry@user.noreply.gitee.com> Date: Mon, 29 Jun 2026 15:02:16 +0800 Subject: [PATCH 3/3] =?UTF-8?q?refactor(adviceProcess):=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=A4=A7=E6=95=B0=E9=99=A4=E6=B3=95=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将取余判断的逻辑嵌套到数量大于等于单位占比的分支内,优化代码可读性 --- .../appservice/impl/AdviceProcessAppServiceImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java index a256066af..b61ce35bf 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java @@ -415,9 +415,11 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService { && advice.getMinUnitCode() != null && !advice.getUnitCode().equals(advice.getMinUnitCode())) { BigDecimal partPercent = advice.getPartPercent(); - BigDecimal[] divideResult = quantity.divideAndRemainder(partPercent); - if (quantity.compareTo(partPercent) >= 0 && BigDecimal.ZERO.compareTo(divideResult[1]) == 0) { - quantity = divideResult[0]; + if (quantity.compareTo(partPercent) >= 0) { + BigDecimal[] divideResult = quantity.divideAndRemainder(partPercent); + if (BigDecimal.ZERO.compareTo(divideResult[1]) == 0) { + quantity = divideResult[0]; + } } }