package com.diagbot.web;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.diagbot.annotation.SysLogger;
import com.diagbot.dto.*;
import com.diagbot.facade.ConsoleByDeptFacade;
import com.diagbot.facade.ConsoleFacade;
import com.diagbot.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * @author zhaops
 * @Description:
 * @date 2020/5/9 13:20
 **/
@RequestMapping("/consoleByDept")
@RestController
@Api(value = "控制台（科室）统计相关API", tags = { "控制台（科室）统计相关API" })
@SuppressWarnings("unchecked")
public class ConsoleByDeptController {
    @Autowired
    private ConsoleByDeptFacade consoleByDeptFacade;
    @Autowired
    private ConsoleFacade consoleFacade;

    //region --------------------------首页接口开始------------------------------
    @ApiOperation(value = "出院病人统计（科室）-首页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/leaveHosCountByDept")
    @SysLogger("leaveHosCountByDept")
    public RespDTO<Map<String, Object>> leaveHosCountByDept(@RequestBody @Valid FilterVO filterVO) {
        Map<String, Object> data = consoleByDeptFacade.leaveHosCountByDept(filterVO);
        return RespDTO.onSuc(data);
    }
        @ApiOperation(value = "入院病人统计（科室）-首页[by:zhaops]",
                notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                        "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
        @PostMapping("/beHosCountByDept")
        @SysLogger("beHosCountByDept")
        public RespDTO<Map<String, List<AdmissionCountDTO>>> beHosCountByDept(@RequestBody @Valid FilterVO filterVO) {
            Map<String, List<AdmissionCountDTO>> data = consoleByDeptFacade.admissionHosCountByDept(filterVO);
            return RespDTO.onSuc(data);
    }

    @ApiOperation(value = "病历数统计（科室）-首页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/mrCountByDept")
    @SysLogger("mrCountByDept")
    public RespDTO<Map<String, Object>> mrCountByDept(@RequestBody @Valid FilterVO filterVO) {
        Map<String, Object> data = consoleByDeptFacade.mrCountByDept(filterVO);
        return RespDTO.onSuc(data);
    }

    @ApiOperation(value = "各模块缺陷占比排名（科室）-首页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/entryCountGroupByCaseAndDept")
    @SysLogger("entryCountGroupByCaseAndDept")
    public RespDTO<Map<String, Object>> entryCountGroupByCaseAndDept(@RequestBody @Valid FilterVO filterVO) {
        Map<String, Object> data = consoleByDeptFacade.entryCountGroupByCaseAndDept(filterVO);
        return RespDTO.onSuc(data);
    }

    @ApiOperation(value = "条目缺陷占比（科室）-首页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/entryCountGroupByEntryAndDept")
    @SysLogger("entryCountGroupByEntryAndDept")
    public RespDTO<Map<String, Object>> entryCountGroupByEntryAndDept(@RequestBody @Valid FilterVO filterVO) {
        Map<String, Object> data = consoleByDeptFacade.entryCountGroupByEntryAndDept(filterVO);
        return RespDTO.onSuc(data);
    }

    /**
     * 病案首页合格率占比（首页）
     *
     * @param filterOrderByDeptVO
     * @return
     */
    @ApiOperation(value = "病案首页合格率占比-首页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "level： 病历等级 <br>" +
                    "name： 主治医生名称 <br>" +
                    "deptName： 科室名称 <br>" +
                    "asc： 排序（升序） <br>" +
                    "desc： 排序（降序） <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/homePageLevelByDeptLimit")
    @SysLogger("homePageLevelByDeptLimit")
    public RespDTO<List<HomePageByDeptDTO>> homePageLevelByDeptLimit(@RequestBody @Valid FilterOrderByDeptVO filterOrderByDeptVO) {
        return RespDTO.onSuc(consoleByDeptFacade.homePageLevelByDeptLimit(filterOrderByDeptVO));
    }

    /**
     * 单条条目缺陷统计（首页）
     *
     * @param filterVO
     * @return
     */
    @ApiOperation(value = "单条条目缺陷统计（科室）（首页）[by:cy]",
            notes = "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/casesEntryStatisticsByDept")
    @SysLogger("casesEntryStatisticsByDept")
    public RespDTO<List<NumDTO>> casesEntryStatisticsByDept(@RequestBody @Valid FilterVO filterVO) {
        return RespDTO.onSuc(consoleByDeptFacade.casesEntryStatisticsByDept(filterVO));
    }

    //endregion -----------------------首页接口结束------------------------------

    @ApiOperation(value = "用户关联科室[by:zhaops]",
            notes = "")
    @PostMapping("/getDept")
    @SysLogger("getDept")
    public RespDTO<List<DeptBaseDTO>> getDept() {
        List<DeptBaseDTO> data = consoleByDeptFacade.getDept();
        return RespDTO.onSuc(data);
    }

    //region --------------------------内页接口开始------------------------------
    @ApiOperation(value = "各模块缺陷占比排名-科室（分页）-内页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "name： 模块名称<br>" +
                    "deptName： 科室名称(必填)<br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/entryCountGroupByCaseAndDeptPage")
    @SysLogger("entryCountGroupByCaseAndDeptPage")
    public RespDTO<IPage<NumDTO>> entryCountGroupByCaseAndDeptPage(@RequestBody @Valid FilterPageByDeptVO filterPageByDeptVO) {
        IPage<NumDTO> data = consoleByDeptFacade.entryCountGroupByCaseAndDeptPage(filterPageByDeptVO);
        return RespDTO.onSuc(data);
    }

    @ApiOperation(value = "缺陷详情-科室（分页）-内页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "name： 缺陷名称<br>" +
                    "deptName： 科室名称(必填)<br>" +
                    "casesId： 模块id：243=病案首页 <br>" +
                    "casesName： 模块名称<br>" +
                    "isReject： 单项否决 1-否决，0-非<br>" +
                    "ruleType： 规则类型 0：无，1：空项，2：错误<br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/entryCountGroupByEntryAndDeptPage")
    @SysLogger("entryCountGroupByEntryAndDeptPage")
    public RespDTO<IPage<EntryNumGroupDTO>> entryCountGroupByEntryAndDeptPage(@RequestBody @Valid FilterPageByDeptVO filterPageByDeptVO) {
        IPage<EntryNumGroupDTO> data = consoleByDeptFacade.entryCountGroupByEntryAndDeptPage(filterPageByDeptVO);
        return RespDTO.onSuc(data);
    }

    @ApiOperation(value = "缺陷明细-科室（分页）-内页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "name： 缺陷名称<br>" +
                    "deptName： 科室名称(必填)<br>" +
                    "doctorName： 医生名称(必填)<br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/resultStatisticsByDeptAndDoctorPage")
    @SysLogger("resultStatisticsByDeptAndDoctorPage")
    @ApiIgnore
    public RespDTO<IPage<DeptNumDTO>> resultStatisticsByDeptAndDoctorPage(@RequestBody @Valid FilterPageByDeptVO filterPageByDeptVO) {
        IPage<DeptNumDTO> data = consoleByDeptFacade.resultStatisticsByDeptAndDoctorPage(filterPageByDeptVO);
        return RespDTO.onSuc(data);
    }

    /**
     * 条目缺陷占比-内页
     *
     * @param filterPageByDeptVO
     * @return
     */
    @ApiOperation(value = "条目缺陷占比-内页（分页）-内页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "name： 缺陷名称<br>" +
                    "deptName： 科室名称(必填)<br>" +
                    "isReject： 单项否决 1-否决，0-非<br>" +
                    "casesName： 模块名称<br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/entryGroupByEntryAndDeptInnerPage")
    @SysLogger("entryGroupByEntryAndDeptInnerPage")
    public RespDTO<IPage<DeptEntryNumDTO>> entryGroupByEntryAndDeptInnerPage(@RequestBody @Valid FilterPageByDeptVO filterPageByDeptVO) {
        IPage<DeptEntryNumDTO> data = consoleByDeptFacade.entryGroupByEntryAndDeptInnerPage(filterPageByDeptVO);
        return RespDTO.onSuc(data);
    }

    /**
     * 各科室缺陷占比（组合）
     *
     * @param filterOrderVO
     * @return
     */
    @ApiOperation(value = "各科室缺陷占比（组合）-内页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "level： 病历等级 <br>" +
                    "name： 主治医生名称 <br>" +
                    "deptName： 科室名称 <br>" +
                    "asc： 排序（升序） <br>" +
                    "desc： 排序（降序） <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/levelStatisticsByDept")
    @SysLogger("levelStatisticsByDept")
    public RespDTO<List<LevelStsByDeptDTO>> levelStatisticsByDept(@RequestBody @Valid FilterOrderVO filterOrderVO) {
        return RespDTO.onSuc(consoleByDeptFacade.levelStatisticsByDept(filterOrderVO));
    }

    /**
     * 病案首页合格率占比
     *
     * @param filterOrderByDeptVO
     * @return
     */
    @ApiOperation(value = "病案首页合格率占比（科室）-内页[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "level： 病历等级 <br>" +
                    "name： 主治医生名称 <br>" +
                    "deptName： 科室名称 <br>" +
                    "asc： 排序（升序） <br>" +
                    "desc： 排序（降序） <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/homePageLevelStatisticsByDept")
    @SysLogger("homePageLevelStatisticsByDept")
    public RespDTO<List<HomePageByDeptDTO>> homePageLevelStatisticsByDept(@RequestBody @Valid FilterOrderByDeptVO filterOrderByDeptVO) {
        return RespDTO.onSuc(consoleByDeptFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO));
    }

