Pārlūkot izejas kodu

推理关联静态知识

zhaops 4 gadi atpakaļ
vecāks
revīzija
eab4172e30

+ 43 - 0
src/main/java/com/diagbot/dto/ConceptDetailDTO.java

@@ -0,0 +1,43 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/21 10:28
+ */
+@Getter
+@Setter
+public class ConceptDetailDTO {
+    /**
+     * 提示概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 提示明细标题
+     */
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    private String text;
+
+    /**
+     * 提示明细序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     */
+    private String contentType;
+}

+ 64 - 0
src/main/java/com/diagbot/facade/KlConceptStaticFacade.java

@@ -3,6 +3,7 @@ package com.diagbot.facade;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.DictionaryInfoDTO;
 import com.diagbot.dto.KlConceptDetailDTO;
 import com.diagbot.dto.KlConceptStaticDTO;
@@ -25,6 +26,7 @@ import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.ChangeStatusVO;
+import com.diagbot.vo.GetDetailVO;
 import com.diagbot.vo.IdVO;
 import com.diagbot.vo.KlConceptStaticPageVO;
 import com.diagbot.vo.KlConceptStaticVO;
@@ -478,4 +480,66 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
         }
         return retType;
     }
+
+    /**
+     * 获取静态知识map Map<name_type,List<ConceptDetail>>
+     *
+     * @param getDetailVO
+     * @return
+     */
+    public Map<String, List<ConceptDetailDTO>> getDetailByConcept(GetDetailVO getDetailVO) {
+        Map<String, List<ConceptDetailDTO>> retMap = new HashMap<>();
+        List<DictionaryInfoDTO> dicTypeName = klDictionaryInfoFacade.getListByGroupType(13);
+        Map<String, String> dicTypeNameMap
+                = EntityUtil.makeMapWithKeyValue(dicTypeName, "val", "name");
+
+        QueryWrapper<KlConcept> conceptQueryWrapper = new QueryWrapper<>();
+        conceptQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("status", 1);
+        if (ListUtil.isNotEmpty(getDetailVO.getNameList())) {
+            conceptQueryWrapper.in("lib_name", getDetailVO.getNameList());
+        }
+        List<KlConcept> conceptList = klConceptFacade.list(conceptQueryWrapper);
+        Map<Long, KlConcept> conceptMap = EntityUtil.makeEntityMap(conceptList, "id");
+
+        if (ListUtil.isNotEmpty(conceptList)) {
+            List<Long> conceptIds = conceptList.stream()
+                    .map(i -> i.getId())
+                    .collect(Collectors.toList());
+
+            List<KlConceptStatic> staticList = this.list(new QueryWrapper<KlConceptStatic>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("status", 1)
+                    .in("concept_id", conceptIds));
+
+            if (ListUtil.isEmpty(staticList)) {
+                return retMap;
+            }
+
+            QueryWrapper<KlConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
+            conceptDetailQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("concept_id", conceptIds);
+            if (ListUtil.isNotEmpty(getDetailVO.getContentTypes())) {
+                conceptDetailQueryWrapper.and(sql -> {
+                    for (int i = 0; i < getDetailVO.getContentTypes().size(); i++) {
+                        if (i > 0) {
+                            sql.or();
+                        }
+                        sql.apply("find_in_set({0},content_type)", getDetailVO.getContentTypes().get(i));
+                    }
+                });
+            }
+            List<KlConceptDetail> conceptDetailList = klConceptDetailFacade.list(conceptDetailQueryWrapper);
+            Map<Long, List<KlConceptDetail>> detailMap
+                    = EntityUtil.makeEntityListMap(conceptDetailList, "conceptId");
+
+            for (Map.Entry<Long, KlConcept> entry : conceptMap.entrySet()) {
+                if (detailMap.containsKey(entry.getKey())) {
+                    retMap.put(entry.getValue().getLibName() + "_" + dicTypeNameMap.get(LexiconEnum.getName(entry.getValue().getLibType())),
+                            BeanUtil.listCopyTo(detailMap.get(entry.getKey()), ConceptDetailDTO.class));
+                }
+            }
+        }
+        return retMap;
+    }
 }

+ 18 - 0
src/main/java/com/diagbot/vo/GetDetailVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/3/19 13:33
+ */
+@Getter
+@Setter
+public class GetDetailVO {
+    java.util.List<String> nameList;
+    List<Integer> contentTypes;
+}

+ 14 - 0
src/main/java/com/diagbot/web/KlConceptStaticController.java

@@ -3,12 +3,14 @@ package com.diagbot.web;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.KlConceptStaticDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.StaticKnowledgeDTO;
 import com.diagbot.facade.KlConceptStaticFacade;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.vo.ChangeStatusVO;
+import com.diagbot.vo.GetDetailVO;
 import com.diagbot.vo.IdVO;
 import com.diagbot.vo.KlConceptStaticPageVO;
 import com.diagbot.vo.KlConceptStaticVO;
@@ -23,6 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description:
@@ -106,4 +110,14 @@ public class KlConceptStaticController {
         Boolean data = klConceptStaticFacade.isExist(klConceptStaticVO);
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "推理结果匹配静态知识[zhaops]",
+            notes = "nameList: 术语名称 <br>" +
+                    "contentTypes:明细内容")
+    @PostMapping("/getDetailByConcept")
+    @SysLogger("getDetailByConcept")
+    public RespDTO<Map<String, List<ConceptDetailDTO>>> getDetailByConcept(@Valid @RequestBody GetDetailVO getDetailVO) {
+        Map<String, List<ConceptDetailDTO>> data = klConceptStaticFacade.getDetailByConcept(getDetailVO);
+        return RespDTO.onSuc(data);
+    }
 }