版本更新

This commit is contained in:
Zhang.WH
2025-09-03 15:54:41 +08:00
parent 0b93d16b64
commit 8f82322d10
3290 changed files with 154339 additions and 23829 deletions

View File

@@ -0,0 +1,156 @@
<?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.pharmacymanage.mapper.ChineseMedicineDispenseMapper">
<select id="selectEncounterInfoListPage" resultType="com.openhis.web.pharmacymanage.dto.EncounterInfoPageDto">
SELECT ii.tenant_id,
ii.encounter_id,
ii.encounter_no,
ii.department_name,
ii.patient_name,
ii.patient_wb_str,
ii.patient_py_str,
ii.gender_enum,
ii.department_id,
ii.id_card,
ii.reception_time,
ii.status_enum
FROM (
SELECT T1.tenant_id,
T1.id AS encounter_id,
T1.bus_no AS encounter_no,
T1.reception_time,
T1.organization_id AS department_id,
T2.gender_enum,
T2.name AS patient_name,
T2.wb_str AS patient_wb_str,
T2.py_str AS patient_py_str,
T2.id_card,
T3.name AS department_name,
T4.status_enum
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_organization AS T3
ON T1.organization_id = T3.id
AND T3.delete_flag = '0'
INNER JOIN med_medication_dispense AS T4
ON T4.encounter_id = T1.id
AND T4.delete_flag = '0'
GROUP BY T1.tenant_id,
T1.id,
T1.bus_no,
T1.reception_time,
T1.organization_id,
T2.gender_enum,
T2.name,
T2.wb_str,
T2.py_str,
T2.id_card,
T3.name,
T4.status_enum
ORDER BY T1.reception_time desc
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectPrescriptionPatientInfo" resultType="com.openhis.web.pharmacymanage.dto.PrescriptionPatientInfoDto">
SELECT
T2.name AS patient_name,
T2.gender_enum,
T2.birth_date,
T4.category_enum,
T2.id_card,
T5.name AS organization_name,
TO_CHAR(T1.start_time,'YYYY-MM-DD') AS encounter_date
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
LEFT JOIN med_medication_request AS T3
ON T1.id = T3.encounter_id
LEFT JOIN fin_contract AS T4
ON T3.contract_no = T4.bus_no
LEFT JOIN adm_organization AS T5
ON T1.organization_id = T5.id
WHERE
T1.id = #{encounterId}
GROUP BY
T2.name,
T2.gender_enum,
T2.birth_date,
T4.category_enum,
T2.id_card,
T5.name,
T1.start_time
</select>
<select id="selectPrescriptionMedicineInfoList" resultType="com.openhis.web.pharmacymanage.dto.PrescriptionMedicineInfoDto">
SELECT
DISTINCT
T8.name AS department_name,
T9.name AS doctor_name,
'中药处方' AS item_type,
T7.name AS condition_name,
T2.prescription_no,
T4.name AS medicine_name,
T3.total_volume,
T1.dose,
T2.rate_code,
T1.method_code,
T1.dose_unit_code,
T2.max_dose,
T2.first_dose,
T2.first_duration,
T2.dispense_interval,
T2.dispense_per_quantity,
T2.dispense_per_duration,
T1.quantity,
T5.unit_price,
T5.total_price
FROM med_medication_dispense AS T1
INNER JOIN med_medication_request AS T2
ON T1.med_req_id = T2.id
INNER JOIN med_medication AS T3
ON T1.medication_id = T3.id
INNER JOIN med_medication_definition AS T4
ON T3.medication_def_id = T4.id
AND T4.category_code IN ('4')
INNER JOIN adm_charge_item AS T5
ON T1.med_req_id = T5.service_id
INNER JOIN adm_encounter AS T6
ON T1.encounter_id = T6.id
INNER JOIN cli_condition_definition AS T7
ON T2.condition_id = T7.id
LEFT JOIN adm_organization AS T8
ON T6.organization_id = T8.id
LEFT JOIN adm_practitioner AS T9
ON T1.practitioner_id = T9.id
WHERE
T1.encounter_id = #{encounterId}
AND T1.status_enum = 2
ORDER BY
prescription_no,
medicine_name
</select>
<select id="selectDispenseInventoryInfoByPrescriptionNo" resultType="com.openhis.web.pharmacymanage.dto.DispenseInventoryDto">
SELECT
T1.id AS dispense_id,
T1.unit_code AS dispense_unit_code,
T1.quantity AS dispense_quantity,
T3.Id AS inventory_id,
T3.unit_code AS inventory_unit_code,
T3.quantity AS inventory_quantity,
T5.part_percent
FROM med_medication_dispense AS T1
INNER JOIN med_medication_request AS T2
ON T1.med_req_id = T2.id
INNER JOIN wor_inventory_item AS T3
ON T1.medication_id = T3.item_id
AND T3.item_table = #{medMedicationDefinition}
INNER JOIN med_medication AS T4
ON T1.medication_id = T4.id
INNER JOIN med_medication_definition AS T5
ON T4.medication_def_id = T5.id
WHERE
T2.prescription_no = #{prescriptionNo}
</select>
</mapper>

View File

@@ -0,0 +1,233 @@
<?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.pharmacymanage.mapper.IDeviceDispenseMapper">
<select id="selectEncounterInfoListPage" resultType="com.openhis.web.pharmacymanage.dto.EncounterInfoPageDto">
SELECT ii.tenant_id,
ii.encounter_id,
ii.encounter_no,
ii.department_name,
ii.patient_name,
ii.patient_wb_str,
ii.patient_py_str,
ii.gender_enum,
ii.department_id,
ii.id_card,
ii.reception_time,
ii.status_enum
-- ii.location_id
FROM (
SELECT T1.tenant_id,
T1.id AS encounter_id,
T1.bus_no AS encounter_no,
T1.reception_time,
T1.organization_id AS department_id,
T2.gender_enum,
T2.name AS patient_name,
T2.wb_str AS patient_wb_str,
T2.py_str AS patient_py_str,
T2.id_card,
T3.name AS department_name,
T4.status_enum
-- T4.location_id
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_organization AS T3
ON T1.organization_id = T3.id
AND T3.delete_flag = '0'
INNER JOIN wor_device_dispense AS T4
ON T4.encounter_id = T1.id
AND T4.delete_flag = '0'
INNER JOIN wor_device_request AS T5
ON T4.device_req_id = T5.id
AND T5.delete_flag = '0'
-- 因发药配药合并,前台只能看到待发药,已发药状态,但是后台配药发药状态都查
WHERE <if test="statusEnum == null">
T4.status_enum IN (#{inProgress},#{completed},#{preparation},#{prepared})
</if>
<if test="statusEnum == 3">
T4.status_enum IN (#{inProgress},#{preparation},#{prepared})
</if>
<if test="statusEnum == 4">
T4.status_enum = #{completed}
</if>
AND T1.class_enum = #{amb}
GROUP BY T1.tenant_id,
T1.id,
T1.bus_no,
T1.reception_time,
T1.organization_id,
T2.gender_enum,
T2.name,
T2.wb_str,
T2.py_str,
T2.id_card,
T3.name,
T4.status_enum
-- T4.location_id
ORDER BY T1.reception_time desc
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectPrescriptionPatientInfo" resultType="com.openhis.web.pharmacymanage.dto.PrescriptionPatientInfoDto">
SELECT
T2.name AS patient_name,
T2.gender_enum,
T2.birth_date,
T2.phone,
T4.category_enum,
T2.id_card,
T2.bus_no AS patient_bus_no,
T5.name AS organization_name,
(SELECT T6.name FROM adm_organization AS T6 WHERE T6.id = #{hospitalId} AND T6.delete_flag = '0') AS hospital_name,
TO_CHAR(T1.start_time,'YYYY-MM-DD') AS encounter_date
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
LEFT JOIN wor_device_request AS T3
ON T1.id = T3.encounter_id
LEFT JOIN fin_contract AS T4
ON T3.contract_code = T4.bus_no
LEFT JOIN adm_organization AS T5
ON T1.organization_id = T5.id
WHERE
T1.id = #{encounterId}
GROUP BY
T2.name,
T2.gender_enum,
T2.birth_date,
T2.phone,
T4.category_enum,
T2.id_card,
T2.bus_no,
T5.name,
hospital_name,
T1.start_time
</select>
<select id="selectPrescriptionDeviceInfoList" resultType="com.openhis.web.pharmacymanage.dto.PrescriptionDeviceInfoDto">
SELECT ii.department_name,
ii.doctor_name,
ii.item_type,
ii.condition_name,
ii.prescription_no,
ii.lot_number,
ii.request_id,
ii.device_name,
ii.device_id,
ii.total_volume,
ii.unit_code,
ii.encounter_id,
ii.status_enum,
ii.rate_code,
ii.location_id,
ii.quantity,
ii.dispense_id,
ii.unit_price,
ii.total_price,
ii.dispense_doctor_name,
ii.location_name,
ii.encounter_bus_no,
ii.req_authored_time,
ii.no,
ii.charge_type,
ii.med_type_code,
ii.tenant_id
FROM ( SELECT T8."name" AS department_name,
T9."name" AS doctor_name,
T3.category_code AS item_type,
T7."name" AS condition_name,
T2.prescription_no,
T2.lot_number,
T2.id AS request_id,
T3."name" AS device_name,
T3.id AS device_id,
T3.size AS total_volume,
T1.unit_code,
T1.encounter_id,
T1.status_enum,
T2.rate_code,
T1.location_id,
T1.quantity,
T1.id AS dispense_id,
T5.unit_price,
T5.total_price,
T10."name" AS dispense_doctor_name,
T13."name" AS location_name,
T6.bus_no AS encounter_bus_no,
T2.req_authored_time,
T14.no,
T15.contract_name AS charge_type,
T16.med_type_code,
T1.tenant_id
FROM wor_device_dispense AS T1
LEFT JOIN wor_device_request AS T2
ON T1.device_req_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_device_definition AS T3
ON T1.device_def_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_device AS T4
ON T3.id = T4.device_def_id
AND T4.delete_flag = '0'
INNER JOIN adm_charge_item AS T5
ON T1.device_req_id = T5.service_id
AND T5.delete_flag = '0'
LEFT JOIN adm_encounter AS T6
ON T1.encounter_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN cli_condition AS T12
ON T2.condition_id = T12.id
AND T12.delete_flag = '0'
LEFT JOIN cli_condition_definition AS T7
ON T12.definition_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN adm_organization AS T8
ON T6.organization_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_practitioner AS T9
ON T2.requester_id = T9.id
AND T9.delete_flag = '0'
LEFT JOIN adm_practitioner AS T10
ON T1.performer_id = T10.id
AND T10.delete_flag = '0'
LEFT JOIN adm_location AS T13
ON T1.location_id = T13.id
AND T13.delete_flag = '0'
LEFT JOIN adm_account AS T14
ON T5.account_id = T14.id
AND T14.delete_flag = '0'
LEFT JOIN fin_contract AS T15
ON T14.contract_no = T15.bus_no
AND T15.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS T16
ON T2.encounter_id = T16.encounter_id
AND T2.condition_id = T16.condition_id
AND T16.delete_flag = '0'
WHERE T1.delete_flag = '0'
-- 因发药配药合并,前台只能看到待发药,已发药状态,但是后台配药发药状态都查
AND
<if test="dispenseStatus == null">
T1.status_enum IN (#{inProgress},#{completed},#{preparation},#{prepared})
</if>
<if test="dispenseStatus == 3">
T1.status_enum IN (#{inProgress},#{preparation},#{prepared})
</if>
<if test="dispenseStatus == 4">
T1.status_enum = #{completed}
</if>
ORDER BY prescription_no DESC
) AS ii
${ew.customSqlSegment}
</select>
<select id="getPreparerDoctorList" resultType="com.openhis.administration.domain.Practitioner">
SELECT ap.id,
ap."name"
FROM adm_practitioner ap
LEFT JOIN adm_practitioner_role apr
ON ap.id = apr.practitioner_id
WHERE apr.role_code = #{pharmacist}
GROUP BY ap.id,
ap."name"
</select>
</mapper>

View File

@@ -0,0 +1,4 @@
<?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.pharmacymanage.mapper.InpatientMedicineDispenseMapper">
</mapper>

View File

@@ -0,0 +1,439 @@
<?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.pharmacymanage.mapper.InpatientMedicineSummaryDispenseMapper">
<select id="selectMedicationSummaryInfo" resultType="com.openhis.web.pharmacymanage.dto.InpatientMedicineSummaryPrescriptionInfoDto">
SELECT ii.tenant_id,
ii.bus_no,--单据号
ii.request_id,--供应请求id
ii.delivery_id,--供应发放id
ii.item_table,--项目表
ii.item_name,--项目名
ii.item_id,--项目id
ii.total_volume,--规格
ii.lot_number,--批号
ii.quantity,--请求数
ii.unit_code,--单位
ii.max_unit_code,--常规单位
ii.min_unit_code,--最小单位
ii.source_location_id,--发放地点
ii.source_location_name,
ii.org_id,--申请科室
ii.org_name,
ii.applicant_id,--领药人
ii.applicant_name,
ii.apply_time,--申请时间
ii.status_enum,--状态
ii.patient_info --患者信息
FROM (SELECT T1.tenant_id,
T1.bus_no,--单据号
T1.id AS request_id,--供应请求id
T2.id AS delivery_id,--供应发放id
T1.item_table,--项目表
T3.name AS item_name,--项目名
T1.item_id,--项目id
T4.total_volume,--规格
T1.lot_number,--批号
T1.item_quantity AS quantity,--请求数
T1.unit_code,--单位
T3.unit_code AS max_unit_code,--常规单位
T3.min_unit_code,--最小单位
T1.source_location_id,--发放地点
T5.name AS source_location_name,
T1.purpose_location_id AS org_id,--申请科室
T6.name AS org_name,
T1.applicant_id,--领药人
T7.name AS applicant_name,
T1.apply_time,--申请时间
T1.status_enum,--状态
STRING_AGG(CONCAT(T11.name, ' : ', T12.inpatient_bed), ',' ORDER BY T11.name,
T12.inpatient_bed) AS patient_info -- 患者信息
FROM wor_supply_request T1
LEFT JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication_definition AS T3
ON T1.item_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN med_medication AS T4
ON T3.id = T4.medication_def_id
AND T4.delete_flag = '0'
LEFT JOIN adm_location AS T5
ON T1.source_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_organization AS T6
ON T1.purpose_location_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_practitioner AS T7
ON T1.applicant_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN (SELECT id,
encounter_id,
patient_id
FROM (SELECT id,
encounter_id,
patient_id,
ROW_NUMBER() OVER (PARTITION BY encounter_id ORDER BY id) AS rn
FROM med_medication_dispense
WHERE delete_flag = '0') t
WHERE rn = 1) AS T8
ON CONCAT(',', T2.based_on_ids, ',') LIKE CONCAT('%,', T8.id, ',%')
LEFT JOIN (SELECT STRING_AGG(T10.NAME, '_' ORDER BY T10.bus_no) AS inpatient_bed, T9.encounter_id
FROM adm_encounter_location T9
LEFT JOIN adm_location AS T10
ON T10.id = T9.location_id
AND T10.delete_flag = '0'
WHERE T9.status_enum = '2'
AND T9.delete_flag = '0'
GROUP BY T9.encounter_id) AS T12 ON T8.encounter_id = T12.encounter_id
LEFT JOIN adm_patient AS T11
ON T11.id = T8.patient_id
AND T11.delete_flag = '0'
WHERE T1.item_table = #{medicationDefinition}
AND T1.type_enum = #{typeEnum}
AND T1.category_enum = #{categoryEnum}
AND T1.delete_flag = '0'
GROUP BY T1.tenant_id,
T1.bus_no,
T1.id,
T2.id,
T1.item_table,
T3.name,
T1.item_id,
T4.total_volume,
T1.lot_number,
T1.item_quantity,
T1.unit_code,
T3.unit_code,
T3.min_unit_code,
T1.source_location_id,
T5.name,
T1.purpose_location_id,
T6.name,
T1.applicant_id,
T7.name,
T1.apply_time,
T1.status_enum
UNION
SELECT T1.tenant_id,
T1.bus_no,--单据号
T1.id AS request_id,--供应请求id
T2.id AS delivery_id,--供应发放id
T1.item_table,--项目表
T3.name AS item_name,--项目名
T1.item_id,--项目id
T3.size AS total_volume,--规格
T1.lot_number,--批号
T1.item_quantity AS quantity,--请求数
T1.unit_code,--单位
T3.unit_code AS max_unit_code,--常规单位
T3.min_unit_code,--最小单位
T1.source_location_id,--发放地点
T5.name AS source_location_name,
T1.purpose_location_id AS org_id,--申请科室
T6.name AS org_name,
T1.applicant_id,--领药人
T7.name AS applicant_name,
T1.apply_time,--申请时间
T1.status_enum,--状态
STRING_AGG(CONCAT(T11.name, ' : ', T12.inpatient_bed), ',' ORDER BY T11.name,
T12.inpatient_bed) AS patient_info -- 患者信息
FROM wor_supply_request T1
LEFT JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
AND T2.delete_flag = '0'
LEFT JOIN adm_device_definition AS T3
ON T1.item_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_device AS T4
ON T3.id = T4.device_def_id
AND T4.delete_flag = '0'
LEFT JOIN adm_location AS T5
ON T1.source_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_organization AS T6
ON T1.purpose_location_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_practitioner AS T7
ON T1.applicant_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN (SELECT id,
encounter_id,
patient_id
FROM (SELECT id,
encounter_id,
patient_id,
ROW_NUMBER() OVER (PARTITION BY encounter_id ORDER BY id) AS rn
FROM wor_device_dispense
WHERE delete_flag = '0') t
WHERE rn = 1) AS T8
ON CONCAT(',', T2.based_on_ids, ',') LIKE CONCAT('%,', T8.id, ',%')
LEFT JOIN (SELECT STRING_AGG(T10.NAME, '_' ORDER BY T10.bus_no) AS inpatient_bed, T9.encounter_id
FROM adm_encounter_location T9
LEFT JOIN adm_location AS T10
ON T10.id = T9.location_id
AND T10.delete_flag = '0'
WHERE T9.status_enum = '2'
AND T9.delete_flag = '0'
GROUP BY T9.encounter_id) AS T12 ON T8.encounter_id = T12.encounter_id
LEFT JOIN adm_patient AS T11
ON T11.id = T8.patient_id
AND T11.delete_flag = '0'
WHERE T1.item_table = #{deviceDefinition}
AND T1.type_enum = #{typeEnum}
AND T1.category_enum = #{categoryEnum}
AND T1.delete_flag = '0'
GROUP BY T1.tenant_id,
T1.bus_no,
T1.id,
T2.id,
T1.item_table,
T3.name,
T1.item_id,
T3.size,
T1.lot_number,
T1.item_quantity,
T1.unit_code,
T3.unit_code,
T3.min_unit_code,
T1.source_location_id,
T5.name,
T1.purpose_location_id,
T6.name,
T1.applicant_id,
T7.name,
T1.apply_time,
T1.status_enum) AS ii
${ew.customSqlSegment}
</select>
<!-- <select id="selectEncounterInfoListPage" resultType="com.openhis.web.pharmacymanage.dto.InpatientMedicineEncounterInfoDto">-->
<!-- SELECT ii.tenant_id,-->
<!-- ii.org_id,-->
<!-- ii.therapy_enum,-->
<!-- ii.encounter_id,-->
<!-- ii.bus_no,-->
<!-- ii.patient_name,-->
<!-- ii.gender_enum,-->
<!-- ii.birth_date,-->
<!-- ii.inpatient_bed,-->
<!-- ii.effective_dose_start-->
<!-- FROM (SELECT T1.tenant_id,-->
<!-- T1.org_id, &#45;&#45;科室-->
<!-- T1.therapy_enum, &#45;&#45;治疗类型 1:临时医嘱,2:长期医嘱,3:备用医嘱   -->
<!-- T3.id AS encounter_id, &#45;&#45;就诊id-->
<!-- T3.bus_no, &#45;&#45;住院号-->
<!-- T2.name AS patient_name, &#45;&#45;患者姓名-->
<!-- T2.gender_enum, &#45;&#45;性别-->
<!-- T2.birth_date, &#45;&#45;生日-->
<!-- STRING_AGG(T5.NAME, '_' ORDER BY T5.bus_no) AS inpatient_bed, &#45;&#45;床位-->
<!-- MIN(T1.effective_dose_start) AS effective_dose_start &#45;&#45;请求开始时间-->
<!-- FROM med_medication_request AS T1-->
<!-- LEFT JOIN adm_patient AS T2-->
<!-- ON T1.patient_id = T2.id-->
<!-- AND T2.delete_flag = '0'-->
<!-- INNER JOIN adm_encounter AS T3-->
<!-- ON T1.encounter_id = T3.id-->
<!-- AND T3.class_enum = #{amb}-->
<!-- AND T3.status_enum = 5-->
<!-- AND T3.delete_flag = '0'-->
<!-- LEFT JOIN adm_encounter_location AS T4-->
<!-- ON T4.encounter_id = T3.id-->
<!-- AND T4.status_enum = '2'-->
<!-- AND T4.delete_flag = '0'-->
<!-- LEFT JOIN adm_location AS T5-->
<!-- ON T5.id = T4.location_id-->
<!-- AND T5.delete_flag = '0'-->
<!-- WHERE T1.delete_flag = '0'-->
<!-- GROUP BY T1.tenant_id,-->
<!-- T1.org_id,-->
<!-- T1.therapy_enum,-->
<!-- T3.id,-->
<!-- T3.bus_no,-->
<!-- T2.name,-->
<!-- T2.gender_enum,-->
<!-- T2.birth_date) AS ii-->
<!-- ${ew.customSqlSegment}-->
<!-- </select>-->
<!-- <select id="selectPrescriptionInfoListPage" resultType="com.openhis.web.pharmacymanage.dto.InpatientMedicinePrescriptionInfoDto">-->
<!-- SELECT ii.tenant_id,-->
<!-- ii.request_id,&#45;&#45;药品请求id-->
<!-- ii.encounter_id,&#45;&#45;就诊id-->
<!-- ii.bus_no, &#45;&#45;单据号-->
<!-- ii.status_enum, &#45;&#45;状态-->
<!-- ii.patient_name,&#45;&#45;患者姓名-->
<!-- ii.medication_name,&#45;&#45;药品名-->
<!-- ii.effective_dose_start,&#45;&#45;医嘱开始时间-->
<!-- ii.effective_dose_end,&#45;&#45;医嘱结束时间-->
<!-- ii.req_authored_time &#45;&#45;生成日期-->
<!-- FROM (SELECT T1.tenant_id,-->
<!-- T1.id AS request_id,&#45;&#45;药品请求id-->
<!-- T1.encounter_id,&#45;&#45;就诊id-->
<!-- T1.bus_no, &#45;&#45;单据号-->
<!-- T1.status_enum, &#45;&#45;状态-->
<!-- T2.name AS patient_name,&#45;&#45;患者姓名-->
<!-- T3.name AS medication_name,&#45;&#45;药品名-->
<!-- T1.effective_dose_start,&#45;&#45;医嘱开始时间-->
<!-- T1.effective_dose_end,&#45;&#45;医嘱结束时间-->
<!-- T1.req_authored_time &#45;&#45;生成日期-->
<!-- FROM med_medication_request AS T1-->
<!-- LEFT JOIN adm_patient AS T2-->
<!-- ON T1.patient_id = T2.id-->
<!-- AND T2.delete_flag = '0'-->
<!-- LEFT JOIN med_medication_definition AS T3-->
<!-- ON T1.medication_id = T3.id-->
<!-- AND T3.delete_flag = '0'-->
<!-- WHERE T1.encounter_id IN-->
<!-- <foreach collection="encounterIdList" item="item" separator="," open="(" close=")">-->
<!-- #{item}-->
<!-- </foreach>-->
<!-- AND T1.delete_flag = '0'-->
<!-- GROUP BY T1.id,-->
<!-- T2.name,-->
<!-- T3.name) AS ii-->
<!-- ${ew.customSqlSegment}-->
<!-- </select>-->
<!-- <select id="selectMedicationSummaryHeadInfo" resultType="com.openhis.web.pharmacymanage.dto.InpatientMedicineSummaryPrescriptionInfoDto">-->
<!-- SELECT T2.dispense_time,&#45;&#45;发药日期-->
<!-- T2.rec_practitioner_id,&#45;&#45;领药人-->
<!-- T3.name AS rec_practitioner_name,-->
<!-- SUM(T5.total_price) AS totalPrice,&#45;&#45;金额合计-->
<!-- COUNT(DISTINCT T1.medication_id) AS medVarietyCount,&#45;&#45;药品种数-->
<!-- COUNT(T1.id) AS aggregated_order_count,&#45;&#45;汇总医嘱数-->
<!-- T4.name AS department&#45;&#45;科室病区-->
<!-- FROM med_medication_request AS T1-->
<!-- LEFT JOIN med_medication_dispense AS T2-->
<!-- ON T2.med_req_id = T1.id-->
<!-- AND T2.delete_flag = '0'-->
<!-- LEFT JOIN adm_practitioner AS T3-->
<!-- ON T2.rec_practitioner_id = T3.id-->
<!-- AND T3.delete_flag = '0'-->
<!-- LEFT JOIN adm_organization AS T4-->
<!-- ON T3.org_id = T4.id-->
<!-- AND T4.delete_flag = '0'-->
<!-- LEFT JOIN adm_charge_item AS T5-->
<!-- ON T1.id = T5.service_id-->
<!-- AND T5.service_table = #{medicationRequest}-->
<!-- AND T5.delete_flag = '0'-->
<!-- WHERE T1.id IN-->
<!-- <foreach collection="requestIdList" item="item" separator="," open="(" close=")">-->
<!-- #{item}-->
<!-- </foreach>-->
<!-- AND T1.delete_flag = '0'-->
<!-- GROUP BY T2.dispense_time,-->
<!-- T2.rec_practitioner_id,-->
<!-- T3.name,-->
<!-- T4.name-->
<!-- </select>-->
<!-- <select id="selectMedicationSummaryInfo" resultType="com.openhis.web.pharmacymanage.dto.InpatientMedicineSummaryPrescriptionInfoDto">-->
<!-- SELECT T2.name AS med_name,&#45;&#45;药品名-->
<!-- T3.total_volume,&#45;&#45;规格-->
<!-- T5.name AS supplier_name,&#45;&#45;供应商-->
<!-- CASE T1.unit_code-->
<!-- WHEN T2.min_unit_code THEN T8.amount * T2.part_percent-->
<!-- ELSE T8.amount END AS purchase_price,&#45;&#45;采购价-->
<!-- CASE T1.unit_code-->
<!-- WHEN T2.min_unit_code THEN T9.amount * T2.part_percent-->
<!-- ELSE T9.amount END AS unit_price,&#45;&#45;单价-->
<!-- T1.lot_number,&#45;&#45;批号-->
<!-- CASE T1.unit_code-->
<!-- WHEN T2.min_unit_code THEN T4.quantity-->
<!-- ELSE T4.quantity/T2.part_percent END AS stock_quantity,&#45;&#45;库存数-->
<!-- SUM(CASE WHEN T1.status_enum = #{active} THEN T1.quantity ELSE 0 END) AS pending_quantity,&#45;&#45;待发药数-->
<!-- SUM(CASE WHEN T1.status_enum = #{completed} THEN T1.quantity ELSE 0 END) AS dispensed_quantity,&#45;&#45;已发药数-->
<!-- SUM(CASE WHEN T1.status_enum = #{cancelled} THEN T1.quantity ELSE 0 END) AS returned_quantity,&#45;&#45;已退药数-->
<!-- T1.unit_code, &#45;&#45;单位-->
<!-- T1.status_enum,&#45;&#45;状态-->
<!-- T1.trace_no&#45;&#45;追溯码-->
<!-- FROM med_medication_request AS T1-->
<!-- LEFT JOIN med_medication_definition AS T2-->
<!-- ON T1.medication_id = T2.id-->
<!-- AND T2.delete_flag = '0'-->
<!-- LEFT JOIN med_medication AS T3-->
<!-- ON T2.id = T3.medication_def_id-->
<!-- AND T3.delete_flag = '0'-->
<!-- LEFT JOIN wor_inventory_item AS T4-->
<!-- ON T4.item_id = T2.id-->
<!-- AND T4.item_table = #{medicationDefinition}-->
<!-- AND T1.lot_number = T4.lot_number-->
<!-- AND T4.delete_flag = '0'-->
<!-- LEFT JOIN adm_supplier AS T5-->
<!-- ON T4.supplier_id = T5.id-->
<!-- AND T5.delete_flag = '0'-->
<!-- LEFT JOIN adm_charge_item AS T6-->
<!-- ON T6.service_id = T1.id-->
<!-- AND T6.service_table = #{medicationRequest}-->
<!-- AND T6.delete_flag = '0'-->
<!-- LEFT JOIN adm_charge_item_definition T7-->
<!-- ON T7.instance_id = T2.id-->
<!-- AND T7.instance_table = #{medicationDefinition}-->
<!-- AND T7.delete_flag = '0'-->
<!-- LEFT JOIN adm_charge_item_def_detail T8-->
<!-- ON T8.definition_id = T7.id-->
<!-- AND T8.condition_code = '1'&#45;&#45;1:批号进价-->
<!-- AND T8.condition_value = T1.lot_number-->
<!-- AND T8.delete_flag = '0'-->
<!-- LEFT JOIN adm_charge_item_def_detail T9-->
<!-- ON T9.definition_id = T7.id-->
<!-- AND T9.condition_code = '5'&#45;&#45;1:批号售价-->
<!-- AND T9.condition_value = T1.lot_number-->
<!-- AND T9.delete_flag = '0'-->
<!-- WHERE T1.id IN-->
<!-- <foreach collection="requestIdList" item="item" separator="," open="(" close=")">-->
<!-- #{item}-->
<!-- </foreach>-->
<!-- AND T1.delete_flag = '0'-->
<!-- GROUP BY T2.name,-->
<!-- T3.total_volume,-->
<!-- T5.name,-->
<!-- T1.unit_code,-->
<!-- T2.min_unit_code,-->
<!-- T8.amount,-->
<!-- T2.part_percent,-->
<!-- T9.amount,-->
<!-- T1.lot_number,-->
<!-- T4.quantity,-->
<!-- T1.status_enum,-->
<!-- T1.trace_no-->
<!-- </select>-->
<!-- <select id="selectMedicationPatientInfoList" resultType="com.openhis.web.pharmacymanage.dto.InpatientMedicineEncounterInfoDto">-->
<!-- SELECT T3.bus_no,&#45;&#45;住院号-->
<!-- T4.name AS patient_name,&#45;&#45;患者姓名-->
<!-- T2.bus_no AS med_request_bus_no,&#45;&#45;发药单号-->
<!-- T6.name AS occurrence_name,&#45;&#45;发药人-->
<!-- T5.occurrence_time,&#45;&#45;发药时间-->
<!-- T2.status_enum&#45;&#45;状态-->
<!-- FROM wor_supply_request AS T1-->
<!-- INNER JOIN med_medication_request AS T2-->
<!-- ON T1.item_id = T2.id-->
<!-- AND T2.delete_flag = '0'-->
<!-- INNER JOIN adm_encounter AS T3-->
<!-- ON T2.encounter_id = T3.id-->
<!-- AND T3.delete_flag = '0'-->
<!-- LEFT JOIN adm_patient AS T4-->
<!-- ON T1.patient_id = T4.id-->
<!-- AND T4.delete_flag = '0'-->
<!-- LEFT JOIN wor_supply_delivery AS T5-->
<!-- ON T5.request_id = T1.id-->
<!-- AND T5.delete_flag = '0'-->
<!-- LEFT JOIN adm_practitioner AS T6-->
<!-- ON T5.practitioner_id = T6.id-->
<!-- AND T6.delete_flag = '0'-->
<!-- WHERE T1.bus_no = #{busNo}-->
<!-- AND T1.item_table = #{medicationRequest}-->
<!-- AND T1.delete_flag = '0'-->
<!-- GROUP BY T3.bus_no,-->
<!-- T4.name,-->
<!-- T2.bus_no,-->
<!-- T6.name,-->
<!-- T5.occurrence_time,-->
<!-- T2.status_enum-->
<!-- </select>-->
</mapper>

View File

@@ -0,0 +1,139 @@
<?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.pharmacymanage.mapper.MedicalConsumablesDispenseAppMapper">
<select id="selectEncounterInfoListPage" resultType="com.openhis.web.pharmacymanage.dto.EncounterInfoPageDto">
SELECT
tenant_id,
encounter_id,
department_name,
patient_name,
gender_enum,
encounter_date,
department_id,
id_card,
start_time
FROM
(
SELECT
T1.tenant_id,
T1.id AS encounter_id,
T1.start_time,
TO_CHAR(T1.start_time,'YYYY-MM-DD') AS encounter_date,
T1.organization_id AS department_id,
T2.gender_enum,
T2.name AS patient_name,
T2.id_card,
T3.name AS department_name
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
LEFT JOIN adm_organization AS T3
ON T1.organization_id = T3.id
GROUP BY
T1.tenant_id,
T1.id,
T1.start_time,
T1.organization_id,
T2.gender_enum,
T2.name,
T2.id_card,
T3.name
ORDER BY
T1.start_time desc,
T1.organization_id,
T1.patient_id
)
${ew.customSqlSegment}
</select>
<select id="selectPrescriptionPatientInfo" resultType="com.openhis.web.pharmacymanage.dto.PrescriptionPatientInfoDto">
SELECT
T2.name AS patient_name,
T2.gender_enum,
T2.birth_date,
T4.category_enum,
T2.id_card,
T5.name AS organization_name,
TO_CHAR(T1.start_time,'YYYY-MM-DD') AS encounter_date
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
LEFT JOIN wor_device_request AS T3
ON T1.id = T3.encounter_id
LEFT JOIN fin_contract AS T4
ON T3.contract_no = T4.bus_no
LEFT JOIN adm_organization AS T5
ON T1.organization_id = T5.id
WHERE
T1.id = #{encounterId}
GROUP BY
T2.name,
T2.gender_enum,
T2.birth_date,
T4.category_enum,
T2.id_card,
T5.name,
T1.start_time
</select>
<select id="selectPrescriptionConsumablesInfoList" resultType="com.openhis.web.pharmacymanage.dto.PrescriptionMedicineInfoDto">
SELECT
DISTINCT
T8.name AS department_name,
T9.name AS doctor_name,
'器材发放' AS item_type,
T7.name AS condition_name,
T2.prescription_no,
T4.name AS medicine_name,
T3.device_specifications AS total_Volume,
T2.dispense_frequency_code AS rate_code,
T1.quantity,
T5.unit_price,
T5.total_price
FROM wor_device_dispense AS T1
INNER JOIN wor_device_request AS T2
ON T1.device_req_id = T2.id
INNER JOIN adm_device AS T3
ON T1.device_req_id = T3.id
INNER JOIN adm_device_definition AS T4
ON T3.medication_def_id = T4.id
AND T4.category_code IN ('2')
INNER JOIN adm_charge_item AS T5
ON T1.device_req_id = T5.service_id
INNER JOIN adm_encounter AS T6
ON T1.encounter_id = T6.id
INNER JOIN cli_condition_definition AS T7
ON T2.condition_id = T7.id
LEFT JOIN adm_organization AS T8
ON T6.organization_id = T8.id
LEFT JOIN adm_practitioner AS T9
ON T1.practitioner_id = T9.id
WHERE
T1.encounter_id = #{encounterId}
AND T1.status_enum = 2
ORDER BY
prescription_no,
medicine_name
</select>
<select id="selectDispenseInventoryInfoByPrescriptionNo" resultType="com.openhis.web.pharmacymanage.dto.DispenseInventoryDto">
SELECT
T1.id AS dispense_id,
T1.unit_code AS dispense_unit_code,
T1.quantity AS dispense_quantity,
T3.Id AS inventory_id,
T3.unit_code AS inventory_unit_code,
T3.quantity AS inventory_quantity,
T5.part_percent
FROM wor_device_dispense AS T1
INNER JOIN wor_device_request AS T2
ON T1.device_req_id = T2.id
INNER JOIN wor_inventory_item AS T3
ON T1.device_def_id = T3.item_id
AND T3.item_table = #{medMedicationDefinition}
INNER JOIN adm_device AS T4
ON T1.device_def_id = T4.id
INNER JOIN adm_device_definition AS T5
ON T4.bus_no = T5.id
WHERE
T2.prescription_no = #{prescriptionNo}
</select>
</mapper>

View File

@@ -0,0 +1,115 @@
<?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.pharmacymanage.mapper.MedicationDetailsMapper">
<select id="selectAmbPractitionerDetailPage"
resultType="com.openhis.web.pharmacymanage.dto.MedDetailedAccountPageDto">
select A.outpatient_no,
A.prescription_no,
A.patient_name,
A.practitioner_id,
A.practitioner_name,
A.medication_name,
A.py_str,
A.bus_no,
A.dispense_no,
A.yb_no,
A.total_volume,
A.dispense_quantity,
A.dispense_price,
A.refund_quantity,
A.refund_price,
A.lot_number,
A.manufacturer_text,
A.supplier_name,
A.unit_code,
A.refund_unit_code,
A.dispense_time,
A.location_id,
A.tenant_id
from (
WITH refund_info AS (
SELECT mmr.refund_medicine_id,
mmd.dispense_quantity,
mmd.unit_code,
aci.total_price
FROM med_medication_dispense mmd
LEFT JOIN med_medication_request mmr
ON mmd.med_req_id = mmr.id
AND mmr.delete_flag = '0'
INNER JOIN adm_charge_item aci
ON aci.service_id = mmr.refund_medicine_id
AND aci.delete_flag = '0'
WHERE mmd.status_enum = #{refunded}
AND mmd.delete_flag = '0'
AND mmr.refund_medicine_id IS not null
)
SELECT def."name" AS medication_name,
def.py_str,
def.bus_no,
def.yb_no,
def.manufacturer_text,
mmr.prescription_no,
ae.bus_no AS outpatient_no,
pat.name AS patient_name,
mm.total_volume,
mmd.unit_code,
mmd.bus_no AS dispense_no,
mmd.lot_number,
mmd.dispense_quantity,
mmd.encounter_id,
mmd.practitioner_id,
mmd.dispense_time,
ap.name AS practitioner_name,
mmd.location_id,
aci.total_price AS dispense_price,
ri.dispense_quantity AS refund_quantity,
ri.unit_code AS refund_unit_code,
ri.total_price AS refund_price,
wii.supplier_id,
sup.name AS supplier_name,
mmd.tenant_id
FROM med_medication_dispense mmd
LEFT JOIN med_medication_request mmr
ON mmd.med_req_id = mmr.id
AND mmr.delete_flag = '0'
INNER JOIN adm_charge_item aci
ON aci.service_id = mmr.id
AND aci.delete_flag = '0'
LEFT JOIN med_medication_definition def
ON mmd.medication_id = def.id
AND def.delete_flag = '0'
LEFT JOIN med_medication mm
ON mm.medication_def_id = def.id
AND mm.delete_flag = '0'
LEFT JOIN wor_inventory_item wii
ON wii.item_id = mmd.medication_id
AND wii.lot_number = mmd.lot_number
AND wii.location_id = mmd.location_id
AND wii.delete_flag = '0'
LEFT JOIN refund_info AS ri
ON ri.refund_medicine_id = mmr.id
LEFT JOIN adm_location al
ON al.id = mmd.location_id
LEFT JOIN adm_practitioner ap
ON ap.id = mmd.practitioner_id
LEFT JOIN adm_patient pat
ON pat.id = mmd.patient_id
LEFT JOIN adm_encounter ae
ON ae.id = mmd.encounter_id
LEFT JOIN adm_supplier sup
ON sup.id = wii.supplier_id
WHERE mmd.status_enum = #{completed}
AND mmd.dispense_enum = #{amb}
AND mmd.delete_flag = '0'
) AS A
${ew.customSqlSegment}
<choose>
<when test="dispenseEnum == 1">
ORDER BY A.practitioner_name, A.dispense_time DESC
</when>
<when test="dispenseEnum == 2">
ORDER BY A.outpatient_no, A.prescription_no
</when>
</choose>
</select>
</mapper>

View File

@@ -0,0 +1,59 @@
<?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.pharmacymanage.mapper.PendingMedicationDetailsMapper">
<select id="selectPendingMedicationDetailsPage"
resultType="com.openhis.web.pharmacymanage.dto.PendingMedicationPageDto">
SELECT T7.medicine_no, --药品编码
T7.medicine_name, --药品名称
T7.py_str, --药品拼音
T7.dispense_quantity, --待发药数量
T7.unit_code, --请求单位
T7.dispense_enum, --发药类型
T7.patient_name, --患者姓名
T7.prescription_no, --处方号
T7.outpatient_no, --门诊号
T7.admission_no, --住院号
T7.create_time, --开单时间
T7.tenant_id --租户ID
FROM (
SELECT T1.bus_no AS medicine_no, --药品编码
T6."name" AS medicine_name, --药品名称
T6.py_str, --药品拼音
T1.quantity AS dispense_quantity, --待发药数量
T1.unit_code, --请求单位
T1.dispense_enum, --发药类型
T3."name" AS patient_name, --患者姓名
T4.prescription_no, --处方号
CASE
WHEN T2.class_enum = #{amb}
THEN T2.bus_no
ELSE '' END AS outpatient_no, --门诊号
CASE
WHEN T2.class_enum = #{imp}
THEN T2.bus_no
ELSE '' END AS admission_no, --住院号
T1.create_time, --开单时间
T1.tenant_id --租户ID
FROM med_medication_dispense AS T1
LEFT JOIN adm_encounter AS T2
ON T1.encounter_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_patient AS T3
ON T1.patient_id = T3.id
AND T3.delete_flag = '0'
INNER JOIN med_medication_request AS T4
ON T1.med_req_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN med_medication_definition AS T6
ON T1.medication_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN med_medication AS T5
ON T5.medication_def_id = T6.id
AND T5.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{inProgress}
ORDER BY T1.create_time DESC
) AS T7
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,422 @@
<?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.pharmacymanage.mapper.ReturnMedicineMapper">
<select id="selectEncounterInfoListPage" resultType="com.openhis.web.pharmacymanage.dto.EncounterInfoPageDto">
SELECT ii.reception_time,
ii.encounter_id,
ii.encounter_no,
ii.tenant_id,
ii.refund_enum,
ii.patient_name,
ii.patient_wb_str,
ii.patient_py_str,
ii.id_card,
ii.gender_enum,
ii.birth_date,
ii.department_name
FROM (
SELECT ae.reception_time,
ae.id AS encounter_id,
ae.bus_no AS encounter_no,
ae.tenant_id,
mmr.status_enum AS refund_enum,
ap."name" AS patient_name,
ap.wb_str AS patient_wb_str,
ap.py_str AS patient_py_str,
ap.id_card,
ap.gender_enum,
ap.birth_date,
ao."name" AS department_name
FROM adm_encounter ae
LEFT JOIN med_medication_request mmr
ON mmr.encounter_id = ae.id
LEFT JOIN adm_patient ap
ON ae.patient_id = ap.id
LEFT JOIN adm_organization ao
ON ao.id = ae.organization_id
WHERE mmr.refund_medicine_id IS NOT NULL
AND ae.class_enum = #{amb}
UNION
SELECT ae.reception_time,
ae.id AS encounter_id,
ae.bus_no AS encounter_no,
ae.tenant_id,
wdr.status_enum AS refund_enum,
ap."name" AS patient_name,
ap.wb_str AS patient_wb_str,
ap.py_str AS patient_py_str,
ap.id_card,
ap.gender_enum,
ap.birth_date,
ao."name" AS department_name
FROM adm_encounter ae
LEFT JOIN wor_device_request wdr
ON wdr.encounter_id = ae.id
LEFT JOIN adm_patient ap
ON ae.patient_id = ap.id
LEFT JOIN adm_organization ao
ON ao.id = ae.organization_id
WHERE wdr.refund_device_id IS NOT NULL
AND ae.class_enum = #{amb}
) AS ii
${ew.customSqlSegment}
ORDER BY ii.reception_time DESC
</select>
<select id="selectPrescriptionPatientInfo"
resultType="com.openhis.web.pharmacymanage.dto.PrescriptionPatientInfoDto">
SELECT T2.name AS patient_name,
T2.gender_enum,
T2.birth_date,
T4.category_enum,
T2.id_card,
T5.name AS organization_name,
T1.start_time AS encounter_date
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
LEFT JOIN med_medication_request AS T3
ON T1.id = T3.encounter_id
LEFT JOIN fin_contract AS T4
ON T3.contract_no = T4.bus_no
LEFT JOIN adm_organization AS T5
ON T1.organization_id = T5.id
WHERE T1.id = #{encounterId}
GROUP BY T2.name,
T2.gender_enum,
T2.birth_date,
T4.category_enum,
T2.id_card,
T5.name,
T1.start_time
</select>
<select id="selectRequestListByPrescriptionNo"
resultType="com.openhis.web.pharmacymanage.dto.ReturnMedicineInfoDto">
SELECT T1.id AS dispense_id,
T7.name AS department_name,
T8.name AS doctor_name,
T2.prescription_no,
T4.name AS medicine_name,
T3.total_volume,
T1.unit_code,
T6.unit_price,
T3.lot_number,
T1.dosage_instruction,
T1.status_enum,
T1.quantity,
T1.medication_id,
T2.id AS request_id,
T2.refund_medicine_id
FROM med_medication_dispense AS T1
INNER JOIN med_medication_request AS T2
ON T1.med_req_id = T2.refund_medicine_id
INNER JOIN med_medication AS T3
ON T1.medication_id = T3.id
INNER JOIN med_medication_definition AS T4
ON T1.medication_id = T4.id
INNER JOIN adm_encounter AS T5
ON T1.encounter_id = T5.id
LEFT JOIN adm_charge_item AS T6
ON T1.medication_id = T6.product_id
LEFT JOIN adm_organization AS T7
ON T5.organization_id = T7.id
LEFT JOIN adm_practitioner AS T8
ON T2.practitioner_id = T8.id
WHERE T2.encounter_id = #{encounterId}
AND T2.refund_medicine_id IS NOT NULL
AND T2.status_enum = #{statusEnum}
ORDER BY T1.medication_id,
T1.status_enum
</select>
<select id="selectInventoryInfoList"
resultType="com.openhis.web.pharmacymanage.dto.InventoryDto">
<choose>
<when test="(medDispenseIdList != null and !medDispenseIdList.isEmpty())
or (devDispenseIdList != null and !devDispenseIdList.isEmpty())">
<if test="medDispenseIdList != null and !medDispenseIdList.isEmpty()">
SELECT
T1.id AS dispense_id,
T1.unit_code AS dispense_unit,
T1.quantity,
T1.dispense_quantity,
T2.id AS inventory_id,
T2.unit_code AS inventory_unit_code,
T2.quantity AS inventory_quantity,
T2.inventory_status_enum,
T2.expiration_date,
T3.part_percent,
T3."name" AS item_name,
T3.id AS item_id
FROM med_medication_dispense AS T1
INNER JOIN wor_inventory_item AS T2
ON T1.medication_id = T2.item_id
AND T2.delete_flag = '0'
AND T2.item_table = #{medMedicationDefinition}
AND T1.lot_number = T2.lot_number
AND T1.location_id = T2.location_id
INNER JOIN med_medication_definition AS T3
ON T1.medication_id = T3.id
AND T3.delete_flag = '0'
WHERE T1.id IN
<foreach collection="medDispenseIdList" item="medDispenseId" open="(" separator="," close=")">
#{medDispenseId}
</foreach>
AND T1.delete_flag = '0'
</if>
<if test="(medDispenseIdList != null and !medDispenseIdList.isEmpty())
and (devDispenseIdList != null and !devDispenseIdList.isEmpty())">
UNION
</if>
<if test="devDispenseIdList != null and !devDispenseIdList.isEmpty()">
SELECT
T4.id AS dispense_id,
T4.unit_code AS dispense_unit,
T4.quantity,
T4.dispense_quantity,
T2.id AS inventory_id,
T2.unit_code AS inventory_unit_code,
T2.quantity AS inventory_quantity,
T2.inventory_status_enum,
T2.expiration_date,
T5.part_percent,
T5."name" AS item_name,
T5.id AS item_id
FROM wor_device_dispense AS T4
INNER JOIN wor_inventory_item AS T2
ON T4.device_def_id = T2.item_id
AND T2.delete_flag = '0'
AND T2.item_table = #{admDeviceDefinition}
AND T4.lot_number = T2.lot_number
AND T4.location_id = T2.location_id
INNER JOIN adm_device_definition AS T5
ON T4.device_def_id = T5.id
AND T5.delete_flag = '0'
WHERE T4.id IN
<foreach collection="devDispenseIdList" item="devDispenseId" open="(" separator="," close=")">
#{devDispenseId}
</foreach>
AND T4.delete_flag = '0'
</if>
</when>
</choose>
</select>
<select id="selectReturnMedicineInfo"
resultType="com.openhis.web.pharmacymanage.dto.ReturnMedicineInfoDto">
SELECT mmd.status_enum AS refund_enum,
mmr.refund_medicine_id,
mmr.id AS request_id,
mmr.quantity,
mmr.unit_code,
mmr.lot_number,
mmr.status_enum AS req_status,
mmd.dispense_quantity,
mmd.id AS dispense_id,
med."name" AS item_name,
med.id AS item_id,
aci.total_price,
aci.service_table,
doc."name" AS doctor_name,
mmd.trace_no
FROM med_medication_request mmr
LEFT JOIN med_medication_dispense mmd
ON mmr.refund_medicine_id = mmd.med_req_id
AND mmd.delete_flag = '0'
INNER JOIN med_medication_definition med
ON mmr.medication_id = med.id
AND med.delete_flag = '0'
LEFT JOIN adm_charge_item aci
ON aci.service_id = mmr.refund_medicine_id
AND aci.delete_flag = '0'
LEFT JOIN adm_practitioner doc
ON mmr.practitioner_id = doc.id
AND doc.delete_flag = '0'
WHERE mmr.refund_medicine_id IS NOT NULL
AND mmr.encounter_id = #{encounterId}
AND aci.service_table =#{medMedicationRequest}
<if test="refundStatus == null">
AND mmr.status_enum IN (#{inRefund},#{completed})
</if>
<if test="refundStatus == 5">
AND mmr.status_enum = #{inRefund}
</if>
<if test="refundStatus == 3">
AND mmr.status_enum = #{completed}
</if>
AND mmr.delete_flag = '0'
UNION
SELECT wdr.status_enum AS refund_enum,
wdr.refund_device_id,
wdr.id AS request_id,
wdr.quantity,
wdr.unit_code,
wdr.lot_number,
wdr.status_enum AS req_status,
wdd.dispense_quantity,
wdd.id AS dispense_id,
dev."name" AS item_name,
dev.id AS item_id,
aci.total_price,
aci.service_table,
doc."name" AS doctor_name,
wdd.trace_no
FROM wor_device_request wdr
LEFT JOIN wor_device_dispense wdd
ON wdr.refund_device_id = wdd.device_req_id
AND wdd.delete_flag = '0'
INNER JOIN adm_device_definition dev
ON wdr.device_def_id = dev.id
AND dev.delete_flag = '0'
LEFT JOIN adm_charge_item aci
ON aci.service_id = wdr.refund_device_id
AND aci.delete_flag = '0'
LEFT JOIN adm_practitioner doc
ON wdr.requester_id = doc.id
AND doc.delete_flag = '0'
WHERE wdr.refund_device_id IS NOT NULL
AND wdr.encounter_id =#{encounterId}
AND aci.service_table =#{worDeviceRequest}
<if test="refundStatus == null">
AND wdr.status_enum IN (#{inRefund},#{completed})
</if>
<if test="refundStatus == 5">
AND wdr.status_enum = #{inRefund}
</if>
<if test="refundStatus == 3">
AND wdr.status_enum = #{completed}
</if>
AND wdr.delete_flag = '0'
</select>
<select id="selectReturnItemDetail" resultType="com.openhis.web.pharmacymanage.dto.DispenseInventoryDto">
<choose>
<when test="(medDispenseIdList != null and !medDispenseIdList.isEmpty())
or (devDispenseIdList != null and !devDispenseIdList.isEmpty())">
<if test="medDispenseIdList != null and !medDispenseIdList.isEmpty()">
SELECT T1.id AS dispense_id,
T1.unit_code AS dispense_unit_code,
T1.quantity AS dispense_quantity,
T1.status_enum AS dispense_status,
T1.med_req_id AS req_id,
T1.encounter_id,
T1.dispense_time,
T1.bus_no AS dispense_no,
T1.trace_no,
T3.Id AS inventory_id,
T3.unit_code AS inventory_unit_code,
T3.quantity AS inventory_quantity,
T3.lot_number,
T3.production_date,
T3.expiration_date,
T4.part_percent,
T4.yb_no,
T4.bus_no AS item_no,
T4.rx_flag,
T5."name" AS preparer_name,
T6."name" AS dispense_name,
T6.phar_prac_cert_no,
T7."name" AS practitioner_name,
T8.patient_id,
T8.bus_no AS encounter_no,
T9.id_card,
T9."name" AS patient_name,
#{medMedicationDefinition} AS item_table
FROM med_medication_dispense AS T1
INNER JOIN med_medication_request AS T2
ON T1.med_req_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN wor_inventory_item AS T3
ON T1.medication_id = T3.item_id
AND T3.item_table = #{medMedicationDefinition}
AND T1.location_id = T3.location_id
AND T1.lot_number = T3.lot_number
AND T3.delete_flag = '0'
LEFT JOIN med_medication_definition AS T4
ON T1.medication_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_practitioner AS T5
ON T1.preparer_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_practitioner AS T6
ON T1.practitioner_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_practitioner AS T7
ON T2.practitioner_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN adm_encounter AS T8
ON T1.encounter_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_patient AS T9
ON T1.patient_id = T9.id
AND T9.delete_flag = '0'
WHERE T1.id IN
<foreach collection="medDispenseIdList" item="medDispenseId" open="(" separator="," close=")">
#{medDispenseId}
</foreach>
AND T1.delete_flag = '0'
</if>
<if test="(medDispenseIdList != null and !medDispenseIdList.isEmpty())
and (devDispenseIdList != null and !devDispenseIdList.isEmpty())">
UNION
</if>
<if test="devDispenseIdList != null and !devDispenseIdList.isEmpty()">
SELECT T10.id AS dispense_id,
T10.unit_code AS dispense_unit_code,
T10.quantity AS dispense_quantity,
T10.status_enum AS dispense_status,
T10.device_req_id AS req_id,
T10.encounter_id,
T10.dispense_time,
T10.bus_no AS dispense_no,
T10.trace_no,
T3.Id AS inventory_id,
T3.unit_code AS inventory_unit_code,
T3.quantity AS inventory_quantity,
T3.lot_number,
T3.production_date,
T3.expiration_date,
T12.part_percent,
T12.yb_no,
T12.bus_no AS item_no,
T12.rx_flag,
null AS preparer_name,
T6."name" AS dispense_name,
T6.phar_prac_cert_no,
T7."name" AS practitioner_name,
T8.patient_id,
T8.bus_no AS encounter_no,
T9.id_card,
T9."name" AS patient_name,
#{admDeviceDefinition} AS item_table
FROM wor_device_dispense AS T10
INNER JOIN wor_device_request AS T11
ON T10.device_req_id = T11.id
AND T11.delete_flag = '0'
LEFT JOIN wor_inventory_item AS T3
ON T10.device_def_id = T3.item_id
AND T3.item_table = #{admDeviceDefinition}
AND T10.location_id = T3.location_id
AND T10.lot_number = T3.lot_number
AND T3.delete_flag = '0'
LEFT JOIN adm_device_definition AS T12
ON T10.device_def_id = T12.id
AND T12.delete_flag = '0'
LEFT JOIN adm_practitioner AS T6
ON T10.performer_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_practitioner AS T7
ON T11.requester_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN adm_encounter AS T8
ON T10.encounter_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_patient AS T9
ON T10.patient_id = T9.id
AND T9.delete_flag = '0'
WHERE T10.id IN
<foreach collection="devDispenseIdList" item="devDispenseId" open="(" separator="," close=")">
#{devDispenseId}
</foreach>
AND T10.delete_flag = '0'
</if>
</when>
</choose>
</select>
</mapper>

View File

@@ -0,0 +1,527 @@
<?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.pharmacymanage.mapper.WesternMedicineDispenseMapper">
<select id="selectEncounterInfoListPage" resultType="com.openhis.web.pharmacymanage.dto.EncounterInfoPageDto">
SELECT ii.tenant_id,
ii.encounter_id,
ii.encounter_no,
ii.department_name,
ii.patient_name,
ii.patient_wb_str,
ii.patient_py_str,
ii.gender_enum,
ii.department_id,
ii.id_card,
ii.reception_time,
ii.status_enum,
ii.tcm_flag
-- ii.location_id
FROM (
SELECT T1.tenant_id,
T1.id AS encounter_id,
T1.bus_no AS encounter_no,
T1.reception_time,
T1.organization_id AS department_id,
T2.gender_enum,
T2.name AS patient_name,
T2.wb_str AS patient_wb_str,
T2.py_str AS patient_py_str,
T2.id_card,
T3.name AS department_name,
T4.status_enum,
T5.tcm_flag
-- T4.location_id
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_organization AS T3
ON T1.organization_id = T3.id
AND T3.delete_flag = '0'
INNER JOIN med_medication_dispense AS T4
ON T4.encounter_id = T1.id
AND T4.delete_flag = '0'
INNER JOIN med_medication_request AS T5
ON T4.med_req_id = T5.id
AND T5.delete_flag = '0'
-- 因发药配药合并,前台只能看到待发药,已发药状态,但是后台配药发药状态都查
WHERE <if test="statusEnum == null">
T4.status_enum IN (#{inProgress},#{completed},#{preparation},#{prepared})
</if>
<if test="statusEnum == 3">
T4.status_enum IN (#{inProgress},#{preparation},#{prepared})
</if>
<if test="statusEnum == 4">
T4.status_enum = #{completed}
</if>
AND T1.class_enum = #{amb}
GROUP BY T1.tenant_id,
T1.id,
T1.bus_no,
T1.reception_time,
T1.organization_id,
T2.gender_enum,
T2.name,
T2.wb_str,
T2.py_str,
T2.id_card,
T3.name,
T4.status_enum,
T5.tcm_flag
-- T4.location_id
ORDER BY T1.reception_time desc
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectPrescriptionPatientInfo" resultType="com.openhis.web.pharmacymanage.dto.PrescriptionPatientInfoDto">
SELECT T2.name AS patient_name,
T2.gender_enum,
T2.birth_date,
T2.phone,
T4.category_enum,
T4.contract_name,
T2.id_card,
T2.bus_no AS patient_bus_no,
T5.name AS organization_name,
(SELECT T6.name
FROM adm_organization AS T6
WHERE T6.id = #{hospitalId}
AND T6.delete_flag = '0') AS hospital_name,
TO_CHAR(T1.start_time, 'YYYY-MM-DD') AS encounter_date,
T1.id AS encounter_id,
T8.id AS condition_id,
T8.name AS condition_name
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
LEFT JOIN med_medication_request AS T3
ON T1.id = T3.encounter_id
LEFT JOIN adm_charge_item AS T9
ON T9.encounter_id = T1.id
AND T9.delete_flag = '0'
LEFT JOIN adm_account AS T10
ON T10.id = T9.account_id
AND T10.delete_flag = '0'
LEFT JOIN fin_contract AS T4
ON T4.bus_no = T10.contract_no
LEFT JOIN adm_organization AS T5
ON T1.organization_id = T5.id
LEFT JOIN adm_encounter_diagnosis T6
ON T1.id = T6.encounter_id
AND T6.maindise_flag = '1'
AND T6.delete_flag = '0'
LEFT JOIN cli_condition AS T7
ON T6.condition_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN cli_condition_definition AS T8
ON T7.definition_id = T8.id
AND T8.delete_flag = '0'
WHERE T1.id = #{encounterId}
GROUP BY T2.name,
T2.gender_enum,
T2.birth_date,
T2.phone,
T4.category_enum,
T4.contract_name,
T2.id_card,
T2.bus_no,
T5.name,
hospital_name,
T1.start_time,
T1.id,
T8.id
</select>
<select id="selectPrescriptionMedicineInfoList" resultType="com.openhis.web.pharmacymanage.dto.PrescriptionMedicineInfoDto">
SELECT ii.department_name,
ii.doctor_name,
ii.item_type,
ii.condition_name,
ii.prescription_no,
ii.lot_number,
ii.request_id,
ii.tcm_flag,
ii.medicine_name,
ii.medicine_id,
ii.total_volume,
ii.unit_code,
ii.encounter_id,
ii.dose,
ii.status_enum,
ii.rate_code,
ii.location_id,
ii.method_code,
ii.dose_unit_code,
ii.max_dose,
ii.first_dose,
ii.first_duration,
ii.dispense_interval,
ii.dispense_per_quantity,
ii.dispense_per_duration,
ii.quantity,
ii.dispense_id,
ii.unit_price,
ii.total_price,
ii.dispense_doctor_name,
ii.preparer_doctor_name,
ii.location_name,
ii.encounter_bus_no,
ii.req_authored_time,
ii.no,
ii.charge_type,
ii.pharmacology_category_code,
ii.med_type_code,
ii.skin_test_flag,
ii.group_id
FROM ( SELECT T8."name" AS department_name,
T9."name" AS doctor_name,
T3.category_code AS item_type,
T7."name" AS condition_name,
T2.prescription_no,
T2.lot_number,
T2.id AS request_id,
T2.tcm_flag,
T3."name" AS medicine_name,
T3.id AS medicine_id,
T4.total_volume,
T1.unit_code,
T1.encounter_id,
T1.dose,
T1.status_enum,
T2.rate_code,
T1.location_id,
T1.method_code,
T2.dose_unit_code,
T2.max_dose,
T2.first_dose,
T2.first_duration,
T2.dispense_interval,
T2.dispense_per_quantity,
T2.dispense_per_duration,
T1.quantity,
T1.id AS dispense_id,
T5.unit_price,
T5.total_price,
T10."name" AS dispense_doctor_name,
T11."name" AS preparer_doctor_name,
T13."name" AS location_name,
T6.bus_no AS encounter_bus_no,
T2.req_authored_time,
T14.no,
T15.contract_name AS charge_type,
T3.pharmacology_category_code,
T16.med_type_code,
T3.skin_test_flag,
T2.group_id AS group_id,
T1.tenant_id
FROM med_medication_dispense AS T1
LEFT JOIN med_medication_request AS T2
ON T1.med_req_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication_definition AS T3
ON T1.medication_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN med_medication AS T4
ON T3.id = T4.medication_def_id
AND T4.delete_flag = '0'
INNER JOIN adm_charge_item AS T5
ON T1.med_req_id = T5.service_id
AND T5.delete_flag = '0'
LEFT JOIN adm_encounter AS T6
ON T1.encounter_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN cli_condition AS T12
ON T2.condition_id = T12.id
AND T12.delete_flag = '0'
LEFT JOIN cli_condition_definition AS T7
ON T12.definition_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN adm_organization AS T8
ON T6.organization_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_practitioner AS T9
ON T2.practitioner_id = T9.id
AND T9.delete_flag = '0'
LEFT JOIN adm_practitioner AS T10
ON T1.practitioner_id = T10.id
AND T10.delete_flag = '0'
LEFT JOIN adm_practitioner AS T11
ON T1.preparer_id = T11.id
AND T11.delete_flag = '0'
LEFT JOIN adm_location AS T13
ON T1.location_id = T13.id
AND T13.delete_flag = '0'
LEFT JOIN adm_account AS T14
ON T5.account_id = T14.id
AND T14.delete_flag = '0'
LEFT JOIN fin_contract AS T15
ON T14.contract_no = T15.bus_no
AND T15.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS T16
ON T2.encounter_id = T16.encounter_id
AND T2.condition_id = T16.condition_id
AND T16.delete_flag = '0'
WHERE T1.delete_flag = '0'
-- 因发药配药合并,前台只能看到待发药,已发药状态,但是后台配药发药状态都查
AND
<if test="dispenseStatus == null">
T1.status_enum IN (#{inProgress},#{completed},#{preparation},#{prepared})
</if>
<if test="dispenseStatus == 3">
T1.status_enum IN (#{inProgress},#{preparation},#{prepared})
</if>
<if test="dispenseStatus == 4">
T1.status_enum = #{completed}
</if>
ORDER BY prescription_no DESC
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectDispenseInventoryInfoByPrescriptionNo" resultType="com.openhis.web.pharmacymanage.dto.DispenseInventoryDto">
SELECT T1.id AS dispense_id,
T1.unit_code AS dispense_unit_code,
T1.quantity AS dispense_quantity,
T1.status_enum AS dispense_status,
T1.med_req_id,
T1.encounter_id,
T1.dispense_time,
T1.bus_no AS dispense_no,
T3.Id AS inventory_id,
T3.unit_code AS inventory_unit_code,
T3.quantity AS inventory_quantity,
T3.lot_number,
T3.production_date,
T3.expiration_date,
T3.trace_no,
T4.part_percent,
T4.yb_no,
T4.bus_no AS medication_no,
T4.rx_flag,
T5."name" AS preparer_name,
T6."name" AS dispense_name,
T6.phar_prac_cert_no,
T7."name" AS practitioner_name,
T8.patient_id,
T8.bus_no AS encounter_no
FROM med_medication_dispense AS T1
INNER JOIN med_medication_request AS T2
ON T1.med_req_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN wor_inventory_item AS T3
ON T1.medication_id = T3.item_id
AND T3.item_table = #{medMedicationDefinition}
AND T1.location_id = T3.location_id
AND T1.lot_number = T3.lot_number
AND T3.delete_flag = '0'
LEFT JOIN med_medication_definition AS T4
ON T1.medication_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_practitioner AS T5
ON T1.preparer_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_practitioner AS T6
ON T1.practitioner_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_practitioner AS T7
ON T2.practitioner_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN adm_encounter AS T8
ON T1.encounter_id = T8.id
AND T8.delete_flag = '0'
WHERE T2.prescription_no = #{prescriptionNo}
AND T1.delete_flag = '0'
</select>
<select id="getPreparerDoctorList" resultType="com.openhis.administration.domain.Practitioner">
SELECT ap.id,
ap."name"
FROM adm_practitioner ap
LEFT JOIN adm_practitioner_role apr
ON ap.id = apr.practitioner_id
WHERE apr.role_code = #{pharmacist}
GROUP BY ap.id,
ap."name"
</select>
<select id="selectMonthlySettlementPatientInfoList" resultType="com.openhis.web.pharmacymanage.dto.PrescriptionMedicineInfoDto">
SELECT T8."name" AS department_name,
T9."name" AS doctor_name,
T3.category_code AS item_type,
T7."name" AS condition_name,
T2.prescription_no,
T2.lot_number,
T2.id AS request_id,
T2.tcm_flag,
T3."name" AS medicine_name,
T3.id AS medicine_id,
T4.total_volume,
T1.unit_code,
T1.encounter_id,
T1.dose,
T1.status_enum,
T2.rate_code,
T1.location_id,
T1.method_code,
T2.dose_unit_code,
T2.max_dose,
T2.first_dose,
T2.first_duration,
T2.dispense_interval,
T2.dispense_per_quantity,
T2.dispense_per_duration,
T1.quantity,
T1.id AS dispense_id,
T5.unit_price,
T5.total_price,
T10."name" AS dispense_doctor_name,
T11."name" AS preparer_doctor_name,
T13."name" AS location_name,
T6.bus_no AS encounter_bus_no,
T2.req_authored_time,
T14.no,
T15.contract_name AS charge_type,
T3.pharmacology_category_code,
T16.med_type_code,
T3.skin_test_flag,
T2.group_id AS group_id,
#{medicine} AS type
FROM med_medication_dispense AS T1
LEFT JOIN med_medication_request AS T2
ON T1.med_req_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication_definition AS T3
ON T1.medication_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN med_medication AS T4
ON T3.id = T4.medication_def_id
AND T4.delete_flag = '0'
INNER JOIN adm_charge_item AS T5
ON T1.med_req_id = T5.service_id
AND T5.delete_flag = '0'
LEFT JOIN adm_encounter AS T6
ON T1.encounter_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN cli_condition AS T12
ON T2.condition_id = T12.id
AND T12.delete_flag = '0'
LEFT JOIN cli_condition_definition AS T7
ON T12.definition_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN adm_organization AS T8
ON T6.organization_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_practitioner AS T9
ON T2.practitioner_id = T9.id
AND T9.delete_flag = '0'
LEFT JOIN adm_practitioner AS T10
ON T1.practitioner_id = T10.id
AND T10.delete_flag = '0'
LEFT JOIN adm_practitioner AS T11
ON T1.preparer_id = T11.id
AND T11.delete_flag = '0'
LEFT JOIN adm_location AS T13
ON T1.location_id = T13.id
AND T13.delete_flag = '0'
LEFT JOIN adm_account AS T14
ON T5.account_id = T14.id
AND T14.delete_flag = '0'
LEFT JOIN fin_contract AS T15
ON T14.contract_no = T15.bus_no
AND T15.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS T16
ON T2.encounter_id = T16.encounter_id
AND T2.condition_id = T16.condition_id
AND T16.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{completed}
AND T1.location_id = #{locationId}
AND TO_CHAR(T1.dispense_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
UNION
SELECT T8."name" AS department_name,
T9."name" AS doctor_name,
T3.category_code AS item_type,
T7."name" AS condition_name,
T2.prescription_no,
T2.lot_number,
T2.id AS request_id,
NULL AS tcm_flag,
T3."name" AS medicine_name,
T3.id AS medicine_id,
T3.size AS total_volume,
T1.unit_code,
T1.encounter_id,
NULL AS dose,
T1.status_enum,
T2.rate_code,
T1.location_id,
NULL AS method_code,
NULL AS dose_unit_code,
NULL AS max_dose,
NULL AS first_dose,
NULL AS first_duration,
NULL AS dispense_interval,
NULL AS dispense_per_quantity,
NULL AS dispense_per_duration,
T1.quantity,
T1.id AS dispense_id,
T5.unit_price,
T5.total_price,
T10."name" AS dispense_doctor_name,
NULL AS preparer_doctor_name,
T13."name" AS location_name,
T6.bus_no AS encounter_bus_no,
T2.req_authored_time,
T14.no,
T15.contract_name AS charge_type,
NULL AS pharmacology_category_code,
T16.med_type_code,
NULL AS skin_test_flag,
NULL AS group_id,
#{device} AS type
FROM wor_device_dispense AS T1
LEFT JOIN wor_device_request AS T2
ON T1.device_req_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_device_definition AS T3
ON T1.device_def_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_device AS T4
ON T3.id = T4.device_def_id
AND T4.delete_flag = '0'
INNER JOIN adm_charge_item AS T5
ON T1.device_req_id = T5.service_id
AND T5.delete_flag = '0'
LEFT JOIN adm_encounter AS T6
ON T1.encounter_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN cli_condition AS T12
ON T2.condition_id = T12.id
AND T12.delete_flag = '0'
LEFT JOIN cli_condition_definition AS T7
ON T12.definition_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN adm_organization AS T8
ON T6.organization_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_practitioner AS T9
ON T2.requester_id = T9.id
AND T9.delete_flag = '0'
LEFT JOIN adm_practitioner AS T10
ON T1.performer_id = T10.id
AND T10.delete_flag = '0'
LEFT JOIN adm_location AS T13
ON T1.location_id = T13.id
AND T13.delete_flag = '0'
LEFT JOIN adm_account AS T14
ON T5.account_id = T14.id
AND T14.delete_flag = '0'
LEFT JOIN fin_contract AS T15
ON T14.contract_no = T15.bus_no
AND T15.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS T16
ON T2.encounter_id = T16.encounter_id
AND T2.condition_id = T16.condition_id
AND T16.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{completed}
AND T1.location_id = #{locationId}
AND TO_CHAR(T1.dispense_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
</select>
</mapper>