陈昶聿
15 小时以前 620f2e358bd945cf336f6cf7dd2429290dd34b76
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -313,6 +313,7 @@
        addSubTaskByRule(config);
        //根据患者所在病区,获取该病区的长期任务,新华医院可以先不用根据病区和疾病来做
        if (!active.equals("xh")) {
            //todo 手术主表-手术详情表-出院记录表-科室关系? 需要限制科室?
            addOperationSubTask(config);
        }
@@ -702,6 +703,7 @@
                //说明该患者是被过滤的,不用再执行了
                serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                serviceSubtask.setCreateTime(new Date());
                serviceSubtask.setSendstate(4L);
                i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
            } else {
                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
@@ -787,9 +789,14 @@
        if (Objects.isNull(patMedOperationItem.getOplevelcode())) {
            return;
        }
        PatMedOperation patMedOperation = patMedOperationMapper.selectPatMedOperationById(patMedOperationItem.getOpid());
        if (Objects.isNull(patMedOperation)) {
        PatMedOperation patMedOperationVo = new PatMedOperation();
        PatMedOperation patMedOperation = new PatMedOperation();
        patMedOperationVo.setOpid(patMedOperationItem.getOpid());
        List<PatMedOperation> patMedOperationList = patMedOperationMapper.selectPatMedOperationList(patMedOperationVo);
        if (CollectionUtils.isEmpty(patMedOperationList)) {
            return;
        }else {
            patMedOperation = patMedOperationList.get(0);
        }
        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOperation.getPatid());
        if (Objects.isNull(patArchive)) {
@@ -848,6 +855,7 @@
                //说明该患者是被过滤的,不用再执行了
                serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                serviceSubtask.setCreateTime(new Date());
                serviceSubtask.setSendstate(4L);
                i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
            } else {
                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
@@ -954,7 +962,8 @@
            serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getHospitaldistrictname());
        }
        serviceSubtask.setLeaveicd10code(patMedInhosp1.getLeaveicd10code());
        serviceSubtask.setLeavediagname(patMedInhosp1.getDiagname());
        serviceSubtask.setLeavediagname(patMedInhosp1.getLeavediagname());
        serviceSubtask.setDiagname(patMedInhosp1.getDiagname());
        serviceSubtask.setTemplateid(serviceTask.getTemplateid());
        serviceSubtask.setTemplatename(serviceTask.getTemplatename());
        serviceSubtask.setPatid(patArchive.getId());
@@ -1019,6 +1028,13 @@
                }
            }
        }
        //如果患者的入院和出院时间一致,可以不用随访(南华附一肿瘤一病区提出)
        if (active.equals("nhfy") && patMedInhosp1.getStarttime() != null && patMedInhosp1.getEndtime() != null && DateUtils.differentDaysByMillisecond(patMedInhosp1.getStarttime(), patMedInhosp1.getEndtime()) == 0) {
            serviceSubtask.setRemark("患者当天出院,不用随访");
            serviceSubtask.setResult("error");
            //不执行
            serviceSubtask.setSendstate(4L);
        }
        //患者发送时间
@@ -1165,7 +1181,8 @@
        }
    }
    private void addOperationSubTask(String config) {
    @Override
    public void addOperationSubTask(String config) {
        //            手术随访
        PatMedOperationItem pmoi = new PatMedOperationItem();
        //获取需要出院疾病随访,未处理的数据
@@ -1204,7 +1221,7 @@
                e.printStackTrace();
                log.error("人员手术处理出异常了:{}", e.getMessage());
                opItem.setOpercheckFlag("2");
                opItem.setLongTaskReason("人员手术处理异常:" + e.getMessage());
                opItem.setLongTaskReason("人员手术处理异常");
                patMedOperationItemMapper.updatePatMedOperationItem(opItem);
            }
        }
@@ -1295,7 +1312,7 @@
                e.printStackTrace();
                log.error("人员疾病处理出异常了:{}", e.getMessage());
                pmiJB.setDiagcheckFlag("2");
                pmiJB.setLongTaskReason("人员疾病处理异常:" + e.getMessage());
                pmiJB.setLongTaskReason("人员疾病处理异常");
                patMedInhospMapper.updatePatMedInhosp(pmiJB);
            }
        }
