|
@@ -3,22 +3,13 @@ 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.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.EntityUtil;
|
|
|
-import com.diagbot.util.ExcelUtils;
|
|
|
-import com.diagbot.util.ListUtil;
|
|
|
-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;
|
|
|
-import com.diagbot.vo.KlDiagnoseDetailVO;
|
|
|
-import com.diagbot.vo.KlDiagnoseGroupVO;
|
|
|
-import com.diagbot.vo.KlDiagnoseSaveVO;
|
|
|
-import com.diagbot.vo.KlDiagnoseTypeVO;
|
|
|
+import com.diagbot.util.*;
|
|
|
+import com.diagbot.vo.*;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.google.common.collect.Maps;
|
|
|
import org.apache.commons.collections4.map.LinkedMap;
|
|
@@ -30,7 +21,10 @@ import org.springframework.stereotype.Component;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
-import java.util.*;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.ListIterator;
|
|
|
+import java.util.Map;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -132,39 +126,39 @@ public class KlDiagnoseImportFacade {
|
|
|
return allFlag;
|
|
|
}
|
|
|
|
|
|
- private List<String> processFormula(List<ImportDiagnoseVO> data,List<String> diagtypes) {
|
|
|
+ private List<String> processFormula(List<ImportDiagnoseVO> data, List<String> diagtypes) {
|
|
|
List<String> orderList = Lists.newArrayList();
|
|
|
- Map<String,List<String>> typeCollect = Maps.newHashMap();
|
|
|
- if(ListUtil.isNotEmpty(data)){
|
|
|
+ Map<String, List<String>> typeCollect = Maps.newHashMap();
|
|
|
+ if (ListUtil.isNotEmpty(data)) {
|
|
|
ListIterator<ImportDiagnoseVO> it = data.listIterator();
|
|
|
- while (it.hasNext()){
|
|
|
+ while (it.hasNext()) {
|
|
|
ImportDiagnoseVO next = it.next();
|
|
|
String type = next.getType();
|
|
|
String orderNo = next.getOrderNo();
|
|
|
- Integer rowNum = next.getRowNum()-1;
|
|
|
- if(!diagtypes.contains(type)){
|
|
|
+ Integer rowNum = next.getRowNum() - 1;
|
|
|
+ if (!diagtypes.contains(type) && StringUtil.isNotBlank(type) && StringUtil.isNotBlank(orderNo)) {
|
|
|
orderList.add(orderNo);
|
|
|
}
|
|
|
- if("拟诊".equals(type) && StringUtils.isNotBlank(orderNo)){
|
|
|
- if(typeCollect.containsKey(type)){
|
|
|
+ if ("拟诊".equals(type) && StringUtils.isNotBlank(orderNo)) {
|
|
|
+ if (typeCollect.containsKey(type)) {
|
|
|
List<String> gongsi = typeCollect.get(type);
|
|
|
gongsi.add(orderNo);
|
|
|
- typeCollect.put(type,gongsi);
|
|
|
- }else {
|
|
|
+ typeCollect.put(type, gongsi);
|
|
|
+ } else {
|
|
|
List<String> gongsi = Lists.newArrayList();
|
|
|
gongsi.add(orderNo);
|
|
|
- typeCollect.put(type,gongsi);
|
|
|
+ typeCollect.put(type, gongsi);
|
|
|
}
|
|
|
}
|
|
|
- if("确诊".equals(type) && StringUtils.isNotBlank(orderNo)){
|
|
|
- if(orderNo.contains("拟诊") && typeCollect.containsKey("拟诊")){
|
|
|
+ if ("确诊".equals(type) && StringUtils.isNotBlank(orderNo)) {
|
|
|
+ if (orderNo.contains("拟诊") && typeCollect.containsKey("拟诊")) {
|
|
|
it.remove();
|
|
|
- for (String nizhen:typeCollect.get("拟诊")) {
|
|
|
+ for (String nizhen : typeCollect.get("拟诊")) {
|
|
|
ImportDiagnoseVO importDiagnoseVO = new ImportDiagnoseVO();
|
|
|
importDiagnoseVO.setParentRule(next.getOrderNo());
|
|
|
importDiagnoseVO.setType(type);
|
|
|
importDiagnoseVO.setRowNum(rowNum);
|
|
|
- importDiagnoseVO.setOrderNo(orderNo.replace("拟诊",nizhen));
|
|
|
+ importDiagnoseVO.setOrderNo(orderNo.replace("拟诊", nizhen));
|
|
|
it.add(importDiagnoseVO);
|
|
|
}
|
|
|
}
|
|
@@ -208,8 +202,12 @@ public class KlDiagnoseImportFacade {
|
|
|
*/
|
|
|
private List<ImportDiagnoseVO> dealImportDiagnose(List<String> diagtypes, List<ImportDiagnoseVO> importDiagnoseVOS, Map<String, KlConcept> concept_map) {
|
|
|
for (ImportDiagnoseVO idv : importDiagnoseVOS) {
|
|
|
- String type = idv.getType().trim();
|
|
|
- String rule = idv.getRule().trim();
|
|
|
+ String type = idv.getType();
|
|
|
+ String orderNo = idv.getOrderNo();
|
|
|
+ String rule = idv.getRule();
|
|
|
+ if (StringUtil.isBlank(type) && StringUtil.isBlank(orderNo)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (!type.contains("正则") && !diagtypes.contains(type)) {
|
|
|
KlConcept klConcept = concept_map.get(rule + "_" + String.valueOf(LexiconExtEnum.getEnum(type).getKey()));
|
|
|
if (klConcept != null) {
|
|
@@ -221,7 +219,7 @@ public class KlDiagnoseImportFacade {
|
|
|
}
|
|
|
|
|
|
//数据及格式校验
|
|
|
- private void dealVerify(List<String> currentErrMsg,List<String> orderNums, List<String> diagtypes, List<ImportDiagnoseVO> data, Map<String, KlConcept> concept_map) {
|
|
|
+ private void dealVerify(List<String> currentErrMsg, List<String> orderNums, List<String> diagtypes, List<ImportDiagnoseVO> data, Map<String, KlConcept> concept_map) {
|
|
|
//list元素计数
|
|
|
Map<String, Long> orderNumMap = orderNums.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
|
|
|
for (Map.Entry<String, Long> on : orderNumMap.entrySet()) {
|
|
@@ -240,12 +238,26 @@ public class KlDiagnoseImportFacade {
|
|
|
String maxSymbol = imd.getMaxSymbol();
|
|
|
String minSymbol = imd.getMinSymbol();
|
|
|
String parentRule = imd.getParentRule();
|
|
|
+ if (StringUtil.isBlank(type) && StringUtil.isBlank(orderNo)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
if (StringUtil.isNotBlank(type) && StringUtil.isNotBlank(rule) && StringUtil.isNotBlank(orderNo)) {
|
|
|
+ LexiconExtEnum anEnum = LexiconExtEnum.getEnum(type);
|
|
|
+ if (anEnum == null) {
|
|
|
+ currentErrMsg.add(String.format("第%d行【%s】类型错误", rowNum, type));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ int key = anEnum.getKey();
|
|
|
if (!type.contains("正则") &&
|
|
|
- !concept_map.containsKey(rule + "_" + String.valueOf(LexiconExtEnum.getEnum(type).getKey()))) {
|
|
|
+ !concept_map.containsKey(rule + "_" + String.valueOf(key))) {
|
|
|
currentErrMsg.add(String.format("第%d行【%s】不是标准词", rowNum, rule));
|
|
|
}
|
|
|
+ String name = DiagnoseLexiconTypeEnum.getName(key);
|
|
|
+ Boolean regexRes = RegexUtil.getRegexRes(orderNo, name + "\\d+");
|
|
|
+ if (!regexRes) {
|
|
|
+ currentErrMsg.add(String.format("第%d行类型【%s】和序号【%s】对应错误", rowNum, type, orderNo));
|
|
|
+ }
|
|
|
}
|
|
|
if (StringUtil.isNotBlank(maxSymbol) &&
|
|
|
!"<=".equals(maxSymbol) && !"<".equals(maxSymbol)) {
|
|
@@ -276,8 +288,8 @@ public class KlDiagnoseImportFacade {
|
|
|
if (diagtypes.contains(type) && StringUtil.isNotBlank(orderNo)) {
|
|
|
String s = VerifyUtil.verifyFormula(orderNums, orderNo);
|
|
|
if (StringUtil.isNotBlank(s)) {
|
|
|
- if(StringUtil.isNotBlank(parentRule)){
|
|
|
- s = s.replace(orderNo,parentRule);
|
|
|
+ if (StringUtil.isNotBlank(parentRule)) {
|
|
|
+ s = s.replace(orderNo, parentRule);
|
|
|
}
|
|
|
currentErrMsg.add(s);
|
|
|
}
|
|
@@ -285,7 +297,6 @@ public class KlDiagnoseImportFacade {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
//格式校验
|
|
|
/*if (ListUtil.isNotEmpty(verifies)) {
|
|
|
for (String vef : verifies) {
|