Browse Source

分诊只有一个症状时推两个科室

zhaops 5 years ago
parent
commit
40787dbca3

+ 10 - 0
triage-service/src/main/java/com/diagbot/client/AiptServiceClient.java

@@ -7,6 +7,7 @@ import com.diagbot.client.hystrix.AiptServiceHystrix;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.ConceptRetrievalExtDTO;
+import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.PartSymptomDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.UsualDTO;
@@ -18,6 +19,7 @@ import com.diagbot.vo.VersionVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.validation.Valid;
 import java.util.List;
@@ -89,4 +91,12 @@ public interface AiptServiceClient {
     @PostMapping("/versionInfo/getVersionInfoAlls")
     RespDTO<VersionWrapperDTO> getVersionInfoAlls(@RequestBody VersionVO versionVO);
 
+    /**
+     * 症状特征提取
+     *
+     * @param text
+     * @return
+     */
+    @PostMapping(value = "/feature/symptomFeature")
+    RespDTO<List<FeatureConceptDTO>> symptomFeature(@RequestParam("text") String text);
 }

+ 15 - 0
triage-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java

@@ -7,6 +7,7 @@ import com.diagbot.client.AiptServiceClient;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.ConceptRetrievalExtDTO;
+import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.PartSymptomDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.UsualDTO;
@@ -18,6 +19,7 @@ import com.diagbot.vo.VersionVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.validation.Valid;
 import java.util.List;
@@ -86,4 +88,17 @@ public class AiptServiceHystrix implements AiptServiceClient {
         log.error("【hystrix】调用{}异常", "getVersionInfoAlls");
         return null;
     }
+
+
+    /**
+     * 症状特征提取
+     *
+     * @param text
+     * @return
+     */
+    @Override
+    public RespDTO<List<FeatureConceptDTO>> symptomFeature(@RequestParam("text") String text) {
+        log.error("【hystrix】调用{}异常", "symptomFeature");
+        return null;
+    }
 }

+ 18 - 0
triage-service/src/main/java/com/diagbot/dto/FeatureConceptDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/13 15:41
+ */
+@Getter
+@Setter
+public class FeatureConceptDTO extends ConceptBaseDTO {
+    private Integer libType;
+    private Integer type;
+    private Long id;
+    private Integer chronicLabel;//是否慢病复诊标志
+}

+ 10 - 1
triage-service/src/main/java/com/diagbot/facade/AIFacade.java

@@ -8,6 +8,7 @@ import com.diagbot.client.AiptServiceClient;
 import com.diagbot.client.TranServiceClient;
 import com.diagbot.dto.AIDTO;
 import com.diagbot.dto.DiseaseDeptDTO;
+import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.FeatureRateDTO;
 import com.diagbot.dto.HospitalDeptDTO;
 import com.diagbot.dto.RespDTO;
@@ -53,6 +54,8 @@ public class AIFacade {
     private AiptServiceClient aiptServiceClient;
     @Autowired
     private TranServiceClient tranServiceClient;
+    @Autowired
+    private FeatureFacade featureFacade;
 
     /**
      * 调用ai接口业务逻辑
@@ -186,6 +189,10 @@ public class AIFacade {
         if (StringUtil.isBlank(aivo.getHospitalCode())) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请输入医院编码");
         }
+        //判断症状个数
+        List<FeatureConceptDTO> featureConceptDTOList = featureFacade.getSymptomFeature(aivo.getSymptom());
+        Integer symptomSize = ListUtil.isEmpty(featureConceptDTOList) ? 0 : featureConceptDTOList.size();
+
         RespDTO<ResponseDataWithExplain> res = aiptServiceClient.pushWithExplain(assembleData(aivo, type));
         RespDTOUtil.respNGDealCover(res, "中间层没有结果返回");
         SYFDTO syfdto = new SYFDTO();
@@ -341,10 +348,12 @@ public class AIFacade {
                         if (StringUtil.isBlank(syfDiseaseDeptDTO.getDept())) {
                             continue;
                         }
+                        //输入症状不止一个
                         //第一个科室概率小于0.3,两个科室都推
                         //第一个科室概率大于0.3,第二个科室概率大于等于0.15,两个都推
                         //第一个科室概率大于0.3,第二个科室概率小于0.15,只推第一个
-                        if (items.size() == 1
+                        if (symptomSize != 1
+                                && items.size() == 1
                                 && Double.valueOf(items.get(0).getRate()) > 0.3d
                                 && Double.valueOf(syfDiseaseDeptDTO.getRate()) < 0.15d) {
                             break;

+ 43 - 0
triage-service/src/main/java/com/diagbot/facade/FeatureFacade.java

@@ -0,0 +1,43 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.AiptServiceClient;
+import com.diagbot.dto.FeatureConceptDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/2/26 13:27
+ */
+@Component
+public class FeatureFacade {
+    @Autowired
+    private AiptServiceClient aiptServiceClient;
+
+    /**
+     * 症状关键词提取
+     *
+     * @param text
+     * @return
+     */
+    public List<FeatureConceptDTO> getSymptomFeature(String text) {
+        RespDTO<List<FeatureConceptDTO>> res = aiptServiceClient.symptomFeature(text);
+        RespDTOUtil.respNGDealCover(res, "AI没有返回结果");
+        List<FeatureConceptDTO> symptomFeatureList = res.data;
+        if (ListUtil.isNotEmpty(symptomFeatureList)) {
+            symptomFeatureList = symptomFeatureList
+                    .stream()
+                    .filter(i -> i.getLibType().equals(1))
+                    .collect(Collectors.toList());
+
+        }
+        return symptomFeatureList;
+    }
+}