Browse Source

Merge remote-tracking branch 'origin/dev/importDiagnose20210429' into dev/importDiagnose20210429

zhoutg 3 years ago
parent
commit
58b71113ca
1 changed files with 29 additions and 14 deletions
  1. 29 14
      src/main/java/com/diagbot/facade/KlDiagnoseImportFacade.java

+ 29 - 14
src/main/java/com/diagbot/facade/KlDiagnoseImportFacade.java

@@ -8,12 +8,7 @@ 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.RegexUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.VerifyUtil;
+import com.diagbot.util.*;
 import com.diagbot.vo.DiagnoseImportVO;
 import com.diagbot.vo.ImportDiagnoseResVO;
 import com.diagbot.vo.ImportDiagnoseVO;
@@ -94,6 +89,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("症状", "体格检查结果", "疾病","人群","辅助检查结果");
         // 获取标准词库Map
         Map<String, KlConcept> concept_map = getConceptMap();
 
@@ -144,10 +140,10 @@ public class KlDiagnoseImportFacade {
 
             //处理公式(确诊)
             List<String> orderList = processFormula(curData, diagtypes);
-            dealVerify(currentErrMsg, orderList, diagtypes, curData, concept_map);
+            dealVerify(currentErrMsg, orderList, diagtypes, curData, concept_map,splitType);
             // 数据赋值
             if (ListUtil.isEmpty(currentErrMsg)) {
-                curData = dealImportDiagnose(diagtypes, curData, concept_map);
+                curData = dealImportDiagnose(diagtypes, curData, concept_map,splitType);
                 // 添加到正确数据列表
                 importDiagnoseResVO.setImportDiagnoseVOList(curData);
                 allData.add(importDiagnoseResVO);
@@ -235,7 +231,7 @@ public class KlDiagnoseImportFacade {
      * @param concept_map
      * @return
      */
-    private List<ImportDiagnoseVO> dealImportDiagnose(List<String> diagtypes, List<ImportDiagnoseVO> importDiagnoseVOS, Map<String, KlConcept> concept_map) {
+    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();
@@ -243,19 +239,30 @@ public class KlDiagnoseImportFacade {
             if (StringUtil.isBlank(type) && StringUtil.isBlank(orderNo)) {
                 continue;
             }
-            if (!type.contains("正则") && !diagtypes.contains(type)) {
-                // TODO
+            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)){
+                    List<Long> conceptIds = Lists.newArrayList();
+                    for (String standName:splits) {
+                        KlConcept klConcept = concept_map.get(standName + "_" + String.valueOf(LexiconExtEnum.getEnum(type).getKey()));
+                        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) {
+    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()) {
@@ -285,10 +292,18 @@ public class KlDiagnoseImportFacade {
                         continue;
                     }
                     int key = anEnum.getKey();
-                    if (!type.contains("正则") &&
+                    if (!type.contains("正则") && splitType.contains(type)){
+                        List<String> splits = CoreUtil.getSplit(rule);
+                        for (String standName:splits) {
+                            if(!concept_map.containsKey(standName + "_" + String.valueOf(key))){
+                                currentErrMsg.add(String.format("第%d行【%s】不是标准词", rowNum, standName));
+                            }
+                        }
+                    }
+                    /*if (!type.contains("正则") &&
                             !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) {