浏览代码

测试高风险手术

wangfeng 4 年之前
父节点
当前提交
c77b105017

+ 136 - 19
src/main/java/com/diagbot/facade/TestFacade.java

@@ -55,7 +55,7 @@ public class TestFacade {
             indicationPushVO.setIdNum(bean.getIdNum());
             if (StringUtil.isNotBlank(bean.getOrderType())) {
                 switch (bean.getOrderType()) {
-                    case "实验室检查名称" : // 细项
+                    case "实验室检查名称": // 细项
                         List<Lis> lisDetailOrder = new ArrayList<>();
                         Lis lisDetailBean = new Lis();
                         lisDetailBean.setName(bean.getStandName());
@@ -64,7 +64,7 @@ public class TestFacade {
                         lisDetailOrder.add(lisDetailBean);
                         indicationPushVO.setLisOrder(lisDetailOrder);
                         break;
-                    case "辅助检查名称" :
+                    case "辅助检查名称":
                         List<Pacs> pacsOrder = new ArrayList<>();
                         Pacs pacsBean = new Pacs();
                         pacsBean.setName(bean.getStandName());
@@ -72,7 +72,7 @@ public class TestFacade {
                         pacsOrder.add(pacsBean);
                         indicationPushVO.setPacsOrder(pacsOrder);
                         break;
-                    case "实验室检查套餐名" :
+                    case "实验室检查套餐名":
                         List<Lis> lisOrder = new ArrayList<>();
                         Lis lisBean = new Lis();
                         lisBean.setName(bean.getStandName());
@@ -80,7 +80,7 @@ public class TestFacade {
                         lisOrder.add(lisBean);
                         indicationPushVO.setLisOrder(lisOrder);
                         break;
-                    case "医保手术和操作名称" :
+                    case "医保手术和操作名称":
                         List<Item> operationOrder = new ArrayList<>();
                         Item operationItem = new Item();
                         operationItem.setName(bean.getStandName());
@@ -218,7 +218,7 @@ public class TestFacade {
 
             if (StringUtil.isNotEmpty(bean.getTransfusionNodeName())) {
                 switch (bean.getTransfusionNodeName()) {
-                    case "手术和操作" : // 手术和操作
+                    case "手术和操作": // 手术和操作
                         List<Item> operation = new ArrayList<>();
                         Item item = new Item();
                         item.setName(bean.getStandName());
@@ -226,7 +226,7 @@ public class TestFacade {
                         operation.add(item);
                         indicationPushVO.setOperation(operation);
                         break;
-                    case "医保疾病名称" : // 医保疾病名称
+                    case "医保疾病名称": // 医保疾病名称
                         List<Item> diag = new ArrayList<>();
                         Item itemDiag = new Item();
                         itemDiag.setName(bean.getStandName());
@@ -234,7 +234,7 @@ public class TestFacade {
                         diag.add(itemDiag);
                         indicationPushVO.setDiag(diag);
                         break;
-                    case "实验室检查" : // 实验室检查
+                    case "实验室检查": // 实验室检查
                         List<Lis> lisList = new ArrayList<>();
                         Lis lisBean = new Lis();
                         lisBean.setUniqueName(bean.getStandName());
@@ -286,7 +286,7 @@ public class TestFacade {
                 continue;
             }
             // 3,4是高危手术
-            if ("0".equals(bean.getOperationLevel()) || "1".equals(bean.getOperationLevel()) || "2".equals(bean.getOperationLevel())) {
+            if ("0" .equals(bean.getOperationLevel()) || "1" .equals(bean.getOperationLevel()) || "2" .equals(bean.getOperationLevel())) {
                 continue;
             }
             IndicationPushVO indicationPushVO = new IndicationPushVO();
@@ -339,14 +339,14 @@ public class TestFacade {
             indicationPushVO.setRuleType("4");
             indicationPushVO.setIdNum(bean.getIdNum());
 
-            if ("药品通用名称".equals(bean.getOtherTipNodeType())) {
+            if ("药品通用名称" .equals(bean.getOtherTipNodeType())) {
                 List<Drug> drug = new ArrayList<>();
                 Drug item = new Drug();
                 item.setUniqueName(bean.getOtherTipNodeName());
                 item.setName(bean.getOtherTipNodeName());
                 drug.add(item);
                 indicationPushVO.setDrug(drug);
-            } else if("医保疾病名称".equals(bean.getOtherTipNodeType())) {
+            } else if ("医保疾病名称" .equals(bean.getOtherTipNodeType())) {
                 List<Item> diag = new ArrayList<>();
                 Item item = new Item();
                 item.setUniqueName(bean.getOtherTipNodeName());
@@ -403,9 +403,9 @@ public class TestFacade {
             indicationPushVO.setRuleType("4");
             indicationPushVO.setIdNum(bean.getIdNum());
 
-            if ("男性".equals(bean.getSexStr())) {
+            if ("男性" .equals(bean.getSexStr())) {
                 indicationPushVO.setSex(1);
-            } else if ("女性".equals(bean.getSexStr())) {
+            } else if ("女性" .equals(bean.getSexStr())) {
                 indicationPushVO.setSex(2);
             }
             if (StringUtil.isNotBlank(bean.getDisName())) {
@@ -504,7 +504,7 @@ public class TestFacade {
                 operation.add(item);
                 indicationPushVO.setOperation(operation);
             }
-            if("实验室检查名称".equals(bean.getItemNodeName())) {
+            if ("实验室检查名称" .equals(bean.getItemNodeName())) {
                 List<Lis> lisList = new ArrayList<>();
                 Lis lis = new Lis();
                 lis.setName("套餐");
@@ -602,9 +602,9 @@ public class TestFacade {
             }
             IndicationPushVO indicationPushVO = new IndicationPushVO();
             indicationPushVO.setRuleType("1");
-            if (StringUtil.isNotBlank(bean.getCriticalAge()) && "成人".equals(bean.getCriticalAge())) {
+            if (StringUtil.isNotBlank(bean.getCriticalAge()) && "成人" .equals(bean.getCriticalAge())) {
                 indicationPushVO.setAge(20);
-            } else if (StringUtil.isNotBlank(bean.getCriticalAge()) && "新生儿".equals(bean.getCriticalAge())) {
+            } else if (StringUtil.isNotBlank(bean.getCriticalAge()) && "新生儿" .equals(bean.getCriticalAge())) {
                 indicationPushVO.setAge(1);
             } else {
                 indicationPushVO.setAge(20);
@@ -662,14 +662,29 @@ public class TestFacade {
      * @return
      */
     public double getValue(String[] arr) {
-        if ("<".equals(arr[1]) || "≤".equals(arr[1])) {
+        if ("<" .equals(arr[1]) || "≤" .equals(arr[1]) || "<" .equals(arr[1]) || "≤" .equals(arr[1])) {
             return Double.parseDouble(arr[2]) - 0.1;
-        } else if (">".equals(arr[1]) || "≥".equals(arr[1])) {
+        } else if (">" .equals(arr[1]) || "≥" .equals(arr[1]) || (">").equals(arr[1])) {
             return Double.parseDouble(arr[2]) + 0.1;
         }
         return 0.0;
     }
 
+    /**
+     * 返回数值
+     *
+     * @param arr
+     * @return
+     */
+    public double getValueNum(String[] arr) {
+        if ("<" .equals(arr[1]) || "≤" .equals(arr[1])) {
+            return Double.parseDouble(arr[2]) - 1;
+        } else if (">" .equals(arr[1]) || "≥" .equals(arr[1])) {
+            return Double.parseDouble(arr[2]) + 1;
+        }
+        return 0.0;
+    }
+
     /**
      * 返回数值
      *
@@ -677,9 +692,9 @@ public class TestFacade {
      * @return
      */
     public double getValue(String symbol, Double dou) {
-        if ("<".equals(symbol) || "≤".equals(symbol)) {
+        if ("<" .equals(symbol) || "≤" .equals(symbol)) {
             return dou - 0.1;
-        } else if (">".equals(symbol) || "≥".equals(symbol)) {
+        } else if (">" .equals(symbol) || "≥" .equals(symbol)) {
             return dou + 0.1;
         }
         return 0.0;
@@ -706,4 +721,106 @@ public class TestFacade {
         StandConvertCrfBatchDTO standConvertCrfBatchDTO = standConvertServiceClient.similarityBatch(standConvertCrfVOList);
         return standConvertCrfBatchDTO;
     }
+
+    public Map<String, Object> testHighRiskProcess(MultipartFile file, TestLineVO testLineVO) {
+        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;
+            }
+            // 3,4是高危手术
+            if ("0" .equals(bean.getOperationLevel()) || "1" .equals(bean.getOperationLevel()) || "3" .equals(bean.getOperationLevel())) {
+                continue;
+            }
+            IndicationPushVO indicationPushVO = new IndicationPushVO();
+            //年龄
+            String[] split = bean.getAgeAll().split(",");
+            indicationPushVO.setAge((int) getValueNum(split));
+            indicationPushVO.setRuleType("3");
+            indicationPushVO.setIdNum(bean.getIdNum());
+            List<Item> operationOrder = new ArrayList<>();
+            //体格
+            String physique = bean.getPhysique();
+            String[] physiqueStrArray = physique.split(",");
+          for (String str : physiqueStrArray) {
+                if (str.contains(",")) {
+                    //包含英文逗号
+                    String[] strArray = str.split(",");
+                    String t = strArray[0] + getValue(strArray) + strArray[3];
+                    indicationPushVO.setVital(t);
+                    break;
+                } else {
+                    indicationPushVO.setVital(str);
+                    break;
+                }
+            }
+            //化验
+            String lisAll = bean.getLisAll();
+            String[] physiquelisAll = lisAll.split(",");
+            List<Lis> lisList = new ArrayList<>();
+            for (String str : physiquelisAll) {
+                if (str.contains(",")) {
+                    //包含英文逗号
+                    String[] strArray = str.split(",");
+                    String lisStr = bean.getNeoName();
+                    Lis lisBean = new Lis();
+                    lisBean.setUniqueName(strArray[0]);
+                    lisBean.setName(strArray[0]);
+                    lisBean.setDetailName(strArray[0]);
+                    lisBean.setValue(getValue(strArray));
+                    lisList.add(lisBean);
+                    indicationPushVO.setLis(lisList);
+                    break;
+                } else {
+                    indicationPushVO.setVital(str);
+                    break;
+                }
+            }
+            //辅检
+            String pacsAll = bean.getPacsAll();
+            String[] physiquepacsAll = pacsAll.split(",");
+            indicationPushVO.setSymptom("B超:提示" + pacsAll);
+
+            //诊断
+            String disease = bean.getDisease();
+            String[] physiquedisease = pacsAll.split(",");
+            List<Item> diag = new ArrayList<>();
+            for (String diseaseStr : physiquedisease) {
+                Item item = new Item();
+                item.setUniqueName(diseaseStr);
+                item.setName(diseaseStr);
+                diag.add(item);
+                break;
+            }
+            indicationPushVO.setDiag(diag);
+            Item item = new Item();
+            item.setUniqueName(bean.getOperationName());
+            item.setName(bean.getOperationName());
+            operationOrder.add(item);
+            indicationPushVO.setOperationOrder(operationOrder);
+            indicationPushVOList.add(indicationPushVO);
+        }
+
+        Map<String, Object> map = new LinkedHashMap<>();
+
+        List<String> msg = new ArrayList<>();
+        List<String> errMsg = new ArrayList<>();
+        for (IndicationPushVO indicationPushVO : indicationPushVOList) {
+            try {
+                IndicationDTO indicationDTO = indicationFacade.indicationFac(indicationPushVO);
+                if (ListUtil.isEmpty(indicationDTO.getHighRiskList())) {
+                    msg.add("第【" + indicationPushVO.getIdNum() + "】行未匹配");
+                }
+            } catch (Exception e) {
+                System.out.println(e.getMessage());
+                errMsg.add(indicationPushVO.getIdNum() + "行出错了");
+            }
+        }
+        map.put("总条数", indicationPushVOList.size() + "条");
+        map.put("出错条数", msg.size() + "条");
+        map.put("出错信息", msg);
+        map.put("程序报错", errMsg);
+        return map;
+    }
 }

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

@@ -232,4 +232,15 @@ public class TestIndicationVO implements Serializable {
     private String pacsDescHas;
     @Excel(name="性别")
     private String sexStr;
+
+    @Excel(name="生命体征及查体")
+    private String physique;
+    @Excel(name="合并疾病")
+    private String disease;
+    @Excel(name="化验结果")
+    private String lisAll;
+    @Excel(name="辅检结果")
+    private String pacsAll;
+    @Excel(name="年龄T")
+    private String ageAll;
 }

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

@@ -109,5 +109,10 @@ public class TestController {
     public RespDTO<StandConvertCrfBatchDTO> testStandConvertBatch(@RequestBody List<StandConvertCrfVO> standConvertCrfVOList) {
         return RespDTO.onSuc(testFacade.testStandConvertBatch(standConvertCrfVOList));
     }
+    @ApiOperation(value = "高危手术测试API[zhoutg]", notes = "类型,疾病: disease,症状: symptom,手术和操作:operation,药品: drug,实验室检查:lis,辅助检查:pacs, 辅助检查:vital")
+    @PostMapping("/testHighRiskProcess")
+    public RespDTO<Map<String, Object>> testHighRiskProcess(@RequestParam("file") MultipartFile file, TestLineVO testLineVO) {
+        return RespDTO.onSuc(testFacade.testHighRiskProcess(file, testLineVO));
+    }
 }