kongwz 4 rokov pred
rodič
commit
58e8dbb61f

+ 2 - 0
src/main/java/com/diagbot/dto/NeoPushDTO.java

@@ -18,6 +18,8 @@ public class NeoPushDTO {
     private List<PushBaseDTO> vitals;//体征
     private List<PushBaseDTO> lis;//实验室检查
     private List<PushBaseDTO> pacs;//辅助检查
+    // 鉴别诊断
+    private List<PushBaseDTO> differentialDis;
     /**
      * Map<String,List<NeoPushGeneralDTO>>
      *     operation:[  ]

+ 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;

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

@@ -0,0 +1,53 @@
+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, "手术");
+
+    @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;
+    }
+
+
+}

+ 29 - 3
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;
@@ -74,15 +76,39 @@ 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();
             //推送诊断
             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);
             }
 
         }