Explorar o código

智能分诊修改

wangyu %!s(int64=6) %!d(string=hai) anos
pai
achega
4e888a2656

+ 30 - 0
aipt-service/src/main/java/com/diagbot/dto/RetrievalDTO.java

@@ -0,0 +1,30 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2018/11/27 14:58
+ */
+@Getter
+@Setter
+public class RetrievalDTO {
+    //标签名称
+    private String name;
+    //标签id
+    private Long questionId;
+    //显示类型
+    private Long showType;
+    //Tag名称
+    private String retrievalName;
+    //概念id
+    private Long conceptId;
+    //标签类型id
+    private Long libTypeId;
+    //标签类型名称
+    private String libTypeName;
+    //icss标签type
+    private Integer type;
+}

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

@@ -2,8 +2,9 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.ConceptBaseDTO;
-import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.ConceptRetrievalDTO;
+import com.diagbot.dto.ConceptWithOrderRes;
+import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -13,13 +14,18 @@ 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.BeanUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ParamConvertUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptExistVO;
 import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptUsualVO;
+import com.diagbot.vo.ExistListByConceptIdsVO;
+import com.diagbot.vo.GetStaticKnowledgeVO;
 import com.diagbot.vo.RetrievalVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -35,6 +41,8 @@ import java.util.stream.Collectors;
  */
 @Component
 public class ConceptFacade extends ConceptServiceImpl {
+    @Autowired
+    ConceptDetailFacade conceptDetailFacade;
 
     /**
      * 验证存在并且获取概念基本信息
@@ -220,4 +228,55 @@ public class ConceptFacade extends ConceptServiceImpl {
         return conceptRetrievalDTOS;
     }
 
+
+    /**
+     * 静态知识标签检索
+     *
+     * @param getStaticKnowledgeVO
+     * @return
+     */
+    public List<RetrievalDTO> getStaticKnowledge(GetStaticKnowledgeVO getStaticKnowledgeVO){
+        List<RetrievalDTO> retrievalDTOS = new ArrayList<>();
+        RetrievalVO retrievalVO = new RetrievalVO();
+        RetrievalDTO retrievalDTO = new RetrievalDTO();
+        BeanUtil.copyProperties(getStaticKnowledgeVO,retrievalVO);
+        //获取标签信息
+        List<ConceptRetrievalDTO> conceptRetrievalDTOList = this.retrivelConceptInfo(retrievalVO);
+        List<RetrievalDTO> staticRetrievalList = new ArrayList<>();
+        if (ListUtil.isNotEmpty(conceptRetrievalDTOList)) {
+            //封装
+            for (ConceptRetrievalDTO conceptRetrievalDTO : conceptRetrievalDTOList) {
+                retrievalDTO = new RetrievalDTO();
+                retrievalDTO.setConceptId(conceptRetrievalDTO.getSelfId());
+                retrievalDTO.setName(conceptRetrievalDTO.getSelfName());
+                if (StringUtil.isNotEmpty(conceptRetrievalDTO.getParentName())) {//parent不为空时说明有子项,返回父级id
+                    retrievalDTO.setName(conceptRetrievalDTO.getParentName());
+                    retrievalDTO.setRetrievalName(conceptRetrievalDTO.getSelfName());
+                }
+                if (StringUtil.isNotEmpty(conceptRetrievalDTO.getSameName())) {//同义词
+                    retrievalDTO.setRetrievalName(conceptRetrievalDTO.getSameName());
+                }
+                retrievalDTO.setLibTypeId(conceptRetrievalDTO.getLibTypeId());
+                retrievalDTO.setLibTypeName(conceptRetrievalDTO.getLibTypeName());
+                retrievalDTO.setType(conceptRetrievalDTO.getType());
+                retrievalDTO.setShowType(conceptRetrievalDTO.getShowType());
+                retrievalDTOS.add(retrievalDTO);
+            }
+        }
+        //判断是否存在静态知识
+        List<Long> cenceptIdList = retrievalDTOS.stream().map(RetrievalDTO::getConceptId).collect(Collectors.toList());
+        ExistListByConceptIdsVO existListByConceptIdsVO = new ExistListByConceptIdsVO();
+        existListByConceptIdsVO.setConceptIds(cenceptIdList);
+        List<Long> existConceptIdList = conceptDetailFacade.existListByConceptIds(existListByConceptIdsVO);
+        for (RetrievalDTO retrievalDTOInfo : retrievalDTOS) {
+            for (Long concept : existConceptIdList) {
+                if (retrievalDTOInfo.getConceptId().intValue() == concept.intValue()){
+                    retrievalDTO = new RetrievalDTO();
+                    BeanUtil.copyProperties(retrievalDTOInfo,retrievalDTO);
+                    staticRetrievalList.add(retrievalDTO);
+                }
+            }
+        }
+        return staticRetrievalList;
+    }
 }