    /**
     * 医师病案首页合格率占比科室 湘雅定制
     *
     * @param filterOrderXYPageVO
     * @return
     */
    @ApiOperation(value = "病案首页合格率占比[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "level： 病历等级 <br>" +
                    "deptName： 科室名称 <br>" +
                    "asc： 排序（升序） <br>" +
                    "desc： 排序（降序） <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/homePageLevelStatisticsXYByDept")
    @SysLogger("homePageLevelStatisticsXYByDept")
    public RespDTO<IPage<HomePageNumXYDTO>> homePageLevelStatisticsXY(@RequestBody @Valid FilterOrderXYPageVO filterOrderXYPageVO) {
        return RespDTO.onSuc(consoleFacade.homePageLevelStatisticsXY(filterOrderXYPageVO));
    }

    /**
     * 条目缺陷占比科室（分页）-湘雅
     *
     * @param filterPageXYVO
     * @return
     */
    @ApiOperation(value = "缺陷详情（分页）[by:zhaops]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "deptName： 科室名称 <br>" +
                    "casesId： 模块id：243=病案首页 <br>" +
                    "casesName： 模块名称 <br>" +
                    "isReject： 单项否决 1-否决，0-非<br>" +
                    "ruleType： 规则类型 0：无，1：空项，2：错误<br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/entryCountGroupXYByEntryPageDept")
    @SysLogger("entryCountGroupXYByEntryPageDept")
    public RespDTO<IPage<EntryNumGroupDTO>> entryCountGroupXYByEntryPageDept(@RequestBody @Valid FilterPageXYVO filterPageXYVO) {
        return RespDTO.onSuc(consoleFacade.entryCountGroupXYByEntryPage(filterPageXYVO));
    }

