Explorar o código

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/diagbot/facade/NeoFacade.java
MarkHuang %!s(int64=4) %!d(string=hai) anos
pai
achega
60592bf17f

+ 23 - 0
src/main/java/com/diagbot/client/ChiefPresentSimilarityServiceClient.java

@@ -0,0 +1,23 @@
+package com.diagbot.client;
+
+
+import com.diagbot.vo.ChiefPresentSimilarityVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+
+/**
+ * @Description: 调用主诉现病史症状相似度服务
+ * @author: 胡敬
+ * @time: 2020/06/01 15:41
+ */
+@FeignClient(value = "ChiefPresentSimilarity-service", url="${ChiefPresentSimilarity.url}")
+public interface ChiefPresentSimilarityServiceClient {
+
+    @PostMapping(value = "/api/mr_info_ex/chief_present_similarity")
+    String getAnnotation(@RequestBody ChiefPresentSimilarityVo chiefPresentSimilarityVo);
+}
+
+
+

+ 17 - 0
src/main/java/com/diagbot/client/hystrix/ChiefPresentSimilarityServiceHystrix.java

@@ -0,0 +1,17 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.ChiefPresentSimilarityServiceClient;
+import com.diagbot.vo.ChiefPresentSimilarityVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class ChiefPresentSimilarityServiceHystrix implements ChiefPresentSimilarityServiceClient {
+
+    @Override
+    public String getAnnotation(ChiefPresentSimilarityVo chiefPresentSimilarityVo) {
+        log.error("【hystrix】调用{}异常", "Similarity-getAnnotation");
+        return null;
+    }
+}

+ 71 - 5
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -1,12 +1,26 @@
 package com.diagbot.facade;
 
+import com.alibaba.fastjson.JSONArray;
+import com.diagbot.client.ChiefPresentSimilarityServiceClient;
 import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.DrugBillNeoDTO;
 import com.diagbot.dto.LisBillNeoDTO;
 import com.diagbot.dto.PacsBillNeoDTO;
 import com.diagbot.dto.PushDTO;
-import com.diagbot.entity.node.*;
-import com.diagbot.repository.*;
+import com.diagbot.entity.node.Disease;
+import com.diagbot.entity.node.LIS;
+import com.diagbot.entity.node.Medicine;
+import com.diagbot.entity.node.PACS;
+import com.diagbot.enums.StandConvertEnum;
+import com.diagbot.model.ai.ModelAI;
+import com.diagbot.repository.DiseaseNode;
+import com.diagbot.repository.DiseaseRepository;
+import com.diagbot.repository.LISNode;
+import com.diagbot.repository.LisRepository;
+import com.diagbot.repository.MedicineNode;
+import com.diagbot.repository.MedicineRepository;
+import com.diagbot.repository.PACSNode;
+import com.diagbot.repository.PacsRepository;
 import com.diagbot.vo.BillNeoVO;
 import com.diagbot.vo.PushNeoVO;
 import com.diagbot.vo.StandConvert;
