Browse Source

icss-service获取常用标签

wangyu 6 years ago
parent
commit
89bf6e4f84

+ 1 - 1
aipt-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -81,7 +81,7 @@ public class ConceptFacade extends ConceptServiceImpl {
 
         //获取标签内容
         ConceptWrapper conceptWrapper = new ConceptWrapper();
-        conceptWrapper.setStartName(conceptUsualVO.getDeptName());//科室概念id
+        conceptWrapper.setStartName(conceptUsualVO.getDeptName());//科室名称
         conceptWrapper.setStartType(LexiconTypeEnum.DEPARTMENT.getKey());
         conceptWrapper.setRelationType(LexiconRSTypeEnum.ORDER_BY.getKey());
         conceptWrapper.setEndAge(conceptUsualVO.getAge());//年龄

+ 1 - 1
common/src/main/java/com/diagbot/util/RespDTOUtil.java

@@ -73,7 +73,7 @@ public class RespDTOUtil {
                 || null == respDTO.data
                 || !CommonErrorCode.OK.getCode().equals(respDTO.code)) {
             if (!isCover){
-                if (StringUtil.isNotBlank(respDTO.msg)) {
+                if (respDTO != null && StringUtil.isNotBlank(respDTO.msg)) {
                     throw new CommonException(CommonErrorCode.RPC_ERROR, respDTO.msg);
                 }
             }

+ 1 - 2
icss-service/src/main/java/com/diagbot/dto/QuestionUsualDTO.java

@@ -10,7 +10,6 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-public class QuestionUsualDTO{
+public class QuestionUsualDTO extends ConceptBaseDTO{
     private Long questionId;
-    private String name;
 }

+ 35 - 9
icss-service/src/main/java/com/diagbot/facade/QuestionUsualFacade.java

@@ -1,16 +1,24 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.client.AiptServiceClient;
+import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.QuestionUsualDTO;
-import com.diagbot.entity.DeptInfo;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.QuestionInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.QuestionUsualServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.ConceptUsualVO;
 import com.diagbot.vo.QuestionUsualVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description:
@@ -21,6 +29,10 @@ import java.util.List;
 public class QuestionUsualFacade extends QuestionUsualServiceImpl {
     @Autowired
     DeptInfoFacade deptInfoFacade;
+    @Autowired
+    AiptServiceClient aiptServiceClient;
+    @Autowired
+    QuestionFacade questionFacade;
 
     /**
      * 获取常用标签
@@ -29,14 +41,28 @@ public class QuestionUsualFacade extends QuestionUsualServiceImpl {
      * @return
      */
     public List<QuestionUsualDTO> getQuestionUsual(QuestionUsualVO questionUsualVO) {
-        List<QuestionUsualDTO> questionUsualDTOList = this.getQuestionUsualName(questionUsualVO);
-        if(ListUtil.isEmpty(questionUsualDTOList)){
-            QueryWrapper<DeptInfo> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("name","全科");
-            DeptInfo deptInfo = deptInfoFacade.getOne(queryWrapper);
-            questionUsualVO.setDeptId(deptInfo.getId());
-            questionUsualDTOList = this.getQuestionUsualName(questionUsualVO);
+        ConceptUsualVO conceptUsualVO = new ConceptUsualVO();
+        BeanUtil.copyProperties(questionUsualVO,conceptUsualVO);
+        //从知识库获取常用标签
+        RespDTO<List<ConceptBaseDTO>> conceptBaseDTORespDTO = aiptServiceClient.getConceptUsual(conceptUsualVO);
+        //如果该科室没有常用,返回全科常用
+        if( conceptBaseDTORespDTO != null && ListUtil.isEmpty(conceptBaseDTORespDTO.data)){
+            conceptUsualVO.setDeptName("全科");
+            conceptBaseDTORespDTO = aiptServiceClient.getConceptUsual(conceptUsualVO);
+        }
+        RespDTOUtil.respNGDeal(conceptBaseDTORespDTO,"获取常用标签失败");
+        //提取标签名称
+        List<String> conceptName = conceptBaseDTORespDTO.data.stream().map(ConceptBaseDTO::getName).collect(Collectors.toList());
+        //与question标签匹配
+        QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
+        questionInfoQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey())
+                .in("tag_name",conceptName)
+                .eq("type",questionUsualVO.getType());
+        List<QuestionInfo> questionInfoList = questionFacade.list(questionInfoQueryWrapper);
+        Map<String,QuestionInfo> questionInfoMap = questionInfoList.stream().collect(Collectors.toMap(QuestionInfo::getTagName,questionInfo -> questionInfo));
+        List<QuestionUsualDTO> questionUsualDTOList = BeanUtil.listCopyTo(conceptBaseDTORespDTO.data,QuestionUsualDTO.class);
+        for (QuestionUsualDTO questionUsualDTO: questionUsualDTOList) {
+            questionUsualDTO.setQuestionId(questionInfoMap.get(questionUsualDTO.getName()).getId());
         }
         return questionUsualDTOList;
     }

+ 2 - 2
icss-service/src/main/java/com/diagbot/vo/ConceptUsualVO.java

@@ -14,8 +14,8 @@ import javax.validation.constraints.NotNull;
 @Setter
 public class ConceptUsualVO {
 
-    @NotNull(message = "请输入科室id")
-    private Long deptId;
+    @NotNull(message = "请输入科室名称")
+    private String deptName;
     @NotNull(message = "请输入病人年龄")
     private Integer age;
     @NotNull(message = "请输入病人性别")

+ 2 - 2
icss-service/src/main/java/com/diagbot/vo/QuestionUsualVO.java

@@ -14,8 +14,8 @@ import javax.validation.constraints.NotNull;
 @Setter
 public class QuestionUsualVO {
 
-    @NotNull(message = "请输入科室id")
-    private Long deptId;
+    @NotNull(message = "请输入科室名称")
+    private String deptName;
     @NotNull(message = "请输入病人年龄")
     private Integer age;
     @NotNull(message = "请输入病人性别")

+ 1 - 1
icss-service/src/main/java/com/diagbot/web/QuestionUsualController.java

@@ -35,7 +35,7 @@ public class QuestionUsualController {
     private QuestionUsualFacade questionUsualFacade;
 
     @ApiOperation(value = "知识库标准化-常用标签——根据科室获取常用标签[by:wangyu]",
-            notes = "deptId:科室id<br>" +
+            notes = "deptName:科室名称<br>" +
                     "age:年龄<br>" +
                     "sexType: 性别<br>" +
                     "type:类型(1:症状 3:其他史 4:查体,5:化验 6:辅检 7:诊断),必填<br>")