Browse Source

新增根据名称和词性获取概念Map

gaodm 6 năm trước cách đây
mục cha
commit
0d63f0b102

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

@@ -12,13 +12,19 @@ import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.ConceptServiceImpl;
+import com.diagbot.util.IntegerUtil;
+import com.diagbot.util.ListUtil;
 import com.diagbot.util.ParamConvertUtil;
 import com.diagbot.vo.ConceptBaseVO;
+import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptUsualVO;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description:
@@ -46,13 +52,52 @@ public class ConceptFacade extends ConceptServiceImpl {
         return concept;
     }
 
+    /**
+     * 根据名称和词性获取概念Map
+     *
+     * @param conceptSearchVO 搜索参数
+     * @return 术语和术语id Map
+     */
+    public Map<String, Long> getConceptMap(ConceptSearchVO conceptSearchVO) {
+        //入参验证
+        if (ListUtil.isEmpty(conceptSearchVO.getNameList())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "术语列表不能为空");
+        }
+
+        if (IntegerUtil.isNull(conceptSearchVO.getType())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "类型不能为空");
+        }
+
+        List<Integer> inputTyps = new ArrayList<>();
+        inputTyps.add(ConceptTypeEnum.Symptom.getKey());
+        inputTyps.add(ConceptTypeEnum.Vital.getKey());
+        inputTyps.add(ConceptTypeEnum.Lis.getKey());
+        inputTyps.add(ConceptTypeEnum.Pacs.getKey());
+
+        if (!inputTyps.contains(conceptSearchVO.getType())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "类型超出范围");
+        }
+        //获取结构
+        List<Concept> concepts
+                = this.getListByNamesAndType(conceptSearchVO.getNameList(),
+                ParamConvertUtil.conceptConvert2Lib(conceptSearchVO.getType()));
+
+        //出参封装
+        Map<String, Long> map = new HashMap<>();
+        if (ListUtil.isNotEmpty(concepts)) {
+            map = concepts.stream().collect(Collectors.toMap(r -> r.getLibName(), r -> r.getId()));
+        }
+        return map;
+    }
+
     /**
      * 根据名称和词性获取概念列表
+     *
      * @param nameList
      * @param libType
      * @return
      */
