浏览代码

1、术语校验

zhaops 4 年之前
父节点
当前提交
aa26939842

+ 53 - 25
src/main/java/com/diagbot/facade/KlConceptFacade.java

@@ -20,6 +20,7 @@ import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.ConceptVO;
+import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.KllisDetailVO;
 import com.diagbot.vo.SearchConceptVO;
 import com.google.common.collect.Lists;
@@ -153,12 +154,9 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                         .in("icd10_code", conceptVO.getNames()));
                 if (ListUtil.isNotEmpty(diseases)) {
                     conceptIds = diseases.stream().map(KlDisease::getConceptId).distinct().collect(Collectors.toList());
-                    codeMap = diseases.stream().collect(Collectors.toMap(KlDisease::getConceptId,
-                            v -> {
-                                List<String> codes = Lists.newArrayList();
-                                codes.add(v.getIcd10Code());
-                                return codes;
-                            }));
+                    codeMap = diseases.stream()
+                            .collect(Collectors.groupingBy(KlDisease::getConceptId,
+                                    Collectors.mapping(KlDisease::getIcd10Code, Collectors.toList())));
                 }
             } else if (type.equals(LexiconEnum.Operation.getKey())) {
                 List<KlOperation> operations = klOperationFacade.list(new QueryWrapper<KlOperation>()
@@ -166,12 +164,9 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                         .in("operation_code", conceptVO.getNames()));
                 if (ListUtil.isNotEmpty(operations)) {
                     conceptIds = operations.stream().map(KlOperation::getConceptId).distinct().collect(Collectors.toList());
-                    codeMap = operations.stream().collect(Collectors.toMap(KlOperation::getConceptId,
-                            v -> {
-                                List<String> codes = Lists.newArrayList();
-                                codes.add(v.getOperationCode());
-                                return codes;
-                            }));
+                    codeMap = operations.stream()
+                            .collect(Collectors.groupingBy(KlOperation::getConceptId,
+                                    Collectors.mapping(KlOperation::getOperationCode, Collectors.toList())));
                 }
             } else if (type.equals(LexiconEnum.Tcmdisease.getKey())) {
                 List<TcmDisease> tcmDiseases = tcmDiseaseFacade.list(new QueryWrapper<TcmDisease>()
@@ -179,12 +174,8 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                         .in("code", conceptVO.getNames()));
                 if (ListUtil.isNotEmpty(tcmDiseases)) {
                     conceptIds = tcmDiseases.stream().map(TcmDisease::getConceptId).distinct().collect(Collectors.toList());
-                    codeMap = tcmDiseases.stream().collect(Collectors.toMap(TcmDisease::getConceptId,
-                            v -> {
-                                List<String> codes = Lists.newArrayList();
-                                codes.add(v.getCode());
-                                return codes;
-                            }));
+                    codeMap = tcmDiseases.stream().collect(Collectors.groupingBy(TcmDisease::getConceptId,
+                            Collectors.mapping(TcmDisease::getCode, Collectors.toList())));
                 }
             } else if (type.equals(LexiconEnum.Tcmsyndrome.getKey())) {
                 List<TcmSyndrome> tcmSyndromes = tcmSyndromeFacade.list(new QueryWrapper<TcmSyndrome>()
@@ -192,12 +183,8 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                         .in("code", conceptVO.getNames()));
                 if (ListUtil.isNotEmpty(tcmSyndromes)) {
                     conceptIds = tcmSyndromes.stream().map(TcmSyndrome::getConceptId).distinct().collect(Collectors.toList());
-                    codeMap = tcmSyndromes.stream().collect(Collectors.toMap(TcmSyndrome::getConceptId,
-                            v -> {
-                                List<String> codes = Lists.newArrayList();
-                                codes.add(v.getCode());
-                                return codes;
-                            }));
+                    codeMap = tcmSyndromes.stream().collect(Collectors.groupingBy(TcmSyndrome::getConceptId,
+                            Collectors.mapping(TcmSyndrome::getCode, Collectors.toList())));
                 }
             }
             List<KlConcept> concepts = this.list(new QueryWrapper<KlConcept>()
@@ -283,7 +270,39 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         return retList;
     }
 
