Browse Source

Merge remote-tracking branch 'origin/master'

zhoutg 4 years atrás
parent
commit
3d3bd81b4b

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

@@ -2,6 +2,7 @@ package com.diagbot.dto;
 
 import lombok.Data;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -18,12 +19,14 @@ public class NeoPushDTO {
     private List<PushBaseDTO> vitals;//体征
     private List<PushBaseDTO> lis;//实验室检查
     private List<PushBaseDTO> pacs;//辅助检查
+    // 鉴别诊断
+    private List<PushBaseDTO> differentialDis;
     /**
      * Map<String,List<NeoPushGeneralDTO>>
      *     operation:[  ]
      *     drug:[  ]
      */
-    private Map<String,List<PushBaseDTO>> treat;//治疗
+    private Map<String,List<PushBaseDTO>> treat = new HashMap<>();//治疗
     private List<PushBaseDTO> diagnosticBasis;//诊断依据
 
 

+ 1 - 0
src/main/java/com/diagbot/dto/PushDTO.java

@@ -25,6 +25,7 @@ public class PushDTO {
     private List<PushBaseDTO> pacs = new ArrayList<>();
     // 手术
     private List<PushBaseDTO> operations = new ArrayList<>();
+
     // 药品
     private List<PushBaseDTO> medicines = new ArrayList<>();
     // 并发症

+ 1 - 1
src/main/java/com/diagbot/enums/DiseaseTypeEnum.java

@@ -12,7 +12,7 @@ import lombok.Setter;
 public enum DiseaseTypeEnum implements KeyedNamed {
 
     identify(1, "鉴别诊断"),
-    pacs(2, "xxxx诊断");
+    possibleDis(2, "可能诊断");
 
     @Setter
     private int key;

+ 54 - 0
src/main/java/com/diagbot/enums/MedicalAdviceEnum.java

@@ -0,0 +1,54 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author kwz
+ * @Description: 医嘱类型
+ * @date 2018年10月11日 下午3:33:22
+ */
+
+public enum MedicalAdviceEnum implements KeyedNamed {
+
+    drug(1, "药物"),
+    operation(2, "手术"),
+    handle(3, "操作");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    MedicalAdviceEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static MedicalAdviceEnum getEnum(int key) {
+        for (MedicalAdviceEnum item : MedicalAdviceEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        MedicalAdviceEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+
+}

+ 46 - 4
src/main/java/com/diagbot/facade/PushFacade.java

@@ -5,6 +5,8 @@ import com.diagbot.dto.NeoPushDTO;
 import com.diagbot.dto.PushBaseDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.enums.DiseaseTypeEnum;
+import com.diagbot.enums.MedicalAdviceEnum;
 import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.process.PushProcess;
 import com.diagbot.util.ListUtil;
@@ -50,6 +52,21 @@ public class PushFacade {
         NeoPushVO pushVO = commonFacade.generatePushInput(wordCrfDTO);
         //图谱推送数据
         List<NeoPushDTO> push = neoFacade.getPush(pushVO);
+        NeoPushDTO neoPushDTO1 = new NeoPushDTO();
+        PushBaseDTO disease = new PushBaseDTO();
+        disease.setName("急性胰腺炎");
+        neoPushDTO1.setDisease(disease);
+        List<PushBaseDTO> vitals = new ArrayList<>();
+        PushBaseDTO vital1 = new PushBaseDTO();
+        vital1.setName("心率快");
+        vitals.add(vital1);
+        PushBaseDTO vital2 = new PushBaseDTO();
+        vital2.setName("淋巴肿大");
+        vitals.add(vital2);
+        neoPushDTO1.setVitals(vitals);
+        push.add(neoPushDTO1);
+
+
         int length = pushVo.getLength();
         if(ListUtil.isNotEmpty(push)){
             NeoPushDTO neoPushDTO = push.get(0);
@@ -74,16 +91,41 @@ public class PushFacade {
                     List<PushBaseDTO> filterpacs = neoPushDTO.getPacs().stream().filter(x -> !typeWords.get(StandConvertEnum.pacs.getName()).contains(x.getName())).collect(Collectors.toList());
                     pushDTO.setPacs(filterpacs.subList(0, filterpacs.size() >= length ? length : filterpacs.size()));
                 }
+                // 药品
+                if (ruleTypeList.contains("8") && neoPushDTO.getTreat() != null && ListUtil.isNotEmpty(neoPushDTO.getTreat().get(MedicalAdviceEnum.drug.getName()))) {
+                    List<PushBaseDTO> pushMedicineBaseDTOS = neoPushDTO.getTreat().get(MedicalAdviceEnum.drug.getName());
+                    pushDTO.setMedicines(pushMedicineBaseDTOS.subList(0, pushMedicineBaseDTOS.size() >= length ? length : pushMedicineBaseDTOS.size()));
+                }
+                // 手术
+                if (ruleTypeList.contains("9") && neoPushDTO.getTreat() != null && ListUtil.isNotEmpty(neoPushDTO.getTreat().get(MedicalAdviceEnum.operation.getName()))) {
+                    List<PushBaseDTO> pushOperationBaseDTOS = neoPushDTO.getTreat().get(MedicalAdviceEnum.operation.getName());
+                    pushDTO.setMedicines(pushOperationBaseDTOS.subList(0, pushOperationBaseDTOS.size() >= length ? length : pushOperationBaseDTOS.size()));
+                }
             }
-            Map<String, List<PushBaseDTO>> dis = pushDTO.getDis();
+            Map<String, List<PushBaseDTO>> dis = new HashMap<>();
             //推送诊断
             if (ruleTypeList.contains("7")) {
                 List<PushBaseDTO> fiterDiseases = push.stream().map(x -> x.getDisease()).filter(y -> !typeWords.get(StandConvertEnum.disease.getName()).contains(y.getName())).collect(Collectors.toList());
-//                pushDTO.setDis(fiterDiseases.subList(0, fiterDiseases.size() >= length ? length : fiterDiseases.size()));
                 List<PushBaseDTO> pushBaseDTOS = fiterDiseases.subList(0, fiterDiseases.size() >= length ? length : fiterDiseases.size());
-                dis.put("可能诊断",pushBaseDTOS);
-                pushDTO.setDis(dis);
+                dis.put(DiseaseTypeEnum.possibleDis.getName(),pushBaseDTOS);
+
+                List<List<String>> differenrDisList = push.stream().filter(x -> ListUtil.isNotEmpty(x.getDifferentialDis())).map(y -> y.getDifferentialDis().stream().map(
+                        z -> z.getName()).collect(Collectors.toList())).collect(Collectors.toList());
+                List<String> differentDises = new ArrayList<>();
+                differenrDisList.forEach(
+                        x ->{
+                            differentDises.removeAll(x);
+                            differentDises.addAll(x);
+                        }
+                );
+                List<PushBaseDTO> filterDifferentDis = differentDises.subList(0, differentDises.size() >= length ? length : differentDises.size()).stream().map(x -> {
+                    PushBaseDTO pushBaseDTO = new PushBaseDTO();
+                    pushBaseDTO.setName(x);
+                    return pushBaseDTO;
+                }).collect(Collectors.toList());
+                dis.put(DiseaseTypeEnum.identify.getName(),filterDifferentDis);
             }
+            pushDTO.setDis(dis);
 
         }
 

+ 6 - 0
src/main/java/com/diagbot/util/ExcelUtils.java

@@ -148,9 +148,11 @@ public class ExcelUtils {
             list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
         } catch (NoSuchElementException e) {
             // throw new NormalException("模板不能为空");
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "模板不能为空");
         } catch (Exception e) {
             e.printStackTrace();
             // throw new NormalException(e.getMessage());
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "导入Excel异常");
         }
         return list;
     }
@@ -168,9 +170,11 @@ public class ExcelUtils {
             list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
         } catch (NoSuchElementException e) {
             // throw new NormalException("excel文件不能为空");
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "excel文件不能为空");
         } catch (Exception e) {
             // throw new NormalException(e.getMessage());
             System.out.println(e.getMessage());
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "导入Excel异常");
         }
         return list;
     }
@@ -189,9 +193,11 @@ public class ExcelUtils {
             list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
         } catch (NoSuchElementException e) {
             // throw new NormalException("excel文件不能为空");
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "excel文件不能为空");
         } catch (Exception e) {
             // throw new NormalException(e.getMessage());
             System.out.println(e.getMessage());
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "导入Excel异常");
         }
         return list;
     }