瀏覽代碼

1、批量术语校验

zhaops 4 年之前
父節點
當前提交
e90f4c95b4

+ 1 - 0
src/main/java/com/diagbot/dto/IndexBatchDTO.java

@@ -14,4 +14,5 @@ public class IndexBatchDTO {
     private Long id;
     private String name;
     private String code;
+    private String synonyms;
 }

+ 65 - 16
src/main/java/com/diagbot/facade/KlConceptFacade.java

@@ -6,6 +6,7 @@ import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.KllisDetailDTO;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlDisease;
+import com.diagbot.entity.KlLibraryInfo;
 import com.diagbot.entity.TcmDisease;
 import com.diagbot.entity.TcmSyndrome;
 import com.diagbot.enums.IsDeleteEnum;
@@ -43,6 +44,8 @@ public class KlConceptFacade extends KlConceptServiceImpl {
     private TcmDiseaseFacade tcmDiseaseFacade;
     @Autowired
     private TcmSyndromeFacade tcmSyndromeFacade;
+    @Autowired
+    private KlLibraryInfoFacade klLibraryInfoFacade;
 
     /**
      * 批量校验标准术语
@@ -58,31 +61,77 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         //type: 类型:1-化验大项、2-化验小项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、10-量表、11-护理、12-中医诊断、13-中医证候
         Integer type = convertType(conceptVO.getType());
 
-        QueryWrapper<KlConcept> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .in("lib_name", conceptVO.getNames());
-        if (conceptVO.getType().equals(3)) {
-            //辅检同时检索辅检项目和辅检子项
-            queryWrapper.in("lib_type", Arrays.asList(LexiconEnum.PacsName.getKey(), LexiconEnum.PacsSubName.getKey()));
+        if (conceptVO.getSynonyms() != null && conceptVO.getSynonyms() == 1) {
+            QueryWrapper<KlLibraryInfo> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("is_concept", 0)
+                    .in("name", conceptVO.getNames());
+            if (conceptVO.getType().equals(3)) {
+                //辅检同时检索辅检项目和辅检子项
+                queryWrapper.in("type_id", Arrays.asList(LexiconEnum.PacsName.getKey(), LexiconEnum.PacsSubName.getKey()));
+            } else {
+                queryWrapper.eq("type_id", type);
+            }
+            List<KlLibraryInfo> libratyInfos = klLibraryInfoFacade.list(queryWrapper);
+            if (ListUtil.isEmpty(libratyInfos)) {
+                return retList;
+            }
+            Map<Long, List<KlLibraryInfo>> libraryInfoMap
+                    = libratyInfos.stream().collect(Collectors.groupingBy(KlLibraryInfo::getConceptId));
+            List<Long> synonymsRelatedConceptIds
+                    = libratyInfos.stream().map(KlLibraryInfo::getConceptId).collect(Collectors.toList());
+            List<KlConcept> synonymsRelatedConcepts = this.list(new QueryWrapper<KlConcept>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("status", StatusEnum.Enable.getKey())
+                    .in("id", synonymsRelatedConceptIds));
+            Map<Long, KlConcept> conceptMap
+                    = synonymsRelatedConcepts.stream().collect(Collectors.toMap(KlConcept::getId, v -> v));
+
+            if (conceptMap != null && conceptMap.size() > 0) {
+                for (Map.Entry<Long, KlConcept> entry : conceptMap.entrySet()) {
+                    KlConcept concept = entry.getValue();
+                    if (libraryInfoMap.containsKey(entry.getKey())) {
+                        for (KlLibraryInfo libraryInfo : libraryInfoMap.get(entry.getKey())) {
+                            if (!conceptVO.getNames().contains(libraryInfo.getName())) {
+                                continue;
+                            }
+                            IndexBatchDTO indexBatchDTO = new IndexBatchDTO();
+                            indexBatchDTO.setId(concept.getId());
+                            indexBatchDTO.setName(concept.getLibName());
+                            indexBatchDTO.setSynonyms(libraryInfo.getName());
+                            retList.add(indexBatchDTO);
+                        }
+                    }
+                }
+            }
         } else {
-            queryWrapper.eq("lib_type", type);
-        }
-        List<KlConcept> concepts = this.list(queryWrapper);
+            QueryWrapper<KlConcept> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("status", StatusEnum.Enable.getKey())
+                    .in("lib_name", conceptVO.getNames());
+            if (conceptVO.getType().equals(3)) {
+                //辅检同时检索辅检项目和辅检子项
+                queryWrapper.in("lib_type", Arrays.asList(LexiconEnum.PacsName.getKey(), LexiconEnum.PacsSubName.getKey()));
+            } else {
+                queryWrapper.eq("lib_type", type);
+            }
+            List<KlConcept> concepts = this.list(queryWrapper);
 
-        if (ListUtil.isNotEmpty(concepts)) {
-            for (KlConcept concept : concepts) {
-                IndexBatchDTO dto = new IndexBatchDTO();
-                dto.setId(concept.getId());
-                dto.setName(concept.getLibName());
-                retList.add(dto);
+            if (ListUtil.isNotEmpty(concepts)) {
+                for (KlConcept concept : concepts) {
+                    IndexBatchDTO dto = new IndexBatchDTO();
+                    dto.setId(concept.getId());
+                    dto.setName(concept.getLibName());
+                    retList.add(dto);
+                }
             }
         }
 
         if (ListUtil.isEmpty(retList)) {
             return retList;
         }
+        //关联编码
         List<Long> conceptIds = retList.stream().map(IndexBatchDTO::getId).collect(Collectors.toList());
-
         if (type.equals(LexiconEnum.Disease.getKey())) {
             List<KlDisease> diseases = klDiseaseFacade.list(new QueryWrapper<KlDisease>()
                     .eq("is_deleted", IsDeleteEnum.N.getKey())

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

@@ -14,7 +14,8 @@ import java.util.List;
 @Getter
 @Setter
 public class ConceptVO {
-    List<String> names;
+    private List<String> names;
     @NotNull(message = "请输入术语类型")
-    Integer type;
+    private Integer type;
+    private Integer synonyms;
 }