浏览代码

关键条目缺陷占比-住院超过31日病人数逻辑补充

chengyao 4 年之前
父节点
当前提交
ebbfd873e4

+ 1 - 5
src/main/java/com/diagbot/dto/ReBeHosDTO.java

@@ -25,11 +25,7 @@ public class ReBeHosDTO {
      */
     @Excel(name = "性别", width = 10, needMerge = true, orderNum = "2")
     private String sex;
-    /**
-     * 主诊断
-     */
-    @Excel(name = "主诊断", width = 50, needMerge = true, orderNum = "3")
-    private String diagnose;
+
     /**
      * 间隔天数
      */

+ 13 - 7
src/main/java/com/diagbot/dto/ReBeHosDetailDTO.java

@@ -25,15 +25,21 @@ public class ReBeHosDetailDTO {
      */
     @Excel(name = "病人姓名", width = 20, orderNum = "2")
     private String name;
+
+    /**
+     * 主诊断
+     */
+    @Excel(name = "主诊断", width = 50, needMerge = true, orderNum = "3")
+    private String diagnose;
     /**
      * 病历等级
      */
-    @Excel(name = "病历等级", width = 10, orderNum = "3")
+    @Excel(name = "病历等级", width = 10, orderNum = "4")
     private String level;
     /**
      * 病历得分
      */
-    @Excel(name = "病历得分", width = 10, orderNum = "4")
+    @Excel(name = "病历得分", width = 10, orderNum = "5")
     private Double scoreRes;
     /**
      * 科室编码
@@ -42,29 +48,29 @@ public class ReBeHosDetailDTO {
     /**
      * 科室
      */
-    @Excel(name = "科室", width = 50, orderNum = "5")
+    @Excel(name = "科室", width = 50, orderNum = "6")
     private String behDeptName;
     /**
      * 出院日期
      */
-    @Excel(name = "出院日期", format = "yyyy-MM-dd", width = 30, orderNum = "6")
+    @Excel(name = "出院日期", format = "yyyy-MM-dd", width = 30, orderNum = "7")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date leaveHospitalDate;
     /**
      * 入院日期
      */
-    @Excel(name = "入院日期", format = "yyyy-MM-dd", width = 30, orderNum = "7")
+    @Excel(name = "入院日期", format = "yyyy-MM-dd", width = 30, orderNum = "8")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date behospitalDate;
     /**
      * 住院天数
      */
-    @Excel(name = "住院天数", width = 15, orderNum = "8")
+    @Excel(name = "住院天数", width = 15, orderNum = "9")
     private String behospitalDayNum;
     /**
      * 住院费用
      */
-    @Excel(name = "住院费用", width = 15, orderNum = "9")
+    @Excel(name = "住院费用", width = 15, orderNum = "10")
     private String totleFee;
 
     private String age;

+ 4 - 1
src/main/java/com/diagbot/dto/ReBeHosMergeDTO.java

@@ -15,7 +15,8 @@ import java.util.Date;
 @Setter
 public class ReBeHosMergeDTO {
     private String fileCode;
-    private String diagnose;
+    private String diagnose = "";
+    private String diagnoseName = "";//病案首页诊断
     private String name;
     private String sex;
     private String doctorName;
@@ -29,6 +30,8 @@ public class ReBeHosMergeDTO {
     private Date behospitalDate;
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date leaveHospitalDate;
+    private String lastDiagnose = "";
+    private String lastDiagnoseName = "";
     private String lastBehDeptId;
     private String lastBehDeptName;
     private String lastDoctorName;

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

@@ -3002,13 +3002,24 @@ public class ConsoleFacade {
      */
     public IPage<ReBeHosDTO> reHos31DaysPage(ReBeHosPageVO reBeHosPageVO) {
         filterFacade.reBeHosPageVOSet(reBeHosPageVO);
+        long size = reBeHosPageVO.getSize();
+        long current = reBeHosPageVO.getCurrent();
+        reBeHosPageVO.setCurrent(1L);
+        reBeHosPageVO.setSize(10000L);
         IPage<ReBeHosMergeDTO> page = behospitalInfoFacade.reHos31DaysPage(reBeHosPageVO);
         List<ReBeHosMergeDTO> records = page.getRecords();
         IPage<ReBeHosDTO> retPage = new Page<>();
         BeanUtil.copyProperties(page, retPage);
         List<ReBeHosDTO> retRecords = Lists.newLinkedList();
         if (ListUtil.isNotEmpty(records)) {
-            for (ReBeHosMergeDTO record : records) {
+            Iterator<ReBeHosMergeDTO> iterator = records.iterator();
+            while(iterator.hasNext()){
+                ReBeHosMergeDTO record = iterator.next();
+                Boolean flag = isContainDiagnose(record);
+                if(!flag){
+                    iterator.remove();
+                    continue;
+                }
                 ReBeHosDTO retRecord = new ReBeHosDTO();
                 BeanUtil.copyProperties(record, retRecord);
                 List<ReBeHosDetailDTO> details = Lists.newLinkedList();
@@ -3018,6 +3029,7 @@ public class ConsoleFacade {
                 ReBeHosDetailDTO lastDetailRecord = new ReBeHosDetailDTO();
                 lastDetailRecord.setName(record.getName());
                 lastDetailRecord.setAge(record.getLastAge());
+                lastDetailRecord.setDiagnose(record.getLastDiagnoseName());
                 lastDetailRecord.setBehDeptId(record.getLastBehDeptId());
                 lastDetailRecord.setBehDeptName(record.getLastBehDeptName());
                 lastDetailRecord.setBehospitalCode(record.getLastBehospitalCode());
@@ -3032,10 +3044,45 @@ public class ConsoleFacade {
                 retRecords.add(retRecord);
             }
         }
+        retPage.setSize(size);
+        retPage.setTotal(retRecords.size());
+        retPage.setCurrent(current);
+        if(0 == current){
+            current = 1;
+        }
+        int startIndex = ((int)current -1)*10;
+
+        retRecords = retRecords.subList(startIndex, startIndex+(int)size);
         retPage.setRecords(retRecords);
         return retPage;
     }
 
+
+    Boolean isContainDiagnose(ReBeHosMergeDTO record){
+        String lastDiagnoseName = record.getLastDiagnoseName().replace(",","、").replace(",","、");
+
+        String diagnose = record.getDiagnose().replace(",","、").replace(",","、");
+        Set lastDiagnoseNames = strTranListMethod(lastDiagnoseName);
+        Set diagnoses = strTranListMethod(diagnose);
+        long count = diagnoses.stream().filter(obj ->null != lastDiagnoseNames && null != obj && lastDiagnoseNames.contains(obj)).count();
+        if(count<=0){
+            return false;
+        }
+        return true;
+    };
+
+    Set strTranListMethod(String str){
+        Set<String> names = new HashSet<>();
+        if(str.contains("、")){
+            for (String diagnoseName : str.split("、")) {
+                names.add(diagnoseName);
+            }
+        }else{
+            names.add(str);
+        }
+        return names;
+    };
+
     /**
      * 入院人数统计(首页)
      *

+ 69 - 28
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -13963,6 +13963,7 @@
         SELECT
         t.fileCode,
         t.diagnose,
+        t.diagnoseName,
         t.NAME,
         t.sex,
         t.hospitalId,
@@ -13970,6 +13971,8 @@
         t.behDeptName,
         t.behospitalCode,
         t.behospitalDate,
+        t.lastDiagnose,
+        t.lastDiagnoseName,
         t.leaveHospitalDate,
         t.lastBehDeptId,
         t.lastBehDeptName,
@@ -13994,6 +13997,7 @@
         SELECT
         be.fileCode,
         be.diagnose,
+        be.diagnoseName,
         be.NAME,
         be.sex,
         be.hospitalId,
@@ -14002,6 +14006,8 @@
         be.behospitalCode,
         be.behospitalDate,
         be.leaveHospitalDate,
+        be.lastDiagnose,
+        be.lastDiagnoseName,
         be.lastBehDeptId,
         be.lastBehDeptName,
         be.lastBehospitalCode,
@@ -14013,6 +14019,7 @@
         SELECT
         r1.file_code AS fileCode,
         r1.diagnose,
+        r1.diagnose_name AS diagnoseName,
         r1.NAME,
         r1.sex,
         r1.hospital_id AS hospitalId,
@@ -14021,6 +14028,8 @@
         r1.behospital_code AS behospitalCode,
         r1.behospital_date AS behospitalDate,
         r1.leave_hospital_date AS leaveHospitalDate,
+        r2.diagnose AS lastDiagnose,
+        r2.diagnose_name AS lastDiagnoseName,
         r2.beh_dept_id AS lastBehDeptId,
         r2.beh_dept_name AS lastBehDeptName,
         r2.behospital_code AS lastBehospitalCode,
@@ -14032,20 +14041,33 @@
         SELECT
         ( @rownum := @rownum + 1 ) AS rownum,
         t1.file_code,
+        t1.behospital_code,
         t1.diagnose,
+        t1.diagnose_name,
         t1.NAME,
         t1.sex,
         t1.hospital_id,
         t1.beh_dept_id,
         t1.beh_dept_name,
-        t1.behospital_code,
         t1.behospital_date,
         t1.leave_hospital_date
-        FROM
-        (
+        FROM(
+        select
+        tt3.file_code,
+        tt3.behospital_code,
+        tt3.diagnose,
+        tt3.NAME,
+        tt3.sex,
+        tt3.hospital_id,
+        tt3.beh_dept_id,
+        tt3.beh_dept_name,
+        tt3.behospital_date,
+        tt3.leave_hospital_date,
+        GROUP_CONCAT(case when tt5.diagnose_name is not null then tt5.diagnose_name else '' end) as diagnose_name
+        FROM(
         SELECT
-        tt1.file_code,
-        tt1.diagnose,
+        tt2.file_code,
+        tt2.diagnose,
         tt2.NAME,
         tt2.sex,
         tt2.hospital_id,
@@ -14057,8 +14079,7 @@
         FROM
         (
         SELECT
-        a.file_code,
-        a.diagnose
+        a.file_code
         FROM
         med_behospital_info a
         WHERE
@@ -14095,8 +14116,7 @@
             AND a.name like concat('%', #{reBeHosPageVO.name},'%')
         </if>
         GROUP BY
-        a.file_code,
-        a.diagnose
+        a.file_code
         HAVING
         count(*)> 1
         ) tt1,
@@ -14108,7 +14128,6 @@
         </if>
         AND tt2.qc_type_id != 0
         AND tt1.file_code = tt2.file_code
-        AND tt1.diagnose = tt2.diagnose
         <if test="reBeHosPageVO.hospitalId != null and reBeHosPageVO.hospitalId != ''">
             AND tt2.hospital_id = #{reBeHosPageVO.hospitalId}
         </if>
@@ -14136,8 +14155,15 @@
         </if>
         ORDER BY
         tt1.file_code,
-        tt1.diagnose,
-        tt2.behospital_date DESC
+        tt2.behospital_date DESC)tt3
+        left join med_home_page tt4 on tt4.is_deleted = 'N'
+        AND tt3.hospital_id = tt4.hospital_id
+        AND tt3.behospital_code = tt4.behospital_code
+        LEFT JOIN med_home_diagnose_info tt5 on tt5.is_deleted = 'N'
+        AND tt4.hospital_id = tt5.hospital_id
+        AND tt4.home_page_id = tt5.home_page_id
+        GROUP by tt3.behospital_code
+        ORDER BY tt3.file_code,tt3.leave_hospital_date DESC
         ) t1,
         ( SELECT @rownum := 0 ) r
         ) r1
@@ -14145,20 +14171,33 @@
         SELECT
         ( @INDEX := @INDEX + 1 ) AS rownum,
         t1.file_code,
+        t1.behospital_code,
         t1.diagnose,
+        t1.diagnose_name,
         t1.NAME,
         t1.sex,
         t1.hospital_id,
         t1.beh_dept_id,
         t1.beh_dept_name,
-        t1.behospital_code,
         t1.behospital_date,
         t1.leave_hospital_date
-        FROM
-        (
+        FROM(
+        select
+        tt3.file_code,
+        tt3.behospital_code,
+        tt3.diagnose,
+        tt3.NAME,
+        tt3.sex,
+        tt3.hospital_id,
+        tt3.beh_dept_id,
+        tt3.beh_dept_name,
+        tt3.behospital_date,
+        tt3.leave_hospital_date,
+        GROUP_CONCAT(case when tt5.diagnose_name is not null then tt5.diagnose_name else '' end) as diagnose_name
+        FROM(
         SELECT
-        tt1.file_code,
-        tt1.diagnose,
+        tt2.file_code,
+        tt2.diagnose,
         tt2.NAME,
         tt2.sex,
         tt2.hospital_id,
@@ -14170,8 +14209,7 @@
         FROM
         (
         SELECT
-        a.file_code,
-        a.diagnose
+        a.file_code
         FROM
         med_behospital_info a
         WHERE
@@ -14208,8 +14246,7 @@
             AND a.name like concat('%', #{reBeHosPageVO.name},'%')
         </if>
         GROUP BY
-        a.file_code,
-        a.diagnose
+        a.file_code
         HAVING
         count(*)> 1
         ) tt1,
@@ -14221,7 +14258,6 @@
         </if>
         AND tt2.qc_type_id != 0
         AND tt1.file_code = tt2.file_code
-        AND tt1.diagnose = tt2.diagnose
         <if test="reBeHosPageVO.hospitalId != null and reBeHosPageVO.hospitalId != ''">
             AND tt2.hospital_id = #{reBeHosPageVO.hospitalId}
         </if>
@@ -14249,12 +14285,17 @@
         </if>
         ORDER BY
         tt1.file_code,
-        tt1.diagnose,
-        tt2.behospital_date DESC
-        ) t1,(
-        SELECT
-        @INDEX := 0
-        ) r
+        tt2.behospital_date DESC)tt3
+        left join med_home_page tt4 on tt4.is_deleted = 'N'
+        AND tt3.hospital_id = tt4.hospital_id
+        AND tt3.behospital_code = tt4.behospital_code
+        LEFT JOIN med_home_diagnose_info tt5 on tt5.is_deleted = 'N'
+        AND tt4.hospital_id = tt5.hospital_id
+        AND tt4.home_page_id = tt5.home_page_id
+        GROUP by tt3.behospital_code
+        ORDER BY tt3.file_code,tt3.leave_hospital_date DESC
+        ) t1,
+        ( SELECT @INDEX := 0 ) r
         ) r2 ON r1.file_code = r2.file_code
         AND r1.rownum = r2.rownum - 1
         ) be