版本更新

This commit is contained in:
Zhang.WH
2025-10-16 17:17:24 +08:00
parent d23a594a4b
commit f515bb8fbb
600 changed files with 7881 additions and 35954 deletions

View File

@@ -0,0 +1,67 @@
<?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.DepartmentRevenueStatisticsMapper">
<!--门诊收入明细-->
<select id="selectPage"
resultType="com.openhis.web.reportmanage.dto.DepartmentRevenueStatisticsPageDto">
select A.medication_name,
A.bus_no,
A.yb_no,
A.total_volume,
A.unit_code,
A.dispense_quantity,
A.dispense_price,
A.category_code,
A.dispense_time,
A.tenant_id
from (
SELECT def."name" AS medication_name,
def.bus_no,
def.yb_no,
mm.total_volume,
mmd.unit_code,
SUM( mmd.dispense_quantity) AS dispense_quantity,
SUM( aci.total_price ) AS dispense_price,
def.category_code,
mmd.dispense_time,
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 med_medication_request mmrr
on mmr.id = mmrr.refund_medicine_id
AND mmrr.delete_flag = '0'
WHERE mmd.status_enum = #{disCompleted}
AND mmr.status_enum = #{reqCompleted}
AND mmr.refund_medicine_id IS NULL
AND mmrr.refund_medicine_id IS NULL
AND mmd.delete_flag = '0'
<if test="antibioticFlg == 1" >
AND def.antibiotic_flag = 1
</if>
<if test="antibioticFlg == 0" >
AND def.antibiotic_flag = 0
</if>
GROUP BY def."name",
def.bus_no,
def.yb_no,
mm.total_volume,
mmd.unit_code,
def.category_code,
mmd.dispense_time,
mmd.tenant_id
) AS A
${ew.customSqlSegment}
ORDER BY A.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.ReportStatisticsMapper">
<!--月报明细-->
<select id="getStaffStat"
resultType="com.openhis.web.reportmanage.dto.DailyReportStatisticsPageDto$StaffStatDTO">
SELECT COUNT(DISTINCT T1.id) AS total_medical_staff,--卫生技术人员总数
SUM(CASE WHEN EXISTS (
SELECT 1 FROM adm_practitioner_role T2
WHERE T2.practitioner_id = T1.id
AND T2.role_code = #{doctor}
AND T2.delete_flag = '0'
) THEN 1 ELSE 0 END) AS total_practicing_doctor,--执业(助理)医师总数
-- AS tcm_practicing_doctor,-- 中医执业(助理)医师数
SUM(CASE WHEN EXISTS (
SELECT 1 FROM adm_practitioner_role T2
WHERE T2.practitioner_id = T1.id
AND T2.role_code = #{nurse}
AND T2.delete_flag = '0'
) THEN 1 ELSE 0 END) AS registered_nurse--注册护士数
FROM adm_practitioner T1
WHERE T1.delete_flag = '0'
AND T1.name != '超级管理员'
</select>
<select id="getBedStat"
resultType="com.openhis.web.reportmanage.dto.DailyReportStatisticsPageDto$BedStatDTO">
SELECT COUNT(DISTINCT T1.id) AS actual_bedCount --实有床位(单位:张)
-- AS total_open_bed_days,--实际开放总床日数
-- AS total_occupied_bed_days,--实际占用总床日数
-- AS discharged_bed_days --出院者占用总床日数
FROM adm_location T1
WHERE T1.form_enum = #{bed}
AND T1.delete_flag = '0'
</select>
<select id="getRevenueStat"
resultType="com.openhis.web.reportmanage.dto.DailyReportStatisticsPageDto$RevenueStatDTO">
SELECT
-- AS total_revenue,--总收入
-- AS total_medical_revenue,--医疗收入合计
-- AS total_outpatient_revenue,--门急诊收入合计
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{registrationFee} THEN T1.total_price ELSE 0 END) AS outpatient_registration_revenue,--挂号收入
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{diagnosticFee} THEN T1.total_price ELSE 0 END) AS outpatient_consultation_revenue,--诊察收入(门急诊)
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{checkFee} THEN T1.total_price ELSE 0 END) AS outpatient_inspection_revenue,--检查收入(门急诊)
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{diagnosticTestFee} THEN T1.total_price ELSE 0 END) AS outpatient_lab_test_revenue,--化验收入(门急诊)
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{medicalExpenseFee} THEN T1.total_price ELSE 0 END) AS outpatient_treatment_revenue,--治疗收入(门急诊)
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{operationFee} THEN T1.total_price ELSE 0 END) AS outpatient_surgery_revenue,--手术收入(门急诊)
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{sanitaryMaterialsFee} THEN T1.total_price ELSE 0 END) AS outpatient_medical_material_revenue,--卫生材料收入(门急诊)
-- AS outpatient_total_drug_revenue,-- 药品收入合计
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{westMedicine} THEN T1.total_price ELSE 0 END) AS outpatient_total_western_drug_revenue,--西药收入合计
0 AS outpatient_vaccine_revenue,--疫苗收入(西药下)
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{chineseMedicineFee} THEN T1.total_price ELSE 0 END) AS outpatient_chinese_patent_drug_revenue,--中成药收入
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{chineseMedicineSlicesFee} THEN T1.total_price ELSE 0 END) AS outpatient_chinese_herb_revenue,--中药饮片收入
SUM(CASE WHEN T3.class_enum = #{amb} AND T2.yb_type = #{otherFee} THEN T1.total_price ELSE 0 END) AS other_outpatient_revenue,--其他门诊收入
-- AS total_inpatient_revenue,--住院收入合计
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{bedFee} THEN T1.total_price ELSE 0 END) AS inpatient_bed_revenue,--床位收入(住院)
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{diagnosticFee} THEN T1.total_price ELSE 0 END) AS inpatient_consultation_revenue,--诊察收入(住院)
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{checkFee} THEN T1.total_price ELSE 0 END) AS inpatient_inspection_revenue,--检查收入(住院)
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{diagnosticTestFee} THEN T1.total_price ELSE 0 END) AS inpatient_lab_test_revenue,--化验收入(住院)
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{medicalExpenseFee} THEN T1.total_price ELSE 0 END) AS inpatient_treatment_revenue,--治疗收入(住院)
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{operationFee} THEN T1.total_price ELSE 0 END) AS inpatient_surgery_revenue,--手术收入(住院)
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{nursingFee} THEN T1.total_price ELSE 0 END) AS inpatient_nursing_revenue,--护理收入(住院)
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{sanitaryMaterialsFee} THEN T1.total_price ELSE 0 END) AS inpatient_medical_material_revenue,--卫生材料收入(住院)
-- AS inpatient_total_drug_revenue,--药品收入合计
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{westMedicine} THEN T1.total_price ELSE 0 END) AS inpatient_total_western_drug_revenue,--西药收入合计
0 AS inpatient_vaccine_revenue,--疫苗收入(西药下)
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{chineseMedicineFee} THEN T1.total_price ELSE 0 END) AS inpatient_chinese_patent_drug_revenue,--中成药收入
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{chineseMedicineSlicesFee} THEN T1.total_price ELSE 0 END) AS inpatient_chinese_herb_revenue,--中药饮片收入
SUM(CASE WHEN T3.class_enum = #{imp} AND T2.yb_type = #{otherFee} THEN T1.total_price ELSE 0 END) AS other_inpatient_revenue,--其他住院收入
0 AS settlement_difference--结算差额
FROM adm_charge_item T1
LEFT JOIN adm_charge_item_definition T2
ON T1.definition_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_encounter T3
ON T1.encounter_id = T3.id
AND T3.delete_flag = '0'
WHERE T1.status_enum = #{billed}
AND TO_CHAR(T1.update_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.delete_flag = '0'
</select>
<select id="getTreatmentStat"
resultType="com.openhis.web.reportmanage.dto.DailyReportStatisticsPageDto$TreatmentStatDTO">
SELECT -- AS total_treatment_count,--总诊疗人次数
COUNT(DISTINCT T1.id) AS total_outpatient_emergency_count--门诊和急诊人次数合计
-- AS reserved_outpatient_count,--预约门诊人次数
-- AS online_reserved_outpatient_count,--网上预约门诊人次数
-- AS general_outpatient_count,--普通门诊人次数
-- AS tcm_treatment_count,--中医诊疗人次数
-- AS emergency_count,--急诊人次数
-- AS fever_clinic_count,--发热门诊人次数
-- AS internet_treatment_count,--互联网诊疗服务人次数
-- AS telemedicine_count,--远程医疗服务人次数
-- AS discharged_count--出院人次数
FROM adm_encounter T1
WHERE T1.class_enum = #{amb}
AND TO_CHAR(T1.reception_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.delete_flag = '0'
</select>
</mapper>