|
@@ -7,10 +7,13 @@ import com.diagbot.dto.KllisDetailDTO;
|
|
|
import com.diagbot.entity.KlConcept;
|
|
|
import com.diagbot.entity.KlDisease;
|
|
|
import com.diagbot.entity.KlLibraryInfo;
|
|
|
+import com.diagbot.entity.KlOperation;
|
|
|
import com.diagbot.entity.TcmDisease;
|
|
|
import com.diagbot.entity.TcmSyndrome;
|
|
|
+import com.diagbot.enums.ConceptTypeEnum;
|
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
|
import com.diagbot.enums.LexiconEnum;
|
|
|
+import com.diagbot.enums.MatchSourceEnum;
|
|
|
import com.diagbot.enums.StatusEnum;
|
|
|
import com.diagbot.service.impl.KlConceptServiceImpl;
|
|
|
import com.diagbot.util.EntityUtil;
|
|
@@ -26,6 +29,7 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -41,6 +45,8 @@ public class KlConceptFacade extends KlConceptServiceImpl {
|
|
|
@Autowired
|
|
|
private KlDiseaseFacade klDiseaseFacade;
|
|
|
@Autowired
|
|
|
+ private KlOperationFacade klOperationFacade;
|
|
|
+ @Autowired
|
|
|
private TcmDiseaseFacade tcmDiseaseFacade;
|
|
|
@Autowired
|
|
|
private TcmSyndromeFacade tcmSyndromeFacade;
|
|
@@ -61,12 +67,33 @@ public class KlConceptFacade extends KlConceptServiceImpl {
|
|
|
//type: 类型:1-化验大项、2-化验小项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、10-量表、11-护理、12-中医诊断、13-中医证候
|
|
|
Integer type = convertType(conceptVO.getType());
|
|
|
|
|
|
- if (conceptVO.getSynonyms() != null && conceptVO.getSynonyms() == 1) {
|
|
|
+ if (conceptVO.getSource().equals(MatchSourceEnum.StandWord.getKey())) {
|
|
|
+ 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(ConceptTypeEnum.Pacs.getKey())) {
|
|
|
+ //辅检同时检索辅检项目和辅检子项
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (conceptVO.getSource().equals(MatchSourceEnum.SynonymsWord.getKey())) {
|
|
|
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)) {
|
|
|
+ if (conceptVO.getType().equals(ConceptTypeEnum.Pacs.getKey())) {
|
|
|
//辅检同时检索辅检项目和辅检子项
|
|
|
queryWrapper.in("type_id", Arrays.asList(LexiconEnum.PacsName.getKey(), LexiconEnum.PacsSubName.getKey()));
|
|
|
} else {
|
|
@@ -104,25 +131,83 @@ public class KlConceptFacade extends KlConceptServiceImpl {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- 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);
|
|
|
+ } else if (conceptVO.getSource().equals(MatchSourceEnum.Code.getKey())) {
|
|
|
+ List<Long> conceptIds = Lists.newArrayList();
|
|
|
+ Map<Long, List<String>> codeMap = new HashMap<>();
|
|
|
+ if (type.equals(LexiconEnum.Disease.getKey())) {
|
|
|
+ List<KlDisease> diseases = klDiseaseFacade.list(new QueryWrapper<KlDisease>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .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;
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ } else if (type.equals(LexiconEnum.Operation.getKey())) {
|
|
|
+ List<KlOperation> operations = klOperationFacade.list(new QueryWrapper<KlOperation>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .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;
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ } else if (type.equals(LexiconEnum.Tcmdisease.getKey())) {
|
|
|
+ List<TcmDisease> tcmDiseases = tcmDiseaseFacade.list(new QueryWrapper<TcmDisease>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .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;
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ } else if (type.equals(LexiconEnum.Tcmsyndrome.getKey())) {
|
|
|
+ List<TcmSyndrome> tcmSyndromes = tcmSyndromeFacade.list(new QueryWrapper<TcmSyndrome>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .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;
|
|
|
+ }));
|
|
|
+ }
|
|
|
}
|
|
|
- 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);
|
|
|
+ List<KlConcept> concepts = this.list(new QueryWrapper<KlConcept>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .eq("status", StatusEnum.Enable.getKey())
|
|
|
+ .in("id", conceptIds));
|
|
|
+ Map<Long, KlConcept> conceptMap
|
|
|
+ = concepts.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 (codeMap.containsKey(entry.getKey())) {
|
|
|
+ for (String code : codeMap.get(entry.getKey())) {
|
|
|
+ if (!conceptVO.getNames().contains(code)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ IndexBatchDTO indexBatchDTO = new IndexBatchDTO();
|
|
|
+ indexBatchDTO.setId(concept.getId());
|
|
|
+ indexBatchDTO.setName(concept.getLibName());
|
|
|
+ indexBatchDTO.setCode(code);
|
|
|
+ retList.add(indexBatchDTO);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -144,6 +229,18 @@ public class KlConceptFacade extends KlConceptServiceImpl {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ } else if (type.equals(LexiconEnum.Operation.getKey())) {
|
|
|
+ List<KlOperation> operations = klOperationFacade.list(new QueryWrapper<KlOperation>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .in("concept_id", conceptIds));
|
|
|
+ if (ListUtil.isNotEmpty(operations)) {
|
|
|
+ Map<Long, KlOperation> idMap = operations.stream().collect(Collectors.toMap(KlOperation::getConceptId, v -> v));
|
|
|
+ for (IndexBatchDTO dto : retList) {
|
|
|
+ if (idMap.containsKey(dto.getId())) {
|
|
|
+ dto.setCode(idMap.get(dto.getId()).getOperationCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
} else if (type.equals(LexiconEnum.Tcmdisease.getKey())) {
|
|
|
List<TcmDisease> tcmDiseases = tcmDiseaseFacade.list(new QueryWrapper<TcmDisease>()
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|