    /**
     * 条目缺陷质控评科室分页（内页）-湘雅
     *
     * @param qcResultShortXYPageVO
     * @return
     */
    @ApiOperation(value = "条目缺陷质控评分页（内页）[by:zhaops]")
    @PostMapping("/qcResultShortXYPageByDept")
    @SysLogger("qcResultShortXYPageByDept")
    public RespDTO<IPage<QcResultShortDTO>> qcResultShortXYPageByDept(@RequestBody @Valid QcResultShortXYPageVO qcResultShortXYPageVO) {
        return RespDTO.onSuc(consoleFacade.qcResultShortXYPage(qcResultShortXYPageVO));
    }

    /**
     * 病案首页不合格数病历科室详情(内页)-湘雅
     * @param qcResultPageVO
     * @return
     */
    @ApiOperation(value = "病案首页不合格/合格数病历详情(内页)[by:cy]")
    @PostMapping("/badLevelXYPageByDept")
    @SysLogger("badLevelXYPageByDept")
    public RespDTO<IPage<QcResultShortDTO>> badLevelXYPageByDept(@RequestBody @Valid QcResultPageXYVO qcResultPageVO) {
        return RespDTO.onSuc(consoleFacade.badLevelXYPage(qcResultPageVO));
    }


    /**
     * 病案首页合格/不合格数
     *
     * @param qcResultPageVO
     * @return
     */
    @ApiOperation(value = "病案首页合格/不合格数（科室）-内页[by:cy]",
            notes = "behospitalCode： 病历号<br>" +
                    "patName： 病人姓名 <br>" +
                    "casesEntryName： 条目名称 <br>" +
                    "titleName： 标题名称 <br>" +
                    "casesEntryId： 条目id <br>" +
                    "deptName：科室名称 <br>" +
                    "doctorId：医生工号 <br>" +
                    "doctorName：医生姓名 <br>" +
                    "level： 病历等级 <br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/homePageOrGoodLevelByDept")
    @SysLogger("homePageOrGoodLevelByDept")
    public RespDTO<IPage<QcResultShortDTO>> homePageOrGoodLevelByDept(@RequestBody @Valid QcResultPageVO qcResultPageVO) {
        return RespDTO.onSuc(consoleByDeptFacade.homePageOrGoodLevelByDept(qcResultPageVO));
    }


