فهرست منبع

Merge remote-tracking branch 'origin/dev/20200702_1.3.7' into debug

zhaops 5 سال پیش
والد
کامیت
3c32841961

+ 27 - 0
src/main/java/com/diagbot/dto/HomePageImproveDTO.java

@@ -0,0 +1,27 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/6 20:03
+ */
+@Getter
+@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;
+}

+ 40 - 10
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -10,6 +10,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;
@@ -28,7 +29,6 @@ import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.google.common.collect.Lists;
 import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -788,20 +788,50 @@ public class ConsoleFacade {
     public Map<String, Object> homePageMRCount(FilterVO filterVO) {
         Map<String, Object> retMap = new HashMap<>();
         retMap.put("合格率", null);
+        retMap.put("不合格率", null);
         retMap.put("完整率", null);
         retMap.put("改善率", null);
         filterFacade.filterVOSet(filterVO);
         HomePageNumDTO qcNumDTO = behospitalInfoFacade.homePageQcPercent(filterVO);
         HomePageNumDTO emptyNumDTO = behospitalInfoFacade.hmEmptyEntryPercent(filterVO);
-
-        /*qcNumDTO.setEntryTotleNum(emptyNumDTO.getEntryTotleNum());
-        qcNumDTO.setEmptyNum(emptyNumDTO.getEmptyNum());
-        qcNumDTO.setEmptyPercent(emptyNumDTO.getEmptyPercent());
-        qcNumDTO.setEmptyPercentStr(emptyNumDTO.getEmptyPercentStr());*/
-
-        retMap.put("合格率", qcNumDTO);
-        retMap.put("完整率", emptyNumDTO);
-        retMap.put("改善率", null);
+        HomePageImproveDTO improveDTO = behospitalInfoFacade.homePageImproveCount(filterVO);
+
+        //合格率
+        NumDTO pass = new NumDTO();
+        pass.setName("合格率");
+        pass.setNum(qcNumDTO.getFirstLevelNum());
+        pass.setTotleNum(qcNumDTO.getMrNum());
+        pass.setPercent(qcNumDTO.getFirstLevelPercent());
+        pass.setPercentStr(qcNumDTO.getFirstLevelPercentStr());
+
+        //不合格率
+        NumDTO unPass = new NumDTO();
+        unPass.setName("不合格率");
+        unPass.setNum(qcNumDTO.getSecondLevelNum());
+        unPass.setTotleNum(qcNumDTO.getMrNum());
+        unPass.setPercent(qcNumDTO.getSecondLevelPercent());
+        unPass.setPercentStr(qcNumDTO.getSecondLevelPercentStr());
+
+        //完整率
+        NumDTO full = new NumDTO();
+        full.setName("完整率");
+        full.setNum(emptyNumDTO.getEmptyNum());
+        full.setTotleNum(emptyNumDTO.getEntryTotleNum());
+        full.setPercent(emptyNumDTO.getEmptyPercent());
+        full.setPercentStr(emptyNumDTO.getEmptyPercentStr());
+
+        //改善率
+        NumDTO improve = new NumDTO();
+        improve.setName("改善率");
+        improve.setNum(improveDTO.getImproveNum());
+        improve.setTotleNum(improveDTO.getMrNum());
+        improve.setPercent(improveDTO.getImprovePercent());
+        improve.setPercentStr(improveDTO.getImprovePercentStr());
+
+        retMap.put("合格率", pass);
+        retMap.put("不合格率", unPass);
+        retMap.put("完整率", full);
+        retMap.put("改善率", improve);
         return retMap;
     }
 

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

@@ -6,6 +6,7 @@ import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.EntryStatisticsDTO;
 import com.diagbot.dto.ExportExcelDTO;
+import com.diagbot.dto.HomePageImproveDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.LevelStatisticsTZDTO;
@@ -294,4 +295,12 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @return
      */
     public IPage<QcResultShortDTO> leaveHosMRPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+
+    /**
+     * 改善率统计-全院(首页)
+     *
+     * @param filterVO
+     * @return
+     */
+    public HomePageImproveDTO homePageImproveCount(FilterVO filterVO);
 }

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

@@ -6,6 +6,7 @@ import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.EntryStatisticsDTO;
 import com.diagbot.dto.ExportExcelDTO;
