package com.kcim.service;

import com.kcim.vo.*;
import com.kcim.web.reponse.ComputeProfitCollectResponse;
import com.kcim.web.reponse.StandardDeptCostCollectResponse;

import java.util.List;

public interface StandardReportService {

    /**
     * 科室直接成本表（医疗成本）
     * @param computeDate
     */
    List<DeptDirectMedicalCostVO> getDeptDirectMedicalCost(String computeDate);
    /**
     * 科室直接成本表（全成本）
     * @param computeDate 核算年月
     * @return 报表数据
     */
    List<DeptFullDirectCostVO> getDeptFullDirectCost(String computeDate);

    /**
     * 获取临床服务类科室全成本（医疗成本）
     * @param computeDate 核算年月
     * @return 报表数据
     */
    List<ClinicalDeptMedicalCostVO> getClinicalDeptMedicalCost(String computeDate);

    /**
     * 获取临床服务类科室全成本（全成本）
     * @param computeDate 核算年月
     * @return 报表数据
     */
    List<ClinicalDeptFullCostVO> getClinicalDeptFullCost(String computeDate);

    /**
     * 获取医院临床服务类科室全成本构成分析表数据
     * @param computeDate 核算年月
     * @return 报表数据
     */
    ComputeProfitCollectResponse getClinicalDeptFullCostAnalysis(String computeDate);

    /**
     * 获取医院科室成本分摊汇总表数据
     * @param computeDate 核算年月
     * @return 报表数据
     */
    List<HospitalDeptCostAllocationVO> getHospitalDeptCostAllocation(String computeDate) ;

    /**
     * 获取医院诊次成本构成表数据
     * @param computeDate 核算年月
     * @return 报表数据
     */
    List<HospitalVisitCostCompositionVO> getHospitalVisitCostComposition(String computeDate);

    /**
     * 获取医院科室诊次成本表数据
     * @param computeDate 核算年月
     * @return 报表数据
     */
    List<HospitalVisitCostCompositionVO> getHospitalDeptVisitCost(String computeDate);
    /**
     * 获取医院床日成本构成表数据
     * @param computeDate 核算年月
     * @return 报表数据
     */
    List<HospitalVisitCostCompositionVO> getHospitalBedDayCostComposition(String computeDate);
    /**
     * 获取医院科室床日成本表数据
     * @param computeDate 核算年月
     * @return 报表数据
     */
    List<HospitalVisitCostCompositionVO> getHospitalDeptBedDayCost(String computeDate);

    /**
     * 获取医院服务项目成本表数据
     * @param computeDate
     * @return
     */
    List<HospitalServiceProjectCostVO> getHospitalServiceProjectCost(String computeDate);

    /**
     * 获取医院服务项目成本明细表数据
     * @param computeDate
     * @return
     */
    List<HospitalServiceProjectCostVO> getMedicalServiceCostDetail(String computeDate);

    /**
     * 获取病种成本明细表数据
     * @return
     */
    List<DiseaseCostDetailVO> getDiseaseCostDetail(String computeDate);

    /**
     * 分页获取病种成本明细表数据
     * @param current 当前页码
     * @param pageSize 每页大小
     * @param computeDate 核算年月
     * @param diseaseFilter 病种筛选条件（编码或名称）
     * @return 分页数据
     */
    Object getDiseaseCostDetailByPage(Integer current, Integer pageSize, String computeDate, String diseaseFilter);

    /**
     * 获取病种成本构成明细表数据
     * @param computeDate
     * @return
     */
    List<DiseaseCostDetailVO> getDiseaseCostCompositionDetail(String computeDate);

    /**
     * 分页获取病种成本构成明细表数据
     * @param current 当前页码
     * @param pageSize 每页大小
     * @param computeDate 核算年月
     * @param diseaseFilter 病种筛选条件（编码或名称）
     * @return 分页数据
     */
    Object getDiseaseCostCompositionDetailByPage(Integer current, Integer pageSize, String computeDate, String diseaseFilter);

    /**
     * 获取服务单元病种成本构成明细表数据
     * @param computeDate
     * @return
     */
    StandardDeptCostCollectResponse getDeptDiseaseCostCompositionDetail(String computeDate);
    
    /**
     * 分页获取服务单元病种成本构成明细表数据
     * @param current 当前页码
     * @param pageSize 每页大小
     * @param computeDate 核算年月
     * @param diseaseFilter 病种筛选条件（编码或名称）
     * @return 分页数据
     */
    Object getDeptDiseaseCostCompositionDetailByPage(Integer current, Integer pageSize, String computeDate, String diseaseFilter);

    /**
     * 获取DRG成本明细表数据
     * @param computeDate
     * @return
     */
    List<DiseaseCostDetailVO> getDrgCostDetail(String computeDate);

    /**
     * 获取DRG成本构成明细表数据
     * @param computeDate
     * @return
     */
    List<DiseaseCostDetailVO> getDrgCostCompositionDetail(String computeDate);

    /**
     * 获取服务单元DRG成本构成明细表数据
     * @param computeDate
     * @return
     */
    StandardDeptCostCollectResponse getDeptDrgCostCompositionDetail(String computeDate);
}