Browse Source

Merge branch 'develop' into dev/diagnoseNewType20210623

gaodm 3 năm trước cách đây
mục cha
commit
5424fa1607

+ 3 - 0
doc/008.20210623修改诊断依据备注/med_2021.sql

@@ -0,0 +1,3 @@
+USE `med_2021`;
+
+alter table kl_diagnose_base MODIFY  `type` int(10) NOT NULL DEFAULT '1' COMMENT '基础规则类型(1:等于术语本身;2:存在比较;3:主诉现病史正则;4:既往史正则;5:查体正则;6:辅检结果正则)';

+ 24 - 0
src/main/java/com/diagbot/dto/ExportDescDTO.java

@@ -0,0 +1,24 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 诊断依据说明导出
+ * </p>
+ *
+ * @author kongwz
+ * @since 2020-07-28
+ */
+@Data
+public class ExportDescDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Excel(name="说明", width = 100, orderNum = "10")
+    private String name = "";
+
+}

+ 4 - 2
src/main/java/com/diagbot/enums/DiagnoseLexiconTypeEnum.java

@@ -21,17 +21,19 @@ public enum DiagnoseLexiconTypeEnum implements KeyedNamed {
     jwzz(901, "H"),
     Age(410,"I"),
     Group(117, "J"),
+    Ctzz(902, "K"),
+    Fjjgzz(903, "L"),
     // 旧新诊断依据类型对应
     SymptomTpye(1, "A:症状"),
     VitalResultTpye(2, "B:体格检查结果"),
 //    VitalTpye(104, "C"),
     LisSubNameTpye(3, "D:实验室检查子项目"),
-    PacsResultTpye(4, "E:辅助检查结果"),
+    PacsResultTpye(4, "L:辅检结果正则"),
     DiseaseTpye(5, "F:疾病"),
     DiseaseHisTpye(6, "F:疾病"),//病史
     ZsxbszzTpyeCause(7, "G:主诉现病史正则"),//诱因
     ZsxbszzTpyeBc(8, "G:主诉现病史正则"),//病程
-    jwzzTpye(9, "H:既往正则"),
+    jwzzTpye(9, "H:既往正则"),
     QuezhenTpye(91, "确诊"),
     NizhenTpye(92, "拟诊"),
     JtTpye(93, "警惕");

+ 3 - 1
src/main/java/com/diagbot/enums/LexiconExtEnum.java

@@ -56,7 +56,9 @@ public enum LexiconExtEnum implements KeyedNamed {
     Age(410,"年龄"),
 
     zsxbszz(900, "主诉现病史正则"),
-    jwzz(901, "既往正则");
+    jwzz(901, "既往史正则"),
+    ctzz(902, "查体正则"),
+    fjjgzz(903, "辅检结果正则");
 
     @Setter
     private int key;

+ 29 - 4
src/main/java/com/diagbot/facade/KlDiagnoseDetailFacade.java

@@ -1,19 +1,32 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.ExportDescDTO;
 import com.diagbot.dto.ExportDiagnoseDTO;
 import com.diagbot.dto.ExportDiagnoseNameDTO;
 import com.diagbot.entity.KlDiagnoseDetail;
 import com.diagbot.enums.DiagnoseLexiconTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.KlDiagnoseDetailServiceImpl;
-import com.diagbot.util.*;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ExcelUtils;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.ReflectUtil;
+import com.diagbot.util.RegexUtil;
+import com.diagbot.util.StringUtil;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -69,6 +82,19 @@ public class KlDiagnoseDetailFacade extends KlDiagnoseDetailServiceImpl {
         //     }
         //
         // }
+        // 创建说明sheet
+        Map<String, String> styleMap2 = new LinkedHashMap<>();
+        styleMap2.put(ExcelUtils.DATA_HEIGHT, "120");
+        List<ExportDescDTO> exportDescDTOList = Lists.newArrayList();
+        ExportDescDTO exportDescDTO = new ExportDescDTO();
+        StringBuffer sb = new StringBuffer();
+        sb.append("1、类型:症状【A】,体格检查结果【B】,体格检查项目【C】,实验室检查子项目【D】,辅助检查结果【E】,疾病【F】," +
+                "主诉现病史正则【G】,既往史正则【H】,年龄【I】,人群【J】,查体正则【K】,辅检结果正则【L】\n\n");
+        sb.append("2、诊断类型:【拟诊】,【确诊】,【警惕】");
+        exportDescDTO.setName(sb.toString());
+        exportDescDTOList.add(exportDescDTO);
+        exportDto.add(ExcelUtils.createOneSheet("说明", null, ExportDescDTO.class, exportDescDTOList, styleMap2));
+
         ExcelUtils.exportExcel(exportDto, "diagnose.xlsx", response);
     }
 
@@ -161,7 +187,7 @@ public class KlDiagnoseDetailFacade extends KlDiagnoseDetailServiceImpl {
                         exportDiagnoseDTO.setRule(kdl.getStandard());
                     }
                     if(code.startsWith("4.")){
-                        exportDiagnoseDTO.setRule(kdl.getRelation());
+                        exportDiagnoseDTO.setRule(kdl.getRelation().replaceAll("\\、","|"));
                         exportDiagnoseDTO.setRelation(kdl.getStandard());
                     }
                     exportDiagnoseDTO.setEq(kdl.getMidResult());
@@ -278,5 +304,4 @@ public class KlDiagnoseDetailFacade extends KlDiagnoseDetailServiceImpl {
         //获取公式中的编码
         return RegexUtil.getRegexDatas(content, pateern);
     }
-
 }

+ 32 - 9
src/main/java/com/diagbot/facade/KlDiagnoseImportFacade.java

@@ -33,6 +33,7 @@ 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;
@@ -56,18 +57,29 @@ public class KlDiagnoseImportFacade {
 
     public Map<String, Object> importDiagnose(MultipartFile file, DiagnoseImportVO diagnoseImportVO) {
         long t1 = System.currentTimeMillis();
-        Map<String, Object> errMessage = new LinkedHashMap<>(); // 错误提示语
+        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());
+            diagnoseImportVO.setDiags(diagList);
+        }
         // 校验数据
-        Boolean allFlag = verifyData(file, diagnoseImportVO, errMessage, allData);
+        Boolean allFlag = verifyData(file, diagnoseImportVO, message, allData);
 
         // 保存数据
         if (allFlag) {
             saveData(allData);
+            message.put("导入条数", allData.size() + "条");
+            // 如果有指定诊断,提示导入的诊断;如果全部导入,提示“所有诊断”
+            if (ListUtil.isNotEmpty(diagnoseImportVO.getDiags())) {
+                message.put("导入诊断", allData.stream().map(r -> r.getDiseaseName()).collect(Collectors.joining("#")));
+            } else {
+                message.put("导入诊断", "所有诊断");
+            }
         }
         long t2 = System.currentTimeMillis();
-        System.out.println("总计:" + (t2 - t1) / 1000.0);
-        return errMessage;
+        message.put("总计耗时", (t2 - t1) / 1000.0);
+        return message;
     }
 
     /**
@@ -104,6 +116,7 @@ public class KlDiagnoseImportFacade {
                 importDiagnoseVOList.add(importDiagnoseVO);
             }
         }
+        addDisName = RegexUtil.getRegexData(addDisName, "【(.*?)】", 1); // 获取名字
         groupData.put(addDisName, importDiagnoseVOList); // 添加最后一个
 
         int i = 0;
@@ -114,7 +127,7 @@ public class KlDiagnoseImportFacade {
                     continue;
                 }
             }
-            System.out.println(i++ + ": " + disName);
+            // System.out.println(i++ + ": " + disName);
             List<String> currentErrMsg = Lists.newArrayList();
 
             ImportDiagnoseResVO importDiagnoseResVO = new ImportDiagnoseResVO();
@@ -366,10 +379,10 @@ public class KlDiagnoseImportFacade {
 
                 for (ImportDiagnoseVO importDiagnoseVO : data) {
                     String type = importDiagnoseVO.getType();
-                    String getOrderNo = importDiagnoseVO.getOrderNo();
-                    if (StringUtil.isNotBlank(type) && StringUtil.isNotBlank(getOrderNo)) {
+                    String rule = importDiagnoseVO.getRule();
+                    if (StringUtil.isNotBlank(type) && StringUtil.isNotBlank(rule)) {
                         if ("拟诊".equals(type) || "确诊".equals(type) || "警惕".equals(type)) {
-                            String[] splitGroup = getOrderNo.split("\\+");
+                            String[] splitGroup = rule.split("\\+");
 
                             KlDiagnoseTypeVO klDiagnoseTypeVO = new KlDiagnoseTypeVO();
                             if ("拟诊".equals(type)) {
@@ -484,11 +497,21 @@ public class KlDiagnoseImportFacade {
                         klDiagnoseDetailVO.setBasDescription(current.getRule());
                         klDiagnoseDetailVO.setEqValue(current.getRule());
                         break;
-                    case jwzz: // 既往正则
+                    case jwzz: // 既往正则
                         klDiagnoseDetailVO.setBasType(4);
                         klDiagnoseDetailVO.setBasDescription(current.getRule());
                         klDiagnoseDetailVO.setEqValue(current.getRule());
                         break;
+                    case ctzz: // 查体正则
+                        klDiagnoseDetailVO.setBasType(5);
+                        klDiagnoseDetailVO.setBasDescription(current.getRule());
+                        klDiagnoseDetailVO.setEqValue(current.getRule());
+                        break;
+                    case fjjgzz: // 辅检结果正则
+                        klDiagnoseDetailVO.setBasType(6);
+                        klDiagnoseDetailVO.setBasDescription(current.getRule());
+                        klDiagnoseDetailVO.setEqValue(current.getRule());
+                        break;
                     case Vital: // 体格检查项目
                     case Age: // 年龄
                         klDiagnoseDetailVO.setBasConceptId(current.getConceptId());

+ 1 - 2
src/main/java/com/diagbot/util/VerifyUtil.java

@@ -40,7 +40,7 @@ public class VerifyUtil {
     	if (StringUtil.isBlank(text)) {
     		return false;
 		}
-		String regex = "任|一|二|三|四|五|六|七|八|九|十|\\[||\\]|\\+|、|\\d|\\.|A|B|C|D|E|F|G|H|I|J|K";
+		String regex = "任|一|二|三|四|五|六|七|八|九|十|\\[||\\]|\\+|、|\\d|\\.|A|B|C|D|E|F|G|H|I|J|K|L";
 		for (int i = 0; i < text.length(); i++) {
 			String s1 = String.valueOf(text.charAt(i));
 			boolean flag = s1.matches(regex);
@@ -267,7 +267,6 @@ public class VerifyUtil {
 						"|/" ;
 
 		String[] arr = s.split(regex);
-		System.out.println(s);
 		return Arrays.asList(arr);
 	}
 

+ 5 - 0
src/main/java/com/diagbot/vo/DiagnoseImportVO.java

@@ -1,6 +1,7 @@
 package com.diagbot.vo;
 
 import com.google.common.collect.Lists;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -20,5 +21,9 @@ public class DiagnoseImportVO implements Serializable {
     private static final long serialVersionUID = 1L;
 
     // 诊断列表
+    @ApiModelProperty(hidden = true)
     private List<String> diags = Lists.newArrayList();
+
+    // 诊断名称,#分隔
+    private String diagStr = "";
 }

+ 1 - 1
src/main/java/com/diagbot/web/KlDiagnoseImportController.java

@@ -34,7 +34,7 @@ public class KlDiagnoseImportController {
     KlDiagnoseDetailFacade klDiagnoseDetailFacade;
 
     @ApiOperation(value = "诊断依据导入API[zhoutg]",
-            notes = "diags:指定诊断名称导入")
+            notes = "diagStr:指定诊断名称,用#分隔")
     @PostMapping("/importDiagnose")
     @Transactional
     public RespDTO<Map<String, Object>> importDiagnose(@RequestParam("file") MultipartFile file, DiagnoseImportVO diagnoseImportVO) {