ソースを参照

Merge remote-tracking branch 'origin/dev/icssNCD' into dev/icssNCD

# Conflicts:
#	icss-service/src/main/java/com/diagbot/vo/PushVO.java
zhoutg 6 年 前
コミット
5d7fc0bbb7

+ 48 - 0
icss-service/src/main/java/com/diagbot/facade/DisTypeFacade.java

@@ -1,11 +1,17 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.DisDTO;
 import com.diagbot.dto.DisTypeDTO;
+import com.diagbot.entity.DisType;
+import com.diagbot.entity.QuestionInfo;
 import com.diagbot.enums.DisTypeEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.QuestionTypeEnum;
 import com.diagbot.service.impl.DisTypeServiceImpl;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -18,6 +24,8 @@ import java.util.Map;
  */
 @Component
 public class DisTypeFacade extends DisTypeServiceImpl {
+    @Autowired
+    private QuestionFacade questionFacade;
 
     /**
      * 返回诊断类型
@@ -40,4 +48,44 @@ public class DisTypeFacade extends DisTypeServiceImpl {
         }
         return res;
     }
+
+    /**
+     * 根据诊断id判断类型
+     *
+     * @param diseaseId
+     * @param type
+     * @return
+     */
+    public Boolean judgeByDisId(Long diseaseId, Integer type) {
+        QueryWrapper<DisType> disTypeQueryWrapper = new QueryWrapper<>();
+        disTypeQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("dis_id", diseaseId)
+                .eq("type", type);
+        DisType disType = this.getOne(disTypeQueryWrapper);
+        if (disType == null) {
+            return false;
+        } else {
+            return true;
+        }
+    }
+
+    /**
+     * 根据诊断名称判断类型
+     *
+     * @param disName
+     * @param type
+     * @return
+     */
+    public Boolean judgeByDisName(String disName, Integer type) {
+        QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
+        questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("tag_name", disName)
+                .eq("type", QuestionTypeEnum.Disease.getKey());
+        QuestionInfo disease = questionFacade.getOne(questionInfoQueryWrapper);
+        if (disease == null) {
+            return false;
+        } else {
+            return judgeByDisId(disease.getId(), type);
+        }
+    }
 }

+ 44 - 1
icss-service/src/main/java/com/diagbot/facade/IntroduceMapFacade.java

@@ -1,6 +1,11 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.IntroduceMap;
+import com.diagbot.entity.QuestionInfo;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.IntroduceMapServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 /**
@@ -10,4 +15,42 @@ import org.springframework.stereotype.Component;
  */
 @Component
 public class IntroduceMapFacade extends IntroduceMapServiceImpl {
-}
+    @Autowired
+    QuestionFacade questionFacade;
+
+    /**
+     * 根据标签id和类型判断时候有关联静态知识
+     *
+     * @param questionId
+     * @param type
+     * @return
+     */
+    public Boolean hasIntroduceByQuestionId(Long questionId, Integer type) {
+        QueryWrapper<IntroduceMap> introduceMapQueryWrapper = new QueryWrapper<>();
+        introduceMapQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("question_id", questionId).eq("type", type);
+        IntroduceMap introduceMap = this.getOne(introduceMapQueryWrapper);
+        if (introduceMap == null) {
+            return false;
+        } else {
+            return true;
+        }
+    }
+
+    /**
+     * 根据标签名称和类型判断时候有关联静态知识
+     *
+     * @param questionName
+     * @param type
+     * @return
+     */
+    public Boolean hasIntroduceByQuestionName(String questionName, Integer type) {
+        QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
+        questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("tag_name", questionName).eq("type", type);
+        QuestionInfo questionInfo = questionFacade.getOne(questionInfoQueryWrapper);
+        if (questionInfo == null) {
+            return false;
+        } else {
+            return hasIntroduceByQuestionId(questionInfo.getId(), type);
+        }
+    }
+}

+ 1 - 1
icss-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -237,7 +237,7 @@ public class PushFacade {
             if (pushVO.getDiseaseId() == null) {
                 throw new CommonException(CommonErrorCode.PARAM_ERROR, "请输入诊断id");
             }
-            Map<String, Object> treatmentMap = treatmentFacade.getTreatment(treat, pushVO.getDiseaseId());
+            Map<String, Object> treatmentMap = treatmentFacade.getTreatment(treat, pushVO.getDiseaseId(), pushVO.getPatientId());
             pushDTO.setTreat(treatmentMap);
         }
         return pushDTO;

+ 86 - 6
icss-service/src/main/java/com/diagbot/facade/TreatmentFacade.java

@@ -4,17 +4,26 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.bean.Medicition;
 import com.diagbot.client.bean.MedicitionClass;
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.entity.DisType;
+import com.diagbot.entity.InquiryDrug;
+import com.diagbot.entity.InquiryInfo;
 import com.diagbot.entity.IntroduceDetail;
 import com.diagbot.entity.IntroduceMap;
 import com.diagbot.entity.QuestionInfo;
+import com.diagbot.enums.DisTypeEnum;
 import com.diagbot.enums.IntroducePositionEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.QuestionTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.FastJsonUtils;
+import com.google.common.collect.Lists;
+import com.sun.org.apache.xpath.internal.operations.Bool;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
 import org.springframework.stereotype.Component;
 
 import java.util.LinkedHashMap;
