Pārlūkot izejas kodu

质控核查统计

zhaops 4 gadi atpakaļ
vecāks
revīzija
59709cbfbc

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

@@ -102,6 +102,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/console/resultStatistics").permitAll()
                 .antMatchers("/console/resultStatisticsByDeptPage").permitAll()
                 .antMatchers("/console/homePageMRCount").permitAll()
+                .antMatchers("/console/qcCheckStatistics").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByCaseAndDept").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByCaseAndDeptPage").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByEntryAndDept").permitAll()

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

@@ -145,6 +145,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/console/resultStatistics", request)
                 || matchers("/console/resultStatisticsByDeptPage", request)
                 || matchers("/console/homePageMRCount", request)
+                || matchers("/console/qcCheckStatistics", request)
                 || matchers("/consoleByDept/entryCountGroupByCaseAndDept", request)
                 || matchers("/consoleByDept/entryCountGroupByCaseAndDeptPage", request)
                 || matchers("/consoleByDept/entryCountGroupByEntryAndDept", request)

+ 14 - 11
src/main/java/com/diagbot/dto/HomePageImproveDTO.java

@@ -13,15 +13,18 @@ import lombok.Setter;
 public class HomePageImproveDTO {
     private String deptId;
     private String deptName;
-    private Integer mrNum;
-    private Integer checkedNum;
-    private Integer improveNum;
-    private Double improvePercent;
-    private String improvePercentStr;
-    private Integer improveToPassNum;
-    private Double improveToPassPercent;
-    private String improveToPassPercentStr;
-    private Integer improveToFullNum;
-    private Double improveToFullPercent;
-    private String improveToFullPercentStr;
+    private Integer mrNum = 0;
+    private Integer checkedNum = 0;
+    private Double checkedPercent = 0d;
+    private String checkedPercentStr = "0.00%";
+    private Integer homePageMRNum = 0;
+    private Integer improveNum = 0;
+    private Double improvePercent = 0d;
+    private String improvePercentStr = "0.00%";
+    private Integer improveToPassNum = 0;
+    private Double improveToPassPercent = 0d;
+    private String improveToPassPercentStr = "0.00%";
+    private Integer improveToFullNum = 0;
+    private Double improveToFullPercent = 0d;
+    private String improveToFullPercentStr = "0.00%";
 }

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