@@ -1364,7 +1381,7 @@
                e.printStackTrace();
                log.error("人员病区处理出异常了:{}", e.getMessage());
                pmiBQ1.setWardcheckFlag("2");
                pmiBQ1.setLongTaskReason("人员病区处理异常:" + e.getMessage());
                pmiBQ1.setLongTaskReason("人员病区处理异常");
                patMedInhospMapper.updatePatMedInhosp(pmiBQ1);
            }
        }
@@ -1424,7 +1441,7 @@
                e.printStackTrace();
                log.error("人员科室处理出异常了:{}", e.getMessage());
                patMedInhosp1.setDeptcheckFlag("2");
                patMedInhosp1.setLongTaskReason("人员科室处理异常:" + e.getMessage());
                patMedInhosp1.setLongTaskReason("人员科室处理异常");
                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
            }
        }
@@ -1549,52 +1566,52 @@
                            // —— 将=2的次要规则对应flag设为"2"(跳过)
                            log.info("【基于规则】首要规则有成功(count={}),将次要规则对应flag设为2", primaryGeneratedCount);
                            if (deptIsSecondary) {
                                updateCheckFlag(patMedInhosp1, 1, "2", StringUtils.isNotEmpty(remark)?remark+";首要规则已生成,次要规则跳过":"首要规则已生成,次要规则跳过");
                                updateCheckFlag(patMedInhosp1, 1, "2", StringUtils.isNotEmpty(remark) ? remark + ";首要规则已生成,次要规则跳过" : "首要规则已生成,次要规则跳过");
                            }
                            if (!active.equals("xh")) {
                                if (wardIsSecondary) {
                                    updateCheckFlag(patMedInhosp1, 2, "2", StringUtils.isNotEmpty(remark)?remark+";首要规则已生成,次要规则跳过":"首要规则已生成,次要规则跳过");
                                    updateCheckFlag(patMedInhosp1, 2, "2", StringUtils.isNotEmpty(remark) ? remark + ";首要规则已生成,次要规则跳过" : "首要规则已生成,次要规则跳过");
                                }
                                if (diagIsSecondary) {
                                    updateCheckFlag(patMedInhosp1, 3, "2", StringUtils.isNotEmpty(remark)?remark+";首要规则已生成,次要规则跳过":"首要规则已生成,次要规则跳过");
                                    updateCheckFlag(patMedInhosp1, 3, "2", StringUtils.isNotEmpty(remark) ? remark + ";首要规则已生成,次要规则跳过" : "首要规则已生成,次要规则跳过");
                                }
                            }
                            // —— 对于=1且生成成功的,将其对应flag设为"1"
                            if (deptIsPrimary && deptGenCount > 0) {
                                updateCheckFlag(patMedInhosp1, 1, "1", StringUtils.isNotEmpty(remark)?remark+";科室首要规则生成成功":"科室首要规则生成成功");
                                updateCheckFlag(patMedInhosp1, 1, "1", StringUtils.isNotEmpty(remark) ? remark + ";科室首要规则生成成功" : "科室首要规则生成成功");
                            }
                            if (!active.equals("xh")) {
                                if (wardIsPrimary && wardGenCount > 0) {
                                    updateCheckFlag(patMedInhosp1, 2, "1", StringUtils.isNotEmpty(remark)?remark+";病区首要规则生成成功":"病区首要规则生成成功");
                                    updateCheckFlag(patMedInhosp1, 2, "1", StringUtils.isNotEmpty(remark) ? remark + ";病区首要规则生成成功" : "病区首要规则生成成功");
                                }
                                if (diagIsPrimary && diagGenCount > 0) {
                                    updateCheckFlag(patMedInhosp1, 3, "1", StringUtils.isNotEmpty(remark)?remark+";疾病首要规则生成成功":"疾病首要规则生成成功");
                                    updateCheckFlag(patMedInhosp1, 3, "1", StringUtils.isNotEmpty(remark) ? remark + ";疾病首要规则生成成功" : "疾病首要规则生成成功");
                                }
                            }
                            // —— 对于=1但生成失败的,将其对应flag设为"2"
                            if (deptIsPrimary && deptGenCount == 0) {
                                updateCheckFlag(patMedInhosp1, 1, "2", StringUtils.isNotEmpty(remark)?remark+";科室首要规则生成失败":"科室首要规则生成失败");
                                updateCheckFlag(patMedInhosp1, 1, "2", StringUtils.isNotEmpty(remark) ? remark + ";科室首要规则生成失败" : "科室首要规则生成失败");
                            }
                            if (!active.equals("xh")) {
                                if (wardIsPrimary && wardGenCount == 0) {
                                    updateCheckFlag(patMedInhosp1, 2, "2", StringUtils.isNotEmpty(remark)?remark+";病区首要规则生成失败":"病区首要规则生成失败");
                                    updateCheckFlag(patMedInhosp1, 2, "2", StringUtils.isNotEmpty(remark) ? remark + ";病区首要规则生成失败" : "病区首要规则生成失败");
                                }
                                if (diagIsPrimary && diagGenCount == 0) {
                                    updateCheckFlag(patMedInhosp1, 3, "2", StringUtils.isNotEmpty(remark)?remark+";疾病首要规则生成失败":"疾病首要规则生成失败");
                                    updateCheckFlag(patMedInhosp1, 3, "2", StringUtils.isNotEmpty(remark) ? remark + ";疾病首要规则生成失败" : "疾病首要规则生成失败");
                                }
                            }
                        } else {
                            // 所有首要规则全部失败,将=1的flag设为"2",然后执行=2的方法
                            log.info("【基于规则】首要规则全部失败,将=1的flag设为2,开始执行次要规则");
                            if (deptIsPrimary) {
                                updateCheckFlag(patMedInhosp1, 1, "2", StringUtils.isNotEmpty(remark)?remark+";科室首要规则全部失败":"科室首要规则全部失败");
                                updateCheckFlag(patMedInhosp1, 1, "2", StringUtils.isNotEmpty(remark) ? remark + ";科室首要规则全部失败" : "科室首要规则全部失败");
                            }
                            if (!active.equals("xh")) {
                                if (wardIsPrimary) {
                                    updateCheckFlag(patMedInhosp1, 2, "2", StringUtils.isNotEmpty(remark)?remark+";病区首要规则全部失败":"病区首要规则全部失败");
                                    updateCheckFlag(patMedInhosp1, 2, "2", StringUtils.isNotEmpty(remark) ? remark + ";病区首要规则全部失败" : "病区首要规则全部失败");
                                }
                                if (diagIsPrimary) {
                                    updateCheckFlag(patMedInhosp1, 3, "2", StringUtils.isNotEmpty(remark)?remark+";疾病首要规则全部失败":"疾病首要规则全部失败");
                                    updateCheckFlag(patMedInhosp1, 3, "2", StringUtils.isNotEmpty(remark) ? remark + ";疾病首要规则全部失败" : "疾病首要规则全部失败");
                                }
                            }
                            // 执行次要规则(=2)的方法
@@ -1629,7 +1646,7 @@
                e.printStackTrace();
                log.error("【基于规则】患者{}处理异常:{}", patMedInhosp1.getInhospid(), e.getMessage());
                patMedInhosp1.setDeptcheckFlag("2");
                patMedInhosp1.setLongTaskReason("基于规则处理异常:" + e.getMessage());
                patMedInhosp1.setLongTaskReason("基于规则处理异常");
                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
            }
        }