+    /**
+     * 术语模糊检索
+     *
+     * @param filterVO
+     * @return
+     */
+    public List<IndexBatchDTO> filter(FilterVO filterVO) {
+        List<IndexBatchDTO> retList = Lists.newArrayList();
+        List<KlConcept> klConcepts = this.list(new QueryWrapper<KlConcept>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("status", StatusEnum.Enable.getKey())
+                .like("lib_name", filterVO.getInputStr()));
+        for (KlConcept concept : klConcepts) {
+            IndexBatchDTO indexBatchDTO = new IndexBatchDTO();
+            indexBatchDTO.setId(concept.getId());
+            indexBatchDTO.setName(concept.getLibName());
+            Integer type = convertType(concept.getLibType(), true);
+            if (type != null) {
+                indexBatchDTO.setType(type);
+                retList.add(indexBatchDTO);
+            }
+        }
+        return retList;
+    }
+
 
+    /**
+     * 类型互转
+     *
+     * @param type
+     * @param reverse
+     * @return
+     */
     public Integer convertType(Integer type, Boolean reverse) {
         Integer retType = null;
         //type: 类型:1-化验大项、2-化验小项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、10-量表、11-护理、12-中医诊断、13-中医证候
@@ -312,6 +331,10 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                 retType = ConceptTypeEnum.Tcmdisease.getKey();
             } else if (type.equals(LexiconEnum.Tcmsyndrome.getKey())) {
                 retType = ConceptTypeEnum.Tcmsyndrome.getKey();
+            } else if (type.equals(LexiconEnum.Anesthesia.getKey())) {
+                retType = ConceptTypeEnum.Anesthesia.getKey();
+            } else if (type.equals(LexiconEnum.Form.getKey())) {
+                retType = ConceptTypeEnum.Form.getKey();
             }
         } else {
             switch (type) {
@@ -351,6 +374,11 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                 case 13:
                     retType = LexiconEnum.Tcmsyndrome.getKey();
                     break;
+                case 14:
+                    retType = LexiconEnum.Anesthesia.getKey();
+                    break;
+                case 15:
+                    retType = LexiconEnum.Form.getKey();
                 default:
                     break;
             }
@@ -389,4 +417,4 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         Map<String, KllisDetailDTO> res = EntityUtil.makeEntityMap(list, "libName");
         return res;
     }
-}
+}

+ 2 - 2
src/main/java/com/diagbot/vo/ConceptVO.java

@@ -16,11 +16,11 @@ import java.util.List;
 public class ConceptVO {
     private List<Long> ids;
     private List<String> names;
-    @NotNull(message = "请输入术语类型")
+    //@NotNull(message = "请输入术语类型")
     private Integer type;
     /**
      * 数据来源(1-标准词、2-同义词、3-编码、4-历史数据、5-相似词、99-数据迁移)
      */
-    @NotNull(message = "请指定数据来源(1-标准词、2-同义词、3-编码、4-历史数据、5-相似词、99-数据迁移)")
+    //@NotNull(message = "请指定数据来源(1-标准词、2-同义词、3-编码、4-历史数据、5-相似词、99-数据迁移)")
     private Integer source;
 }

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

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/6/16 14:02
+ */
+@Getter
+@Setter
+public class FilterVO {
+    @NotBlank(message = "请输入检索内容")
+    private String inputStr;
+}

+ 9 - 0
src/main/java/com/diagbot/web/RetrievalController.java

@@ -8,6 +8,7 @@ import com.diagbot.dto.StaticKnowledgeIndexDTO;
 import com.diagbot.facade.KlConceptFacade;
 import com.diagbot.facade.MedRetrievalFacade;
 import com.diagbot.vo.ConceptVO;
+import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.KllisDetailVO;
 import com.diagbot.vo.RetrievalVO;
 import com.diagbot.vo.StaticKnowledgeIndexVO;
@@ -76,4 +77,12 @@ public class RetrievalController {
     public RespDTO<Map<String, KllisDetailDTO>> getLisDetaisByNames(@RequestBody KllisDetailVO kllisDetailVO) {
         return RespDTO.onSuc(klConceptFacade.getLisDetaisByNamesFac(kllisDetailVO));
     }
+
+    @ApiOperation(value = "术语关联医学术语检索[zhaops]",
+            notes = "inputStr: 检索内容<br>")
+    @PostMapping("/filter")
+    public RespDTO<List<IndexBatchDTO>> filter(@Valid @RequestBody FilterVO filterVO) {
+        List<IndexBatchDTO> data = klConceptFacade.filter(filterVO);
+        return RespDTO.onSuc(data);
+    }
 }