+ 20 - 0
aipt-service/src/main/java/com/diagbot/vo/GetStaticKnowledgeVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2019/5/24 9:23
+ */
+@Getter
+@Setter
+public class GetStaticKnowledgeVO {
+    //检索内容
+    private String InputStr;
+    //需要去重的id
+    private List<Long> inputIds;
+}

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

@@ -5,12 +5,14 @@ import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.facade.ConceptFacade;
 import com.diagbot.util.ParamConvertUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptExistVO;
 import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptUsualVO;
+import com.diagbot.vo.GetStaticKnowledgeVO;
 import com.diagbot.vo.RetrievalVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -112,4 +114,14 @@ public class ConceptController {
     public RespDTO<Map<String, Long>> getConceptMapByNameAndType(@RequestBody ConceptExistVO conceptExistVO){
         return RespDTO.onSuc(conceptFacade.getConceptMap(conceptExistVO));
     }
+
+    @ApiOperation(value = "ICSS三期-静态知识-页面检索[by:wangyu]",
+            notes = "inputStr:检索内容,必填<br>" +
+                    "inputIds:需要去重的id<br>")
+    @PostMapping("/getStaticKnowledge")
+    @SysLogger("getStaticKnowledge")
+    public RespDTO<List<RetrievalDTO>> getStaticKnowledge(@Valid @RequestBody GetStaticKnowledgeVO getStaticKnowledgeVO) {
+        List<RetrievalDTO> data = conceptFacade.getStaticKnowledge(getStaticKnowledgeVO);
+        return RespDTO.onSuc(data);
+    }
 }

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

@@ -22,6 +22,7 @@ import com.diagbot.dto.IndexConfigAndDataDTO;
 import com.diagbot.dto.IndexConfigDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.entity.ScaleContent;
 import com.diagbot.vo.ConceptIntroduceVO;
 import com.diagbot.vo.ConceptSearchVO;
@@ -30,6 +31,7 @@ import com.diagbot.vo.DeptInfoVO;
 import com.diagbot.vo.DisScaleVO;
 import com.diagbot.vo.ExistListByConceptIdsVO;
 import com.diagbot.vo.GetDiseaseIcdVO;
+import com.diagbot.vo.GetStaticKnowledgeVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
 import com.diagbot.vo.IndexConfigdiseaseNameVO;
 import com.diagbot.vo.IndexDataFindVO;
@@ -205,4 +207,13 @@ public interface AiptServiceClient {
      */
     @PostMapping("/conceptDetail/existListByConceptIds")
     RespDTO<List<Long>> existListByConceptIds(ExistListByConceptIdsVO existListByConceptIdsVO);
+
+    /**
+     * 静态知识检索
+     *
+     * @param getStaticKnowledgeVO
+     * @return
+     */
+    @PostMapping("/concept/getStaticKnowledge")
+    RespDTO<List<RetrievalDTO>> getStaticKnowledge(GetStaticKnowledgeVO getStaticKnowledgeVO);
 }

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

@@ -22,6 +22,7 @@ import com.diagbot.dto.IndexConfigAndDataDTO;
 import com.diagbot.dto.IndexConfigDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.entity.ScaleContent;
 import com.diagbot.vo.ConceptIntroduceVO;
 import com.diagbot.vo.ConceptSearchVO;
@@ -30,6 +31,7 @@ import com.diagbot.vo.DeptInfoVO;
 import com.diagbot.vo.DisScaleVO;
 import com.diagbot.vo.ExistListByConceptIdsVO;
 import com.diagbot.vo.GetDiseaseIcdVO;
+import com.diagbot.vo.GetStaticKnowledgeVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
 import com.diagbot.vo.IndexConfigdiseaseNameVO;
 import com.diagbot.vo.IndexDataFindVO;
