Bläddra i källkod

开单新规则

zhoutg 4 år sedan
förälder
incheckning
26226fddb4

+ 4 - 0
src/main/java/com/diagbot/aggregate/IndicationTestAggregate.java

@@ -77,6 +77,10 @@ public class IndicationTestAggregate {
         Map<String, Object> otherTransfusionMap = testFacade.testOtherTipTransfusion(file, new TestLineVO());
         map.put("【其他值提醒_输血】",otherTransfusionMap);
 
+        file = testFacade.getMulFileByPath(mapPath.get("【检查结果与项目重复开立规则】"));
+        Map<String, Object> pacsOrderNeedlessMap = testFacade.testPacsOrderNeedlessProcess(file, new TestLineVO());
+        map.put("【检查结果与项目重复开立规则】",pacsOrderNeedlessMap);
+
         return map;
     }
 

+ 44 - 0
src/main/java/com/diagbot/facade/TestFacade.java

@@ -1034,6 +1034,49 @@ public class TestFacade {
         return map;
     }
 
+    /**
+     * 检查结果与项目重复开立规则测试API
+     *
+     * @param file
+     */
+    public Map<String, Object> testPacsOrderNeedlessProcess(MultipartFile file, TestLineVO testLineVO) {
+        long start = System.currentTimeMillis();
+        List<IndicationPushVO> indicationPushVOList = new ArrayList<>();
+        List<TestIndicationVO> data = ExcelUtils.importExcelMultiSheets(file, 0, 1, testLineVO.getSheetIndex(), TestIndicationVO.class);
+        for (TestIndicationVO bean : data) {
+            if (StringUtil.isNotEmpty(testLineVO.getIdNum()) && !testLineVO.getIdNum().equals(bean.getIdNum())) {
+                continue;
+            }
+            IndicationPushVO indicationPushVO = new IndicationPushVO();
+            indicationPushVO.setRuleType("2");
+            indicationPushVO.setIdNum(bean.getIdNum());
+            if (StringUtil.isNotBlank(bean.getPacsOrderName())) {
+                List<Pacs> pacsOrder = new ArrayList<>();
+                Pacs pacsBean = new Pacs();
+                pacsBean.setName(bean.getPacsOrderName());
+                pacsBean.setUniqueName(bean.getPacsOrderName());
+                pacsBean.setDateValue("2021-01-28 00:00:00");
+                pacsOrder.add(pacsBean);
+                indicationPushVO.setPacsOrder(pacsOrder);
+            }
+
+            List<Pacs> pacsList = new ArrayList<>();
+            Pacs pacsBean = new Pacs();
+            pacsBean.setName(bean.getPacsOrderName());
+            pacsBean.setUniqueName(bean.getPacsOrderName());
+            pacsBean.setResult(bean.getRuleContent());
+            pacsBean.setDateValue("2021-01-27 00:00:00");
+            pacsList.add(pacsBean);
+            indicationPushVO.setPacs(pacsList);
+            indicationPushVOList.add(indicationPushVO);
+        }
+
+        Map<String, Object> map = getDebugMap(indicationPushVOList, "2", start);
+        return map;
+    }
+
+
+
     /**
      * 提示方法
      *
@@ -1175,6 +1218,7 @@ public class TestFacade {
         mapPath.put("【高危手术整合】", path + File.separator + "【高危手术整合】.xlsx");
         mapPath.put("【开单合理性】", path + File.separator + "【开单合理性】.xlsx");
         mapPath.put("【开单合理性_输血】", path + File.separator + "【开单合理性_输血】.xlsx");
+        mapPath.put("【检查结果与项目重复开立规则】", path + File.separator + "【检查结果与项目重复开立规则】.xlsx");
         paramMap.put("mapPath", mapPath);
 
         try {

+ 27 - 1
src/main/java/com/diagbot/rule/CommonRule.java

@@ -28,6 +28,8 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -127,7 +129,7 @@ public class CommonRule {
                 Pacs pacs = pacsList.get(pacsList.size() - 1);
                 String result = pacs.getResult();
                 if (StringUtil.isNotBlank(result) && StringUtil.isNotBlank(nodeNeoDTO.getRegex())
-                        && result.matches(nodeNeoDTO.getRegex())) {
+                        && getRegexRes(result, nodeNeoDTO.getRegex())) {
                     String dateValue = pacs.getDateValue(); // 结果日期
                     String orderDateValue = billNeoMaxDTO.getDateValue(); // 开单项日期
                     if (StringUtil.isNotBlank(dateValue) && StringUtil.isNotBlank(orderDateValue)) {
@@ -147,6 +149,30 @@ public class CommonRule {
         }
     }
 
+    /**
+     * 是否有符合的数据(公共方法)
+     *
+     * @param content 文本内容
+     * @param regex   表达式
+     * @return
+     */
+    public Boolean getRegexRes(String content, String regex) {
+        // 是否有符合的数据
+        try {
+            if (StringUtil.isBlank(content) || StringUtil.isBlank(regex)) {
+                return false;
+            }
+            Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+            Matcher matcher = pattern.matcher(content);
+            if (matcher.find()) {
+                return true;
+            }
+        } catch (Exception e) {
+            return false;
+        }
+        return false;
+    }
+
     /**
      * 根据指定字段按照字符串排序
      *

+ 4 - 0
src/main/java/com/diagbot/vo/TestIndicationVO.java

@@ -248,4 +248,8 @@ public class TestIndicationVO implements Serializable {
 
     @Excel(name="状态")
     private String status;
+    @Excel(name="辅助检查名称")
+    private String pacsOrderName;
+    @Excel(name="正常规则")
+    private String ruleContent;
 }

+ 8 - 0
src/main/java/com/diagbot/web/TestController.java

@@ -146,6 +146,14 @@ public class TestController {
         return RespDTO.onSuc(testFacade.testHighRiskProcess(file, testLineVO));
     }
 
+    @ApiOperation(value = "检查结果与项目重复开立规则测试API[zhoutg]",
+            notes = "idNum:指定行测试<br>" +
+                    "sheetIndex:sheet的下标,默认为0,表示第一个sheet")
+    @PostMapping("/testPacsOrderNeedlessProcess")
+    public RespDTO<Map<String, Object>> testPacsOrderNeedlessProcess(@RequestParam("file") MultipartFile file, TestLineVO testLineVO) {
+        return RespDTO.onSuc(testFacade.testPacsOrderNeedlessProcess(file, testLineVO));
+    }
+
     @ApiOperation(value = "批量测试[zhoutg]", notes = "参数:目录所在路径,示例:D:\\newSVN\\2020新版CDSS\\05.其他资料\\数据")
     @PostMapping("/testAll")
     public RespDTO<Map<String, Object>> testAll(TestAllVO testAllVO) {