@@ -36,6 +45,12 @@ public class TreatmentFacade {
     IntroduceDetailFacade introduceDetailFacade;
     @Autowired
     IntroduceMapFacade introduceMapFacade;
+    @Autowired
+    DisTypeFacade disTypeFacade;
+    @Autowired
+    InquiryInfoFacade inquiryInfoFacade;
+    @Autowired
+    InquiryDrugFacade inquiryDrugFacade;
 
     /**
      * 获取治疗方案
@@ -43,7 +58,7 @@ public class TreatmentFacade {
      * @param
      * @return
      */
-    public Map<String, Object> getTreatment(Map<String, JSONObject> treatmentMap, Long diseaseId) {
+    public Map<String, Object> getTreatment(Map<String, JSONObject> treatmentMap, Long diseaseId, Long patientId) {
         Map<String, Object> retMap = new LinkedHashMap<>();
         QuestionInfo disease = questionFacade.getById(diseaseId);
         if (disease == null) {
@@ -64,17 +79,13 @@ public class TreatmentFacade {
         List<IntroduceDetail> surgeryTreatmentDetailList = getIntroduceDetailList(diseaseId, IntroducePositionEnum.SurgeryTreatment.getKey());
         retMap.put("surgeryTreatment", surgeryTreatmentDetailList.size() > 0 ? surgeryTreatmentDetailList.get(0).getContent() : "");
 
+
         //获取知识图谱治疗方案
         JSONObject treatmentJson = treatmentMap.get(disease.getTagName());
         if (treatmentJson == null || treatmentJson.isEmpty()) {
             return retMap;
         }
 
-        /*JSONObject treatmentJson = diseaseJson.getJSONObject(disease.getTagName());
-        if (treatmentJson == null || treatmentJson.isEmpty()) {
-            return retMap;
-        }*/
-
         List<MedicitionClass> drugsList = FastJsonUtils.getJsonToListByKey(treatmentJson.toString(), "treatment", MedicitionClass.class);
 
         List<String> classNameList = drugsList.stream().map(drugs -> drugs.getBigdrugsName()).collect(Collectors.toList());
@@ -112,6 +123,24 @@ public class TreatmentFacade {
         }
 
         retMap.put("treatment", drugsList);
+
+        //判断是否慢病,慢病增加回访时间,上次用药,不良反应
+        Boolean isChronic = disTypeFacade.judgeByDisId(diseaseId, DisTypeEnum.CHRONIC.getKey());
+        if (isChronic) {
+            //慢病,增加回访时间,暂时前端写死, 以后由只是图谱返回
+            retMap.put("followUp", null);
+
+            //上次用药
+            if (patientId == null) {
+                retMap.put("drugHistory", null);
+            } else {
+                retMap.put("drugHistory", getDrugHistory(patientId));
+            }
+
+            //不良反应
+            retMap.put("adverseReactions", null);
+
+        }
         return retMap;
     }
 
@@ -166,4 +195,55 @@ public class TreatmentFacade {
         List<IntroduceMap> introduceMapList = introduceMapFacade.list(introduceMapQueryWrapper);
         return introduceMapList;
     }
+
+    /**
+     * 根据病人id获取历史用药内容
+     *
+     * @param patientId
+     * @return
+     */
+    public Map<String, List<Medicition>> getDrugHistory(Long patientId) {
+        Map<String, List<Medicition>> drugHistoryMap = new LinkedHashMap<>();
+        QueryWrapper<InquiryInfo> inquiryInfoQueryWrapper = new QueryWrapper<>();
+        inquiryInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
+                eq("patient_id", patientId).
+                orderByDesc("gmt_modified");
+        List<InquiryInfo> inquiryInfoList = inquiryInfoFacade.list(inquiryInfoQueryWrapper);
+        Boolean chronicHistroy = false;
+        Boolean not_chronicHistory = false;
+        for (InquiryInfo inquiryInfo : inquiryInfoList) {
+            String[] diseases = inquiryInfo.getDiagnose().split(",|,");
+            if (diseases.length > 0) {
+                QueryWrapper<InquiryDrug> inquiryDrugQueryWrapper = new QueryWrapper<>();
+                inquiryDrugQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("inquiry_id", inquiryInfo.getId());
+                List<InquiryDrug> inquiryDrugList = inquiryDrugFacade.list(inquiryDrugQueryWrapper);
+                List<Medicition> medicitionList = Lists.newLinkedList();
+                for (InquiryDrug inquiryDrug : inquiryDrugList) {
+                    Medicition medicition = new Medicition();
+                    medicition.setId(inquiryDrug.getQuestionId());
+                    medicition.setMedicitionName(inquiryDrug.getTagName());
+                    medicition.setIsShow("1");
+                    Boolean hasIntroduce = introduceMapFacade.hasIntroduceByQuestionName(inquiryDrug.getTagName(), QuestionTypeEnum.Drug.getKey());
+                    if (hasIntroduce) {
+                        medicition.setShowInfo("1");
+                    } else {
+                        medicition.setShowInfo("0");
+                    }
+                    medicitionList.add(medicition);
+                }
+                Boolean isChronic = disTypeFacade.judgeByDisName(diseases[0], DisTypeEnum.CHRONIC.getKey());
+                if (isChronic) {
+                    if (!chronicHistroy)
+                        drugHistoryMap.put("慢病用药内容", medicitionList);
+                    chronicHistroy = true;
+                } else {
+                    if (!not_chronicHistory) {
+                        drugHistoryMap.put("普通病用药内容", medicitionList);
+                        not_chronicHistory = true;
+                    }
+                }
+            }
+        }
+        return drugHistoryMap;
+    }
 }

+ 1 - 0
icss-service/src/main/java/com/diagbot/vo/PushVO.java

@@ -29,6 +29,7 @@ public class PushVO {
     private String past;
     private String other;
     private Long diseaseId;
+    private Long patientId;
     private String scaleName; //量表名称
     private Long scaleId;  //量表id
 }