@@ -25,6 +25,7 @@ import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.google.common.collect.Lists;
@@ -824,7 +825,7 @@ public class ConsoleFacade {
         NumDTO improve = new NumDTO();
         improve.setName("改善率");
         improve.setNum(improveDTO.getImproveNum());
-        improve.setTotleNum(improveDTO.getMrNum());
+        improve.setTotleNum(improveDTO.getHomePageMRNum());
         improve.setPercent(improveDTO.getImprovePercent());
         improve.setPercentStr(improveDTO.getImprovePercentStr());
 
@@ -846,4 +847,114 @@ public class ConsoleFacade {
         IPage<QcResultShortDTO> page = behospitalInfoFacade.leaveHosMRPage(qcResultShortPageVO);
         return page;
     }
+
+    /**
+     * 质控核查统计(内页)
+     *
+     * @param filterQcCheckVO
+     * @return
+     */
+    public List<HomePageImproveDTO> qcCheckStatistics(FilterQcCheckVO filterQcCheckVO) {
+        filterFacade.filterQcCheckVOSet(filterQcCheckVO);
+        List<HomePageImproveDTO> records = behospitalInfoFacade.qcCheckStatistics(filterQcCheckVO);
+        //增加全院数据
+        if (StringUtil.isBlank(filterQcCheckVO.getDeptName()) || filterQcCheckVO.getDeptName().equals("全院")) {
+            HomePageImproveDTO item = getGlobleRecord_improve(records);
+            if (item != null) {
+                records.add(0, item);
+            }
+        }
+        return records;
+    }
+
+    /**
+     * 增加全院记录
+     *
+     * @param records
+     * @return
+     */
+    public HomePageImproveDTO getGlobleRecord_improve(List<HomePageImproveDTO> records) {
+        DecimalFormat df = new DecimalFormat("#0.00");
+        HomePageImproveDTO item = new HomePageImproveDTO();
+
+        if (ListUtil.isEmpty(records)) {
+            return null;
+        }
+
+
+        //总病历数
+        Integer mrNum = records
+                .stream()
+                .map(HomePageImproveDTO::getMrNum)
+                .reduce(0, Integer::sum);
+        if (mrNum == null || mrNum == 0) {
+            return null;
+        }
+        //核查病历数
+        Integer checkedNum = records
+                .stream()
+                .map(HomePageImproveDTO::getCheckedNum)
+                .reduce(0, Integer::sum);
+        //核查病历占比
+        Double checkedPercent = BigDecimal.valueOf(checkedNum)
+                .divide(BigDecimal.valueOf(mrNum), 4, RoundingMode.HALF_UP)
+                .doubleValue();
+        String checkedPercentStr
+                = df.format(BigDecimal.valueOf(checkedPercent).multiply(BigDecimal.valueOf(100))) + "%";
+        //带病案首页的病历数
+        Integer homePageMRNum = records
+                .stream()
+                .map(HomePageImproveDTO::getHomePageMRNum)
+                .reduce(0, Integer::sum);
+        //改善病历数
+        Integer improveNum = records
+                .stream()
+                .map(HomePageImproveDTO::getImproveNum)
+                .reduce(0, Integer::sum);
+        //改善率
+        Double improvePercent = BigDecimal.valueOf(improveNum)
+                .divide(BigDecimal.valueOf(homePageMRNum), 4, RoundingMode.HALF_UP)
+                .doubleValue();
+        String improvePercentStr
+                = df.format(BigDecimal.valueOf(improvePercent).multiply(BigDecimal.valueOf(100))) + "%";
+        //改善至合格病历数
+        Integer improveToPassNum = records
+                .stream()
+                .map(HomePageImproveDTO::getImproveToPassNum)
+                .reduce(0, Integer::sum);
+        //改善至合格占比
+        Double improveToPassPercent = BigDecimal.valueOf(improveToPassNum)
+                .divide(BigDecimal.valueOf(homePageMRNum), 4, RoundingMode.HALF_UP)
+                .doubleValue();
+        String improveToPassPercentStr
+                = df.format(BigDecimal.valueOf(improvePercent).multiply(BigDecimal.valueOf(100))) + "%";
+        //改善至满分病历数
+        Integer improveToFullNum = records
+                .stream()
+                .map(HomePageImproveDTO::getImproveToFullNum)
+                .reduce(0, Integer::sum);
+        //改善至满分占比
+        Double improveToFullPercent = BigDecimal.valueOf(improveToFullNum)
+                .divide(BigDecimal.valueOf(homePageMRNum), 4, RoundingMode.HALF_UP)
+                .doubleValue();
+        String improveToFullPercentStr
+                = df.format(BigDecimal.valueOf(improveToFullPercent).multiply(BigDecimal.valueOf(100))) + "%";
+
+        item.setDeptName("全院");
+        item.setMrNum(mrNum);
+        item.setCheckedNum(checkedNum);
+        item.setCheckedPercent(checkedPercent);
+        item.setCheckedPercentStr(checkedPercentStr);
+        item.setHomePageMRNum(homePageMRNum);
+        item.setImproveNum(improveNum);
+        item.setImprovePercent(improvePercent);
+        item.setImprovePercentStr(improvePercentStr);
+        item.setImproveToPassNum(improveToPassNum);
+        item.setImproveToPassPercent(improveToPassPercent);
+        item.setImproveToPassPercentStr(improveToPassPercentStr);
+        item.setImproveToFullNum(improveToFullNum);
+        item.setImproveToFullPercent(improveToFullPercent);
+        item.setImproveToFullPercentStr(improveToFullPercentStr);
+        return item;
+    }
 }

+ 17 - 0
src/main/java/com/diagbot/facade/FilterFacade.java

