303 lines
12 KiB
XML
303 lines
12 KiB
XML
<?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.web.inhospitalnursestation.mapper.NurseBillingAppMapper">
|
|
|
|
<select id="getInNurseBillingPage"
|
|
resultType="com.openhis.web.inhospitalnursestation.dto.InpatientAdviceDto">
|
|
SELECT ii.encounter_id,
|
|
ii.advice_table,
|
|
ii.request_id,
|
|
ii.start_time,
|
|
ii.end_time,
|
|
ii.requester_id,
|
|
ii.request_time,
|
|
ii.skin_test_flag,
|
|
ii.inject_flag,
|
|
ii.group_id,
|
|
ii.advice_name,
|
|
ii.item_id,
|
|
ii.volume,
|
|
ii.lot_number,
|
|
ii.quantity,
|
|
ii.unit_code,
|
|
ii.request_status,
|
|
ii.method_code,
|
|
ii.rate_code,
|
|
ii.dose,
|
|
ii.dose_unit_code,
|
|
ii.position_id,
|
|
ii.position_name,
|
|
ii.dispense_per_duration,
|
|
ii.part_percent,
|
|
ii.condition_definition_name,
|
|
ii.therapy_enum,
|
|
ii.sort_number,
|
|
ii.execute_num,
|
|
ii.day_times,
|
|
ii.bus_no,
|
|
ii."patient_name" AS patient_name,
|
|
ii."bed_name" AS bed_name,
|
|
ii.gender_enum ,
|
|
ii.birth_date ,
|
|
ii.patient_id,
|
|
ii.contract_name ,
|
|
ii.condition_names,
|
|
ii.admitting_doctor_name AS admitting_doctor_name,
|
|
ii.balance_amount AS balance_amount,
|
|
ii.account_id AS account_id,
|
|
ii.performer_check_id,
|
|
ii.category_code,
|
|
ii.unit_price,
|
|
ii.total_price
|
|
FROM (
|
|
( SELECT
|
|
T1.encounter_id,
|
|
T1.tenant_id,
|
|
#{ worDeviceRequest } AS advice_table,
|
|
T1.id AS request_id,
|
|
T1.use_start_time AS start_time,
|
|
T1.use_end_time AS end_time,
|
|
T1.requester_id AS requester_id,
|
|
T1.create_time AS request_time,
|
|
NULL AS skin_test_flag,
|
|
NULL AS inject_flag,
|
|
NULL AS group_id,
|
|
NULL AS performer_check_id,
|
|
T2."name" AS advice_name,
|
|
T2.id AS item_id,
|
|
T2.SIZE AS volume,
|
|
T1.lot_number AS lot_number,
|
|
T1.quantity AS quantity,
|
|
T1.unit_code AS unit_code,
|
|
T1.status_enum AS request_status,
|
|
NULL AS method_code,
|
|
NULL AS rate_code,
|
|
NULL AS dose,
|
|
NULL AS dose_unit_code,
|
|
al1.id AS position_id,
|
|
al1."name" AS position_name,
|
|
NULL AS dispense_per_duration,
|
|
T2.part_percent AS part_percent,
|
|
'' AS condition_definition_name,
|
|
2 AS therapy_enum,
|
|
NULL AS sort_number,
|
|
T1.quantity AS execute_num,
|
|
NULL AS day_times,
|
|
ae.bus_no,
|
|
ap."name" AS patient_name,
|
|
al."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,
|
|
aci1.unit_price,
|
|
aci1.total_price
|
|
FROM
|
|
wor_device_request AS T1
|
|
LEFT JOIN adm_device_definition AS T2 ON T2.id = T1.device_def_id
|
|
AND T2.delete_flag = '0'
|
|
LEFT JOIN adm_charge_item aci1 on aci1.service_id = T1.id
|
|
AND aci1.delete_flag = '0'
|
|
LEFT JOIN adm_location al1 ON T1.perform_location = al1.id
|
|
LEFT JOIN adm_organization AS ao1 ON ao1.id = T1.org_id
|
|
AND ao1.delete_flag = '0'
|
|
LEFT JOIN adm_encounter ae ON ae.id = T1.encounter_id
|
|
AND ae.class_enum = 1
|
|
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 = 2
|
|
AND ael.form_enum = 8
|
|
LEFT JOIN adm_location al ON ael.location_id = al.id
|
|
AND al.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 = #{ admittingDoctor }
|
|
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.generate_source_enum =#{ generateSourceEnum }
|
|
AND T1.refund_device_id IS NULL
|
|
<if test="startTime!=null and endTime!=null">
|
|
AND T1.create_time BETWEEN #{startTime}
|
|
AND #{endTime}
|
|
</if>
|
|
ORDER BY
|
|
T1.status_enum)
|
|
UNION
|
|
(SELECT
|
|
T1.encounter_id,
|
|
T1.tenant_id,
|
|
#{ worServiceRequest } AS advice_table,
|
|
T1.id AS request_id,
|
|
T1.occurrence_start_time AS start_time,
|
|
T1.occurrence_end_time AS end_time,
|
|
T1.requester_id AS requester_id,
|
|
T1.create_time AS request_time,
|
|
NULL AS skin_test_flag,
|
|
NULL AS inject_flag,
|
|
NULL AS group_id,
|
|
T1.performer_check_id,
|
|
T2."name" AS advice_name,
|
|
T2.id AS item_id,
|
|
NULL AS volume,
|
|
NULL AS lot_number,
|
|
T1.quantity AS quantity,
|
|
T1.unit_code AS unit_code,
|
|
T1.status_enum AS request_status,
|
|
NULL AS method_code,
|
|
NULL AS rate_code,
|
|
NULL AS dose,
|
|
NULL AS dose_unit_code,
|
|
ao1.id AS position_id,
|
|
ao1."name" AS position_name,
|
|
NULL AS dispense_per_duration,
|
|
1 AS part_percent,
|
|
'' AS condition_definition_name,
|
|
T1.therapy_enum AS therapy_enum,
|
|
NULL AS sort_number,
|
|
T1.quantity AS execute_num,
|
|
NULL AS day_times,
|
|
ae.bus_no,
|
|
ap."name" AS patient_name,
|
|
al."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,
|
|
aci1.unit_price,
|
|
aci1.total_price
|
|
FROM
|
|
wor_service_request AS T1
|
|
LEFT JOIN wor_activity_definition AS T2 ON T2.id = T1.activity_id
|
|
AND T2.delete_flag = '0'
|
|
LEFT JOIN adm_charge_item aci1 on aci1.service_id = T1.id
|
|
AND aci1.delete_flag = '0'
|
|
LEFT JOIN adm_organization AS ao1 ON ao1.id = T1.org_id
|
|
AND ao1.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 al ON ael.location_id = al.id
|
|
AND al.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 = #{ admittingDoctor }
|
|
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.generate_source_enum =#{ generateSourceEnum }
|
|
AND T1.refund_service_id IS NULL
|
|
<if test="startTime!=null and endTime!=null">
|
|
AND T1.create_time BETWEEN #{startTime}
|
|
AND #{endTime}
|
|
</if>
|
|
ORDER BY
|
|
T1.status_enum)
|
|
) AS ii
|
|
${ew.customSqlSegment}
|
|
</select>
|
|
</mapper> |