Files
his/openhis-server-new/openhis-application/src/main/resources/mapper/inhospitalnursestation/MedicineSummaryAppMapper.xml
2025-12-27 15:30:40 +08:00

282 lines
14 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.MedicineSummaryAppMapper">
<resultMap id="MedicineDispenseFormMap" type="com.openhis.web.inhospitalnursestation.dto.MedicineDispenseFormDto">
<result property="encounterId" column="encounter_id"/>
<result property="skinTestFlag" column="skin_test_flag"/>
<result property="injectFlag" column="inject_flag"/>
<result property="tcmFlag" column="tcm_flag"/>
<result property="chineseHerbsDoseQuantity" column="chinese_herbs_dose_quantity"/>
<result property="sufferingFlag" column="suffering_flag"/>
<result property="adviceId" column="advice_id"/>
<result property="adviceName" column="advice_name"/>
<result property="itemId" column="item_id"/>
<result property="volume" column="volume"/>
<result property="lotNumber" column="lot_number"/>
<result property="quantity" column="quantity"/>
<result property="unitCode" column="unit_code"/>
<result property="methodCode" column="method_code"/>
<result property="rateCode" column="rate_code"/>
<result property="dose" column="dose"/>
<result property="doseUnitCode" column="dose_unit_code"/>
<result property="positionId" column="position_id"/>
<result property="positionName" column="position_name"/>
<result property="conditionDefinitionName" column="condition_definition_name"/>
<result property="therapyEnum" column="therapy_enum"/>
<result property="sortNumber" column="sort_number"/>
<result property="busNo" column="bus_no"/>
<result property="patientName" column="patient_name"/>
<result property="bedName" column="bed_name"/>
<result property="genderEnum" column="gender_enum"/>
<result property="birthDate" column="birth_date"/>
<result property="contractName" column="contract_name"/>
<result property="conditionNames" column="condition_names"/>
<result property="admittingDoctorName" column="admitting_doctor_name"/>
<result property="balanceAmount" column="balance_amount"/>
<collection property="medicineSummaryParamList" ofType="com.openhis.web.inhospitalnursestation.dto.MedicineSummaryParam">
<result property="procedureId" column="procedure_id"/>
<result property="dispenseId" column="dispense_id"/>
<result property="dispenseTime" column="planned_dispense_time"/>
<result property="dispenseStatus" column="dispense_status"/>
</collection>
</resultMap>
<select id="selectMedicineDispenseFormPage" resultMap="MedicineDispenseFormMap">
SELECT ii.encounter_id,
ii.skin_test_flag,
ii.inject_flag,
ii.group_id,
ii.tcm_flag,
ii.chinese_herbs_dose_quantity,
ii.suffering_flag,
ii.advice_id,
ii.advice_name,
ii.item_id,
ii.volume,
ii.lot_number,
ii.quantity,
ii.unit_code,
ii.method_code,
ii.rate_code,
ii.dose,
ii.dose_unit_code,
ii.position_id,
ii.position_name,
ii.condition_definition_name,
ii.therapy_enum,
ii.sort_number,
ii.bus_no,
ii.patient_name,
ii.bed_name,
ii.gender_enum ,
ii.birth_date ,
ii.patient_id,
ii.contract_name ,
ii.condition_names,
ii.admitting_doctor_name,
ii.balance_amount,
ii.dispense_id,
ii.planned_dispense_time,
ii.procedure_id,
ii.dispense_status
FROM (( SELECT T1.encounter_id,
T1.tenant_id,
T1.skin_test_flag AS skin_test_flag,
T1.infusion_flag AS inject_flag,
T1.group_id AS group_id,
T1.tcm_flag,
T1.chinese_herbs_dose_quantity,
T1.suffering_flag,
T1.id AS advice_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.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,
ccd."name" AS condition_definition_name,
T1.therapy_enum AS therapy_enum,
T1.sort_number AS sort_number,
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,
mmd.id AS dispense_id,
mmd.planned_dispense_time,
mmd.procedure_id,
mmd.status_enum AS dispense_status
FROM med_medication_request AS T1
LEFT JOIN med_medication_dispense AS mmd
ON T1.id = mmd.med_req_id
AND mmd.delete_flag = '0'
AND mmd.status_enum != #{summarized}
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 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_encounter ae
ON ae.id = T1.encounter_id
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 = #{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.status_enum = #{completed}
AND T1.refund_medicine_id IS NULL
AND mmd.procedure_id IS NOT NULL
ORDER BY mmd.planned_dispense_time )) AS ii
${ew.customSqlSegment}
</select>
<select id="selectMedicineSummaryFormPage"
resultType="com.openhis.web.inhospitalnursestation.dto.MedicineSummaryFormDto">
SELECT T1.bus_no ,
T1.apply_time ,
T1.applicant_id,
T1.status_enum ,
T1.dispense_time,
T1.receiver_id,
T1.applicant_name,
T1.receiver_name,
T1.location_name
FROM (
SELECT wsr.tenant_id,
wsr.bus_no ,
wsr.apply_time ,
wsr.applicant_id,
wsd.status_enum ,
wsd.receive_time AS dispense_time,
wsd.receiver_id,
ap."name" AS applicant_name,
ap2."name" AS receiver_name,
al."name" AS location_name
FROM wor_supply_request wsr
LEFT JOIN wor_supply_delivery wsd
ON wsr.id = wsd.request_id
AND wsd.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON wsr.applicant_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN adm_practitioner ap2
ON wsd.receiver_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN adm_location al
ON wsr.source_location_id = al.id
AND al.delete_flag = '0'
WHERE wsr.delete_flag = '0'
AND wsd.status_enum IN (#{preparation}, #{completed})
AND wsr.type_enum = #{summaryDispense}
GROUP BY wsr.tenant_id,
wsr.bus_no ,
wsr.apply_time ,
wsr.applicant_id,
wsd.status_enum ,
wsd.receive_time,
wsd.receiver_id,
ap."name",
ap2."name",
al."name"
ORDER BY wsr.bus_no DESC ) AS T1
${ew.customSqlSegment}
</select>
<select id="selectMedicineSummaryFormDetail"
resultType="com.openhis.web.inhospitalnursestation.dto.MedicineSummaryInfoDto">
SELECT mmd."name" AS item_name,
mmd.unit_code ,
mmd.min_unit_code ,
mmd.part_percent ,
mmd.manufacturer_text,
mmd.category_code,
mm.total_volume ,
wsr.lot_number,
wsr.item_quantity
FROM wor_supply_request wsr
LEFT JOIN wor_supply_delivery wsd
ON wsr.id = wsd.request_id
AND wsd.delete_flag = '0'
LEFT JOIN med_medication_definition mmd
ON wsr.item_id = mmd.id
AND mmd.delete_flag = '0'
LEFT JOIN med_medication mm
ON mmd.id = mm.medication_def_id
AND mm.delete_flag = '0'
WHERE wsr.delete_flag = '0'
AND wsr.bus_no = #{summaryNo}
</select>
</mapper>