/*
 * Copyright ©2023 CJB-CNIT Team. All rights reserved
 */
package com.openhis.web.reportmanage.mapper;

import com.openhis.web.reportmanage.dto.DailyReportStatisticsPageDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 报表统计 mapper
 *
 * @author yuxj
 * @date 2025-09-23
 */
@Repository
public interface ReportStatisticsMapper {

    /**
     * 卫生技术人员统计
     *
     * @param doctor 医生
     * @param nurse 护士
     * @return
     */
    DailyReportStatisticsPageDto.StaffStatDTO getStaffStat(@Param("doctor") String doctor,
        @Param("nurse") String nurse);

    /**
     * 床位与床日统计
     *
     * @param bed 病床
     * @return
     */
    DailyReportStatisticsPageDto.BedStatDTO getBedStat(@Param("bed") Integer bed);

    /**
     * 收入统计
     *
     * @param billed 已收费
     * @param imp 住院
     * @param amb 门诊
     * @param registrationFee 挂号费
     * @param diagnosticFee 诊察费
     * @param checkFee 检查费
     * @param diagnosticTestFee 化验费
     * @param medicalExpenseFee 治疗费
     * @param operationFee 手术费
     * @param sanitaryMaterialsFee 卫生材料费
     * @param westMedicine 西药费
     * @param chineseMedicineFee 中成药费
     * @param chineseMedicineSlicesFee 中药饮片费
     * @param otherFee 其他门诊 费
     * @param bedFee 床位费
     * @param nursingFee 护理费
     * @param startTime 开始日期
     * @param endTime 结束日期
     * @return
     */
    DailyReportStatisticsPageDto.RevenueStatDTO getRevenueStat(@Param("billed") Integer billed,
        @Param("imp") Integer imp, @Param("amb") Integer amb, @Param("registrationFee") String registrationFee,
        @Param("diagnosticFee") String diagnosticFee, @Param("checkFee") String checkFee,
        @Param("diagnosticTestFee") String diagnosticTestFee, @Param("medicalExpenseFee") String medicalExpenseFee,
        @Param("operationFee") String operationFee, @Param("sanitaryMaterialsFee") String sanitaryMaterialsFee,
        @Param("westMedicine") String westMedicine, @Param("chineseMedicineFee") String chineseMedicineFee,
        @Param("chineseMedicineSlicesFee") String chineseMedicineSlicesFee, @Param("otherFee") String otherFee,
        @Param("bedFee") String bedFee, @Param("nursingFee") String nursingFee, @Param("startTime") String startTime,
        @Param("endTime") String endTime);

    /**
     * 诊疗与服务量统计
     *
     * @param amb 门诊
     * @return
     */
    DailyReportStatisticsPageDto.TreatmentStatDTO getTreatmentStat(@Param("amb") Integer amb,
        @Param("startTime") String startTime, @Param("endTime") String endTime);
}
