Quellcode durchsuchen

删除无用代码

zhanghang vor 4 Jahren
Ursprung
Commit
2e2870465e

+ 10 - 0
doc/031.20210326v2.0.3/qc_initv1.0.1.sql

@@ -0,0 +1,10 @@
+use `qc`;
+/**
+注意:
+1、中间表的新增或修改需要按照实际的唯一字段来进行操作
+例如:新增sys_role_menu中数据需要sys_menu中指定的id、menu_id,否则可能会失效!!!
+2、按照顺序执行
+ */
+-- 字典表中病案首页添加一个字段
+
+INSERT INTO `qc`.`sys_dictionary_info` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '2', 'gmtCreate', '创建时间', '2', '0', '病案首页');

+ 0 - 1
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -96,7 +96,6 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/console/homePageLevelLimit").permitAll()
                 .antMatchers("/console/homePageLevelStatistics").permitAll()
                 .antMatchers("/console/leaveHosCount").permitAll()
-                .antMatchers("/console/hospitalMonthly").permitAll()
                 .antMatchers("/console/medicalRecordIndicator").permitAll()
                 .antMatchers("/console/codingMonthly").permitAll()
                 .antMatchers("/console/levelPercentGroupByDeptPage").permitAll()

+ 0 - 1
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -145,7 +145,6 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/console/levelStatisticsByDeptClass", request)
                 || matchers("/console/mrCount", request)
                 || matchers("/console/mrStatistics", request)
-                || matchers("/console/hospitalMonthly", request)
                 || matchers("/console/medicalRecordIndicator", request)
                 || matchers("/console/codingMonthly", request)
                 || matchers("/console/qcResultShortPage", request)

