浏览代码

禁忌人群处理妊娠

zhoutg 4 年之前
父节点
当前提交
021961569c
共有 2 个文件被更改,包括 61 次插入44 次删除
  1. 52 43
      src/main/java/com/diagbot/facade/TestFacade.java
  2. 9 1
      src/main/java/com/diagbot/rule/GroupRule.java

+ 52 - 43
src/main/java/com/diagbot/facade/TestFacade.java

@@ -82,39 +82,39 @@ public class TestFacade {
             }
             if (StringUtil.isNotBlank(bean.getOrderType())) {
                 switch (bean.getOrderType()) {
-                    // case "实验室检查名称": // 细项
-                    //     List<Lis> lisDetailOrder = new ArrayList<>();
-                    //     Lis lisDetailBean = new Lis();
-                    //     lisDetailBean.setName(bean.getStandName());
-                    //     lisDetailBean.setDetailName(bean.getStandName());
-                    //     lisDetailBean.setUniqueName(bean.getStandName());
-                    //     lisDetailOrder.add(lisDetailBean);
-                    //     indicationPushVO.setLisOrder(lisDetailOrder);
-                    //     break;
-                    // case "辅助检查名称":
-                    //     List<Pacs> pacsOrder = new ArrayList<>();
-                    //     Pacs pacsBean = new Pacs();
-                    //     pacsBean.setName(bean.getStandName());
-                    //     pacsBean.setUniqueName(bean.getStandName());
-                    //     pacsOrder.add(pacsBean);
-                    //     indicationPushVO.setPacsOrder(pacsOrder);
-                    //     break;
-                    // case "实验室检查套餐名":
-                    //     List<Lis> lisOrder = new ArrayList<>();
-                    //     Lis lisBean = new Lis();
-                    //     lisBean.setName(bean.getStandName());
-                    //     lisBean.setUniqueName(bean.getStandName());
-                    //     lisOrder.add(lisBean);
-                    //     indicationPushVO.setLisOrder(lisOrder);
-                    //     break;
-                    // case "医保手术和操作名称":
-                    //     List<Item> operationOrder = new ArrayList<>();
-                    //     Item operationItem = new Item();
-                    //     operationItem.setName(bean.getStandName());
-                    //     operationItem.setUniqueName(bean.getStandName());
-                    //     operationOrder.add(operationItem);
-                    //     indicationPushVO.setOperationOrder(operationOrder);
-                    //     break;
+                    case "实验室检查名称": // 细项
+                        List<Lis> lisDetailOrder = new ArrayList<>();
+                        Lis lisDetailBean = new Lis();
+                        lisDetailBean.setName(bean.getStandName());
+                        lisDetailBean.setDetailName(bean.getStandName());
+                        lisDetailBean.setUniqueName(bean.getStandName());
+                        lisDetailOrder.add(lisDetailBean);
+                        indicationPushVO.setLisOrder(lisDetailOrder);
+                        break;
+                    case "辅助检查名称":
+                        List<Pacs> pacsOrder = new ArrayList<>();
+                        Pacs pacsBean = new Pacs();
+                        pacsBean.setName(bean.getStandName());
+                        pacsBean.setUniqueName(bean.getStandName());
+                        pacsOrder.add(pacsBean);
+                        indicationPushVO.setPacsOrder(pacsOrder);
+                        break;
+                    case "实验室检查套餐名":
+                        List<Lis> lisOrder = new ArrayList<>();
+                        Lis lisBean = new Lis();
+                        lisBean.setName(bean.getStandName());
+                        lisBean.setUniqueName(bean.getStandName());
+                        lisOrder.add(lisBean);
+                        indicationPushVO.setLisOrder(lisOrder);
+                        break;
+                    case "医保手术和操作名称":
+                        List<Item> operationOrder = new ArrayList<>();
+                        Item operationItem = new Item();
+                        operationItem.setName(bean.getStandName());
+                        operationItem.setUniqueName(bean.getStandName());
+                        operationOrder.add(operationItem);
+                        indicationPushVO.setOperationOrder(operationOrder);
+                        break;
                     case "药品通用名称":
                         List<Drug> drugOrder = new ArrayList<>();
                         Drug drug = new Drug();
@@ -172,16 +172,22 @@ public class TestFacade {
                         indicationPushVO.setSymptom(symptom.toString());
                         break;
                     case "10": // 禁忌人群
-                        if ("妊娠".equals(bean.getNeoName())) {
-                            List<Item> groupList = new ArrayList<>();
-                            Item group = new Item();
-                            group.setName(bean.getNeoName());
-                            group.setUniqueName(bean.getNeoName());
-                            groupList.add(group);
-                            indicationPushVO.setDiag(groupList);
-                        } else {
-                            continue;
+                        switch (bean.getNeoName()) {
+                            case "妊娠":
+                                List<Item> groupList = new ArrayList<>();
+                                Item group = new Item();
+                                group.setName(bean.getNeoName());
+                                group.setUniqueName(bean.getNeoName());
+                                groupList.add(group);
+                                indicationPushVO.setDiag(groupList);
+                                break;
+                            case "月经期":
+                                indicationPushVO.setSymptom("月经第" +(int)(Math.random() * 30) + "天");
+                                break;
+                            default:
+                                continue;
                         }
+                        break;
                     case "7" : // 药品过敏原
                         StringBuffer pastStr = new StringBuffer("");
                         if ("药品通用名称".equals(bean.getDrugType())) {
@@ -983,6 +989,9 @@ public class TestFacade {
     public Map getDebugMapMulti(List<IndicationPushVO> indicationPushVOList, String ruleType, long start) {
         Map<String, Object> map = new LinkedHashMap<>();
         List<String> errMsg = new ArrayList<>();
+        if (ListUtil.isEmpty(indicationPushVOList)) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "无测试数据");
+        }
         try {
             int threadNum = 8; // 推荐的总线程数 = cpu个数 * 每个cpu的核数
             List<List<IndicationPushVO>> threadData = divideByCopies(indicationPushVOList, threadNum);
@@ -1018,7 +1027,7 @@ public class TestFacade {
             Long t2 = System.currentTimeMillis();
             map.put("执行时间", (t2 - start) / 1000.0 + "秒");
         } catch (Exception e) {
-            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "多线程执行高风险手术复杂情况失败:" + e.getMessage());
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "多线程执行失败:" + e.getMessage());
         }
         return map;
     }

+ 9 - 1
src/main/java/com/diagbot/rule/GroupRule.java

@@ -31,8 +31,17 @@ public class GroupRule {
         List<NodeNeoDTO> group = billNeoMaxDTO.getGroup();
         for (NodeNeoDTO node : group) {
             // 妊娠目前从诊断里判断,包含“妊娠”
+            String symptom = wordCrfDTO.getSymptom(); // 现病史内容
             switch (node.getName()) {
                 case "妊娠":
+                    // 现病史包含“孕妇”
+                    if (symptom.contains("孕妇")) {
+                        BillMsg commonBillMsg = MsgUtil.getCommonBillMsg(
+                                billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
+                                "妊娠", type, billNeoMaxDTO.getType());
+                        billMsgList.add(commonBillMsg);
+                    }
+                    // 诊断里包含“妊娠”
                     List<Item> diag = wordCrfDTO.getDiag();
                     for (Item item : diag) {
                         if (item.getUniqueName().contains("妊娠")) {
@@ -44,7 +53,6 @@ public class GroupRule {
                     }
                     break;
                 case "月经期":
-                    String symptom = wordCrfDTO.getSymptom(); // 现病史内容
                     String regex = "月经第(([零一二三四五六七八九十]{0,3})||([0-9]{0,2}))天";
                     Pattern pattern = Pattern.compile(regex);
                     Matcher matcher = pattern.matcher(symptom);