@@ -14,7 +28,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Component;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 图谱facade
@@ -34,6 +53,8 @@ public class NeoFacade {
     DiseaseRepository diseaseRepository;
     @Autowired
     MedicineCodeRepository medicineCodeRepository;
+    @Autowired
+    ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
 
 
     /**
@@ -243,8 +264,53 @@ public class NeoFacade {
      * @return  Map<String, Map<String, String>> -->Map<类型, Map<原始词, 标准词>>
      */
     public Map<Integer, Map<String, String>> standConvert(StandConvert standConvert) {
-        // TODO 待处理业务
-        return new HashMap<>();
+        Map<Integer, Map<String, String>> map = new LinkedHashMap<>();
+
+        /* 文本相似度模型 */
+        ModelAI modelAI = new ModelAI();
+
+        List<String> list = standConvert.getClinicalList();
+        Map<String, String > clinicalMap = getStandConvertTypeMap(modelAI, list, "chief_present");
+        map.put(StandConvertEnum.clinical.getKey(), clinicalMap);
+
+        return map;
+    }
+
+    /**
+     * 获取指定类型的map数据
+     *
+     * @param modelAI
+     * @param list
+     * @param modelName
+     * @return
+     */
+    public Map<String, String> getStandConvertTypeMap(ModelAI modelAI, List<String> list, String modelName) {
+        Map<String, String> map = new LinkedHashMap<>();
+        for (String s : list) {
+            JSONArray jsonArray = modelAI.loadChiefPresentSimilarAI(s, list,
+                    false, modelName, chiefPresentSimilarityServiceClient);
+            putMap(jsonArray, s, map);
+        }
+        return map;
+    }
+
+    /**
+     * 提取方法
+     * @param jsonArray
+     * @param originName
+     * @param map
+     */
+    public void putMap(JSONArray jsonArray, String originName, Map<String, String> map) {
+        if (jsonArray.size() == 2) {
+            double likeRate = jsonArray.getDoubleValue(1);
+            // System.out.println(originName + " " + likeRate);
+            if (likeRate > 0.9) {
+                String standName = jsonArray.getString(0);
+                map.put(originName, standName);
+            } else {
+                map.put(originName, originName);
+            }
+        }
     }
 
 }

+ 8 - 5
src/main/java/com/diagbot/model/ai/ModelAI.java

@@ -4,10 +4,13 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.diagbot.client.CRFServiceClient;
+import com.diagbot.client.ChiefPresentSimilarityServiceClient;
 import com.diagbot.model.entity.Annotation;
+import com.diagbot.model.entity.ChiefPresentAnnotation;
 import com.diagbot.util.CatalogueUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.CRFVo;
+import com.diagbot.vo.ChiefPresentSimilarityVo;
 import lombok.extern.slf4j.Slf4j;
 
 import java.util.List;
@@ -20,6 +23,7 @@ import java.util.List;
  */
 @Slf4j
 public class ModelAI {
+
     /**
      * 获取CRF返回数据
      *
@@ -176,10 +180,9 @@ public class ModelAI {
      *
      * @param string1
      * @param string2
-     * @param chiefPresentSimilarityServiceClient
      * @return
      */
-   /* public JSONArray loadChiefPresentSimilarAI(String string1, List<String> string2, boolean directionCheck
+    public JSONArray loadChiefPresentSimilarAI(String string1, List<String> string2, boolean directionCheck
             , String modelName, ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient) {
         //存储CRF完整所需结构数据
         ChiefPresentSimilarityVo similarityVo = new ChiefPresentSimilarityVo();
@@ -193,13 +196,13 @@ public class ModelAI {
         return getChiefPresentSimilarOutputs(predY);
     }
 
-    *//**
+    /**
      * 主诉现病史相似度接口返回
      *
      * @param chiefPresentSimilarityServiceClient
      * @param chiefPresentSimilarityVo
      * @return
-     *//*
+     */
     private ChiefPresentAnnotation getAnnotation(ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient,
                                                  ChiefPresentSimilarityVo chiefPresentSimilarityVo) {
         ChiefPresentAnnotation annotation = new ChiefPresentAnnotation();
@@ -211,7 +214,7 @@ public class ModelAI {
         } finally {
             return annotation;
         }
-    }*/
+    }
 
     /**
      * 获取主诉现病史文本相似度模型输出并处理

+ 13 - 0
src/main/java/com/diagbot/vo/ChiefPresentSimilarityVo.java

@@ -0,0 +1,13 @@
+package com.diagbot.vo;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class ChiefPresentSimilarityVo {
+    private JSONObject data;
+    private boolean direction_check;
+    private String model_name;
+}

+ 11 - 0
src/main/java/com/diagbot/vo/SimilarityVo.java

@@ -0,0 +1,11 @@
+package com.diagbot.vo;
+
+import com.alibaba.fastjson.JSONArray;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class SimilarityVo {
+    private JSONArray data = new JSONArray();
+}

+ 4 - 0
src/main/resources/application-local.yml

@@ -147,3 +147,7 @@ swagger:
 
 CRF:
   url: http://192.168.2.234:3456
+
+
+ChiefPresentSimilarity:
+  url: http://192.168.2.234:3456