-    public List<Concept> getListByNamesAndType(List<String> nameList,Integer libType) {
+    public List<Concept> getListByNamesAndType(List<String> nameList, Integer libType) {
         QueryWrapper<Concept> conceptQueryWrapper = new QueryWrapper<>();
         conceptQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .in("lib_name", nameList)
@@ -67,7 +112,7 @@ public class ConceptFacade extends ConceptServiceImpl {
      * @param conceptUsualVO
      * @return
      */
-    public List<ConceptBaseDTO> getConceptUsual(ConceptUsualVO conceptUsualVO){
+    public List<ConceptBaseDTO> getConceptUsual(ConceptUsualVO conceptUsualVO) {
         //入参验证
         List<Integer> inputTyps = new ArrayList<>();
         inputTyps.add(ConceptTypeEnum.Symptom.getKey());
@@ -75,8 +120,8 @@ public class ConceptFacade extends ConceptServiceImpl {
         inputTyps.add(ConceptTypeEnum.Lis.getKey());
         inputTyps.add(ConceptTypeEnum.Pacs.getKey());
 
-        if (!inputTyps.contains(conceptUsualVO.getType())){
-            throw new CommonException(CommonErrorCode.NOT_EXISTS,"超出范围");
+        if (!inputTyps.contains(conceptUsualVO.getType())) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "超出范围");
         }
 
         //获取标签内容
@@ -92,7 +137,7 @@ public class ConceptFacade extends ConceptServiceImpl {
         List<ConceptBaseDTO> list = new ArrayList();
         //封装
         ConceptBaseDTO conceptBaseDTO = new ConceptBaseDTO();
-        for (ConceptWithOrderRes conceptWithOrderRes: concepts) {
+        for (ConceptWithOrderRes conceptWithOrderRes : concepts) {
             conceptBaseDTO = new ConceptBaseDTO();
             conceptBaseDTO.setConceptId(conceptWithOrderRes.getEndId());
             conceptBaseDTO.setName(conceptWithOrderRes.getEndName());

+ 22 - 0
aipt-service/src/main/java/com/diagbot/vo/ConceptSearchVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/5/6 18:50
+ */
+@Getter
+@Setter
+public class ConceptSearchVO {
+    //术语列表
+    private List<String> nameList;
+    //类型
+    private Integer type;
+}

+ 17 - 0
aipt-service/src/main/java/com/diagbot/web/ConceptController.java

@@ -5,6 +5,7 @@ import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.ConceptFacade;
+import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptUsualVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -44,4 +46,19 @@ public class ConceptController {
         List<ConceptBaseDTO> data = conceptFacade.getConceptUsual(conceptUsualVO);
         return RespDTO.onSuc(data);
     }
+
+    /**
+     * 根据名称和词性获取概念Map
+     *
+     * @param conceptSearchVO 搜索参数
+     * @return 术语和术语id Map
+     */
+    @ApiOperation(value = "知识库标准化-根据名称和词性获取概念列表[by:gaodm]",
+            notes = "nameList: 术语列表<br>" +
+                    "type:类型(1:症状 4:查体,5:化验 6:辅检),必填<br>")
+    @PostMapping("/getConceptMap")
+    @SysLogger("getConceptMap")
+    public RespDTO<Map<String, Long>> getConceptMap(@RequestBody ConceptSearchVO conceptSearchVO){
+        return RespDTO.onSuc(conceptFacade.getConceptMap(conceptSearchVO));
+    }
 }

+ 14 - 0
common/src/main/java/com/diagbot/util/IntegerUtil.java

@@ -21,4 +21,18 @@ public class IntegerUtil {
         }
         return val;
     }
+
+    /**
+     * 判断Integer是否为空
+     *
+     * @param in
+     * @return
+     */
+    public static boolean isNull(Integer in) {
+        if (null == in) {
+            return Boolean.TRUE;
+        }
+        return Boolean.FALSE;
+    }
+
 }

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

@@ -14,6 +14,7 @@ import com.diagbot.dto.DiseaseIcdDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.ScaleContent;
 import com.diagbot.vo.ConceptIntroduceVO;
+import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptUsualVO;
 import com.diagbot.vo.DeptInfoVO;
 import com.diagbot.vo.DisScaleVO;
@@ -75,4 +76,13 @@ public interface AiptServiceClient {
      */
     @PostMapping("/diseaseIcd/getDiseaseIcds")
     RespDTO<List<DiseaseIcdDTO>> getDiseaseIcds(@RequestBody GetDiseaseIcdVO getDiseaseIcdVO);
+
+    /**
+     * 根据名称和词性获取概念Map
+     *
+     * @param conceptSearchVO 搜索参数
+     * @return 术语和术语id Map
+     */
+    @PostMapping("/concept/getConceptMap")
+    RespDTO<Map<String, Long>> getConceptMap(@RequestBody ConceptSearchVO conceptSearchVO);
 }

+ 13 - 0
icss-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java

@@ -14,6 +14,7 @@ import com.diagbot.dto.DiseaseIcdDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.ScaleContent;
 import com.diagbot.vo.ConceptIntroduceVO;
+import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptUsualVO;
 import com.diagbot.vo.DeptInfoVO;
 import com.diagbot.vo.DisScaleVO;
@@ -113,4 +114,16 @@ public class AiptServiceHystrix implements AiptServiceClient {
         log.error("【hystrix】调用{}异常", "getDiseaseIcds");
         return null;
     }
+
+    /**
+     * 根据名称和词性获取概念Map
+     *
+     * @param conceptSearchVO 搜索参数
+     * @return 术语和术语id Map
+     */
+    @Override
+    public RespDTO<Map<String, Long>> getConceptMap(@RequestBody ConceptSearchVO conceptSearchVO){
+        log.error("【hystrix】调用{}异常", "getConceptMap");
+        return null;
+    }
 }

+ 20 - 0
icss-service/src/main/java/com/diagbot/vo/ConceptSearchVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/5/6 18:50
+ */
+@Getter
+@Setter
+public class ConceptSearchVO {
+    //术语列表
+    private List<String> nameList;
+    //类型
+    private Integer type;
+}