@@ -1669,7 +1686,7 @@
            e.printStackTrace();
            log.error("【科室任务】患者{}处理异常:{}", patMedInhosp1.getInhospid(), e.getMessage());
            patMedInhosp1.setDeptcheckFlag("2");
            patMedInhosp1.setLongTaskReason("科室任务处理异常:" + e.getMessage());
            patMedInhosp1.setLongTaskReason("科室任务处理异常");
            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
        }
        return generatedCount;
@@ -1717,7 +1734,7 @@
            e.printStackTrace();
            log.error("【病区任务】患者{}处理异常:{}", patMedInhosp1.getInhospid(), e.getMessage());
            patMedInhosp1.setWardcheckFlag("2");
            patMedInhosp1.setLongTaskReason("病区任务处理异常:" + e.getMessage());
            patMedInhosp1.setLongTaskReason("病区任务处理异常");
            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
        }
        return generatedCount;
@@ -1783,7 +1800,7 @@
            e.printStackTrace();
            log.error("【疾病任务】患者{}处理异常:{}", patMedInhosp1.getInhospid(), e.getMessage());
            patMedInhosp1.setDiagcheckFlag("2");
            patMedInhosp1.setLongTaskReason("疾病任务处理异常:" + e.getMessage());
            patMedInhosp1.setLongTaskReason("疾病任务处理异常");
            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
        }
        return generatedCount;