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 c8bbfdbdd..a6ce1d80d 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 @@ -539,6 +539,65 @@ AND T1.refund_medicine_id IS NULL ORDER BY T1.status_enum,T1.sort_number) UNION ALL + -- 🔧 Bug #444: 直接从计费项目表补充查询药品记录,用于覆盖med_medication_request有记录但generate_source_enum不匹配的场景 + (SELECT 1 AS advice_type, + T1.service_id AS request_id, + T1.service_id || '-ci-med' AS unique_key, + '' AS prescription_no, + T1.enterer_id AS requester_id, + T1.entered_date AS request_time, + CASE WHEN T1.enterer_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag, + T2.content_json AS content_json, + NULL AS skin_test_flag, + NULL AS inject_flag, + NULL AS group_id, + T3.NAME AS advice_name, + T4.total_volume AS volume, + T2.lot_number AS lot_number, + T1.quantity_value AS quantity, + T1.quantity_unit AS unit_code, + T1.status_enum AS status_enum, + '' AS method_code, + '' AS rate_code, + NULL AS dose, + '' AS dose_unit_code, + T1.id AS charge_item_id, + T1.unit_price AS unit_price, + T1.total_price AS total_price, + T1.status_enum AS charge_status, + NULL AS position_id, + '' AS position_name, + NULL AS dispense_per_duration, + T3.part_percent AS part_percent, + '' AS condition_definition_name, + T2.sort_number AS sort_number, + NULL AS based_on_id, + NULL AS category_enum, + T1.encounter_id AS encounter_id, + T1.patient_id AS patient_id, + 'med_medication_definition' AS advice_table_name, + T3.ID AS advice_definition_id + FROM adm_charge_item AS T1 + INNER JOIN med_medication_request AS T2 ON T2.ID = T1.service_id AND T2.delete_flag = '0' + LEFT JOIN med_medication_definition AS T3 ON T3.ID = T2.medication_id AND T3.delete_flag = '0' + LEFT JOIN med_medication AS T4 ON T4.medication_def_id = T3.ID AND T4.delete_flag = '0' + WHERE T1.delete_flag = '0' + AND T1.service_table = #{MED_MEDICATION_REQUEST} + + AND T1.encounter_id = #{encounterId} + + + AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId} + + AND NOT EXISTS ( + SELECT 1 FROM med_medication_request T5 + WHERE T5.ID = T1.service_id AND T5.delete_flag = '0' + + AND T5.generate_source_enum = #{generateSourceEnum} + + ) + ORDER BY T1.entered_date) + UNION ALL -- 🔧 查询仅存在于 adm_charge_item 的"孤儿"耗材数据(DeviceRequest 缺失或 generate_source_enum 未设置) -- 正常 DeviceRequest(generate_source_enum 已赋值)由下方 Part 3 统一负责,此处不做重复覆盖避免 UNION ALL 重复行 (SELECT 2 AS advice_type,