+import com.diagbot.dto.HomePageImproveDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.LevelStatisticsTZDTO;
@@ -287,4 +288,12 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public IPage<QcResultShortDTO> leaveHosMRPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+
+    /**
+     * 改善率统计-全院(首页)
+     *
+     * @param filterVO
+     * @return
+     */
+    public HomePageImproveDTO homePageImproveCount(FilterVO filterVO);
 }

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

@@ -6,6 +6,7 @@ import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.EntryStatisticsDTO;
 import com.diagbot.dto.ExportExcelDTO;
+import com.diagbot.dto.HomePageImproveDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.LevelStatisticsTZDTO;
@@ -391,4 +392,15 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public IPage<QcResultShortDTO> leaveHosMRPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         return baseMapper.leaveHosMRPage(qcResultShortPageVO);
     }
+
+    /**
+     * 改善率统计-全院(首页)
+     *
+     * @param filterVO
+     * @return
+     */
+    @Override
+    public HomePageImproveDTO homePageImproveCount(FilterVO filterVO) {
+        return baseMapper.homePageImproveCount(filterVO);
+    }
 }

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

@@ -4337,4 +4337,122 @@
             AND t1.behospital_code = t2.behospital_code
         </if>
     </select>
+
+    <!-- 病案首页改善率统计(首页)-->
+    <select id="homePageImproveCount" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.HomePageImproveDTO">
+        SELECT
+        t2.mrNum,
+        t1.improveNum,
+        round( t1.improveNum / t2.mrNum, 4 ) AS improvePercent,
+        Concat( round( t1.improveNum / t2.mrNum * 100, 2 ), '%' ) AS improvePercentStr,
+        t1.improveToPassNum,
+        round( t1.improveToPassNum / t2.mrNum, 4 ) AS improveToPassPercent,
+        Concat( round( t1.improveToPassNum / t2.mrNum * 100, 2 ), '%' ) AS improveToPassPercentStr,
+        t1.improveToFullNum,
+        round( t1.improveToFullNum / t2.mrNum, 4 ) AS improveToFullPercent,
+        Concat( round( t1.improveToFullNum / t2.mrNum * 100, 2 ), '%' ) AS improveToFullPercentStr
+        FROM
+        (
+        SELECT
+        <![CDATA[sum( e.`level` = '不合格' AND d.`level` = '合格' AND d.score_res < 20 ) AS improveToPassNum,]]>
+        sum( d.score_res = 20 ) AS improveToFullNum,
+        count(*) AS improveNum
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c,
+        med_qcresult_cases d,
+        (
+        SELECT
+        m4.*
+        FROM
+        med_behospital_info m1,
+        med_home_page m2,
+        med_qcresult_info m3,
+        med_qcresult_cases m4
+        WHERE
+        m1.is_deleted = 'N'
+        AND m2.is_deleted = 'N'
+        AND m3.is_deleted = 'Y'
+        AND m4.is_deleted = 'Y'
+        AND m1.hospital_id = m2.hospital_id
+        AND m1.hospital_id = m3.hospital_id
+        AND m1.hospital_id = m4.hospital_id
+        AND m1.behospital_code = m2.behospital_code
+        AND m1.behospital_code = m3.behospital_code
+        AND m1.behospital_code = m4.behospital_code
+        AND m3.have_home_page = 1
+        AND m4.cases_id = 243
+        AND m1.is_placefile = '1'
+        AND m1.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND m1.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND m1.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND m1.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        GROUP BY
+        m1.behospital_code
+        ORDER BY
+        m1.behospital_code,
+        m4.gmt_create
+        ) e
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.hospital_id = d.hospital_id
+        AND a.hospital_id = e.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.behospital_code = c.behospital_code
+        AND a.behospital_code = d.behospital_code
+        AND a.behospital_code = e.behospital_code
+        AND d.cases_id = 243
+        AND d.score_res > e.score_res
+        AND a.is_placefile = '1'
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        ) t1,
+        (
+        SELECT
+        count(*) AS mrNum
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.behospital_code = c.behospital_code
+        AND a.is_placefile = '1'
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        ) t2
+    </select>
 </mapper>