|
@@ -3,12 +3,19 @@ package com.diagbot.facade;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.diagbot.entity.KlConcept;
|
|
|
import com.diagbot.entity.KlDiagnose;
|
|
|
+import com.diagbot.enums.CommonEnum;
|
|
|
import com.diagbot.enums.DiagnoseLexiconTypeEnum;
|
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
|
import com.diagbot.enums.LexiconEnum;
|
|
|
import com.diagbot.enums.LexiconExtEnum;
|
|
|
import com.diagbot.service.KlConceptService;
|
|
|
-import com.diagbot.util.*;
|
|
|
+import com.diagbot.util.CoreUtil;
|
|
|
+import com.diagbot.util.EntityUtil;
|
|
|
+import com.diagbot.util.ExcelUtils;
|
|
|
+import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.util.RegexUtil;
|
|
|
+import com.diagbot.util.StringUtil;
|
|
|
+import com.diagbot.util.VerifyUtil;
|
|
|
import com.diagbot.vo.DiagnoseImportVO;
|
|
|
import com.diagbot.vo.ImportDiagnoseResVO;
|
|
|
import com.diagbot.vo.ImportDiagnoseVO;
|
|
@@ -28,7 +35,6 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
import java.util.LinkedHashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.ListIterator;
|
|
@@ -55,7 +61,7 @@ public class KlDiagnoseImportFacade {
|
|
|
Map<String, Object> message = new LinkedHashMap<>(); // 提示信息
|
|
|
List<ImportDiagnoseResVO> allData = Lists.newArrayList(); // 最终需要保存的数据
|
|
|
if (StringUtil.isNotBlank(diagnoseImportVO.getDiagStr())) {
|
|
|
- List<String> diagList = Arrays.stream(diagnoseImportVO.getDiagStr().split("#")).map(r -> r.trim()).collect(Collectors.toList());
|
|
|
+ List<String> diagList = CoreUtil.getSplit(diagnoseImportVO.getDiagStr());
|
|
|
diagnoseImportVO.setDiags(diagList);
|
|
|
}
|
|
|
// 校验数据
|
|
@@ -67,7 +73,7 @@ public class KlDiagnoseImportFacade {
|
|
|
message.put("导入条数", allData.size() + "条");
|
|
|
// 如果有指定诊断,提示导入的诊断;如果全部导入,提示“所有诊断”
|
|
|
if (ListUtil.isNotEmpty(diagnoseImportVO.getDiags())) {
|
|
|
- message.put("导入诊断", allData.stream().map(r -> r.getDiseaseName()).collect(Collectors.joining("#")));
|
|
|
+ message.put("导入诊断", allData.stream().map(r -> r.getDiseaseName()).collect(Collectors.joining(CommonEnum.splitSymbol.getName())));
|
|
|
} else {
|
|
|
message.put("导入诊断", "所有诊断");
|
|
|
}
|
|
@@ -89,7 +95,7 @@ public class KlDiagnoseImportFacade {
|
|
|
public Boolean verifyData(MultipartFile file, DiagnoseImportVO diagnoseImportVO, Map<String, Object> diagMessage, List<ImportDiagnoseResVO> allData) {
|
|
|
Boolean allFlag = true;
|
|
|
List<String> diagtypes = Lists.newArrayList("拟诊", "确诊", "警惕");
|
|
|
- List<String> splitType = Lists.newArrayList("症状", "体格检查结果", "疾病","人群","辅助检查结果");
|
|
|
+ List<String> splitType = Lists.newArrayList("症状", "体格检查结果", "疾病", "人群", "辅助检查结果");
|
|
|
// 获取标准词库Map
|
|
|
Map<String, KlConcept> concept_map = getConceptMap();
|
|
|
|
|
@@ -140,10 +146,10 @@ public class KlDiagnoseImportFacade {
|
|
|
|
|
|
//处理公式(确诊)
|
|
|
List<String> orderList = processFormula(curData, diagtypes);
|
|
|
- dealVerify(currentErrMsg, orderList, diagtypes, curData, concept_map,splitType);
|
|
|
+ dealVerify(currentErrMsg, orderList, diagtypes, curData, concept_map, splitType);
|
|
|
// 数据赋值
|
|
|
if (ListUtil.isEmpty(currentErrMsg)) {
|
|
|
- curData = dealImportDiagnose(diagtypes, curData, concept_map,splitType);
|
|
|
+ curData = dealImportDiagnose(diagtypes, curData, concept_map, splitType);
|
|
|
// 添加到正确数据列表
|
|
|
importDiagnoseResVO.setImportDiagnoseVOList(curData);
|
|
|
allData.add(importDiagnoseResVO);
|
|
@@ -231,7 +237,7 @@ public class KlDiagnoseImportFacade {
|
|
|
* @param concept_map
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<ImportDiagnoseVO> dealImportDiagnose(List<String> diagtypes, List<ImportDiagnoseVO> importDiagnoseVOS, Map<String, KlConcept> concept_map,List<String> splitType) {
|
|
|
+ private List<ImportDiagnoseVO> dealImportDiagnose(List<String> diagtypes, List<ImportDiagnoseVO> importDiagnoseVOS, Map<String, KlConcept> concept_map, List<String> splitType) {
|
|
|
for (ImportDiagnoseVO idv : importDiagnoseVOS) {
|
|
|
String type = idv.getType();
|
|
|
String orderNo = idv.getOrderNo();
|
|
@@ -240,29 +246,24 @@ public class KlDiagnoseImportFacade {
|
|
|
continue;
|
|
|
}
|
|
|
if (!type.contains("正则") && !diagtypes.contains(type) && splitType.contains(type)) {
|
|
|
- // KlConcept klConcept = concept_map.get(rule + "_" + String.valueOf(LexiconExtEnum.getEnum(type).getKey()));
|
|
|
- // if (klConcept != null) {
|
|
|
- // idv.setConceptId(klConcept.getId());
|
|
|
- // }
|
|
|
List<String> splits = CoreUtil.getSplit(rule);
|
|
|
- if(ListUtil.isNotEmpty(splits)){
|
|
|
+ if (ListUtil.isNotEmpty(splits)) {
|
|
|
List<Long> conceptIds = Lists.newArrayList();
|
|
|
- for (String standName:splits) {
|
|
|
+ for (String standName : splits) {
|
|
|
KlConcept klConcept = concept_map.get(standName + "_" + String.valueOf(LexiconExtEnum.getEnum(type).getKey()));
|
|
|
- if(klConcept != null){
|
|
|
+ if (klConcept != null) {
|
|
|
conceptIds.add(klConcept.getId());
|
|
|
}
|
|
|
}
|
|
|
idv.setConceptId(conceptIds);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
return importDiagnoseVOS;
|
|
|
}
|
|
|
|
|
|
//数据及格式校验
|
|
|
- private void dealVerify(List<String> currentErrMsg, List<String> orderNums, List<String> diagtypes, List<ImportDiagnoseVO> data, Map<String, KlConcept> concept_map,List<String> splitType) {
|
|
|
+ private void dealVerify(List<String> currentErrMsg, List<String> orderNums, List<String> diagtypes, List<ImportDiagnoseVO> data, Map<String, KlConcept> concept_map, List<String> splitType) {
|
|
|
//list元素计数
|
|
|
Map<String, Long> orderNumMap = orderNums.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
|
|
|
for (Map.Entry<String, Long> on : orderNumMap.entrySet()) {
|
|
@@ -292,10 +293,10 @@ public class KlDiagnoseImportFacade {
|
|
|
continue;
|
|
|
}
|
|
|
int key = anEnum.getKey();
|
|
|
- if (!type.contains("正则") && splitType.contains(type)){
|
|
|
+ if (!type.contains("正则") && splitType.contains(type)) {
|
|
|
List<String> splits = CoreUtil.getSplit(rule);
|
|
|
- for (String standName:splits) {
|
|
|
- if(!concept_map.containsKey(standName + "_" + String.valueOf(key))){
|
|
|
+ for (String standName : splits) {
|
|
|
+ if (!concept_map.containsKey(standName + "_" + String.valueOf(key))) {
|
|
|
currentErrMsg.add(String.format("第%d行【%s】不是标准词", rowNum, standName));
|
|
|
}
|
|
|
}
|
|
@@ -331,7 +332,7 @@ public class KlDiagnoseImportFacade {
|
|
|
currentErrMsg.add(String.format("第%d行【类型】不能为空", rowNum));
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(type) && diagtypes.contains(type) && StringUtils.isBlank(rule)
|
|
|
- && StringUtils.isBlank(orderNo)) {
|
|
|
+ && StringUtils.isBlank(orderNo)) {
|
|
|
currentErrMsg.add(String.format("第%d行【诊断依据规则】不能为空", rowNum));
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(type) && !diagtypes.contains(type) && StringUtils.isBlank(rule)) {
|
|
@@ -398,8 +399,6 @@ public class KlDiagnoseImportFacade {
|
|
|
String rule = importDiagnoseVO.getRule();
|
|
|
if (StringUtil.isNotBlank(type) && StringUtil.isNotBlank(rule)) {
|
|
|
if ("拟诊".equals(type) || "确诊".equals(type) || "警惕".equals(type)) {
|
|
|
- String[] splitGroup = rule.split("\\+");
|
|
|
-
|
|
|
KlDiagnoseTypeVO klDiagnoseTypeVO = new KlDiagnoseTypeVO();
|
|
|
if ("拟诊".equals(type)) {
|
|
|
klDiagnoseTypeVO.setConditionType(2);
|
|
@@ -410,6 +409,7 @@ public class KlDiagnoseImportFacade {
|
|
|
}
|
|
|
|
|
|
// 第三层
|
|
|
+ String[] splitGroup = rule.split("\\+");
|
|
|
List<KlDiagnoseGroupVO> groupVO = Lists.newArrayList();
|
|
|
for (String group : splitGroup) {
|
|
|
KlDiagnoseGroupVO klDiagnoseGroupVO = generateDiagnoseGroup(group, map);
|