版本更新

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,167 @@
<?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.reportmanage.mapper.ChargeReportMapper">
<!--门诊收入明细-->
<select id="selectRevenueReportPage"
resultType="com.openhis.web.reportmanage.dto.ChargeReportPageDto">
SELECT T8.tenant_id,
T8.payment_id,
T8.charge_id,
T8.name, --姓名
T8.gender_enum, --性别
T8.birth_date, --出生日期
T8.id_card, --证件号
T8.yb_code, --医保号
T8.encounter_date, --就诊日期
T8.bus_no,--患者院内编码/病历号
T8.department_id,--科室
T8.department_name,--科室
T8.clinical_name,--项目名
T8.clinical_no, --项目编码
T8.ybNo,--医保码
T8.type, --类别
T8.issuer_id,--开单人
T8.issuer_name,--开单人
T8.payee_id,--收款人
T8.payee_name,--收款人
T8.number,--数量
T8.quantity_unit,--单位
T8.price,--单价
T8.total_price,--金额
T8.charge_time,-- 收费时间
T8.total_volume, --规格
T8.chrgitmLv,--医保等级
T8.clinical_type, --项目类型
T8.encounter_id
FROM (SELECT DISTINCT T1.tenant_id,
T1.id AS payment_id,
T4.id AS charge_id,
T15.name, --姓名
T15.gender_enum, --性别
T15.birth_date, --出生日期
T15.id_card, --证件号
T16.psn_no AS yb_code, --医保号
TO_CHAR(T2.reception_time, 'YYYY-MM-DD') AS encounter_date, --就诊日期
T2.bus_no, --患者院内编码/病历号
T3.id AS department_id,--科室
T3.name AS department_name,--科室
CASE
WHEN T5.instance_table = 'adm_device_definition' THEN T11.name
WHEN T5.instance_table = 'adm_healthcare_service' THEN T12.name
WHEN T5.instance_table = 'med_medication_definition' THEN T13.name
WHEN T5.instance_table = 'wor_activity_definition' THEN T14.name
ELSE NULL
END AS clinical_name, --项目名
CASE
WHEN T5.instance_table = 'adm_device_definition' THEN T11.bus_no
WHEN T5.instance_table = 'med_medication_definition' THEN T13.bus_no
WHEN T5.instance_table = 'wor_activity_definition' THEN T14.bus_no
ELSE NULL
END AS clinical_no, --项目编码
CASE
WHEN T5.instance_table = 'adm_device_definition' THEN T11.yb_no
WHEN T5.instance_table = 'adm_healthcare_service' THEN T12.yb_no
WHEN T5.instance_table = 'med_medication_definition' THEN T13.yb_no
WHEN T5.instance_table = 'wor_activity_definition' THEN T14.yb_no
ELSE NULL
END AS ybNo, --医保码
T5.yb_type AS type, --医保类别
T6.id AS issuer_id,--开单人
T6.name AS issuer_name,--开单人
T7.id AS payee_id,--收款人
T7.name AS payee_name,--收款人
T4.quantity_value AS number,--数量
T4.quantity_unit,--单位
T4.unit_price AS price,--单价
CASE
WHEN T1.status_enum = #{refundAll} THEN -T4.total_price
ELSE T4.total_price
END AS total_price,--金额
T1.bill_date AS charge_time,-- 收费时间
CASE
WHEN T5.instance_table = 'adm_device_definition' THEN T17.device_specifications
WHEN T5.instance_table = 'med_medication_definition' THEN T18.total_volume
ELSE NULL
END AS total_volume, --规格
CASE
WHEN T5.instance_table = 'adm_device_definition' THEN T11.chrgitm_lv
WHEN T5.instance_table = 'med_medication_definition' THEN T13.chrgitm_lv
WHEN T5.instance_table = 'wor_activity_definition' THEN T14.chrgitm_lv
ELSE NULL
END AS chrgitmLv,--医保等级
CASE
WHEN T5.instance_table = 'adm_device_definition' THEN #{device}
WHEN T5.instance_table = 'adm_healthcare_service' THEN #{register}
WHEN T5.instance_table = 'med_medication_definition' THEN #{medication}
WHEN T5.instance_table = 'wor_activity_definition' THEN #{activity}
ELSE NULL
END AS clinical_type, --项目类型
T1.encounter_id
FROM fin_payment_reconciliation T1
LEFT JOIN adm_encounter T2
ON T2.id = T1.encounter_id
AND T2.delete_flag = '0'
LEFT JOIN adm_patient AS T15
ON T1.patient_id = T15.id
AND T15.delete_flag = '0'
LEFT JOIN yb_clinc_reg AS T16
ON T2.bus_no = T16.ipt_otp_no
LEFT JOIN adm_organization AS T3
ON T2.organization_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item T4
ON CONCAT(',', T1.charge_item_ids, ',') LIKE CONCAT('%,', T4.id, ',%')
AND T4.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T5
ON T4.definition_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_device_definition T11
ON T5.instance_id = T11.id
AND T5.instance_table = 'adm_device_definition'
AND T11.delete_flag = '0'
LEFT JOIN adm_device T17
ON T11.id = T17.device_def_id
AND T17.delete_flag = '0'
LEFT JOIN adm_healthcare_service T12
ON T5.instance_id = T12.id
AND T5.instance_table = 'adm_healthcare_service'
AND T12.delete_flag = '0'
LEFT JOIN med_medication_definition T13
ON T5.instance_id = T13.id
AND T5.instance_table = 'med_medication_definition'
AND T13.delete_flag = '0'
LEFT JOIN med_medication T18
ON T13.id = T18.medication_def_id
AND T18.delete_flag = '0'
LEFT JOIN wor_activity_definition T14
ON T5.instance_id = T14.id
AND T5.instance_table = 'wor_activity_definition'
AND T14.delete_flag = '0'
LEFT JOIN adm_practitioner T6
ON T4.enterer_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_practitioner T7
ON T1.enterer_id = T7.id
AND T7.delete_flag = '0'
<if test="statisticsFlg == 0 or statisticsFlg == 1">
INNER JOIN adm_account T19
ON T4.account_id = T19.id
AND T19.delete_flag = '0'
INNER JOIN fin_contract T20
ON T19.contract_no = T20.bus_no
AND T20.yb_flag = #{statisticsFlg}
AND T20.delete_flag = '0'
</if>
<if test="statisticsFlg == 3">
WHERE T1.status_enum = #{refundAll}
</if>
<if test="statisticsFlg != 3">
WHERE T1.status_enum IN (#{success}, #{refundAll})
</if>
AND T1.delete_flag = '0'
ORDER BY T2.bus_no,
T4.ID,
T1.bill_date) AS T8
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,127 @@
<?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.reportmanage.mapper.InboundReportMapper">
<select id="selectInboundReportPage"
resultType="com.openhis.web.reportmanage.dto.InboundReportPageDto">
SELECT T10.supply_bus_no, --单据号
T10.name, --药品名称
T10.bus_no, --药品编码
T10.lot_number, --批次号
T10.purpose_location_id, --目的仓库ID
T10.location_name, --仓库名称
T10.location_store_name, --货位名称
T10.unit_code, --计量单位
T10.quantity, --采购数量
T10.price, --采购单价
T10.total_price AS total_price, --采购金额(总价)
T10.sale_price, --售价
T10.sale_price * T10.quantity AS total_sale_price, --售价金额(总价)
T10.supplier_id, --供应商id
T10.supplier, --供应商
T10.approver_id, --审核人
T10.create_time, --制单日期
T10.approval_time, --审核日期
T10.tenant_id -- 租户ID
FROM (SELECT T1.bus_no AS supply_bus_no, --单据号
T2.name, --药品名称
T2.bus_no, --药品编码
T1.lot_number, --批次号
T1.purpose_location_id, -- 目的仓库ID
T7.name AS location_name, --仓库名称
T8.name AS location_store_name, --货位名称
T1.unit_code, --计量单位
T1.item_quantity AS quantity, --采购数量
T4.amount AS price, --采购单价
T1.total_price, --采购金额(总价)
T4.amount AS sale_price, --售价
T2.part_percent, --拆零比
T1.supplier_id, --供应商id
T9.name AS supplier, --供应商
T1.approver_id, --审核人
T1.create_time, --制单日期
T1.approval_time, --审核日期
T1.tenant_id -- 租户ID
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T14
ON T14.request_id = T1.id
AND T14.status_enum = #{deliveryStatus}
AND T14.delete_flag = '0'
LEFT JOIN med_medication_definition AS T2
ON T2.id = T1.item_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T3
ON T3.instance_id = T1.item_id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T4
ON T4.definition_id = T3.id
AND T4.delete_flag = '0'
AND T4.condition_value = T1.lot_number
LEFT JOIN med_medication AS T5
ON T5.medication_def_id = T2.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location AS T7
ON T7.id = T1.purpose_location_id
AND T7.delete_flag = '0'
LEFT JOIN adm_location AS T8
ON T8.id = T1.purpose_location_store_id
AND T8.delete_flag = '0'
LEFT JOIN adm_supplier AS T9
ON T9.id = T1.supplier_id
AND T9.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{purchaseInventory}
AND T1.status_enum = #{supplyStatus}
AND T1.item_table = #{medicationTableName}
UNION
SELECT T1.bus_no AS supply_bus_no, --单据号
T11.name, --器材名称
T11.bus_no, --器材编码
T1.lot_number, --批次号
T1.purpose_location_id, -- 目的仓库ID
T7.name AS location_name, --仓库名称
T8.name AS location_store_name, --货位名称
T1.unit_code, --计量单位
T1.item_quantity AS quantity, --采购数量
T4.amount AS price, --采购单价
T1.total_price, --采购金额(总价)
T4.amount AS sale_price, --售价
T11.part_percent, --拆零比
T1.supplier_id, --供应商id
T9.name AS supplier, --供应商
T1.approver_id, --审核人
T1.create_time, --制单日期
T1.approval_time, --审核日期
T1.tenant_id -- 租户ID
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T14
ON T14.request_id = T1.id
AND T14.status_enum = #{deliveryStatus}
AND T14.delete_flag = '0'
LEFT JOIN adm_device_definition AS T11
ON T11.id = T1.item_id
AND T11.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T3
ON T3.instance_id = T1.item_id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T4
ON T4.definition_id = T3.id
AND T4.delete_flag = '0'
AND T4.condition_value = T1.lot_number
LEFT JOIN adm_location AS T7
ON T7.id = T1.purpose_location_id
AND T7.delete_flag = '0'
LEFT JOIN adm_location AS T8
ON T8.id = T1.purpose_location_store_id
AND T8.delete_flag = '0'
LEFT JOIN adm_supplier AS T9
ON T9.id = T1.supplier_id
AND T9.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{purchaseInventory}
AND T1.status_enum = #{supplyStatus}
AND T1.item_table = #{deviceTableName}) AS T10
${ew.customSqlSegment}
ORDER BY T10.supply_bus_no DESC
</select>
</mapper>

View File

@@ -0,0 +1,146 @@
<?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.reportmanage.mapper.InpatientMedicalRecordHomePageCollectionMapper">
<select id="getInfo"
resultType="com.openhis.web.reportmanage.dto.InpatientMedicalRecordHomePageMakeDto">
SELECT --todo sql没写完
AS A48, -- 病案号 A48 字符 50 必填
AS A49, -- 住院次数 A49 数字 4 必填
to_char(T1.start_time::TIMESTAMPTZ,'YYYY-MM-DD HH24:MI:SS') AS B12,--入院时间
to_char(T1.end_time::TIMESTAMPTZ,'YYYY-MM-DD HH24:MI:SS') AS B15,--出院时间
AS A46C, -- 医疗付费方式 A46C 字符 3 必填
T2.name AS A11, --姓名
T2.gender_enum AS A12C, --性别
T2.birth_date AS A13,-- 出生日期
T2.country_code AS A15C,--国籍
T2,marital_status_enum AS A21C,--婚姻
T2.prfs_enum AS A38C,--职业
T2.nationality_code AS A19C,--民族
T2.id_card AS A20,-- 证件号码
AS A22, -- 出生地址 A22 字符 200 必填
T2.native_place AS A23C, --籍贯省(自治区、直辖市)
T2.address AS A24,-- 户口地址
AS A25C, -- 户口地址邮政编码 A25C 字符 6 必填
AS A26, -- 现住址 A26 字符 200 必填
T2.phone AS A27, -- 现住址电话 A27 字符 40 必填
AS A28C, -- 现住址邮政编码 A28C 字符 6 必填
T2.work_company AS A29, -- 工作单位及地址 A29 字符 200 必填
AS A30, -- 工作单位电话 A30 字符 20 必填
AS A31C, -- 工作单位邮政编码 A31C 字符 6 必填
T2.link_name AS A32, -- 联系人姓名 A32 字符 40 必填
T2.link_relation_code AS A33C, -- 联系人关系 A33C 字符 1 必填
AS A34, -- 联系人地址 A34 字符 200 必填
T2.link_telcom AS A35, -- 联系人电话 A35 字符 40 必填
AS B38, -- 是否为日间手术 B38 字符 1 必填
AS B11C, -- 入院途径 B11C 字符 1 必填
AS B13C, -- 入院科别 B13C 字符 6 必填
AS B14, -- 入院病房 B14 字符 30 必填
AS B21C, -- 转科科别 B21C 集合 可以多选 必填
AS B16C, -- 出院科别 B16C 字符 6 必填
AS B17, -- 出院病房 B17 字符 30 必填
DATE(T1.end_time::TIMESTAMPTZ) - DATE(T1.start_time::TIMESTAMPTZ) AS B20, -- 实际住院(天) B20 数字 6 必填
AS C01C, -- 门(急)诊诊断编码 C01C 字符 20 必填
AS C02N, -- 门(急)诊诊断名称 C02N 字符 100 必填
AS C03C, -- 出院主要诊断编码 C03C 字符 20 必填
AS C04N, -- 出院主要诊断名称 C04N 字符 100 必填
AS C05C, -- 出院主要诊断入院病情 C05C 字符 1 必填
AS C09C, -- 病理诊断编码 C09C 字符 20 条件必填
AS C10N, -- 病理诊断名称 C10N 字符 100 条件必填
AS C11, -- 病理号 C11 字符 50 条件必填
AS C12C, -- 损伤、中毒外部原因编码 C12C 字符 20 条件必填
AS C13N, -- 损伤、中毒外部原因名称 C13N 字符 100 条件必填
AS C24C, -- 有无药物过敏 C24C 字符 1 必填
AS C25, -- 过敏药物名称 C25 字符 200 条件必填
AS B22C, -- 科主任编码 B22C 字符 30 必填
AS B22, -- 科主任 B22 字符 40 必填
AS B23C, -- 主(副主)任医师编码 B23C 字符 30 必填
AS B23, -- 主(副主)任医师 B23 字符 40 必填
AS B24C, -- 主治医师编码 B24C 字符 30 必填
AS B24, -- 主治医师 B24 字符 40 必填
AS B25C, -- 住院医师编码 B25C 字符 30 必填
AS B25, -- 住院医师 B25 字符 40 必填
AS B26C, -- 责任护士编码 B26C 字符 30 必填
AS B26, -- 责任护士 B26 字符 40 必填
AS B29, -- 编码员 B29 字符 40 必填
AS C26C, -- ABO血型 C26C 字符 1 必填
AS C27C, -- Rh血型 C27C 字符 1 必填
AS C14x01C, -- 主要手术操作编码 C14x01C 字符 20 必填
AS C15x01N, -- 主要手术操作名称 C15x01N 字符 100 必填
AS C16x01, -- 主要手术操作日期 C16x01 日期时间 必填
AS C17x01, -- 主要手术操作级别 C17x01 字符 1 条件必填
AS C18x01, -- 主要手术操作术者 C18x01 字符 40 条件必填
AS C19x01, -- 主要手术操作Ⅰ助 C19x01 字符 40 条件必填
AS C20x01, -- 主要手术操作Ⅱ助 C20x01 字符 40 条件必填
AS C21x01C, -- 主要手术操作切口愈合等级 C21x01C 字符 2 条件必填
AS C22x01C, -- 主要手术操作麻醉方式 C22x01C 字符 6 条件必填
AS C23x01, -- 主要手术操作麻醉医师 C23x01 字符 40 条件必填
AS F21, -- 输血反应 F21 数字 1 条件必填
AS F22, -- 红细胞 F22 数字 (4,1) 条件必填
AS F23, -- 血小板 F23 数字 (4,1) 条件必填
AS F24, -- 血浆 F24 数字 (8,2) 条件必填
AS F25, -- 全血 F25 数字 (8,2) 条件必填
AS F26, -- 自体血回输 F26 数字 (4,1) 条件必填
AS A16, -- 年龄不足1周岁的年龄 A16 数字 3 条件必填②
AS A18x01, -- 新生儿出生体重(克) A18x01 数字 6 条件必填②
AS A17, -- 新生儿入院体重(克) A17 数字 6 条件必填②
AS C28, -- 颅脑损伤患者入院前昏迷时间(天) C28 数字 5 必填
AS C29, -- 颅脑损伤患者入院前昏迷时间(小时) C29 数字 2 必填
AS C30, -- 颅脑损伤患者入院前昏迷时间(分钟) C30 数字 2 必填
AS C31, -- 颅脑损伤患者入院后昏迷时间(天) C31 数字 5 必填
AS C32, -- 颅脑损伤患者入院后昏迷时间(小时) C32 数字 2 必填
AS C33, -- 颅脑损伤患者入院后昏迷时间(分钟) C33 数字 2 必填
AS B36C, -- 是否有出院31日内再住院计划 B36C 数字 1 必填
AS B37, -- 出院31天再住院计划目的 B37 字符 100 条件必填
AS B34C, -- 离院方式 B34C 字符 1 必填
AS B35, -- 医嘱转院、转社区卫生服务机构/乡镇卫生院名称 B35 字符 100 条件必填
AS D01, -- 住院总费用 D01 数字 (11,2) 必填
AS D09, -- 住院总费用其中自付金额 D09 数字 (10,2) 必填
AS D26 -- 16.血费 D26 数字 (10,2)
T3.name AS organization_name,
STRING_AGG(T5.NAME, '_' ORDER BY T5.bus_no) AS inpatient_bed --床位
FROM adm_encounter T1
LEFT JOIN adm_patient 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'
LEFT JOIN adm_encounter_location AS T4
ON T4.encounter_id = T1.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.id IN
<foreach collection="encounterIdList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND T1.class_enum = 1
AND T1.delete_flag = '0'
GROUP BY
</select>
</mapper>

View File

@@ -0,0 +1,134 @@
<?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.reportmanage.mapper.InventoryProductReportMapper">
<select id="selectProductReportPage"
resultType="com.openhis.web.reportmanage.dto.InventoryProductReportPageDto">
SELECT T8.id, --ID
T8.bus_no, --药品编码
T8.name, --药品名称
T8.lot_number, --批次号
T8.manufacturer_text, --厂家
T8.item_table, --药品类型
T8.item_quantity, --库存数量
T8.unit_code, --计量单位
T8.min_package_quantity, --小包装库存数
T8.min_package_unit, --小包装单位
T8.price, --进价
T8.sale_price, --售价
T8.price * T8.part_percent AS part_price, --拆零进价
T8.sale_price * T8.part_percent AS part_sale_price, --拆零售价
T8.price * T8.item_quantity AS total_price, --进价金额(总价)
T8.sale_price * T8.item_quantity AS total_sale_price, --售价金额(总价)
T8.purpose_type_enum, --仓库类型
T8.location_name, --仓库名称
T8.location_store_name, --货位名称
T8.expiration_date, --有效期
T8.yb_no, --医保编码
T8.tenant_id -- 租户ID
FROM (SELECT T1.id, --ID
T2.bus_no, --药品编码
T2.name, --药品名称
T1.lot_number, --批次号
T2.manufacturer_text, --厂家
T2.category_code AS item_table, --药品类型
T1.quantity AS item_quantity, --库存数量
T2.unit_code, --计量单位
T1.quantity AS min_package_quantity, --小包装库存数
T2.min_unit_code AS min_package_unit, --小包装单位
T1.price, --进价
CASE
WHEN T4.condition_code = #{lotNumber}
AND T4.condition_value = T1.lot_number
THEN T4.amount
ELSE T3.price END AS sale_price, --售价
T2.part_percent, --拆零比
T6.form_enum AS purpose_type_enum, --仓库类型
T6.name AS location_name, --仓库名称
T7.name AS location_store_name, --货位名称
T1.expiration_date, --有效期
T2.yb_no, --医保编码
T1.tenant_id -- 租户ID
FROM wor_inventory_item AS T1
INNER JOIN med_medication_definition AS T2
ON T2.id = T1.item_id
AND T2.delete_flag = '0'
INNER JOIN adm_charge_item_definition AS T3
ON T3.instance_id = T2.id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T4
ON T4.definition_id = T3.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.location_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_location T7
ON T1.location_store_id = T7.id
AND T7.delete_flag = '0'
WHERE T1.delete_flag = '0') AS T8
UNION
SELECT T10.id, --ID
T10.bus_no, --器材编码
T10.name, --器材名称
T10.lot_number, --批次号
T10.manufacturer_text, --厂家
T10.item_table, --器材类型
T10.item_quantity, --库存数量
T10.unit_code, --计量单位
T10.min_package_quantity, --小包装库存数
T10.min_package_unit, --小包装单位
T10.price, --进价
T10.sale_price, --售价
T10.price * T10.part_percent AS part_price, --拆零进价
T10.sale_price * T10.part_percent AS part_sale_price, --拆零售价
T10.price * T10.item_quantity AS total_price, --进价金额(总价)
T10.sale_price * T10.item_quantity AS total_sale_price, --售价金额(总价)
T10.purpose_type_enum, --仓库类型
T10.location_name, --仓库名称
T10.location_store_name, --货位名称
T10.expiration_date, --有效期
T10.yb_no, --医保编码
T10.tenant_id -- 租户ID
FROM (SELECT T1.id, --ID
T9.bus_no, --药品编码
T9.name, --药品名称
T1.lot_number, --批次号
T9.manufacturer_text, --厂家
T9.category_code AS item_table, --药品类型
T1.quantity AS item_quantity, --库存数量
T9.unit_code, --计量单位
T1.quantity AS min_package_quantity, --小包装库存数
T9.min_unit_code AS min_package_unit, --小包装单位
T1.price, --进价
CASE
WHEN T4.condition_code = #{lotNumber}
AND T4.condition_value = T1.lot_number
THEN T4.amount
ELSE T3.price END AS sale_price, --售价
T9.part_percent, --拆零比
T6.form_enum AS purpose_type_enum, --仓库类型
T6.name AS location_name, --仓库名称
T7.name AS location_store_name, --货位名称
T1.expiration_date, --有效期
T9.yb_no, --医保编码
T1.tenant_id -- 租户ID
FROM wor_inventory_item AS T1
INNER JOIN adm_device_definition AS T9
ON T9.id = T1.item_id
AND T9.delete_flag = '0'
INNER JOIN adm_charge_item_definition AS T3
ON T3.instance_id = T9.id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T4
ON T4.definition_id = T3.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.location_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_location T7
ON T1.location_store_id = T7.id
AND T7.delete_flag = '0'
WHERE T1.delete_flag = '0') AS T10
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,74 @@
<?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.reportmanage.mapper.LossReportMapper">
<select id="selectLossReportPage"
resultType="com.openhis.web.reportmanage.dto.LossReportPageDto">
SELECT T9.bus_no, --编码
T9.name, --名称
T9.total_volume, --规格
T9.manufacturer_text, --厂家
T9.lot_number, --产品批号
T9.location_name, --目的仓库
T9.unit_code, --小单位
T9.item_quantity, --数量
T9.approval_time, --审批时间
T9.tenant_id -- 租户ID
FROM (SELECT T2.bus_no, --编码
T2.name, --名称
T3.total_volume, --规格
T2.manufacturer_text, --厂家
T1.lot_number, --产品批号
T5.name AS location_name, --目的仓库
T1.unit_code, --单位
T1.item_quantity, --数量
T1.approval_time, --审批时间
T1.tenant_id -- 租户ID
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T8
ON T8.request_id = T1.id
AND T8.status_enum = #{deliveryStatus}
AND T8.delete_flag = '0'
LEFT JOIN med_medication_definition AS T2
ON T1.item_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 adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
WHERE T1.type_enum = #{lossReport}
AND T1.status_enum = #{supplyStatus}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T6.bus_no, --编码
T6.name, --名称
T6.size AS total_volume, --规格(器材规格)
T6.manufacturer_text, --厂家
T1.lot_number, --产品批号
T5.name AS location_name, --目的仓库
T1.unit_code, --单位
T1.item_quantity, --数量
T1.approval_time, --审批时间
T1.tenant_id -- 租户ID
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T8
ON T8.request_id = T1.id
AND T8.status_enum = #{deliveryStatus}
AND T8.delete_flag = '0'
LEFT JOIN adm_device_definition AS T6
ON T1.item_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
WHERE T1.type_enum = #{lossReport}
AND T1.status_enum = #{supplyStatus}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0') AS T9
${ew.customSqlSegment}
ORDER BY T9.bus_no DESC
</select>
</mapper>

View File

@@ -0,0 +1,300 @@
<?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.reportmanage.mapper.MedicationDeviceReportMapper">
<select id="selectMedDdevInfo"
resultType="com.openhis.web.reportmanage.dto.MedUseReportInfoDto">
SELECT
name,
total_volume,
lot_number,
manufacturer_text,
org_id,
SUM(total_quantity) AS total_quantity,
MAX(unit_code) AS unit_code,
SUM(total_money) AS total_money,
MAX(dispense_time) AS dispense_time
FROM (
/* ---------- 第一段查询 ---------- */
SELECT
name,
total_volume,
lot_number,
manufacturer_text,
total_quantity,
unit_code,
unit_price,
total_money,
org_id,
dispense_time
FROM (
SELECT
T3.name,
T7.total_volume,
T1.lot_number,
T3.manufacturer_text,
SUM(T1.quantity) AS total_quantity,
MAX(T1.unit_code) AS unit_code,
MAX(T8.unit_price) AS unit_price,
SUM(T1.quantity) * MAX(T8.unit_price) AS total_money,
T1.org_id,
MAX(T2.dispense_time) AS dispense_time
FROM med_medication_request T1
LEFT JOIN med_medication_dispense T2
ON T2.med_req_id = T1.id AND T2.delete_flag = '0'
LEFT JOIN med_medication_definition T3
ON T3.id = T1.medication_id AND T3.delete_flag = '0'
LEFT JOIN med_medication T7
ON T3.id = T7.medication_def_id AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item T8
ON T8.service_table = #{medReqTableName} --'med_medication_request'
AND T8.service_id = T1.id
AND T8.delete_flag = '0'
WHERE T1.status_enum = #{completed} --'3'
AND T1.delete_flag = '0'
AND TO_CHAR(T2.dispense_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{dispenseDateSTime} AND #{dispenseDateETime}
GROUP BY
T3.name,
T7.total_volume,
T1.lot_number,
T3.manufacturer_text,
T1.org_id
UNION ALL
SELECT
T6.name,
T6.size AS total_volume,
T4.lot_number,
T6.manufacturer_text,
SUM(T4.quantity) AS total_quantity,
MAX(T4.unit_code) AS unit_code,
MAX(T9.unit_price) AS unit_price,
SUM(T4.quantity) * MAX(T9.unit_price) AS total_money,
T4.org_id,
MAX(T5.dispense_time) AS dispense_time
FROM wor_device_request T4
LEFT JOIN wor_device_dispense T5
ON T5.device_req_id = T4.id AND T5.delete_flag = '0'
LEFT JOIN adm_device_definition T6
ON T6.id = T5.device_def_id AND T6.delete_flag = '0'
LEFT JOIN adm_charge_item T9
ON T9.service_table = #{devReqTableName} --'wor_device_request'
AND T9.service_id = T4.id
AND T9.delete_flag = '0'
WHERE T4.status_enum = #{completed} --'3'
AND T4.delete_flag = '0'
AND TO_CHAR(T5.dispense_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{dispenseDateSTime} AND #{dispenseDateETime}
GROUP BY
T6.name,
T6.size,
T4.lot_number,
T6.manufacturer_text,
T4.org_id
) AS q1
WHERE total_quantity > 0
UNION ALL
/* ---------- 第二段查询 ---------- */
SELECT
name,
total_volume,
lot_number,
manufacturer_text,
total_quantity,
unit_code,
NULL AS unit_price, -- 第二段已自带总金额,不需要单价
total_money,
org_id,
dispense_time
FROM (
SELECT
name,
total_volume,
lot_number,
manufacturer_text,
org_id,
SUM(quantity) AS total_quantity,
MAX(unit_code) AS unit_code,
SUM(total_price) AS total_money,
MAX(dispense_time) AS dispense_time
FROM (
SELECT
T10.name,
T11.total_volume,
T9.lot_number,
T10.manufacturer_text,
CASE WHEN T9.type_enum = #{returnIssue} THEN T9.item_quantity * -1
ELSE T9.item_quantity END AS quantity,
T9.unit_code,
CASE WHEN T9.type_enum = #{returnIssue} THEN T9.total_price * -1
ELSE T9.total_price END AS total_price,
CASE WHEN T9.type_enum = #{returnIssue} THEN T9.source_location_id
ELSE T9.purpose_location_id END AS org_id,
T12.occurrence_time AS dispense_time
FROM wor_supply_request T9
LEFT JOIN med_medication_definition T10
ON T9.item_id = T10.id AND T10.delete_flag = '0'
LEFT JOIN med_medication T11
ON T10.id = T11.medication_def_id AND T11.delete_flag = '0'
LEFT JOIN wor_supply_delivery T12
ON T12.request_id = T9.id AND T12.delete_flag = '0'
WHERE (T9.type_enum = #{returnIssue} OR T9.type_enum = #{issueInventory})
AND T9.item_table = #{medDefTableName} --'med_medication_definition'
AND T12.status_enum = #{eventStatus}--'4'
AND T9.delete_flag = '0'
AND TO_CHAR(T12.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{dispenseDateSTime} AND #{dispenseDateETime}
UNION ALL
SELECT
T14.name,
T14.size AS total_volume,
T13.lot_number,
T14.manufacturer_text,
CASE WHEN T13.type_enum = #{returnIssue} THEN T13.item_quantity * -1
ELSE T13.item_quantity END AS quantity,
T13.unit_code,
CASE WHEN T13.type_enum = #{returnIssue} THEN T13.total_price * -1
ELSE T13.total_price END AS total_price,
CASE WHEN T13.type_enum = #{returnIssue} THEN T13.source_location_id
ELSE T13.purpose_location_id END AS org_id,
T15.occurrence_time AS dispense_time
FROM wor_supply_request T13
LEFT JOIN adm_device_definition T14
ON T13.item_id = T14.id AND T14.delete_flag = '0'
LEFT JOIN wor_supply_delivery T15
ON T15.request_id = T13.id AND T15.delete_flag = '0'
WHERE (T13.type_enum = #{returnIssue} OR T13.type_enum = #{issueInventory})
AND T13.item_table = #{devDefTableName} --'adm_device_definition'
AND T15.status_enum = #{eventStatus}--'4'
AND T13.delete_flag = '0'
AND TO_CHAR(T15.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{dispenseDateSTime} AND #{dispenseDateETime}
) AS q2
GROUP BY
name,
total_volume,
lot_number,
manufacturer_text,
org_id
) AS q3
) AS merged
WHERE org_id = #{orgId}
<if test="name != null and name != ''">and name like concat('%', #{name}, '%')</if>
GROUP BY
name,
total_volume,
lot_number,
manufacturer_text,
org_id
ORDER BY
org_id,
MAX(dispense_time) DESC
</select>
<select id="selectMedDevReport"
resultType="com.openhis.web.reportmanage.dto.MedDevUseReportDto">
SELECT org_id,
org_name,
SUM(total_money) AS total_money
FROM (
/* ---------- 第一段:药品申领 + 耗材申领 ---------- */
SELECT T1.org_id,
T16.name AS org_name,
SUM(T1.quantity * T8_MAX.unit_price_max) AS total_money
FROM med_medication_request T1
LEFT JOIN med_medication_dispense T2
ON T2.med_req_id = T1.id
AND T2.delete_flag = '0'
/* 时间区间 */
AND
TO_CHAR(T2.dispense_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{dispenseDateSTime} AND #{dispenseDateETime}
LEFT JOIN (SELECT T8.service_id,
MAX(T8.unit_price) AS unit_price_max -- 单处方的最高单价
FROM adm_charge_item T8
WHERE T8.service_table = #{medReqTableName} --'med_medication_request'
AND T8.delete_flag = '0'
GROUP BY T8.service_id) T8_MAX ON T8_MAX.service_id = T1.ID
LEFT JOIN adm_organization T16
ON T1.org_id = T16.id
AND T16.delete_flag = '0'
WHERE T1.status_enum = #{completed} --'3'
AND T1.delete_flag = '0'
/* 确保有发放记录才纳入汇总 */
AND T2.dispense_time IS NOT NULL
GROUP BY T1.org_id,
T16.name
UNION ALL
SELECT T4.org_id,
T16.name AS org_name,
SUM(T4.quantity * T9_MAX.unit_price_max) AS total_money
FROM wor_device_request T4
LEFT JOIN wor_device_dispense T5
ON T5.device_req_id = T4.id
AND T5.delete_flag = '0'
/* 时间区间 */
AND
TO_CHAR(T5.dispense_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{dispenseDateSTime} AND #{dispenseDateETime}
LEFT JOIN (SELECT T9.service_id,
MAX(T9.unit_price) AS unit_price_max -- 单处方的最高单价
FROM adm_charge_item T9
WHERE T9.service_table = #{devReqTableName} --'wor_device_request'
AND T9.delete_flag = '0'
GROUP BY T9.service_id) T9_MAX ON T9_MAX.service_id = T4.ID
LEFT JOIN adm_organization T16
ON T4.org_id = T16.id
AND T16.delete_flag = '0'
WHERE T4.status_enum = #{completed} --'3'
AND T4.delete_flag = '0'
AND T5.dispense_time IS NOT NULL
GROUP BY T4.org_id,
T16.name
/* ---------- 第二段supply_request ---------- */
UNION ALL
SELECT CASE
WHEN T9.type_enum = '9' THEN T9.source_location_id
ELSE T9.purpose_location_id END AS org_id,
CASE
WHEN T9.type_enum = '9' THEN T16.name
ELSE T17.name END AS org_name,
SUM(CASE
WHEN T9.type_enum = '9' THEN T9.total_price * -1
ELSE T9.total_price END) AS total_money
FROM wor_supply_request T9
LEFT JOIN wor_supply_delivery T12
ON T12.request_id = T9.id
AND T12.delete_flag = '0'
/* 时间区间 */
AND
TO_CHAR(T12.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{dispenseDateSTime} AND #{dispenseDateETime}
LEFT JOIN adm_organization T16
ON T9.source_location_id = T16.id
AND T16.delete_flag = '0'
LEFT JOIN adm_organization T17
ON T9.purpose_location_id = T17.id
AND T17.delete_flag = '0'
WHERE (T9.type_enum = '9' OR T9.type_enum = '7')
AND T9.item_table IN (#{medDefTableName}, #{devDefTableName})--('med_medication_definition','adm_device_definition')
AND T12.status_enum = #{eventStatus}--'4'
AND T9.delete_flag = '0'
AND T12.occurrence_time IS NOT NULL
GROUP BY CASE
WHEN T9.type_enum = '9' THEN T9.source_location_id
ELSE T9.purpose_location_id END,
CASE
WHEN T9.type_enum = '9' THEN T16.name
ELSE T17.name END) AS merged
GROUP BY org_id,
org_name
ORDER BY org_id
</select>
</mapper>

View File

@@ -0,0 +1,151 @@
<?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.reportmanage.mapper.MonthlySettlementReportMapper">
<!--期初金额 todo定时任务每日凌晨批量盘库做成盘点时间occurrence_time是 yyyy-MM-dd 00:00:00-->
<select id="selectAmount" resultType="java.math.BigDecimal">
SELECT COALESCE(SUM(T1.price * COALESCE(T1.total_quantity, 0)), 0) AS total_amount
FROM wor_aut_supply_request T1
WHERE T1.purpose_location_id = #{locationId}
AND T1.type_enum = '44' -- 商品批量盘点
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') = #{time}
AND T1.delete_flag = '0'
</select>
<!--采购入库金额 -->
<select id="selectAmountNumber"
resultType="com.openhis.web.reportmanage.dto.AmountNumberDto">
SELECT
COALESCE(SUM(total_price), 0) AS total_amount,
COUNT(DISTINCT bus_no) AS total_number
FROM wor_supply_request T1
INNER JOIN wor_supply_delivery T2 ON T1.id = T2.request_id AND T2.delete_flag = '0'
WHERE T1.purpose_location_id = #{locationId}
AND T1.type_enum = #{typeEnum} -- 1:采购入库
AND T1.status_enum = #{agree}--同意
AND T2.status_enum = #{completed}--已完成
AND TO_CHAR(T2.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.delete_flag = '0'
</select>
<!--调拨入库查询 -->
<select id="selectTransferInAmountNumber"
resultType="com.openhis.web.reportmanage.dto.AmountNumberDto">
SELECT
COALESCE(SUM(total_price), 0) AS total_amount,
COUNT(DISTINCT bus_no) AS total_number
FROM wor_supply_request T1
INNER JOIN wor_supply_delivery T2 ON T1.id = T2.request_id AND T2.delete_flag = '0'
WHERE T1.purpose_location_id = #{locationId}
AND T1.type_enum IN (#{productTransfer} ,#{productBatchTransfer} )
AND T1.status_enum = #{agree}--同意
AND T2.status_enum = #{completed}--已完成
AND TO_CHAR(T2.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.delete_flag = '0'
</select>
<!--调拨出库查询 -->
<select id="selectTransferOutAmountNumber"
resultType="com.openhis.web.reportmanage.dto.AmountNumberDto">
SELECT
COALESCE(SUM(total_price), 0) AS total_amount,
COUNT(DISTINCT bus_no) AS total_number
FROM wor_supply_request T1
INNER JOIN wor_supply_delivery T2 ON T1.id = T2.request_id AND T2.delete_flag = '0'
WHERE T1.source_location_id = #{locationId}
AND T1.type_enum IN (#{productTransfer} ,#{productBatchTransfer} )
AND T1.status_enum = #{agree}--同意
AND T2.status_enum = #{completed}--已完成
AND TO_CHAR(T2.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.delete_flag = '0'
</select>
<!--盘点查询 -->
<select id="selectProfitLossAmountNumber"
resultType="com.openhis.web.reportmanage.dto.AmountNumberDto">
SELECT
COALESCE(SUM(total_price), 0) AS total_amount,
COUNT(DISTINCT bus_no) AS total_number
FROM wor_supply_request T1
INNER JOIN wor_supply_delivery T2 ON T1.id = T2.request_id AND T2.delete_flag = '0'
WHERE T1.source_location_id = #{locationId}
AND T1.type_enum IN (#{productStocktaking} ,#{productBatchStocktaking} )
AND T1.status_enum = #{agree}--同意
AND T2.status_enum = #{completed}--已完成
AND TO_CHAR(T2.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.delete_flag = '0'
</select>
<!--报损单查询 -->
<select id="selectLossAmountNumber"
resultType="com.openhis.web.reportmanage.dto.AmountNumberDto">
SELECT
COALESCE(SUM(total_price), 0) AS total_amount,
COUNT(DISTINCT bus_no) AS total_number
FROM wor_supply_request T1
INNER JOIN wor_supply_delivery T2 ON T1.id = T2.request_id AND T2.delete_flag = '0'
WHERE T1.purpose_location_id = #{locationId}
AND T1.type_enum = #{lossReportForm}
AND T1.status_enum = #{agree}--同意
AND T2.status_enum = #{completed}--已完成
AND TO_CHAR(T2.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.delete_flag = '0'
</select>
<!--药品发放查询 -->
<select id="selectDrugIssue" resultType="java.math.BigDecimal">
SELECT COALESCE(SUM(total_money), 0) AS total_money_sum
FROM (
/* ---------- 查询药品 ---------- */
SELECT
SUM(T1.quantity) * MAX(T8.unit_price) AS total_money
FROM med_medication_request T1
LEFT JOIN med_medication_dispense T2
ON T2.med_req_id = T1.id AND T2.delete_flag = '0'
LEFT JOIN med_medication_definition T3
ON T3.id = T1.medication_id AND T3.delete_flag = '0'
LEFT JOIN med_medication T7
ON T3.id = T7.medication_def_id AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item T8
ON T8.service_table = #{medReqTableName} --'med_medication_request'
AND T8.service_id = T1.id
AND T8.delete_flag = '0'
WHERE T2.location_id = #{locationId}
AND T1.status_enum = #{completed}--请求状态:已完成
AND T1.delete_flag = '0'
AND TO_CHAR(T2.dispense_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
GROUP BY
T3.name,
T7.total_volume,
T1.lot_number,
T1.unit_code,
T3.manufacturer_text,
T2.location_id
UNION ALL
/* ---------- 查询耗材 ---------- */
SELECT
SUM(T4.quantity) * MAX(T9.unit_price) AS total_money
FROM wor_device_request T4
LEFT JOIN wor_device_dispense T5
ON T5.device_req_id = T4.id AND T5.delete_flag = '0'
LEFT JOIN adm_device_definition T6
ON T6.id = T5.device_def_id AND T6.delete_flag = '0'
LEFT JOIN adm_charge_item T9
ON T9.service_table = #{devReqTableName} --'wor_device_request'
AND T9.service_id = T4.id
AND T9.delete_flag = '0'
WHERE T5.location_id = #{locationId}
AND T4.status_enum = #{completed}--请求状态:已完成
AND T4.delete_flag = '0'
AND TO_CHAR(T5.dispense_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
GROUP BY
T6.name,
T6.size,
T4.lot_number,
T4.unit_code,
T6.manufacturer_text,
T5.location_id
)T
</select>
</mapper>

View File

@@ -0,0 +1,129 @@
<?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.reportmanage.mapper.OutboundReportMapper">
<select id="selectOutboundReportPage"
resultType="com.openhis.web.reportmanage.dto.OutboundReportPageDto">
select T10.supply_bus_no, --单据号
T10.name, --药品名称
T10.bus_no, --编码
T10.lot_number, --批号
T10.source_location_id, -- 源仓库ID(存放仓库)
T10.source_location_name, -- 源仓库(存放仓库)
T10.source_location_store_id, -- 源仓位ID
T10.source_location_store_name, -- 源仓位
T10.purpose_location_id, -- 目的仓库ID(领用科室)
T10.purpose_location_name, -- 目的仓库(领用科室)
T10.unit_code, --计量单位
T10.item_quantity, --数量
T10.purchase_price, --采购单价
T10.price, --领用单价
T10.total_price, --金额
T10.supplier_id, --供应商
T10.approver_id, --审核人
T10.approval_time, --审批时间
T10.remake, --出库原因
T10.tenant_id -- 租户ID
from (
select T1.bus_no as supply_bus_no, --单据号
T3.name, --药品名称
T3.bus_no, --编码
T1.lot_number, --批号
T1.source_location_id, -- 源仓库ID
T4.name AS source_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T5.name AS source_location_store_name, -- 源仓位
T1.purpose_location_id, -- 目的仓库ID
T8.name AS purpose_location_name, -- 目的仓库(领用科室)
T1.unit_code, --计量单位
T1.item_quantity, --数量
T7.amount as purchase_price, --采购单价
T1.price, --领用单价
T1.total_price, --金额
T1.supplier_id, --供应商
T1.approver_id, --审核人
T1.approval_time, --审批时间
T1.remake, --出库原因(备注)
T1.tenant_id -- 租户ID
from wor_supply_request as T1
inner join wor_supply_delivery as T2
on T1.id = T2.request_id
and T2.status_enum = #{deliveryStatus}
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 adm_location T4
on T1.source_location_id = T4.id
and T4.delete_flag = '0'
left join adm_location T5
on T1.source_location_store_id = T5.id
and T5.delete_flag = '0'
left join adm_charge_item_definition as T6
on T3.id = T6.instance_id
and T6.delete_flag = '0'
left join adm_charge_item_def_detail as T7
on T6.id = T7.definition_id
and T7.delete_flag = '0'
AND T7.condition_value = T1.lot_number
left join adm_organization T8
on T1.purpose_location_id = T8.id
and T8.delete_flag = '0'
where T1.delete_flag = '0'
and T1.type_enum = #{issueInventory}
and T1.status_enum = #{supplyStatus}
and T1.item_table = #{medicationTableName}
union
select T1.bus_no as supply_bus_no, --单据号
T3.name, --药品名称
T3.bus_no, --编码
T1.lot_number, --批号
T1.source_location_id, -- 源仓库ID
T4.name AS source_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T5.name AS source_location_store_name, -- 源仓位
T1.purpose_location_id, -- 目的仓库ID
T8.name AS purpose_location_name, -- 目的仓库(领用科室)
T1.unit_code, --计量单位
T1.item_quantity, --数量
T7.amount as purchase_price, --采购单价
T1.price, --领用单价
T1.total_price, --金额
T1.supplier_id, --供应商
T1.approver_id, --审核人
T1.approval_time, --审批时间
T1.remake, --出库原因
T1.tenant_id -- 租户ID
from wor_supply_request as T1
inner join wor_supply_delivery as T2
on T1.id = T2.request_id
and T2.status_enum = #{deliveryStatus}
and T2.delete_flag = '0'
inner join adm_device_definition as T3
on T1.item_id = T3.id
and T3.delete_flag = '0'
left join adm_location T4
on T1.source_location_id = T4.id
and T4.delete_flag = '0'
left join adm_location T5
on T1.source_location_store_id = T5.id
and T5.delete_flag = '0'
left join adm_charge_item_definition as T6
on T3.id = T6.instance_id
and T6.delete_flag = '0'
left join adm_charge_item_def_detail as T7
on T6.id = T7.definition_id
and T7.delete_flag = '0'
AND T7.condition_value = T1.lot_number
left join adm_organization T8
on T1.purpose_location_id = T8.id
and T8.delete_flag = '0'
where T1.delete_flag = '0'
and T1.type_enum = #{issueInventory}
and T1.status_enum = #{supplyStatus}
and T1.item_table = #{deviceTableName}
) as T10
${ew.customSqlSegment}
ORDER BY T10.supply_bus_no DESC
</select>
</mapper>

View File

@@ -0,0 +1,256 @@
<?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.reportmanage.mapper.PrintReportMapper">
<!-- 打印——处置单 -->
<select id="getDisposalList" resultType="com.openhis.web.reportmanage.dto.DisposalDto">
SELECT wsr.bus_no, -- 服务请求编码
ap.name AS patient_name, -- 患者名字
ap.birth_date, -- 患者出生日期
ap.gender_enum, -- 患者性别
ap.phone, -- 患者手机号
ae.bus_no AS encounter_bus_no, -- 门诊/住院病历号
aa.no AS account_no, -- 医保/就诊卡号
aa.type_code AS fee_type, -- 费别
wad.name AS activity_name, -- 治疗项目名
wsr.quantity, -- 数量
wsr.unit_code, -- 单位
wsr.requester_id AS dor_id, -- 开方医生id
wsr.authored_time, -- 开具时间
ae.organization_id AS dept_id, -- 科室
COALESCE((SELECT SUM(aci.total_price)
FROM adm_charge_item aci
INNER JOIN wor_service_request wsr_sub ON wsr_sub.id = aci.service_id
LEFT JOIN wor_activity_definition wad_sub ON wsr_sub.activity_id = wad_sub.id
WHERE aci.service_table = 'wor_service_request'
AND aci.context_enum = 3 -- 项目
AND aci.status_enum IN (1, 2, 5) -- 费用状态
AND wad_sub.category_code = '21' -- 治疗
AND aci.encounter_id = wsr.encounter_id), 0) AS total_price -- 处置总金额
FROM wor_service_request wsr
LEFT JOIN adm_patient ap ON wsr.patient_id = ap.id -- 患者信息
LEFT JOIN adm_account aa ON wsr.encounter_id = aa.encounter_id -- 账户信息
LEFT JOIN adm_encounter_diagnosis aed
ON wsr.encounter_id = aed.encounter_id AND aed.maindise_flag = 1 -- 主诊断flag
LEFT JOIN cli_condition cc ON aed.condition_id = cc.id -- 病情
LEFT JOIN cli_condition_definition ccd ON cc.definition_id = ccd.id -- 病情定义
LEFT JOIN adm_encounter ae ON wsr.encounter_id = ae.id -- 就诊信息
LEFT JOIN wor_activity_definition wad ON wsr.activity_id = wad.id -- 项目定义
WHERE wad.category_code = '21' -- 治疗
AND wsr.encounter_id = #{encounterId}
</select>
<!-- 打印——检验,检查申请单 -->
<select id="getCheckInspectionList" resultType="com.openhis.web.reportmanage.dto.CkInspAppDto">
SELECT wsr.bus_no, -- 服务请求编码
ap.name AS patient_name, -- 患者名字
ap.birth_date, -- 患者出生日期
ap.gender_enum, -- 患者性别
ap.phone, -- 患者手机号
ae.bus_no AS encounter_bus_no, -- 门诊/住院病历号
aa.no AS account_no, -- 医保/就诊卡号
aa.type_code AS fee_type, -- 费别
wad.name AS activity_name, -- 治疗项目名
wsr.quantity, -- 数量
wsr.unit_code, -- 单位
wsr.requester_id AS dor_id, -- 开方医生id
wsr.authored_time, -- 开具时间
wsr.location_id, -- 执行科室
aci.total_price AS item_price, -- 单项目金额
COALESCE((SELECT SUM(aci_sub.total_price)
FROM adm_charge_item aci_sub
LEFT JOIN wor_service_request wsr_sub ON wsr_sub.id = aci_sub.service_id
LEFT JOIN wor_activity_definition wad_sub ON wsr_sub.activity_id = wad_sub.id
WHERE aci_sub.service_table = 'wor_service_request'
AND aci_sub.context_enum = 3 -- 项目
AND aci_sub.status_enum IN (1, 2, 5) -- 费用状态
AND wad_sub.category_code = wad.category_code -- 关联主查询的category_code
AND aci_sub.encounter_id = wsr.encounter_id -- 关联主查询的encounter_id
), 0) AS total_price -- 项目总金额
FROM wor_service_request wsr
LEFT JOIN adm_patient ap ON wsr.patient_id = ap.id -- 患者信息
LEFT JOIN adm_account aa ON wsr.encounter_id = aa.encounter_id -- 账户信息
LEFT JOIN adm_encounter ae ON wsr.encounter_id = ae.id -- 就诊信息
LEFT JOIN adm_charge_item aci ON wsr.id = aci.service_id -- 费用信息
AND aci.service_table = 'wor_service_request'
AND aci.context_enum = 3 -- 项目
AND aci.status_enum IN (1, 2, 5) -- 费用状态
LEFT JOIN wor_activity_definition wad ON wsr.activity_id = wad.id -- 项目定义
WHERE wad.category_code = #{categoryCode} -- 22:检验,23:检查
AND wsr.encounter_id = #{encounterId}
</select>
<!-- 打印——处方单 -->
<select id="getPrescriptionList" resultType="com.openhis.web.reportmanage.dto.PrescriptionPrintDto">
SELECT mmr.prescription_no, -- 处方号
mmr.group_id, -- 组号
mmr.practitioner_id AS dor_id, -- 开方医生id
mmr.performer_id AS phar_id, -- 审核药师id
mmdef.name AS med_name, -- 药品名字
mm.total_volume, -- 药品规格
mmdef.pharmacology_category_code, -- 药品性质
mmr.method_code, -- 用法
mmr.rate_code, -- 用药频次
mmr.dose, -- 单次剂量
mmr.dose_unit_code, -- 剂量单位
mmr.req_authored_time, -- 开单时间
mmr.org_id AS depart_id, -- 所属科室
ae.bus_no AS encounter_bus_no, -- 门诊/住院病历号
ap.name AS patient_name, -- 患者名字
ap.birth_date, -- 患者出生日期
ap.gender_enum, -- 患者性别
ap.phone, -- 患者手机号
aa.type_code, -- 费别
aa.no, -- 医保/就诊卡号
CASE WHEN mmr.yb_class_enum = '140104' THEN 1 ELSE 0 END AS ncds_flag, -- 慢病(1-慢病 0-非慢病)
ccd.name AS diag_name, -- 临床诊断
mmd.practitioner_id AS check_phar_id, -- 核对、发药药师
mmd.preparer_id AS dis_rev_phar_id, -- 调配药师
-- COALESCE((SELECT SUM(aci.total_price)
-- FROM adm_charge_item aci
-- WHERE aci.prescription_no = mmr.prescription_no
-- AND aci.context_enum = 1
-- AND aci.status_enum IN (1, 2, 5)
-- AND aci.encounter_id = mmr.encounter_id
-- AND aci.tenant_id = 1), 0) AS total_price,
COALESCE((SELECT aci.total_price
FROM adm_charge_item aci
WHERE aci.service_table = 'med_medication_request'
AND aci.service_id = mmr.id
AND aci.context_enum = 1
AND aci.status_enum IN (1, 2, 5)
AND aci.tenant_id = 1), 0) AS total_price,
(SELECT CASE
WHEN EXISTS(
SELECT 1
FROM wor_service_request wsr
LEFT JOIN wor_activity_definition wad
ON wad.id = wsr.activity_id AND wad.name = '皮试检查'
LEFT JOIN cli_allergy_intolerance cai ON cai.request_id = wsr.id
WHERE wsr.based_on_id = mmr.id
AND wsr.based_on_table = 'med_medication_request'
AND wsr.encounter_id = #{encounterId}
AND cai.clinical_status_enum = 1
) THEN 1
WHEN EXISTS(
SELECT 1
FROM wor_service_request wsr
LEFT JOIN wor_activity_definition wad
ON wad.id = wsr.activity_id AND wad.name = '皮试检查'
LEFT JOIN cli_allergy_intolerance cai ON cai.request_id = wsr.id
WHERE wsr.based_on_id = mmr.id
AND wsr.based_on_table = 'med_medication_request'
AND wsr.encounter_id = #{encounterId}
AND cai.clinical_status_enum = 2
) THEN 2
ELSE 4
END) AS clinicalStatusEnum
FROM med_medication_request mmr
LEFT JOIN adm_patient ap ON mmr.patient_id = ap.id
LEFT JOIN adm_account aa ON mmr.encounter_id = aa.encounter_id
LEFT JOIN adm_encounter_diagnosis aed ON mmr.encounter_id = aed.encounter_id AND aed.maindise_flag = 1
LEFT JOIN cli_condition cc ON aed.condition_id = cc.id
LEFT JOIN cli_condition_definition ccd ON cc.definition_id = ccd.id
LEFT JOIN med_medication_dispense mmd ON mmr.id = mmd.med_req_id
LEFT JOIN med_medication_definition mmdef ON mmr.medication_id = mmdef.id
LEFT JOIN med_medication mm ON mm.medication_def_id = mmdef.id
LEFT JOIN adm_encounter ae ON mmr.encounter_id = ae.id
WHERE mmr.prescription_no = #{prescriptionNo}
AND mmr.encounter_id = #{encounterId}
</select>
<!-- 打印——护士输液的瓶签 -->
<select id="getBottleLabelList" resultType="com.openhis.web.reportmanage.dto.BottleLabelDto">
SELECT
pt.name AS patient_name, --病人姓名
pt.gender_enum, --病人性别
pt.birth_date, --病人生日
md.name AS med_name, --药品名
m.total_volume as space,--药品规格
mr.bus_no, -- 药品请求编码
mr.rate_code, --用药频次
mr.method_code,--用法
mr.dose,--单次剂量
mr.dose_unit_code,--剂量单位
sr.performer_id, --执行护士
sr.occurrence_start_time --预计执行时间
FROM
wor_service_request sr
LEFT JOIN adm_encounter e ON e.id = sr.encounter_id
AND e.delete_flag = '0'
LEFT JOIN adm_patient pt ON pt.id = sr.patient_id
AND pt.delete_flag = '0'
LEFT JOIN wor_activity_definition ad ON ad.id = sr.activity_id
AND ad.delete_flag = '0'
LEFT JOIN med_medication_request mr ON mr.encounter_id = sr.encounter_id
AND mr.delete_flag = '0'
LEFT JOIN med_medication_definition md ON md.id = mr.medication_id
AND md.delete_flag = '0'
LEFT JOIN med_medication m ON md.id = m.medication_def_id
AND m.delete_flag = '0'
LEFT JOIN med_medication_dispense mmd ON mr.id = mmd.med_req_id
AND mmd.delete_flag = '0'
<where>
ad.name = '输液'
AND mr.infusion_flag = 1
--AND mmd.status_enum = 4--药品发放状态:状态是已发送的(DispenseStatus枚举类)
AND sr.id = #{serviceId}
AND sr.encounter_id = #{encounterId}
AND mr.group_id = #{groupId}
</where>
ORDER BY
mr.create_time desc
</select>
<select id="getBottleLabelBatchList" resultType="com.openhis.web.reportmanage.dto.BottleLabelDto">
SELECT
pt.name AS patient_name, -- 病人姓名
pt.gender_enum, -- 病人性别
pt.birth_date, -- 病人生日
md.name AS med_name, -- 药品名
m.total_volume as space, -- 药品规格
mr.bus_no, -- 药品请求编码
mr.rate_code, -- 用药频次
mr.method_code, -- 用法
mr.dose, -- 单次剂量
mr.dose_unit_code, -- 剂量单位
sr.performer_id, -- 执行护士
sr.occurrence_start_time -- 预计执行时间
FROM
wor_service_request sr
LEFT JOIN adm_encounter e ON e.id = sr.encounter_id
AND e.delete_flag = '0'
LEFT JOIN adm_patient pt ON pt.id = sr.patient_id
AND pt.delete_flag = '0'
LEFT JOIN wor_activity_definition ad ON ad.id = sr.activity_id
AND ad.delete_flag = '0'
LEFT JOIN med_medication_request mr ON mr.encounter_id = sr.encounter_id
AND mr.delete_flag = '0'
AND mr.id=sr.based_on_id
LEFT JOIN med_medication_definition md ON md.id = mr.medication_id
AND md.delete_flag = '0'
LEFT JOIN med_medication m ON md.id = m.medication_def_id
AND m.delete_flag = '0'
LEFT JOIN med_medication_dispense mmd ON mr.id = mmd.med_req_id
AND mmd.delete_flag = '0'
<where>
ad.name = '输液'
AND mr.infusion_flag = 1
-- AND mmd.status_enum = 4 -- 药品发放状态:状态是已发送的(DispenseStatus枚举类)
AND sr.id IN
<foreach item="serviceId" collection="serviceIds" open="(" separator="," close=")">
#{serviceId}
</foreach>
AND sr.encounter_id IN
<foreach item="encounterId" collection="encounterIds" open="(" separator="," close=")">
#{encounterId}
</foreach>
</where>
ORDER BY
mr.create_time DESC
</select>
</mapper>

View File

@@ -0,0 +1,129 @@
<?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.reportmanage.mapper.PurchaseReturnReportMapper">
<select id="selectPurchaseReturnReportPage"
resultType="com.openhis.web.reportmanage.dto.PurchaseReturnReportPageDto">
SELECT T10.supply_bus_no, --单据号
T10.name, --药品名称
T10.bus_no, --药品编码
T10.original_bus_no, --采购单据号
T10.lot_number, --批次号
T10.purpose_location_id, --目的仓库ID
T10.location_name, --仓库名称
T10.location_store_name, --货位名称
T10.unit_code, --计量单位
T10.quantity, --退货数量
T10.price, --采购单价
T10.return_price, --退货单价
T10.total_price, --退货金额
T10.supplier_id, --供应商id
T10.supplier, --供应商
T10.approver_id, --审核人
T10.create_time, --制单日期
T10.approval_time, --审核日期
T10.tenant_id -- 租户ID
FROM (SELECT T1.bus_no AS supply_bus_no, --单据号
T2.name, --药品名称
T2.bus_no, --药品编码
T1.original_bus_no, --采购单据号
T1.lot_number, --批次号
T1.purpose_location_id, -- 目的仓库ID
T7.name AS location_name, --仓库名称
T8.name AS location_store_name, --货位名称
T1.unit_code, --计量单位
T1.item_quantity AS quantity, --退货数量
T4.amount AS price, --采购单价
T1.price AS return_price, --退货单价
T1.total_price, --退货金额
T2.part_percent, --拆零比
T1.supplier_id, --供应商id
T9.name AS supplier, --供应商
T1.approver_id, --审核人
T1.create_time, --制单日期
T1.approval_time, --审核日期
T1.tenant_id -- 租户ID
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T14
ON T14.request_id = T1.id
AND T14.status_enum = #{deliveryStatus}
AND T14.delete_flag = '0'
LEFT JOIN med_medication_definition AS T2
ON T2.id = T1.item_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T3
ON T3.instance_id = T1.item_id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T4
ON T4.definition_id = T3.id
AND T4.delete_flag = '0'
AND T4.condition_value = T1.lot_number
LEFT JOIN med_medication AS T5
ON T5.medication_def_id = T2.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location AS T7
ON T7.id = T1.purpose_location_id
AND T7.delete_flag = '0'
LEFT JOIN adm_location AS T8
ON T8.id = T1.purpose_location_store_id
AND T8.delete_flag = '0'
LEFT JOIN adm_supplier AS T9
ON T9.id = T1.supplier_id
AND T9.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{productReturn}
AND T1.status_enum = #{supplyStatus}
AND T1.item_table = #{medicationTableName}
UNION
SELECT T1.bus_no AS supply_bus_no, --单据号
T11.name, --器材名称
T11.bus_no, --器材编码
T1.original_bus_no, --采购单据号
T1.lot_number, --批次号
T1.purpose_location_id, -- 目的仓库ID
T7.name AS location_name, --仓库名称
T8.name AS location_store_name, --货位名称
T1.unit_code, --计量单位
T1.item_quantity AS quantity, --退货数量
T4.amount AS price, --采购单价
T1.price AS return_price, --退货单价
T1.total_price, --退货金额
T11.part_percent, --拆零比
T1.supplier_id, --供应商id
T9.name AS supplier, --供应商
T1.approver_id, --审核人
T1.create_time, --制单日期
T1.approval_time, --审核日期
T1.tenant_id -- 租户ID
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T14
ON T14.request_id = T1.id
AND T14.status_enum = #{deliveryStatus}
AND T14.delete_flag = '0'
LEFT JOIN adm_device_definition AS T11
ON T11.id = T1.item_id
AND T11.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T3
ON T3.instance_id = T1.item_id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T4
ON T4.definition_id = T3.id
AND T4.delete_flag = '0'
AND T4.condition_value = T1.lot_number
LEFT JOIN adm_location AS T7
ON T7.id = T1.purpose_location_id
AND T7.delete_flag = '0'
LEFT JOIN adm_location AS T8
ON T8.id = T1.purpose_location_store_id
AND T8.delete_flag = '0'
LEFT JOIN adm_supplier AS T9
ON T9.id = T1.supplier_id
AND T9.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{productReturn}
AND T1.status_enum = #{supplyStatus}
AND T1.item_table = #{deviceTableName}) AS T10
${ew.customSqlSegment}
ORDER BY T10.supply_bus_no DESC
</select>
</mapper>

View File

@@ -0,0 +1,101 @@
<?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.reportmanage.mapper.RegisterReportMapper">
<select id="selectRegisterReportPage"
resultType="com.openhis.web.reportmanage.dto.RegisterReportPageDto">
SELECT T10.bus_no, --患者院内编码/病历号
T10.name, --患者姓名
T10.department_id, --科室
T10.department_name, --科室
T10.clinical_name, --项目名
T10.yb_no, --医保码
T10.doctor_id,-- 挂号医生
T10.doctor_name,-- 挂号医生
T10.payee_name,--收款人
T10.number, --数量
T10.price, --单价
T10.quantity_unit,--单位
T10.total_price, --金额
T10.charge_time,--收费时间
T10.encounter_id,
T10.tenant_id
FROM (SELECT DISTINCT T2.bus_no, --患者院内编码/病历号
T3.name, --患者姓名
T6.id AS department_id, --科室
T6.name AS department_name, --科室
CASE
WHEN T5.instance_table = 'adm_device_definition' THEN T11.name
WHEN T5.instance_table = 'adm_healthcare_service' THEN T12.name
WHEN T5.instance_table = 'med_medication_definition' THEN T13.name
WHEN T5.instance_table = 'wor_activity_definition' THEN T14.name
ELSE NULL
END AS clinical_name, --项目名
CASE
WHEN T5.instance_table = 'adm_device_definition' THEN T11.yb_no
WHEN T5.instance_table = 'adm_healthcare_service' THEN T12.yb_no
WHEN T5.instance_table = 'med_medication_definition' THEN T13.yb_no
WHEN T5.instance_table = 'wor_activity_definition' THEN T14.yb_no
ELSE NULL
END AS yb_no, --医保码
T8.id AS doctor_id,-- 挂号医生
T8.name AS doctor_name,-- 挂号医生
T9.name AS payee_name,--收款人
T4.quantity_value AS number, --数量
T4.unit_price AS price, --单价
T4.quantity_unit,--单位
CASE
WHEN T1.status_enum = #{refundAll} THEN -T4.total_price
ELSE T4.total_price
END AS total_price,--金额
T1.bill_date AS charge_time,--收费时间
T1.encounter_id,
T1.tenant_id
FROM fin_payment_reconciliation T1
INNER JOIN adm_encounter T2
ON T2.id = T1.encounter_id
AND T2.delete_flag = '0'
LEFT JOIN adm_patient T3
ON T1.patient_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item T4
ON CONCAT(',', T1.charge_item_ids, ',') LIKE CONCAT('%,', T4.id, ',%')
AND T4.context_enum = #{contextEnum}
AND T4.delete_flag = '0'
INNER JOIN adm_charge_item_definition T5
ON T4.definition_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_device_definition T11
ON T5.instance_id = T11.id
AND T5.instance_table = 'adm_device_definition'
AND T11.delete_flag = '0'
LEFT JOIN adm_healthcare_service T12
ON T5.instance_id = T12.id
AND T5.instance_table = 'adm_healthcare_service'
AND T12.delete_flag = '0'
LEFT JOIN med_medication_definition T13
ON T5.instance_id = T13.id
AND T5.instance_table = 'med_medication_definition'
AND T13.delete_flag = '0'
LEFT JOIN wor_activity_definition T14
ON T5.instance_id = T14.id
AND T5.instance_table = 'wor_activity_definition'
AND T14.delete_flag = '0'
LEFT JOIN adm_organization T6
ON T2.organization_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_encounter_participant T7
ON T1.encounter_id = T7.encounter_id
AND T7.type_code = #{typeCode}
AND T7.delete_flag = '0'
LEFT JOIN adm_practitioner T8
ON T7.practitioner_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_practitioner T9
ON T1.enterer_id = T9.id
AND T9.delete_flag = '0'
WHERE T1.status_enum IN (#{success}, #{refundAll})
AND T1.delete_flag = '0') AS T10
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,129 @@
<?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.reportmanage.mapper.ReturnIssueReportMapper">
<select id="selectReturnIssueReportPage"
resultType="com.openhis.web.reportmanage.dto.ReturnIssueReportPageDto">
select T10.supply_bus_no, --单据号
T10.name, --药品名称
T10.bus_no, --编码
T10.lot_number, --批号
T10.source_location_id, -- 源仓库ID(科室)
T10.source_location_name, -- 源仓库(科室)
T10.purpose_location_id, -- 目的仓库ID(库房)
T10.purpose_location_name, -- 目的仓库(库房)
T10.purpose_location_store_id, -- 目的货位ID(库房)
T10.purpose_location_store_name, -- 目的货位(库房)
T10.unit_code, --计量单位
T10.item_quantity, --数量
T10.purchase_price, --采购单价
T10.price, --领用单价
T10.total_price, --金额
T10.supplier_id, --供应商
T10.approver_id, --审核人
T10.approval_time, --审批时间
T10.remake, --退库原因
T10.tenant_id -- 租户ID
from (
select T1.bus_no as supply_bus_no, --单据号
T3.name, --药品名称
T3.bus_no, --编码
T1.lot_number, --批号
T1.source_location_id, -- 源仓库ID(科室)
T8.name AS source_location_name, -- 源仓库(科室)
T1.purpose_location_id, -- 目的仓库ID(库房)
T4.name AS purpose_location_name, -- 目的仓库(库房)
T1.purpose_location_store_id, -- 目的货位ID(库房)
T5.name AS purpose_location_store_name, -- 目的货位(库房)
T1.unit_code, --计量单位
T1.item_quantity, --数量
T7.amount as purchase_price, --采购单价
T1.price, --领用单价
T1.total_price, --金额
T1.supplier_id, --供应商
T1.approver_id, --审核人
T1.approval_time, --审批时间
T1.remake, --退库原因(备注)
T1.tenant_id -- 租户ID
from wor_supply_request as T1
inner join wor_supply_delivery as T2
on T1.id = T2.request_id
and T2.status_enum = #{deliveryStatus}
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 adm_location T4
on T1.purpose_location_id = T4.id
and T4.delete_flag = '0'
left join adm_location T5
on T1.purpose_location_store_id = T5.id
and T5.delete_flag = '0'
left join adm_charge_item_definition as T6
on T3.id = T6.instance_id
and T6.delete_flag = '0'
left join adm_charge_item_def_detail as T7
on T6.id = T7.definition_id
and T7.delete_flag = '0'
AND T7.condition_value = T1.lot_number
left join adm_organization T8
on T1.source_location_id = T8.id
and T8.delete_flag = '0'
where T1.delete_flag = '0'
and T1.type_enum = #{returnissue}
and T1.status_enum = #{supplyStatus}
and T1.item_table = #{medicationTableName}
union
select T1.bus_no as supply_bus_no, --单据号
T3.name, --药品名称
T3.bus_no, --编码
T1.lot_number, --批号
T1.source_location_id, -- 源仓库ID(科室)
T8.name AS source_location_name, -- 源仓库(科室)
T1.purpose_location_id, -- 目的仓库ID(库房)
T4.name AS purpose_location_name, -- 目的仓库(库房)
T1.purpose_location_store_id, -- 目的货位ID(库房)
T5.name AS purpose_location_store_name, -- 目的货位(库房)
T1.unit_code, --计量单位
T1.item_quantity, --数量
T7.amount as purchase_price, --采购单价
T1.price, --领用单价
T1.total_price, --金额
T1.supplier_id, --供应商
T1.approver_id, --审核人
T1.approval_time, --审批时间
T1.remake, --退库原因
T1.tenant_id -- 租户ID
from wor_supply_request as T1
inner join wor_supply_delivery as T2
on T1.id = T2.request_id
and T2.status_enum = #{deliveryStatus}
and T2.delete_flag = '0'
inner join adm_device_definition as T3
on T1.item_id = T3.id
and T3.delete_flag = '0'
left join adm_location T4
on T1.purpose_location_id = T4.id
and T4.delete_flag = '0'
left join adm_location T5
on T1.purpose_location_store_id = T5.id
and T5.delete_flag = '0'
left join adm_charge_item_definition as T6
on T3.id = T6.instance_id
and T6.delete_flag = '0'
left join adm_charge_item_def_detail as T7
on T6.id = T7.definition_id
and T7.delete_flag = '0'
AND T7.condition_value = T1.lot_number
left join adm_organization T8
on T1.source_location_id = T8.id
and T8.delete_flag = '0'
where T1.delete_flag = '0'
and T1.type_enum = #{returnissue}
and T1.status_enum = #{supplyStatus}
and T1.item_table = #{deviceTableName}
) as T10
${ew.customSqlSegment}
ORDER BY T10.supply_bus_no DESC
</select>
</mapper>

View File

@@ -0,0 +1,90 @@
<?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.reportmanage.mapper.StocktakingReportMapper">
<select id="selectStocktakingReportPage"
resultType="com.openhis.web.reportmanage.dto.StocktakingReportPageDto">
SELECT T9.id, --ID
T9.bus_no, --编码
T9.name, --名称
T9.total_volume, --规格
T9.manufacturer_text, --厂家
-- T9.item_table, --类型
T9.lot_number, --产品批号
T9.location_name, --目的仓库
T9.unit_code, --小单位
T9.item_quantity, --数量
T9.approval_time, --审批时间
T9.tenant_id -- 租户ID
FROM (SELECT T1.id, --ID
T2.bus_no, --编码
T2.name, --名称
T3.total_volume, --规格
T2.manufacturer_text, --厂家
-- T2.category_code AS item_table, --类型
T4.lot_number, --产品批号
T5.name AS location_name, --目的仓库
T1.unit_code, --小单位
T1.item_quantity, --盈亏数量
T1.approval_time, --审批时间
T1.tenant_id -- 租户ID
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T8
ON T8.request_id = T1.id
AND T8.status_enum = #{deliveryStatus}
AND T8.delete_flag = '0'
LEFT JOIN med_medication_definition AS T2
ON T1.item_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 T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
WHERE T1.type_enum in (#{stocktakingReport}, #{stocktakingBatchReport})
AND T1.status_enum = #{supplyStatus}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id, --ID
T6.bus_no, --编码
T6.name, --名称
T6.size AS total_volume, --规格(器材规格)
T6.manufacturer_text, --厂家
-- T6.category_code AS item_table, --类型
T4.lot_number, --产品批号
T5.name AS location_name, --目的仓库
T1.unit_code, --小单位
T1.item_quantity, --盈亏数量
T1.approval_time, --审批时间
T1.tenant_id -- 租户ID
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T8
ON T8.request_id = T1.id
AND T8.status_enum = #{deliveryStatus}
AND T8.delete_flag = '0'
LEFT JOIN adm_device_definition AS T6
ON T1.item_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN wor_inventory_item AS T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
WHERE T1.type_enum in (#{stocktakingReport}, #{stocktakingBatchReport})
AND T1.status_enum = #{supplyStatus}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0') AS T9
${ew.customSqlSegment}
ORDER BY T9.bus_no DESC
</select>
</mapper>

View File

@@ -0,0 +1,128 @@
<?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.reportmanage.mapper.TransferReportMapper">
<select id="selectTransferReportPage"
resultType="com.openhis.web.reportmanage.dto.TransferReportPageDto">
SELECT T6.id,
T6.supply_bus_no, -- 商品调拨单据号
T6.name, -- 药品名称
T6.status_enum, -- 状态
T6.lot_number, -- 产品批号
T6.source_location_id, -- 源仓库ID
T6.source_location_name, -- 源仓库
T6.source_location_store_id, -- 源仓位ID
T6.source_location_store_name, -- 源仓位
T6.purpose_location_id, -- 目的仓库ID
T6.purpose_location_name, -- 目的仓库
T6.purpose_location_store_id, -- 目的货位ID
T6.purpose_location_store_name, -- 目的货位
T6.item_quantity, -- 调拨数量
T6.unit_code, -- 物品计量单位
T6.price, -- 采购单价
T6.total_price, -- 总价
T6.applicant_id, -- 申请人(制单人)
T6.approver_id, -- 审核人
T6.create_time, -- 制单日期
T6.apply_time, -- 申请日期
T6.approval_time, -- 审批时间(调拨日期)
T6.tenant_id -- 租户ID
FROM (SELECT T1.id,
T1.bus_no AS supply_bus_no, -- 商品调拨单据号
T3.name, -- 药品名称
T1.status_enum, -- 状态
T1.lot_number, -- 产品批号
T1.source_location_id, -- 源仓库ID
T4.name AS source_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T5.name AS source_location_store_name, -- 源仓位
T1.purpose_location_id, -- 目的仓库ID
T9.name AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, -- 目的货位ID
T10.name AS purpose_location_store_name, -- 目的货位
T1.item_quantity, -- 调拨数量
T1.unit_code, -- 物品计量单位
T1.price, -- 采购单价
T1.total_price, -- 总价
T1.applicant_id, -- 申请人(制单人)
T1.approver_id, -- 审核人
T1.create_time, -- 制单日期
T1.apply_time, -- 申请日期
T1.approval_time, -- 审批时间(调拨日期)
T1.tenant_id -- 租户ID
FROM wor_supply_request T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
AND T2.status_enum = #{deliveryStatus}
AND T2.delete_flag = '0'
LEFT JOIN med_medication_definition T3
ON T1.item_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_location T4
ON T1.source_location_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.source_location_store_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T9
ON T1.purpose_location_id = T9.id
AND T9.delete_flag = '0'
LEFT JOIN adm_location T10
ON T1.purpose_location_store_id = T10.id
AND T10.delete_flag = '0'
WHERE T1.type_enum in (#{transferReport}, #{transferBatchReport})
AND T1.status_enum = #{supplyStatus}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no AS supply_bus_no, -- 商品调拨单据号
T7.name, -- 器材名称
T1.status_enum, -- 状态
T1.lot_number, -- 产品批号
T1.source_location_id, -- 源仓库ID
T4.name AS source_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T5.name AS source_location_store_name, -- 源仓位
T1.purpose_location_id, -- 目的仓库ID
T9.name AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, -- 目的货位ID
T10.name AS purpose_location_store_name, -- 目的货位
T1.item_quantity, -- 调拨数量
T1.unit_code, -- 物品计量单位
T1.price, -- 采购单价
T1.total_price, -- 总价
T1.applicant_id, -- 申请人(制单人)
T1.approver_id, -- 审核人
T1.create_time, -- 制单日期
T1.apply_time, -- 申请日期
T1.approval_time, -- 审批时间(调拨日期)
T1.tenant_id -- 租户ID
FROM wor_supply_request T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
AND T2.status_enum = #{deliveryStatus}
AND T2.delete_flag = '0'
LEFT JOIN adm_device_definition T7
ON T1.item_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN adm_location T4
ON T1.source_location_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.source_location_store_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T9
ON T1.purpose_location_id = T9.id
AND T9.delete_flag = '0'
LEFT JOIN adm_location T10
ON T1.purpose_location_store_id = T10.id
AND T10.delete_flag = '0'
WHERE T1.type_enum in (#{transferReport}, #{transferBatchReport})
AND T1.status_enum = #{supplyStatus}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0') AS T6
${ew.customSqlSegment}
ORDER BY T6.supply_bus_no DESC
</select>
</mapper>