+ 129 - 1
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -48,6 +48,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -1403,7 +1404,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         Map<String, Object> content = new HashMap<>();
         try {
             Map<String, Object> objectMap = MapUtil.objectToMap(homePage);
-            List<String> firstPageDate = Arrays.asList("birthday", "behospitalDate", "leaveHospitalDate", "qcDate");
+            List<String> firstPageDate = Arrays.asList("birthday", "behospitalDate", "leaveHospitalDate", "qcDate","gmtCreate");
             for (String objKey : objectMap.keySet()) {
                 if (map.containsKey(objKey)) {
                     if (firstPageDate.contains(objKey)) {
@@ -2243,4 +2244,131 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return ret;
     }
 
+    /**
+     * 入院记录,手术记录,出院记录24小时完成率
+     * @param filterRecordVO
+     * @return
+     */
+    public MedQualityControlDTO medicalRecordIndicator(FilterRecordVO filterRecordVO) {
+        String startDate = filterRecordVO.getStartDate();
+        String endDate = filterRecordVO.getEndDate();
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime sta = LocalDateTime.parse(startDate, df);
+        LocalDateTime end = LocalDateTime.parse(endDate, df);
+        MedQualityControlDTO medQualityControlDTO = new MedQualityControlDTO();
+        //时间段手术出院患者数量为
+        Map<String,Integer> number = selectOperationNum(sta,end);
+        Integer operationFeeNum = number.get("operationFee");
+        // type==1  时间为出院
+        filterRecordVO.setType(1);
+        List<Map<String, Object>> medicalRecordIndicatorStaList = baseMapper.medicalRecordIndicator(filterRecordVO, sta, end);
+        //时间段出院人数为
+        Object countNumSta = medicalRecordIndicatorStaList.get(0).get("countNum");
+        int totleCountSta = Integer.parseInt(countNumSta.toString());
+
+        //type=2   时间为住院对比
+        filterRecordVO.setType(2);
+        List<Map<String, Object>> medicalRecordIndicatorOutList = baseMapper.medicalRecordIndicator(filterRecordVO, sta, end);
+        //同期住院人数
+        Object countNumOut = medicalRecordIndicatorOutList.get(0).get("countNum");
+        int totleCountOut = Integer.parseInt(countNumOut.toString());
+        //type=3   住院时间缺陷情况
+        filterRecordVO.setType(3);
+        List<Map<String, Object>> blemishList = baseMapper.medicalRecordIndicator(filterRecordVO, sta, end);
+        if (ListUtil.isNotEmpty(blemishList)) {
+            for (Map<String, Object> blemishMap : blemishList) {
+                //入院记录未在术后24h内完成
+                if (("2658").equals(blemishMap.get("cases_entry_id"))) {
+                    //未完成个数
+                    Object obj = blemishMap.get("2658入院记录未在术后24h内完成");
+                    double i = Double.parseDouble(obj.toString());
+                    //完成率为
+                    if (totleCountOut != 0) {
+                        double admissionDou = (totleCountOut - i) / totleCountOut;
+                        String admissionStr = Double.toString(admissionDou);
+                        medQualityControlDTO.setAdmissionStr(admissionStr);
+                        //完成个数
+                        medQualityControlDTO.setAdmissionNum((totleCountOut - i));
+                    }
+                }
+                //手术记录未在术后24h内完成
+                if (("2170").equals(blemishMap.get("cases_entry_id"))) {
+                    //未完成个数
+                    Object obj = blemishMap.get("2170手术记录未在术后24h内完成");
+                    double i = Double.parseDouble(obj.toString());
+                    //完成率为
+                    if (totleCountOut != 0) {
+                        double admissionDou = (operationFeeNum - i) / operationFeeNum;
+                        String admissionStr = Double.toString(admissionDou);
+                        medQualityControlDTO.setOperationStr(admissionStr);
+                        //完成个数
+                        medQualityControlDTO.setOperationNum((operationFeeNum - i));
+                    }
+                }
+
+
+            }
+        }
+        if (medQualityControlDTO.getAdmissionStr() == null) {
+            medQualityControlDTO.setAdmissionStr("1");
+            //完成个数
+            medQualityControlDTO.setAdmissionNum((Double.valueOf(totleCountOut)));
+        }
+        if (medQualityControlDTO.getOperationStr() == null) {
+            medQualityControlDTO.setOperationStr("1");
+            //完成个数
+            medQualityControlDTO.setOperationNum((Double.valueOf(totleCountOut)));
+        }
+        //type=4   出院时间缺陷情况
+        filterRecordVO.setType(4);
+        List<Map<String, Object>> blemishListF = baseMapper.medicalRecordIndicator(filterRecordVO, sta, end);
+        if (ListUtil.isNotEmpty(blemishListF)) {
+            for (Map<String, Object> blemishMap : blemishListF) {
+                //出院记录未在术后24h内完成
+                if (("2635").equals(blemishMap.get("cases_entry_id"))) {
+                    //未完成个数
+                    Object obj = blemishMap.get("2635出院记录未在术后24h内完成");
+                    double i = Double.parseDouble(obj.toString());
+                    //完成率为
+                    if (totleCountSta != 0) {
+                        double leaveHospitalDou = (totleCountSta - i) / totleCountSta;
+                        String leaveHospitalStr = Double.toString(leaveHospitalDou);
+                        medQualityControlDTO.setLeaveHospitalStr(leaveHospitalStr);
+                        //完成个数
+                        medQualityControlDTO.setLeaveHospitalNum((totleCountOut - i));
+                    }
+                }
+                //病案首页
+                if("3110".equals(blemishMap.get("cases_entry_id"))){
+                    //未完成个数
+                    Object obj = blemishMap.get("3110病案首页未在患者出院24小时内完成");
+                    double i = Double.parseDouble(obj.toString());
+                    //完成率为
+                    if (totleCountSta != 0) {
+                        double medHomePageDou = (totleCountSta - i) / totleCountSta;
+                        String medHomePageStr = Double.toString(medHomePageDou);
+                        medQualityControlDTO.setMedHomePageStr(medHomePageStr);
+                        //完成个数
+                        medQualityControlDTO.setMedHomePageNum((totleCountSta - i));
+                    }
+                }
+            }
+        }
+        if (medQualityControlDTO.getLeaveHospitalStr() == null) {
+            medQualityControlDTO.setLeaveHospitalStr("1");
+            //完成个数
+            medQualityControlDTO.setLeaveHospitalNum((Double.valueOf(totleCountOut)));
+        }
+        return medQualityControlDTO;
+    }
+
+    /**
+     * 手术费,抗菌药物,手术和病理费等含有人数
+     * @param start
+     * @param end
+     * @return
+     */
+    public Map<String,Integer> selectOperationNum( LocalDateTime start, LocalDateTime end){
+        return   baseMapper.selectOperationNum(  start, end);
+    }
 }

+ 1 - 333
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -12,7 +12,6 @@ import com.diagbot.entity.*;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
-import com.diagbot.service.MedManagementInfoService;
 import com.diagbot.service.MedQcresultDetailService;
 import com.diagbot.util.*;
 import com.diagbot.vo.*;
@@ -26,11 +25,7 @@ import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.DateFormat;
 import java.text.DecimalFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.Duration;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -66,12 +61,6 @@ public class ConsoleFacade {
     private QcCasesEntryFacade qcCasesEntryFacade;
     @Autowired
     private LeaveHosStatisticsAggregate leaveHosStatisticsAggregate;
-    @Autowired
-    @Qualifier("medManagementInfoServiceImpl")
-    private MedManagementInfoService medManagementInfoService;
-    @Autowired
-    @Qualifier("medQcresultDetailServiceImpl")
-    private MedQcresultDetailService medQcresultDetailService;
 
     //region-----------------------聚合接口开始-------------------------------
 
@@ -380,124 +369,7 @@ public class ConsoleFacade {
         return retMap;
     }
 
-    /**
-     * 住院编码病案管理人员月均负担出院患者病历
-     *
-     * @param filterVO
-     * @return
-     */
-    public MedQualityControlDTO hospitalMonthly(FilterVO filterVO) {
-        //获取出院总人数
-        Integer totleCount = leaveHosStatisticsAggregate.getTotleCount(filterVO);
-        MedQualityControlDTO medQualityControlDTO = new MedQualityControlDTO();
-        //获取病案管理人员工作
-        List<MedManagementInfo> list = medManagementInfoService.list();
-        String startDate = filterVO.getStartDate();
-        String endDate = filterVO.getEndDate();
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        LocalDateTime sta = LocalDateTime.parse(startDate, df);
-        LocalDateTime end = LocalDateTime.parse(endDate, df);
- /*       HashMap<String, Long> longHashMap = getTimeCount(list, sta, end);
-        Long timeCount = longHashMap.get("病案管理");
-        Long codingCount = longHashMap.get("编码管理");
-        double monthlyDou = 0;
-        double monthlyCoding = 0;*/
-      /*  try {
-            double timeMonth = timeCount / 30;
-            // 住院病案管理人员月均负担出院患者病历
-            monthlyDou = (totleCount.intValue() / timeMonth);
-            long round = Math.round(monthlyDou);
-            String monthlyInt = String.valueOf(round);
-            medQualityControlDTO.setManagerMouthNum(monthlyInt);
-            //编码
-            monthlyCoding = totleCount.intValue() / codingCount;
-            long roundCod = Math.round(monthlyCoding);
-            String codingInt = String.valueOf(roundCod);
-            medQualityControlDTO.setCoderMouthNum(codingInt);
-        } catch (Exception e) {
-            e.printStackTrace();
-            //throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历无关联的质控条目!");
-        }*/
-        //入院记录24小时完成率
-        try {
-            HashMap<String,Double> finishingRate = admissionStr(filterVO);
-            String admissionStrString = String.valueOf(finishingRate.get("完成率"));
-            double admissionNumString = finishingRate.get("完成量");
-            medQualityControlDTO.setAdmissionStr(admissionStrString);
-            medQualityControlDTO.setAdmissionNum(admissionNumString);
-        } catch (ParseException e) {
-            medQualityControlDTO.setAdmissionStr("0");
-            medQualityControlDTO.setAdmissionNum(0.0);
-        }
-        return medQualityControlDTO;
-    }
 
-    /**
-     * 入院记录24h完成率
-     *
-     * @param filterVO
-     * @return
-     */
-    public HashMap<String, Double> admissionStr(FilterVO filterVO) throws ParseException {
-        filterFacade.filterVOSet(filterVO);
-        List<NumDTO> records = behospitalInfoFacade.beHosCount(filterVO);
-        HashMap<String, Double> stringDoubleHashMap = new HashMap<>();
-        String start = filterVO.getStartDate();
-        String end = filterVO.getEndDate();
-        DateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
-        Date startDate = sf.parse(start);
-        Date endDate = sf.parse(end);
-        Integer num=null;
-        int number=0;
-        //获得全员住院人数
-        if (ListUtil.isNotEmpty(records)) {
-            num = records.stream()
-                    .map(NumDTO::getNum)
-                    .reduce(0, Integer::sum);
-        }
-        //查到所有经过qc端病例中不符合情况的病例
-        QueryWrapper queryWrapper = new QueryWrapper();
-        queryWrapper.eq("cases_entry_id", 2658);
-        List<MedQcresultDetail> selectList = medQcresultDetailService.getBaseMapper().selectList(queryWrapper);
-        ArrayList<String> behospitalCodeList = new ArrayList<>();
-        //遍历病例得到所有病人id 去查看出院  入院记录
-        if (ListUtil.isNotEmpty(selectList)) {
-            for (MedQcresultDetail medQcresultDetail : selectList) {
-                String behospitalCode = medQcresultDetail.getBehospitalCode();
-                //存在集合中以备后用
-                behospitalCodeList.add(behospitalCode);
-                QueryWrapper queryWrapperTpw = new QueryWrapper();
-                queryWrapperTpw.eq("behospital_code", behospitalCode);
-                List<BehospitalInfo> behospitalList = behospitalInfoFacade.getBaseMapper().selectList(queryWrapperTpw);
-                if (ListUtil.isNotEmpty(behospitalList))
-                    for (BehospitalInfo behospitalInfo : behospitalList) {
-                        //入院时间
-                        Date behospitalDate = behospitalInfo.getBehospitalDate();
-                       /* //出院时间
-                        Date leaveHospitalDate = behospitalInfo.getLeaveHospitalDate();*/
-                        if(behospitalCode!=null) {
-                            if (belongCalendar(behospitalDate, startDate, endDate)) {
-                                number++;
-                            }
-                        }
-
-                    }
-            }
-        }
-        Double numDou = Double.valueOf(num.intValue());
-        Double numberDou = Double.valueOf(number);
-        //完成率为
-        Double finishingRate= null;
-        try {
-            finishingRate = numberDou/ numDou;
-        } catch (Exception e) {
-            stringDoubleHashMap.put("完成量",0.0);
-            stringDoubleHashMap.put("完成率",0.0);
-        }
-        stringDoubleHashMap.put("完成量",numberDou);
-        stringDoubleHashMap.put("完成率",finishingRate);
-        return stringDoubleHashMap;
-    }
 
     /**
      * 病案指标
@@ -505,148 +377,10 @@ public class ConsoleFacade {
      * @return   2170
      */
 public MedQualityControlDTO medicalRecordIndicator(FilterRecordVO filterRecordVO){
-    List<MedManagementInfo> list = medManagementInfoService.list();
-    MedQualityControlDTO medQualityControlDTOS = medManagementInfoService.medicalRecordIndicator(filterRecordVO,list);
+    MedQualityControlDTO medQualityControlDTOS = behospitalInfoFacade.medicalRecordIndicator(filterRecordVO);
     return medQualityControlDTOS;
 }
 
-    //判断时间是否在一个时间段内
-    public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
-        //设置当前时间
-        Calendar date = Calendar.getInstance();
-        date.setTime(nowTime);
-        //设置开始时间
-        Calendar begin = Calendar.getInstance();
-        begin.setTime(beginTime);
-        //设置结束时间
-        Calendar end = Calendar.getInstance();
-        end.setTime(endTime);
-        //处于开始时间之后,和结束时间之前的判断
-        if (date.after(begin) && date.before(end)) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-   /* public HashMap<String, Long> getTimeCount(List<MedManagementInfo> list, LocalDateTime sta, LocalDateTime end) {
-        HashMap<String, Long> longHashMap = new HashMap<>();
-        long timeCount = 0;
-        long codingCount = 0;
-        if (ListUtil.isNotEmpty(list)) {
-            for (MedManagementInfo managementInfo : list) {
-                LocalDateTime hireDate = managementInfo.getHireDate();
-                LocalDateTime resignationTime = managementInfo.getResignationTime();
-                //开始工作时间和离职时间均不为空
-                if (hireDate != null && resignationTime != null) {
-                    //单位时间内开始时间大于等于工作时间且结束时间大于等于离职时间
-                    if ((sta.isAfter(hireDate) || sta.equals(hireDate)) && (end.isAfter(resignationTime) || end.equals(resignationTime))) {
-                        //  开始时间---离职时间  相差的天数
-                        Duration duration = Duration.between(sta, resignationTime);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-                    //单位时间内开始时间大于等于工作时间且离职时间大于等于结束时间
-                    if ((sta.isAfter(hireDate) || sta.equals(hireDate)) && (resignationTime.isAfter(end) || end.equals(resignationTime))) {
-                        // 开始时间---结束时间
-                        Duration duration = Duration.between(sta, end);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-                    // 开始时间< =工作时间    离职时间<=结束时间
-                    if ((hireDate.isAfter(sta) || sta.equals(hireDate)) && (end.isAfter(resignationTime) || end.equals(resignationTime))) {
-                        //  结束时间 ---离职时间
-                        Duration duration = Duration.between(hireDate, resignationTime);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-                    // 开始时间<=工作时间     离职时间>=结束时间
-                    if ((hireDate.isAfter(sta) || sta.equals(hireDate)) && (resignationTime.isAfter(end) || end.equals(resignationTime))) {
-                        // 工作时间---结束时间
-                        Duration duration = Duration.between(hireDate, end);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-
-                }
-                //离职时间为空
-                if (hireDate != null && resignationTime == null) {
-                    //开始时间<=工作时间
-                    if (hireDate.isAfter(sta) || sta.equals(hireDate)) {
-                        Duration duration = Duration.between(hireDate, end);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-                    // 开始时间>=工作时间
-                    if (sta.isAfter(hireDate) || sta.equals(hireDate)) {
-                        Duration duration = Duration.between(sta, end);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-                }
-
-
-            }
-            longHashMap.put("病案管理", timeCount);
-            longHashMap.put("编码管理", codingCount);
-        }
-        return longHashMap;
-    }*/
-
 
     /**
      * 质控病历统计
@@ -2473,71 +2207,7 @@ public MedQualityControlDTO medicalRecordIndicator(FilterRecordVO filterRecordVO
         return behospitalInfoFacade.hmImproveMRPage(qcResultShortPageVO);
     }
 
-    /**
-     * 病案管理指标(内页)
-     *
-     * @param filterVO
-     * @return
-     */
-    public MedQualityControlDTO getMedManageIndex(FilterVO filterVO) {
-        Map<String, Object> baseIndex = behospitalInfoFacade.getBaseIndex(filterVO);
-        MedQualityControlDTO medQualityControlDTO = new MedQualityControlDTO();
-        QueryWrapper<MedManagementInfo> query = new QueryWrapper<>();
-        query.eq("hospital_id", filterVO.getHospitalId())
-                .eq("is_deleted", IsDeleteEnum.N)
-                //指标1、2、3与是否归档没有直接关系 出院时间在单位时间内即可
-               // .eq("is_placefile", filterVO.getIsPlacefile())
-                .isNotNull("start_date")
-                .isNotNull("end_date")
-                .eq("start_date",filterVO.getStartDate())
-                .eq("end_date",filterVO.getEndDate());
-
-        List<MedManagementInfo> list = medManagementInfoService.list(query);
-        //单位时间同期门诊病案管理人员实际工作总月数
-        Double firMouth = 0d;
-        //单位时间同期住院病案管理人员实际工作总月数
-        Double secMouth = 0d;
-        //单位时间同期病案编码管理人员实际工作总月数
-        Double thrMouth = 0d;
-        for (MedManagementInfo medManagementInfo : list) {
-            if(medManagementInfo.getDepartment()==0){
-                firMouth += medManagementInfo.getWorkMouth();
-            }
-            if(medManagementInfo.getDepartment()==1){
-                secMouth += medManagementInfo.getWorkMouth();
-            }
 
-        }
-        thrMouth = list.stream().filter(obj -> obj.getPosition() == 2).map(MedManagementInfo::getWorkMouth).reduce(Double::sum).get();
-        Double firRecord = 0d;
-        for (String str : baseIndex.keySet()) {
-           if(str.equals("firMouthNum")){
-               //指标一
-               if(secMouth != 0d){
-                   medQualityControlDTO.setManagerMouthNum(Math.ceil(Double.parseDouble(baseIndex.get(str).toString())/secMouth));
-               }
-               //指标三
-               if(thrMouth != 0d){
-                   medQualityControlDTO.setCoderMouthNum(Math.ceil(Double.parseDouble(baseIndex.get(str).toString())/thrMouth));
-               }
-           }
-
-            if(str.equals("secMouthNum") && firMouth != 0d){
-                //指标二
-                medQualityControlDTO.setSecManagerMouthNum(Math.ceil(Double.parseDouble(baseIndex.get(str).toString())/firMouth));
-            }
-
-            //指标二十七 -甲级病历率
-
-            if(str.equals("forMouthNum")){
-                firRecord =Double.parseDouble(baseIndex.get(str).toString());
-            }
-            if(str.equals("sixMouthNum") &&  firRecord != 0d ){
-                medQualityControlDTO.setFirGradeNum(Math.ceil(Double.parseDouble(baseIndex.get(str).toString())/ firRecord));
-            }
-        }
-        return medQualityControlDTO;
-    }
 
     /**
      * 质控核查质控评分页(内页)
@@ -2550,8 +2220,6 @@ public MedQualityControlDTO medicalRecordIndicator(FilterRecordVO filterRecordVO
         return behospitalInfoFacade.qcCheckMRPage(qcResultShortPageVO);
     }
 
-    /*
-     */
 
     /**
      * 病历稽查表导出(首页)

+ 19 - 0
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.*;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.entity.FilterRecordVO;
 import com.diagbot.vo.*;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -674,4 +676,21 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @return
      */
     public List<ExportExcelByDeptDTO> qcCheckMRPageExportByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    /**
+     * 入院,手术,出院 24小时完成情况
+     *
+     * @param filterRecordVO
+     * @param start
+     * @param end
+     * @return
+     */
+    public List<Map<String, Object>> medicalRecordIndicator(@Param("filterRecordVO") FilterRecordVO filterRecordVO, @Param("start") LocalDateTime start, @Param("end") LocalDateTime end);
+    /**
+     * 手术费,抗菌药物,手术和病理费等含有人数
+     *
+     * @param start
+     * @param end
+     * @return
+     */
+    public Map<String,Integer> selectOperationNum( @Param("start") LocalDateTime start, @Param("end") LocalDateTime end);
 }

+ 16 - 0
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.*;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.entity.FilterRecordVO;
 import com.diagbot.vo.*;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 
@@ -633,5 +635,19 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public List<ExportExcelByDeptDTO> qcCheckMRPageExportByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    /**
+     * 入院,手术,出院 24小时完成情况
+     *
+     * @param filterRecordVO
+     * @return
+     */
+    public List<Map<String, Object>> medicalRecordIndicator(@Param("filterRecordVO") FilterRecordVO filterRecordVO, @Param("start") LocalDateTime start, @Param("end") LocalDateTime end);
 
+    /**
+     * 手术费,抗菌药物,手术和病理费等含有人数
+     * @param start
+     * @param end
+     * @return
+     */
+    public Map<String,Integer> selectOperationNum(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end);
 }

+ 1 - 1
src/main/java/com/diagbot/service/MedManagementInfoService.java

@@ -16,5 +16,5 @@ import java.util.List;
  * @since 2021-03-25
  */
 public interface MedManagementInfoService extends IService<MedManagementInfo> {
-    MedQualityControlDTO medicalRecordIndicator(FilterRecordVO filterRecordVO, List list);
+
 }

+ 27 - 0
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.*;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.entity.FilterRecordVO;
 import com.diagbot.mapper.BehospitalInfoMapper;
 import com.diagbot.service.BehospitalInfoService;
+import com.diagbot.util.ListUtil;
 import com.diagbot.vo.*;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 /**
@@ -1067,4 +1071,27 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public List<ExportExcelByDeptDTO> qcCheckMRPageExportByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         return baseMapper.qcCheckMRPageExportByDept(qcResultShortPageVO);
     }
+    /**
+     * 入院,手术,出院 24小时完成情况
+     *
+     * @param filterRecordVO
+     * @param start
+     * @param end
+     * @return
+     */
+    public List<Map<String, Object>> medicalRecordIndicator(@Param("filterRecordVO") FilterRecordVO filterRecordVO, @Param("start") LocalDateTime start, @Param("end") LocalDateTime end) {
+
+        return baseMapper.medicalRecordIndicator(filterRecordVO,start,end);
+    }
+    /**
+     * 手术费,抗菌药物,手术和病理费等含有人数
+     *
+     * @param start
+     * @param end
+     * @return
+     */
+    public Map<String,Integer> selectOperationNum( @Param("start") LocalDateTime start, @Param("end") LocalDateTime end){
+        return  baseMapper.selectOperationNum( start, end);
+
+    }
 }