@@ -267,4 +269,10 @@ public class AiptServiceHystrix implements AiptServiceClient {
         log.error("【hystrix】调用{}异常", "existListByConceptIds");
         return null;
     }
+
+    @Override
+    public RespDTO<List<RetrievalDTO>> getStaticKnowledge(GetStaticKnowledgeVO getStaticKnowledgeVO) {
+        log.error("【hystrix】调用{}异常", "getStaticKnowledge");
+        return null;
+    }
 }

+ 26 - 19
icss-service/src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -7,11 +7,10 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.entity.QuestionInfo;
 import com.diagbot.enums.IsDeleteEnum;
-import com.diagbot.util.BeanUtil;
+import com.diagbot.enums.QuestionTypeEnum;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
-import com.diagbot.vo.ExistListByConceptIdsVO;
 import com.diagbot.vo.GetStaticKnowledgeVO;
 import com.diagbot.vo.RetrievalVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -100,25 +99,33 @@ public class RetrievalFacade {
      * @return
      */
     public List<RetrievalDTO> getStaticKnowledge(GetStaticKnowledgeVO getStaticKnowledgeVO){
-        RetrievalVO retrievalVO = new RetrievalVO();
-        RetrievalDTO retrievalDTO = new RetrievalDTO();
-        BeanUtil.copyProperties(getStaticKnowledgeVO,retrievalVO);
-        List<RetrievalDTO> retrievalDTOList = this.getTagInfos(retrievalVO);
-        List<RetrievalDTO> staticRetrievalList = new ArrayList<>();
-        List<Long> cenceptIdList = retrievalDTOList.stream().map(RetrievalDTO::getConceptId).collect(Collectors.toList());
-        ExistListByConceptIdsVO existListByConceptIdsVO = new ExistListByConceptIdsVO();
-        existListByConceptIdsVO.setConceptIds(cenceptIdList);
-        RespDTO<List<Long>> existConceptIdList = aiptServiceClient.existListByConceptIds(existListByConceptIdsVO);
-        RespDTOUtil.respNGDeal(existConceptIdList,"获取静态知识失败");
-        for (RetrievalDTO retrievalDTOInfo : retrievalDTOList) {
-            for (Long concept : existConceptIdList.data) {
-                if (retrievalDTOInfo.getConceptId().intValue() == concept.intValue()){
-                    retrievalDTO = new RetrievalDTO();
-                    BeanUtil.copyProperties(retrievalDTOInfo,retrievalDTO);
-                    staticRetrievalList.add(retrievalDTO);
+        //调用aipt-service获取有静态知识的标签
+        RespDTO<List<RetrievalDTO>> retrievalDTOList = aiptServiceClient.getStaticKnowledge(getStaticKnowledgeVO);
+        RespDTOUtil.respNGDeal(retrievalDTOList,"获取静态知识失败");
+        if(ListUtil.isNotEmpty(retrievalDTOList.data)){
+            List<String> questionNames = new ArrayList<>();
+            List<Integer> typeList = new ArrayList<>();//规定标签类型,只取诊断,化验,辅检,药品类型
+            typeList.add(QuestionTypeEnum.Disease.getKey());
+            typeList.add(QuestionTypeEnum.Pacs.getKey());
+            typeList.add(QuestionTypeEnum.Lis.getKey());
+            typeList.add(QuestionTypeEnum.Drug.getKey());
+            for (RetrievalDTO retrievalDTOInfo : retrievalDTOList.data) {
+                if(typeList.contains(retrievalDTOInfo.getType())){
+                    questionNames.add(retrievalDTOInfo.getName());
+                }
+            }
+            QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
+            questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("tag_name", questionNames)
+                    .in("type", typeList);
+            List<QuestionInfo> questionInfoList = questionFacade.list(questionInfoQueryWrapper);
+            Map<String, QuestionInfo> questionInfoMap = questionInfoList.stream().collect(Collectors.toMap(QuestionInfo::getTagName, questionInfo -> questionInfo));
+            for (RetrievalDTO retrievalDTOInfo : retrievalDTOList.data) {
+                if(null != questionInfoMap.get(retrievalDTOInfo.getName())){//设置questionId
+                    retrievalDTOInfo.setQuestionId(questionInfoMap.get(retrievalDTOInfo.getName()).getId());
                 }
             }
         }
-        return staticRetrievalList;
+        return retrievalDTOList.data;
     }
 }