Forráskód Böngészése

添加下的诊断反推逻辑(第一个诊断)

kongwz 4 éve
szülő
commit
0ba5dcce38

+ 9 - 11
src/main/java/com/diagbot/dto/PushDTO.java

@@ -3,8 +3,6 @@ package com.diagbot.dto;
 import lombok.Getter;
 import lombok.Setter;
 
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -17,24 +15,24 @@ import java.util.Map;
 @Setter
 public class PushDTO {
     //症状
-    private List<PushBaseDTO> symptom = new ArrayList<>();
+    private List<PushBaseDTO> symptom;
     //体格检查
-    private List<PushBaseDTO> vital = new ArrayList<>();
+    private List<PushBaseDTO> vital;
     //检验
-    private List<PushBaseDTO> lis = new ArrayList<>();
+    private List<PushBaseDTO> lis;
     //检查
-    private List<PushBaseDTO> pacs = new ArrayList<>();
+    private List<PushBaseDTO> pacs;
     // 手术
-    private List<PushBaseDTO> operations = new ArrayList<>();
+    private List<PushBaseDTO> operations;
     // 药品
-    private List<PushBaseDTO> medicines = new ArrayList<>();
+    private List<PushBaseDTO> medicines;
     // 并发症
-    private List<PushBaseDTO> complications = new ArrayList<>();
+    private List<PushBaseDTO> complications;
     //诊断
     private Map<String, List<PushBaseDTO>> dis;
     //一般治疗
-    private List<TreatDTO> treat = new ArrayList<>();
+    private List<TreatDTO> treat;
 
     // 记录调试信息
-    private Map<String, Object> debug = new LinkedHashMap<>();
+    private Map<String, Object> debug;
 }

+ 3 - 0
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -908,6 +908,9 @@ public class NeoFacade {
                     case "医保疾病名称相关体征":
                         neoPushDTO.setVitals(col.stream().map(x -> NeoUtil.updatePushInfo(x)).collect(Collectors.toList()));
                         break;
+                    case "医保疾病名称相关鉴别诊断":
+                        neoPushDTO.setDifferentialDis(col.stream().map(x -> NeoUtil.updatePushInfo(x)).collect(Collectors.toList()));
+                        break;
                     default:
                         break;
                 }

+ 64 - 16
src/main/java/com/diagbot/process/PushProcess.java

@@ -11,11 +11,14 @@ import com.diagbot.dto.icss.ResponseData;
 import com.diagbot.entity.PreResult;
 import com.diagbot.enums.DiseaseTypeEnum;
 import com.diagbot.enums.MedicalAdviceEnum;
+import com.diagbot.enums.RedisEnum;
 import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.facade.CommonFacade;
 import com.diagbot.facade.NeoFacade;
 import com.diagbot.facade.TranLisConfigIcssFacade;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.RedisUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.IcssVo;
 import com.diagbot.vo.NeoPushVO;
 import com.diagbot.vo.PushVO;
@@ -29,6 +32,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.lang.reflect.Field;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -48,6 +52,8 @@ public class PushProcess {
     TranLisConfigIcssFacade tranLisConfigIcssFacade;
     @Autowired
     IcssPushServiceClient icssPushServiceClient;
+    @Autowired
+    RedisUtil redisUtil;
 
 
     public PushDTO processIcss(PushVO pushVo){
@@ -96,37 +102,78 @@ public class PushProcess {
             collect.add(treatDTO);
             pushDTO.setTreat(collect);
         }
-        if (ListUtil.isNotEmpty(pushDiags)) {
-            //先把所有疾病推出来
-            if (ruleTypeList.contains("7")) {
-                List<PushBaseDTO> diseeases =  pushDiags.stream().map(x -> {
-                    PushBaseDTO pushBaseDTO = new PushBaseDTO();
-                    pushBaseDTO.setName(x);
-                    return pushBaseDTO;
-                }).collect(Collectors.toList());
-                diseeases = diseeases.subList(0, diseeases.size() >= length ? length : diseeases.size());
-                dis.put(DiseaseTypeEnum.possibleDis.getName(), diseeases);
-                pushDTO.setDis(dis);
-
-            }
+        if(ListUtil.isNotEmpty(icssVo.getDiagOrder())){
+            List<PreResult> diagOrder = icssVo.getDiagOrder();
             //把第一个推送出来的诊断set到diagOrder中,再反推
             NeoPushVO pushVO = new NeoPushVO();
             DiagVo diagVo = new DiagVo();
-            diagVo.setDiags(pushDiags.stream().map(x ->{
+            diagVo.setDiags(diagOrder.stream().map(x ->{
+                String name = x.getName();
                 Diag diag = new Diag();
-                diag.setName(x);
+                String o = (String)redisUtil.get(RedisEnum.diseaseCorrespond.getName() + name);
+                name = StringUtil.isNotBlank(o)?o:name;
+                diag.setName(name);
                 return diag;
             }).collect(Collectors.toList()));
             pushVO.setDiagVo(diagVo);
-            //调用反推
             reversePushPackage(length, pushDTO, ruleTypeList, typeWords, pushVO, dis);
+        }
+        try {
+            boolean allFieldNull = isAllFieldNull(pushDTO);
+            if(allFieldNull){
+                if (ListUtil.isNotEmpty(pushDiags)) {
+                    //先把所有疾病推出来
+                    if (ruleTypeList.contains("7")) {
+                        List<PushBaseDTO> diseeases =  pushDiags.stream().map(x -> {
+                            PushBaseDTO pushBaseDTO = new PushBaseDTO();
+                            pushBaseDTO.setName(x);
+                            return pushBaseDTO;
+                        }).collect(Collectors.toList());
+                        diseeases = diseeases.subList(0, diseeases.size() >= length ? length : diseeases.size());
+                        dis.put(DiseaseTypeEnum.possibleDis.getName(), diseeases);
+                        pushDTO.setDis(dis);
 
+                    }
+                    //把第一个推送出来的诊断set到diagOrder中,再反推
+                    NeoPushVO pushVO = new NeoPushVO();
+                    DiagVo diagVo = new DiagVo();
+                    diagVo.setDiags(pushDiags.stream().map(x ->{
+                        Diag diag = new Diag();
+                        diag.setName(x);
+                        return diag;
+                    }).collect(Collectors.toList()));
+                    pushVO.setDiagVo(diagVo);
+                    //调用反推
+                    reversePushPackage(length, pushDTO, ruleTypeList, typeWords, pushVO, dis);
+
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
 
 
+
+
         return pushDTO;
     }
 
+    //判断该对象是否: 返回ture表示所有属性为null  返回false表示不是所有属性都是null
+    public static boolean isAllFieldNull(Object obj) throws Exception{
+        Class stuCla = (Class) obj.getClass();// 得到类对象
+        Field[] fs = stuCla.getDeclaredFields();//得到属性集合
+        boolean flag = true;
+        for (Field f : fs) {//遍历属性
+            f.setAccessible(true); // 设置属性是可以访问的(私有的也可以)
+            Object val = f.get(obj);// 得到此属性的值
+            if(val!=null) {//只要有1个属性不为空,那么就不是所有的属性值都为空
+                flag = false;
+                break;
+            }
+        }
+        return flag;
+    }
+
     /**
      * pushVo转Icss入参
      * @param pushVo
@@ -176,6 +223,7 @@ public class PushProcess {
             List<PreResult> diagOrder =  pushVo.getDiag().stream().map(x ->{
                 String name = x.getName();
                 PreResult preResult = new PreResult();
+                preResult.setName(name);
                 preResult.setValue(name);
                 return preResult;
             }).collect(Collectors.toList());