@@ -10,6 +10,7 @@ import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import org.springframework.stereotype.Component;
@@ -270,4 +271,20 @@ public class FilterFacade {
         long interval = entryStatisticsVO.getEndDate().getTime() + 1000;
         entryStatisticsVO.setEndDate(new Date(Long.valueOf(interval)));
     }
+
+    /**
+     * 质控核查统计入参
+     *
+     * @param filterQcCheckVO
+     */
+    public void filterQcCheckVOSet(FilterQcCheckVO filterQcCheckVO) {
+        FilterVO filterVO = new FilterVO();
+        BeanUtil.copyProperties(filterQcCheckVO, filterVO);
+        filterVOSet(filterVO);
+        filterQcCheckVO.setHospitalId(filterVO.getHospitalId());
+        filterQcCheckVO.setUserId(filterVO.getUserId());
+        filterQcCheckVO.setStartDate(filterVO.getStartDate());
+        filterQcCheckVO.setEndDate(filterVO.getEndDate());
+        filterQcCheckVO.setLimitCount(filterVO.getLimitCount());
+    }
 }

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

@@ -23,6 +23,7 @@ import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.TaskVO;
@@ -303,4 +304,12 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @return
      */
     public HomePageImproveDTO homePageImproveCount(FilterVO filterVO);
+
+    /**
+     * 质控核查统计(内页)
+     *
+     * @param filterQcCheckVO
+     * @return
+     */
+    public List<HomePageImproveDTO> qcCheckStatistics(FilterQcCheckVO filterQcCheckVO);
 }

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

@@ -23,6 +23,7 @@ import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.TaskVO;
@@ -296,4 +297,12 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public HomePageImproveDTO homePageImproveCount(FilterVO filterVO);
+
+    /**
+     * 质控核查统计(内页)
+     *
+     * @param filterQcCheckVO
+     * @return
+     */
+    public List<HomePageImproveDTO> qcCheckStatistics(FilterQcCheckVO filterQcCheckVO);
 }

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

@@ -25,6 +25,7 @@ import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.TaskVO;
@@ -403,4 +404,15 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public HomePageImproveDTO homePageImproveCount(FilterVO filterVO) {
         return baseMapper.homePageImproveCount(filterVO);
     }
+
+    /**
+     * 质控核查统计(内页)
+     *
+     * @param filterQcCheckVO
+     * @return
+     */
+    @Override
+    public List<HomePageImproveDTO> qcCheckStatistics(FilterQcCheckVO filterQcCheckVO) {
+        return baseMapper.qcCheckStatistics(filterQcCheckVO);
+    }
 }

+ 15 - 0
src/main/java/com/diagbot/vo/FilterQcCheckVO.java

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/7 11:40
+ */
+@Getter
+@Setter
+public class FilterQcCheckVO extends FilterVO {
+    private String deptName;
+}

+ 18 - 0
src/main/java/com/diagbot/web/ConsoleController.java

@@ -8,6 +8,7 @@ import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.EntryNumGroupDTO;
 import com.diagbot.dto.EntryStatisticsDTO;
+import com.diagbot.dto.HomePageImproveDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.LevelStatisticsTZDTO;
@@ -19,6 +20,7 @@ import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import io.swagger.annotations.Api;
@@ -529,4 +531,20 @@ public class ConsoleController {
     public RespDTO<IPage<QcResultShortDTO>> leaveHosMRPage(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
         return RespDTO.onSuc(consoleFacade.leaveHosMRPage(qcResultShortPageVO));
     }
+
+    /**
+     * 质控核查统计
+     *
+     * @param filterQcCheckVO
+     * @return
+     */
+    @ApiOperation(value = "质控核查统计[by:zhaops]",
+            notes = "deptName: 科室名称 <br>" +
+                    "startDate: 起始时间 <br>" +
+                    "endDate: 截止时间 <br>")
+    @PostMapping("/qcCheckStatistics")
+    @SysLogger("qcCheckStatistics")
+    public RespDTO<List<HomePageImproveDTO>> qcCheckStatistics(@RequestBody @Valid FilterQcCheckVO filterQcCheckVO) {
+        return RespDTO.onSuc(consoleFacade.qcCheckStatistics(filterQcCheckVO));
+    }
 }