+ 0 - 315
src/main/java/com/diagbot/service/impl/MedManagementInfoServiceImpl.java

@@ -29,321 +29,6 @@ import java.util.*;
  */
 @Service
 public class MedManagementInfoServiceImpl extends ServiceImpl<MedManagementInfoMapper, MedManagementInfo> implements MedManagementInfoService {
-    public MedQualityControlDTO medicalRecordIndicator(FilterRecordVO filterRecordVO, List list) {
-        String startDate = filterRecordVO.getStartDate();
-        String endDate = filterRecordVO.getEndDate();
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        LocalDateTime sta = LocalDateTime.parse(startDate, df);
-        LocalDateTime end = LocalDateTime.parse(endDate, df);
-        MedQualityControlDTO medQualityControlDTO = new MedQualityControlDTO();
-        // type==1  时间为出院
-        filterRecordVO.setType(1);
-        List<Map<String, Object>> medicalRecordIndicatorStaList = baseMapper.medicalRecordIndicator(filterRecordVO,sta,end);
-        //时间段出院人数为
-        Object countNumSta = medicalRecordIndicatorStaList.get(0).get("countNum");
-        int totleCountSta = Integer.parseInt(countNumSta.toString());
-        //获取病案管理人员工作
-     /*   HashMap<String, Long> longHashMap = getTimeCount(list, sta, end);
-        Long timeCount = longHashMap.get("病案管理");
-        Long codingCount = longHashMap.get("编码管理");
-        double monthlyDou = 0;
-        double monthlyCoding = 0;
-        try {
-            if(timeCount==0||totleCountSta==0){
-                medQualityControlDTO.setManagerMouthNum("0");
-            }
-            double timeMonth = timeCount / 30;
-            // 住院病案管理人员月均负担出院患者病历
-            monthlyDou = (totleCountSta / timeMonth);
-            double ceil = Math.ceil(monthlyDou);
-            String monthlyInt = String.valueOf(ceil);
-            medQualityControlDTO.setManagerMouthNum(monthlyInt);
-            //编码
-            if(codingCount==0||totleCountSta==0){
-                medQualityControlDTO.setCoderMouthNum("0");
-            }
-            monthlyCoding = totleCountSta / (codingCount/30);
-            double roundCod = Math.ceil(monthlyCoding);
-            String codingInt = String.valueOf(roundCod);
-            medQualityControlDTO.setCoderMouthNum(codingInt);
-        } catch (Exception e) {
-            e.printStackTrace();
-            //throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历无关联的质控条目!");
-        }*/
-        //type=2   时间为住院对比
-        filterRecordVO.setType(2);
-        List<Map<String, Object>> medicalRecordIndicatorOutList = baseMapper.medicalRecordIndicator(filterRecordVO,sta,end);
-       // List<Map<String, Object>> medicalRecordIndicatorOutList = baseMapper.medicalRecordIndicator(filterRecordVO,sta,end);
-        //同期住院人数
-        Object countNumOut = medicalRecordIndicatorOutList.get(0).get("countNum");
-        int totleCountOut = Integer.parseInt(countNumOut.toString());
-        //type=3   住院时间缺陷情况
-        filterRecordVO.setType(3);
-        List<Map<String, Object>> blemishList = baseMapper.medicalRecordIndicator(filterRecordVO,sta,end);
-        if (ListUtil.isNotEmpty(blemishList)) {
-            for (Map<String, Object> blemishMap : blemishList) {
-                //入院记录未在术后24h内完成
-                if (("2658").equals(blemishMap.get("cases_entry_id"))) {
-                    //未完成个数
-                    Object obj = blemishMap.get("2658入院记录未在术后24h内完成");
-                    double i = Double.parseDouble(obj.toString());
-                    //完成率为
-                    if (totleCountOut != 0) {
-                        double admissionDou = (totleCountOut - i) / totleCountOut;
-                        String admissionStr = Double.toString(admissionDou);
-                        medQualityControlDTO.setAdmissionStr(admissionStr);
-                        //完成个数
-                        medQualityControlDTO.setAdmissionNum((totleCountOut - i));
-                    }
-                }
-                //手术记录未在术后24h内完成
-                if (("2170").equals(blemishMap.get("cases_entry_id"))) {
-                    //未完成个数
-                    Object obj = blemishMap.get("2170手术记录未在术后24h内完成");
-                    double i = Double.parseDouble(obj.toString());
-                    //完成率为
-                    if (totleCountOut != 0) {
-                        double admissionDou = (totleCountOut - i) / totleCountOut;
-                        String admissionStr = Double.toString(admissionDou);
-                        medQualityControlDTO.setOperationStr(admissionStr);
-                        //完成个数
-                        medQualityControlDTO.setOperationNum((totleCountOut - i));
-                    }
-                }
 
-            }
-        }
-        if(medQualityControlDTO.getAdmissionStr()==null){
-            medQualityControlDTO.setAdmissionStr("1");
-            //完成个数
-            medQualityControlDTO.setAdmissionNum((Double.valueOf(totleCountOut)));
-        }
-        if(medQualityControlDTO.getOperationStr()==null){
-            medQualityControlDTO.setOperationStr("1");
-            //完成个数
-            medQualityControlDTO.setOperationNum((Double.valueOf(totleCountOut)));
-        }
-        //type=4   出院时间缺陷情况
-        filterRecordVO.setType(4);
-        List<Map<String, Object>> blemishListF = baseMapper.medicalRecordIndicator(filterRecordVO,sta,end);
-        if (ListUtil.isNotEmpty(blemishListF)) {
-            for (Map<String, Object> blemishMap : blemishListF) {
-                //出院记录未在术后24h内完成
-                if (("2635").equals(blemishMap.get("cases_entry_id"))) {
-                    //未完成个数
-                    Object obj = blemishMap.get("2635出院记录未在术后24h内完成");
-                    double i = Double.parseDouble(obj.toString());
-                    //完成率为
-                    if (totleCountSta != 0) {
-                        double leaveHospitalDou = (totleCountSta - i) / totleCountSta;
-                        String leaveHospitalStr = Double.toString(leaveHospitalDou);
-                        medQualityControlDTO.setLeaveHospitalStr(leaveHospitalStr);
-                        //完成个数
-                        medQualityControlDTO.setLeaveHospitalNum((totleCountOut - i));
-                    }
-                }
-            }
-        }
-        if(medQualityControlDTO.getLeaveHospitalStr()==null){
-            medQualityControlDTO.setLeaveHospitalStr("1");
-            //完成个数
-            medQualityControlDTO.setLeaveHospitalNum((Double.valueOf(totleCountOut)));
-        }
 
-        //查房记录完成率
-        filterRecordVO.setType(0);
-        List<Map<String, Object>> blemishListOne = baseMapper.medicalRecordIndicator(filterRecordVO,sta,end);
-        int roundNum=0;
-        String code=null;
-        int record=0;
-        //获得住院日期所有数据未分组的缺陷
-        for (int i = 0; i < blemishListOne.size(); i++) {
-            String casesEntryId = blemishListOne.get(i).get("cases_entry_id").toString();
-            //只要符合其中任何一个
-            if(casesEntryId.equals("2655") || casesEntryId.equals("2656")|| casesEntryId.equals("2427")|| casesEntryId.equals("2654")|| casesEntryId.equals("2214")){
-                if(i!=0) {
-                    code = blemishListOne.get(i).get("acode").toString();
-                    String recordCode = blemishListOne.get(record).get("acode").toString();
-                    if(code.equals(recordCode)){
-                        continue;
-                    }
-                    record = i;
-                    roundNum=roundNum+1;
-                    //获得此次的code
-                    continue;
-                }
-                record = i;
-                roundNum=roundNum+1;
-
-            }
-        }
-        //医师完整记录完成量为
-        if(roundNum==0){
-            medQualityControlDTO.setWardRoundStr("1");
-            //完成个数
-            medQualityControlDTO.setWardRoundNum((Double.valueOf(totleCountOut)));
-        }
-        medQualityControlDTO.setWardRoundNum(Double.valueOf(roundNum));
-        //医师完整记录完成率
-        Double medHomePage = (Double.valueOf(roundNum) / totleCountOut);
-        medQualityControlDTO.setWardRoundStr(medHomePage.toString());
-
-
-        return medQualityControlDTO;
-    }
-
-/*    //判断时间是否在一个时间段内
-    public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
-        if (nowTime != null && beginTime != null && endTime != null) {
-            //设置当前时间
-            Calendar date = Calendar.getInstance();
-            date.setTime(nowTime);
-            //设置开始时间
-            Calendar begin = Calendar.getInstance();
-            begin.setTime(beginTime);
-            //设置结束时间
-            Calendar end = Calendar.getInstance();
-            end.setTime(endTime);
-            //处于开始时间之后,和结束时间之前的判断
-            if (date.after(begin) && date.before(end)) {
-                return true;
-            } else {
-                return false;
-            }
-        }
-    }*/
-
-
-/*    public HashMap<String, Long> getTimeCount(List<MedManagementInfo> list, LocalDateTime sta, LocalDateTime end) {
-        HashMap<String, Long> longHashMap = new HashMap<>();
-        long timeCount = 0;
-        long codingCount = 0;
-        if (ListUtil.isNotEmpty(list)) {
-            for (MedManagementInfo managementInfo : list) {
-                //开始工作时间
-                LocalDateTime hireDate = managementInfo.getHireDate();
-                //辞职时间
-                LocalDateTime resignationTime = managementInfo.getResignationTime();
-                //开始工作时间和离职时间均不为空
-                if (hireDate != null && resignationTime != null) {
-                    //单位时间内开始时间大于等于工作时间且小于结束时间结束时间大于等于离职时间
-                    if ((resignationTime.isAfter(sta))&&(sta.isAfter(hireDate) || sta.equals(hireDate)) && (end.isAfter(resignationTime) || end.equals(resignationTime))) {
-                        //  开始时间---离职时间  相差的天数
-                        Duration duration = Duration.between(sta, resignationTime);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-                    //单位时间内开始时间大于等于工作时间小于结束时间且离职时间大于等于结束时间
-                    if ((resignationTime.isAfter(sta))&&(sta.isAfter(hireDate) || sta.equals(hireDate)) && (resignationTime.isAfter(end) || end.equals(resignationTime))) {
-                        // 开始时间---结束时间
-                        Duration duration = Duration.between(sta, end);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-                    // 开始时间< =工作时间  <  离职时间<=结束时间
-                    if ((resignationTime.isAfter(sta))&&(hireDate.isAfter(sta) || sta.equals(hireDate)) && (end.isAfter(resignationTime) || end.equals(resignationTime))) {
-                        //  结束时间 ---离职时间
-                        Duration duration = Duration.between(hireDate, resignationTime);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-                    // 开始时间<=工作时间     离职时间>=结束时间
-                    if ((hireDate.isAfter(sta) || sta.equals(hireDate)) && (resignationTime.isAfter(end) || end.equals(resignationTime))) {
-                        // 工作时间---结束时间
-                        Duration duration = Duration.between(hireDate, end);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-
-                }
-                //离职时间为空
-                if (hireDate != null && resignationTime == null) {
-                    //开始时间<=工作时间
-                    if (hireDate.isAfter(sta) || sta.equals(hireDate)) {
-                        Duration duration = Duration.between(hireDate, end);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-                    // 结束时间>开始时间>=工作时间
-                    if ((sta.isAfter(hireDate) || sta.equals(hireDate))&&(end.isAfter(hireDate))) {
-                        Duration duration = Duration.between(sta, end);
-                        long days = duration.toDays();
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + days;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + days;
-                            continue;
-                        }
-                    }
-                    //开始时间大于结束时间
-                    if((sta.isAfter(end))){
-                        //病案管理人员
-                        if (1 == managementInfo.getPosition()) {
-                            timeCount = timeCount + 0;
-                            continue;
-                        }
-                        //病案编码管理人员
-                        if (2 == managementInfo.getPosition()) {
-                            codingCount = codingCount + 0;
-                            continue;
-                        }
-                    }
-                }
-
-
-            }
-            longHashMap.put("病案管理", timeCount);
-            longHashMap.put("编码管理", codingCount);
-        }
-        return longHashMap;
-    }*/
 }

