当手术计费弹窗中点击"签发"耗材时,因耗材的locationId(发放库房)为空导致后端异常。 在DoctorStationAdviceAppServiceImpl.handDevice方法中,当locationId为null时,使用登录用户的科室ID作为默认值, 与NurseBillingAppService中的处理方式保持一致。
353 lines
15 KiB
XML
Executable File
353 lines
15 KiB
XML
Executable File
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<!DOCTYPE mapper
|
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="com.openhis.administration.mapper.ChargeItemMapper">
|
|
|
|
<select id="getChargeItemBaseInfoByIds" resultType="com.openhis.administration.dto.ChargeItemBaseInfoDto">
|
|
SELECT
|
|
a.id ,
|
|
a.status_enum ,
|
|
a.bus_no ,
|
|
a.patient_id ,
|
|
a.context_enum ,
|
|
a.encounter_id ,
|
|
a.occurrence_time ,
|
|
a.performer_id ,
|
|
a.performing_org_id ,
|
|
a.requesting_org_id ,
|
|
a.cost_org_id ,
|
|
a.quantity_value ,
|
|
a.quantity_unit ,
|
|
a.unit_price ,
|
|
a.total_price ,
|
|
a.definition_id ,
|
|
a.def_detail_id ,
|
|
a.base_amount ,
|
|
a.discount_amount ,
|
|
a.surcharge_amount ,
|
|
a.override_reason_code ,
|
|
a.override_reason_text ,
|
|
a.enterer_id ,
|
|
a.entered_date ,
|
|
a.service_table ,
|
|
a.service_id ,
|
|
a.claim_state_enum ,
|
|
a.account_id ,
|
|
a.org_id ,
|
|
a.tenant_id ,
|
|
a.delete_flag ,
|
|
a.create_by ,
|
|
a.create_time ,
|
|
a.update_by ,
|
|
a.update_time ,
|
|
a.print_count ,
|
|
a.product_table ,
|
|
a.product_id ,
|
|
a.refund_id ,
|
|
a.prescription_no ,
|
|
a.generate_source_enum ,
|
|
a.children_json ,
|
|
a.condition_id ,
|
|
a.encounter_diagnosis_id ,
|
|
a.tcm_flag ,
|
|
COALESCE(b1.bus_no, b2.bus_no, b3.bus_no) AS request_bus_no,
|
|
COALESCE(b6.bus_no, b7.bus_no, b8.bus_no) AS base_bus_no,
|
|
COALESCE(b6.name, b7.name, b8.name) AS "name",
|
|
COALESCE(b6.category_code, b7.category_code, b8.category_code) AS category_code,
|
|
COALESCE(b6.approval_number, b7.approval_number) AS approval_number,
|
|
COALESCE(b6.yb_no, b7.yb_no, b8.yb_no) AS yb_no,
|
|
CASE WHEN b6.children_flag is NOT NULL THEN b6.children_flag ELSE '0' END AS children_flag,
|
|
COALESCE(b6.chrgitm_lv, b7.chrgitm_lv, b8.chrgitm_lv) AS chrgitm_lv,
|
|
CASE WHEN b6.rx_flag is NOT NULL THEN b6.rx_flag ELSE 0 END AS children_flag,
|
|
COALESCE(b1.yb_class_enum, b2.yb_class_enum, b3.yb_class_enum) AS yb_class_enum,
|
|
COALESCE(b1.trace_no, b2.trace_no) AS trace_no,
|
|
CASE WHEN b1.suffering_flag is NOT NULL THEN b1.suffering_flag ELSE 0 END AS suffering_flag,
|
|
b5.yb_type,
|
|
org."name" as dept_name,
|
|
org.yb_no as dept_yb_no,
|
|
pra."name" as doct_name,
|
|
pra.yb_no as doct_yb_no,
|
|
contract.bus_no as contract_no,
|
|
T2.charge_name,
|
|
T2.title,
|
|
T2.status_enum,
|
|
T2.org_id,
|
|
T2.description,
|
|
T2.instance_table,
|
|
T2.instance_id,
|
|
T2.effective_start,
|
|
T2.effective_end,
|
|
T2.type_code,
|
|
T2.yb_type,
|
|
T2.condition_flag,
|
|
T2.price
|
|
-- 添加更多需要的字段
|
|
FROM
|
|
adm_charge_item a
|
|
LEFT JOIN
|
|
adm_charge_item_definition T2 ON a.definition_id = T2.ID AND T2.delete_flag = '0'
|
|
LEFT JOIN
|
|
med_medication_request b1 ON a.service_id = b1.id AND a.service_table = 'med_medication_request'
|
|
LEFT JOIN
|
|
wor_device_request b2 ON a.service_id = b2.id AND a.service_table = 'wor_device_request'
|
|
LEFT JOIN
|
|
wor_service_request b3 ON a.service_id = b3.id AND a.service_table = 'wor_service_request'
|
|
LEFT JOIN
|
|
adm_healthcare_service b4 ON a.service_id = b4.id AND a.service_table = 'adm_healthcare_service'
|
|
LEFT JOIN
|
|
med_medication_definition b6 ON a.product_id = b6.id AND a.product_table = 'med_medication_definition'
|
|
LEFT JOIN
|
|
adm_device_definition b7 ON a.product_id = b7.id AND a.product_table = 'adm_device_definition'
|
|
LEFT JOIN
|
|
wor_activity_definition b8 ON a.product_id = b8.id AND a.product_table = 'wor_activity_definition'
|
|
LEFT JOIN
|
|
adm_charge_item_definition b5 ON a.definition_id = b5.id
|
|
LEFT JOIN
|
|
adm_organization org ON a.requesting_org_id = org.id
|
|
LEFT JOIN
|
|
adm_practitioner pra ON a.enterer_id = pra.id
|
|
LEFT JOIN
|
|
adm_account acc ON a.account_id = acc.id
|
|
LEFT JOIN
|
|
fin_contract contract ON acc.contract_no = contract.bus_no
|
|
WHERE
|
|
a.delete_flag = '0'
|
|
AND
|
|
a.id IN
|
|
<foreach collection="chargeItemIds" item="item" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</select>
|
|
<select id="getChargeItemDefInfoByIds" resultType="com.openhis.administration.dto.ChargeItemDefInfo">
|
|
SELECT
|
|
T1.id,
|
|
T1.status_enum,
|
|
T1.generate_source_enum,
|
|
T1.bus_no,
|
|
T1.prescription_no,
|
|
T1.patient_id,
|
|
T1.context_enum,
|
|
T1.encounter_id,
|
|
T1.occurrence_time,
|
|
T1.performer_id,
|
|
T1.performing_org_id,
|
|
T1.requesting_org_id,
|
|
T1.cost_org_id,
|
|
T1.quantity_value,
|
|
T1.quantity_unit,
|
|
T1.unit_price,
|
|
T1.total_price,
|
|
T1.definition_id,
|
|
T1.def_detail_id,
|
|
T1.base_amount,
|
|
T1.discount_amount,
|
|
T1.surcharge_amount,
|
|
T1.override_reason_code,
|
|
T1.override_reason_text,
|
|
T1.enterer_id,
|
|
T1.entered_date,
|
|
T1.service_table,
|
|
T1.service_id,
|
|
T1.product_table,
|
|
T1.product_id,
|
|
T1.claim_state_enum,
|
|
T1.print_count,
|
|
T1.account_id,
|
|
T1.org_id,
|
|
T1.refund_id,
|
|
T1.children_json,
|
|
T1.condition_id,
|
|
T1.encounter_diagnosis_id,
|
|
T1.tcm_flag,
|
|
T1.create_time,
|
|
T1.create_by,
|
|
T1.update_time,
|
|
T1.update_by,
|
|
T1.system_discount_price,
|
|
T1.manual_adjusted_price,
|
|
T2.charge_name,
|
|
T2.title,
|
|
T2.status_enum,
|
|
T2.org_id,
|
|
T2.description,
|
|
T2.instance_table,
|
|
T2.instance_id,
|
|
T2.effective_start,
|
|
T2.effective_end,
|
|
T2.type_code,
|
|
T2.yb_type,
|
|
T2.condition_flag,
|
|
T2.price
|
|
FROM
|
|
adm_charge_item T1
|
|
LEFT JOIN adm_charge_item_definition T2 ON T1.definition_id = T2.ID
|
|
AND T2.delete_flag = '0'
|
|
WHERE
|
|
T1.id IN
|
|
<foreach collection="chargeItemIds" item="itemId" open="(" separator="," close=")">
|
|
#{itemId}
|
|
</foreach>
|
|
AND T1.delete_flag = '0'
|
|
</select>
|
|
|
|
<!-- 查询费用明细 -->
|
|
<select id="getCostDetails" resultType="com.openhis.administration.dto.CostDetailDto">
|
|
SELECT final_res.charge_name,
|
|
final_res.charge_item_enum,
|
|
final_res.unit_price,
|
|
final_res.quantity_value,
|
|
final_res.total_price,
|
|
final_res.org_id,
|
|
final_res.practitioner,
|
|
final_res.recorded_time,
|
|
final_res.chrgitm_lv,
|
|
final_res.remark,
|
|
final_res.encounter_id,
|
|
final_res.patient_id,
|
|
final_res.patient_name,
|
|
final_res.birth_date,
|
|
final_res.gender_enum,
|
|
final_res.bus_no,
|
|
final_res.bed_name,
|
|
final_res.condition_names,
|
|
final_res.admitting_doctor_name,
|
|
final_res.balance_amount,
|
|
final_res.contract_name
|
|
FROM (WITH execution_table AS (SELECT cp.request_id,
|
|
cp.org_id,
|
|
ap.NAME,
|
|
cp.occurrence_time AS recorded_time
|
|
FROM cli_procedure cp
|
|
LEFT JOIN cli_procedure_performer cpp ON cpp.procedure_id = cp.ID
|
|
AND cpp.delete_flag = '0'
|
|
LEFT JOIN adm_practitioner ap ON ap.ID = cpp.practitioner_id
|
|
AND ap.active_flag = 1
|
|
AND ap.delete_flag = '0'
|
|
WHERE cp.delete_flag = '0'),
|
|
diagnosis AS (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),
|
|
hospitalization AS (SELECT aep.encounter_id,
|
|
pra.NAME
|
|
FROM adm_encounter_participant aep
|
|
LEFT JOIN adm_practitioner pra ON aep.practitioner_id = pra.ID
|
|
AND pra.delete_flag = '0'
|
|
WHERE aep.delete_flag = '0'
|
|
AND aep.status_enum = #{ active }
|
|
AND aep.type_code = #{ admittingDoctor }),
|
|
account AS (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 aci.delete_flag = '0'
|
|
WHERE aa.type_code = #{ personalCashAccount }
|
|
AND aa.delete_flag = '0'
|
|
GROUP BY aa.ID,
|
|
aa.encounter_id,
|
|
aa.balance_amount),
|
|
contract AS (SELECT fc.contract_name, aa.encounter_id
|
|
FROM adm_account aa
|
|
LEFT JOIN fin_contract fc ON aa.contract_no = fc.bus_no AND fc.delete_flag = '0'
|
|
WHERE aa.encounter_flag = 1
|
|
AND aa.delete_flag = '0')
|
|
SELECT T1.tenant_id,
|
|
T2.charge_name,
|
|
T2.yb_type AS charge_item_enum,
|
|
T1.unit_price,
|
|
T1.quantity_value,
|
|
T1.total_price,
|
|
T6.org_id,
|
|
T6.NAME AS practitioner,
|
|
T6.recorded_time,
|
|
CASE
|
|
WHEN T2.instance_table = 'adm_device_definition' THEN
|
|
T3.chrgitm_lv
|
|
WHEN T2.instance_table = 'med_medication_definition' THEN
|
|
T4.chrgitm_lv
|
|
WHEN T2.instance_table = 'wor_activity_definition' THEN
|
|
T5.chrgitm_lv
|
|
ELSE NULL
|
|
END AS chrgitm_lv,
|
|
'' AS remark,
|
|
T1.encounter_id,
|
|
T1.patient_id,
|
|
T7.NAME AS patient_name,
|
|
T7.birth_date,
|
|
T7.gender_enum,
|
|
T8.bus_no,
|
|
T10.NAME AS bed_name,
|
|
T11.condition_names,
|
|
T12.NAME AS admitting_doctor_name,
|
|
T13.balance_amount,
|
|
T14.contract_name
|
|
FROM adm_charge_item T1
|
|
LEFT JOIN adm_charge_item_definition T2 ON T2.ID = T1.definition_id
|
|
AND T2.delete_flag = '0'
|
|
LEFT JOIN adm_device_definition T3 ON T2.instance_id = T3.ID
|
|
AND T2.instance_table = 'adm_device_definition'
|
|
AND T3.delete_flag = '0'
|
|
LEFT JOIN med_medication_definition T4 ON T2.instance_id = T4.ID
|
|
AND T2.instance_table = 'med_medication_definition'
|
|
AND T4.delete_flag = '0'
|
|
LEFT JOIN wor_activity_definition T5 ON T2.instance_id = T5.ID
|
|
AND T2.instance_table = 'wor_activity_definition'
|
|
AND T5.delete_flag = '0'
|
|
LEFT JOIN execution_table T6 ON T6.request_id = T1.service_id
|
|
LEFT JOIN adm_patient T7 ON T7.ID = T1.patient_id
|
|
AND T7.delete_flag = '0'
|
|
LEFT JOIN adm_encounter T8 ON T8.ID = T1.encounter_id
|
|
AND T8.delete_flag = '0'
|
|
LEFT JOIN adm_encounter_location T9 ON T8.ID = T9.encounter_id
|
|
AND T9.delete_flag = '0'
|
|
AND T9.status_enum = #{active}
|
|
AND T9.form_enum = #{bed}
|
|
LEFT JOIN adm_location T10 ON T9.location_id = T10.ID
|
|
AND T10.delete_flag = '0'
|
|
LEFT JOIN diagnosis T11 ON T1.encounter_id = T11.encounter_id
|
|
LEFT JOIN hospitalization T12 ON T1.encounter_id = T12.encounter_id
|
|
LEFT JOIN account T13 ON T1.encounter_id = T13.encounter_id
|
|
LEFT JOIN contract T14 ON T1.encounter_id = T14.encounter_id
|
|
WHERE T1.delete_flag = '0'
|
|
GROUP BY T1.tenant_id,
|
|
T2.charge_name,
|
|
T2.yb_type,
|
|
T1.unit_price,
|
|
T1.quantity_value,
|
|
T1.total_price,
|
|
T6.org_id,
|
|
T6.NAME,
|
|
T6.recorded_time,
|
|
T2.instance_table,
|
|
T3.chrgitm_lv,
|
|
T4.chrgitm_lv,
|
|
T5.chrgitm_lv,
|
|
T1.encounter_id,
|
|
T1.patient_id,
|
|
T7.NAME,
|
|
T7.birth_date,
|
|
T7.gender_enum,
|
|
T8.bus_no,
|
|
T10.NAME,
|
|
T11.condition_names,
|
|
T12.NAME,
|
|
T13.balance_amount,
|
|
T14.contract_name
|
|
ORDER BY T6.recorded_time DESC) final_res
|
|
${ew.customSqlSegment}
|
|
</select>
|
|
</mapper> |