    /**
     * 条目缺陷质控评分页-科室（内页）
     *
     * @param qcResultShortPageVO
     * @return
     */
    @ApiOperation(value = "条目缺陷质控评分页-科室（内页）[by:zhaops]",
            notes = "behospitalCode： 病历号)<br>" +
                    "patName： 病人姓名 <br>" +
                    "casesEntryName： 条目名称 <br>" +
                    "casesEntryId： 条目id <br>" +
                    "deptName：科室名称 <br>" +
                    "doctorName：主治医生名称 <br>" +
                    "level： 病历等级 <br>" +
                    "diagnose： 主诊断 <br>" +
                    "isReject： 单项否决 1-否决，0-非<br>" +
                    "ruleType： 规则类型 0：无，1：空项，2：错误<br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/qcResultShortByDeptPage")
    @SysLogger("qcResultShortByDeptPage")
    public RespDTO<IPage<QcResultShortDTO>> qcResultShortByDeptPage(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
        return RespDTO.onSuc(consoleByDeptFacade.qcResultShortByDeptPage(qcResultShortPageVO));
    }

    /**
     * 关键条目缺陷占比统计-科室
     *
     * @param entryStatisticsVO
     * @return
     */
    @ApiOperation(value = "关键条目缺陷占比统计-科室[by:cy]",
            notes = "deptName：科室名称 <br>" +
                    "asc： 排序（升序） <br>" +
                    "desc：排序（降序） <br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/entryStatisticsByDept")
    @SysLogger("entryStatisticsByDept")
    public RespDTO<List<EntryStasByDeptDTO>> entryStatisticsByDept(@RequestBody @Valid EntryStatisticsVO entryStatisticsVO) {
        return RespDTO.onSuc(consoleByDeptFacade.entryStatisticsByDept(entryStatisticsVO));
    }