+ 1 - 28
src/main/java/com/diagbot/web/ConsoleController.java

@@ -163,23 +163,7 @@ public class ConsoleController {
 
 
     /**
-     * 住院病案管理人员月均负担出院患者病历
-     * @param filterVO
-     * @return
-     */
-    @ApiOperation(value = "住院病案管理人员月均负担出院患者病历[by:zh]",
-            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
-                    "startDate: 起始时间 <br>" +
-                    "endDate: 结束时间 <br>" +
-                    "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
-    @PostMapping("/hospitalMonthly")
-    @SysLogger("hospitalMonthly")
-    public RespDTO<Integer> hospitalMonthly(@RequestBody @Valid FilterVO filterVO) {
-        return RespDTO.onSuc(consoleFacade.hospitalMonthly(filterVO));
-    }
-
-    /**
-     * 住院病案管理人员月均负担出院患者病历
+     * 病案指标
      * @param filterRecordVO
      * @return
      */
@@ -860,15 +844,4 @@ public class ConsoleController {
         return RespDTO.onSuc(consoleFacade.getMedicalCheckTitle());
     }
 
-    /**
-     * 病案管理指标
-     * @param
-     * @return
-     */
-    @ApiOperation(value = "病案管理指标[by:cy]")
-    @PostMapping("/getMedManageIndex")
-    @SysLogger("getMedManageIndex")
-    public RespDTO<MedQualityControlDTO> getMedManageIndex(@RequestBody FilterVO filterVO) {
-        return RespDTO.onSuc(consoleFacade.getMedManageIndex(filterVO));
-    }
 }

+ 84 - 0
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -17455,4 +17455,88 @@
         f1.doctorId = f2.doctorId
         AND f1.doctorName = f2.doctorName
     </select>
+    <!-- 入院,手术,出院情况-->
+    <select id="medicalRecordIndicator" parameterType="com.diagbot.entity.FilterRecordVO" resultType="java.util.Map">
+        select a.behospital_code as acode,
+        b.`name`,
+        b.hospital_id,
+        b.beh_dept_id ,
+        b.behospital_date,
+        b.leave_hospital_date,
+        b.diagnose_icd ,
+        b.diagnose ,
+        b.is_placefile,
+        c.cases_entry_id ,
+        c.msg
+        <if test="filterRecordVO.type != null and (filterRecordVO.type== 1 or filterRecordVO.type==2)">
+            ,COUNT(DISTINCT a.behospital_code) as countNum
+        </if>
+        <if test="filterRecordVO.type != null and (filterRecordVO.type== 3 or filterRecordVO.type==4)">
+            ,sum(c.cases_entry_id = 2170) as '2170手术记录未在术后24h内完成',
+            sum(c.cases_entry_id = 2658) as '2658入院记录未在患者入院24小时内完成',
+            sum(c.cases_entry_id = 2635) as '2635出院记录未在患者出院24小时内完成',
+            sum(c.cases_entry_id = 3110) as '3110病案首页未在患者出院24小时内完成'
+        </if>
+        from
+        med_qcresult_cases a,
+        med_behospital_info b,
+        med_qcresult_detail c,
+        qc_cases_entry d
+        where
+        a.hospital_id = #{filterRecordVO.hospitalId}
+        and a.hospital_id = b.hospital_id
+        and a.hospital_id = c.hospital_id
+        and a.cases_id = 243
+        and b.is_placefile = #{filterRecordVO.isPlacefile}
+        and a.behospital_code = b.behospital_code
+        and a.behospital_code = c.behospital_code
+        and c.cases_entry_id = d.id
+        and a.is_deleted='N'
+        and b.is_deleted ='N'
+        and c.is_deleted = 'N'
+        and d.is_deleted = 'N'
+        <if test="filterRecordVO.type != null and filterRecordVO.type==1 ">
+            and #{start} &lt;= b.leave_hospital_date
+            and b.leave_hospital_date &lt;= #{end}
+        </if>
+        <if test="filterRecordVO.type != null and (filterRecordVO.type==2 or filterRecordVO.type==0) ">
+            and #{start} &lt;= b.behospital_date
+            and b.behospital_date &lt;= #{end}
+        </if>
+        <if test="filterRecordVO.type != null and filterRecordVO.type== 3 ">
+            and #{start} &lt;= b.behospital_date
+            and b.behospital_date &lt;= #{end}
+            GROUP BY c.cases_entry_id
+        </if>
+        <if test="filterRecordVO.type != null and filterRecordVO.type== 4 ">
+            and #{start} &lt;= b.leave_hospital_date
+            and b.leave_hospital_date &lt;= #{end}
+            GROUP BY c.cases_entry_id
+        </if>
+
+    </select>
+    <!-- 手术费,抗菌药物,手术和病理费等含有人数-->
+    <select id="selectOperationNum" resultType="java.util.Map">
+    select
+        sum(b.operation_fee >0) as 'operationFee',
+        sum(b.antibiosis_fee >0) as 'antibiosisFee'
+        sum(case when  b.operation_fee >0 and b.pathology_fee>0 then 1 else 0 end ) as 'operationPathologyFee'
+    from
+            med_behospital_info a,
+            med_home_page b,
+            med_qcresult_cases c
+    where
+            b.behospital_code=a.behospital_code
+    and     a.behospital_code = c.behospital_code
+    and     a.hospital_id=#{filterRecordVO.hospitalId}
+    and     a.is_placefile=#{filterRecordVO.isPlacefile}
+    and     a.hospital_id = c.hospital_id
+    and     a.hospital_id = b.hospital_id
+    and     c.cases_id = 243
+    and     a.is_deleted='N'
+    and     b.is_deleted='N'
+    and     c.is_deleted='N'
+    and     #{start} &lt;= b.leave_hospital_date
+    and     b.leave_hospital_date &lt;= #{end}
+    </select>
 </mapper>