    /**
     * 出院人数统计-科室
     *
     * @param qcResultShortPageVO
     * @return
     */
    @ApiOperation(value = "出院人数统计-科室[by:cy]",
            notes = "behospitalCode： 病历号<br>" +
                    "patName： 病人姓名 <br>" +
                    "deptName：科室名称 <br>" +
                    "doctorId：医生工号 <br>" +
                    "doctorName：医生姓名 <br>" +
                    "level： 病历等级 <br>" +
                    "checkStatus： 核查状态（1：已核查，0：未核查） <br>" +
                    "mrStatus： 首页核查状态（1：已核查，0：未核查） <br>" +
                    "chName： 病历核查人员 <br>" +
                    "mrName： 首页核查人员 <br>" +
                    "chTimeStart： 病历核查起始时间 <br>" +
                    "chTimeEnd： 病历核查截止时间 <br>" +
                    "mrTimeStart： 首页核查起始时间 <br>" +
                    "mrTimeEnd： 首页核查截止时间 <br>" +
                    "leaveHosType： 离院人员类型（0/null：总人数，1：死亡人数，2：新生儿，3：手术病人数，4：非医嘱离院病人，5:31日再入院病人） <br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/leaveHosMRPageByDept")
    @SysLogger("leaveHosMRPageByDept")
    public RespDTO<IPage<QcResultShortDTO>> leaveHosMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
        return RespDTO.onSuc(consoleByDeptFacade.leaveHosMRPageByDept(qcResultShortPageVO));
    }

    /**
     * 质控核查统计-科室
     *
     * @param filterOrderVO
     * @return
     */
    @ApiOperation(value = "质控核查统计-科室[by:cy]",
            notes = "name： 科室名称 <br>" +
                    "asc： 排序（升序） <br>" +
                    "desc：排序（降序） <br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/qcCheckStatisticsByDept")
    @SysLogger("qcCheckStatisticsByDept")
    public RespDTO<List<ImproveByDeptDTO>> qcCheckStatisticsByDept(@RequestBody @Valid FilterOrderVO filterOrderVO) {
        return RespDTO.onSuc(consoleByDeptFacade.qcCheckStatisticsByDept(filterOrderVO));
    }

    /**
     * 质控核查质控评分页-科室（内页）
     *
     * @param qcResultShortPageVO
     * @return
     */
    @ApiOperation(value = "质控核查质控评分页-科室（内页）[by:cy]",
            notes = "behospitalCode： 病历号<br>" +
                    "patName： 病人姓名 <br>" +
                    "deptName：科室名称 <br>" +
                    "doctorId：医生工号 <br>" +
                    "doctorName：医生姓名 <br>" +
                    "level： 病历等级 <br>" +
                    "checkStatus： 核查状态（1：已核查，0：未核查） <br>" +
                    "mrStatus： 首页核查状态（1：已核查，0：未核查） <br>" +
                    "chName： 病历核查人员 <br>" +
                    "mrName： 首页核查人员 <br>" +
                    "chTimeStart： 病历核查起始时间 <br>" +
                    "chTimeEnd： 病历核查截止时间 <br>" +
                    "mrTimeStart： 首页核查起始时间 <br>" +
                    "mrTimeEnd： 首页核查截止时间 <br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/qcCheckMRPageByDept")
    @SysLogger("qcCheckMRPageByDept")
    public RespDTO<IPage<QcResultShortDTO>> qcCheckMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
        return RespDTO.onSuc(consoleByDeptFacade.qcCheckMRPageByDept(qcResultShortPageVO));
    }

    /**
     * 病案首页改善率质控评分页-科室（内页）
     *
     * @param qcResultShortPageVO
     * @return
     */
    @ApiOperation(value = "病案首页改善率质控评分页（内页）[by:cy]",
            notes = "behospitalCode： 病历号<br>" +
                    "patName： 病人姓名 <br>" +
                    "deptName：科室名称 <br>" +
                    "doctorId：医生工号 <br>" +
                    "doctorName：医生姓名 <br>" +
                    "level： 病历等级 <br>" +
                    "improveType： 改善标志（1：病案首页改善病历，2：病案首页改善至合格病历，3：病案首页改善至满分病历） <br>" +
                    "checkStatus： 核查状态（1：已核查，0：未核查） <br>" +
                    "mrStatus： 首页核查状态（1：已核查，0：未核查） <br>" +
                    "chName： 病历核查人员 <br>" +
                    "mrName： 首页核查人员 <br>" +
                    "chTimeStart： 病历核查起始时间 <br>" +
                    "chTimeEnd： 病历核查截止时间 <br>" +
                    "mrTimeStart： 首页核查起始时间 <br>" +
                    "mrTimeEnd： 首页核查截止时间 <br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/hmImproveMRPageByDept")
    @SysLogger("hmImproveMRPageByDept")
    public RespDTO<IPage<QcResultShortDTO>> hmImproveMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
        return RespDTO.onSuc(consoleByDeptFacade.hmImproveMRPageByDept(qcResultShortPageVO));
    }

    /**
     * 31天再入院人数-科室（内页）
     *
     * @param reBeHosPageVO
     * @return
     */
    @ApiOperation(value = "31天再入院人数-科室（内页）[by:cy]",
            notes = "name： 病人名称 <br>" +
                    "fileCode： 病案号 <br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/reHos31DaysPageByDept")
    @SysLogger("reHos31DaysPageByDept")
    public RespDTO<IPage<ReBeHosDTO>> reHos31DaysPageByDept(@RequestBody @Valid ReBeHosPageVO reBeHosPageVO) {
        return RespDTO.onSuc(consoleByDeptFacade.reHos31DaysPageByDept(reBeHosPageVO));
    }

    /**
     * 未整改病历统计-科室
     *
     * @param filterUnModifyMRVO
     * @return
     */
    @ApiOperation(value = "未整改病历统计[by:cy]",
            notes = "deptName： 科室名称 <br>" +
                    "asc： 排序（升序） <br>" +
                    "desc：排序（降序） <br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/unModifyMRSByDept")
    @SysLogger("unModifyMRSByDept")
    public RespDTO<UnModifyMRDTO> unModifyMRSByDept(@RequestBody @Valid FilterUnModifyMRVO filterUnModifyMRVO) {
        return RespDTO.onSuc(consoleByDeptFacade.unModifyMRSByDept(filterUnModifyMRVO));
    }
    /**
     * 未整改病历质控评分页-科室（内页）
     *
     * @param qcResultShortPageVO
     * @return
     */
    @ApiOperation(value = "未整改病历质控评分页（内页）[by:cy]",
            notes = "behospitalCode： 病历号<br>" +
                    "patName： 病人姓名 <br>" +
                    "casesEntryName： 条目名称 <br>" +
                    "casesEntryId： 条目id <br>" +
                    "deptName：科室名称 <br>" +
                    "doctorId：医生工号 <br>" +
                    "doctorName：医生姓名 <br>" +
                    "level： 病历等级 <br>" +
                    "checkStatus： 核查状态（1：已核查，0：未核查） <br>" +
                    "mrStatus： 首页核查状态（1：已核查，0：未核查） <br>" +
                    "chName： 病历核查人员 <br>" +
                    "mrName： 首页核查人员 <br>" +
                    "chTimeStart： 病历核查起始时间 <br>" +
                    "chTimeEnd： 病历核查截止时间 <br>" +
                    "mrTimeStart： 首页核查起始时间 <br>" +
                    "mrTimeEnd： 首页核查截止时间 <br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/unModifyMRPageByDept")
    @SysLogger("unModifyMRPageByDept")
    public RespDTO<IPage<QcResultShortDTO>> unModifyMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
        return RespDTO.onSuc(consoleByDeptFacade.unModifyMRByDept(qcResultShortPageVO));
    }

    /**
     * 病历稽查表（title）-科室
     * @param
     * @return
     */
    @ApiOperation(value = "病历稽查获取title-科室[by:cy]")
    @PostMapping("/medicalCheckTitleKs")
    @SysLogger("medicalCheckTitleKs")
    public RespDTO<List<ColumnDTO>> medicalCheckTitleKs() {
        return RespDTO.onSuc(consoleByDeptFacade.medicalCheckTitleKs());
    }

    /**
     * 病历稽查表-科室
     * @param filterVO
     * @return
     */
    @ApiOperation(value = "病历稽查统计-科室[by:cy]",
            notes = "name： 科室名称 <br>" +
                    "asc： 排序（升序） <br>" +
                    "desc：排序（降序） <br>" +
                    "startDate： 起始时间 <br>" +
                    "endDate： 截止时间 <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/medicalCheckFormKs")
    @SysLogger("medicalCheckFormKs")
    public RespDTO<IPage<MedicalCheckDTO> > getMedicalChecks(@RequestBody @Valid FilterMedicalCheckVO filterVO) {
        return RespDTO.onSuc(consoleByDeptFacade.getMedicalChecks(filterVO));
    }

    /**
     * 病历质控报表-科室
     *
     * @param behospitalPageVO
     * @return
     */
    @ApiOperation(value = "病历质控报表-科室[by:cy]",
            notes = "type： 统计维度 1-本月，2-本年(必填)<br>" +
                    "level： 病历等级 <br>" +
                    "name： 科室名称 <br>" +
                    "asc： 排序（升序） <br>" +
                    "desc： 排序（降序） <br>" +
                    "isPlacefile： 是否归档（0：未归档，1：已归档） <br>")
    @PostMapping("/qualityControlByDept")
    @SysLogger("qualityControlByDept")
    public RespDTO<IPage<QualityControlDeptDTO>> qualityControlByDept(@RequestBody BehospitalPageVO behospitalPageVO) {
        return RespDTO.onSuc(consoleByDeptFacade.qualityControlByDept(behospitalPageVO));
    }


    //endregion -----------------------内页接口结束------------------------------
}
