陈昶聿
2 天以前 53b7afbfbc83b9ed3dbe3eaa656faf1edd5258d4
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -146,16 +146,6 @@
    public PatMedRes selectPatMedInhospListCount(PatMedReq patMedReq) {
        PatMedRes patMedRes = null;
        // 获取当前登陆人的部门权限
        if (org.springframework.util.CollectionUtils.isEmpty(patMedReq.getDeptcodeList())) {
//            Long userId = SecurityUtils.getUserId();
//            List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(userId);
//            List<String> deptCode = new ArrayList<>();
//            for (SysDept sysDept : sysDepts) {
//                deptCode.add(sysDept.getDeptId().toString());
//            }
//            patMedReq.setDeptcodeList(deptCode);
//            patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);
        }
        patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);
        return patMedRes;
    }
@@ -441,6 +431,7 @@
    /**
     * 多维度随访
     *
     * @param config
     * @return
     */
@@ -479,14 +470,12 @@
     * 按维度找到所有匹配长期任务,批量生成 subtask
     * type: 1=科室, 2=病区, 3=疾病
     */
    private void processTasksByDimension(PatMedInhosp patMedInhosp1,
            PatArchive patArchive,
            String config, int type) {
    private void processTasksByDimension(PatMedInhosp patMedInhosp1, PatArchive patArchive, String config, int type) {
        List<Long> matchedTaskIds = findMatchingTaskIds(patMedInhosp1, type);
        if (CollectionUtils.isEmpty(matchedTaskIds)) {
                String reason = getDimensionReason(type);
                markFlagAsNoConfig(patMedInhosp1, type, reason);
            String reason = getDimensionReason(type);
            markFlagAsNoConfig(patMedInhosp1, type, reason);
            return;
        }
@@ -496,11 +485,11 @@
        }
    }
    private String getDimensionReason(int type){
    private String getDimensionReason(int type) {
        switch (type) {
            case 1: { // 科室
                return "未找到科室匹配的长期任务";
                 }
            }
            case 2: { // 病区
                return "未找到病区匹配的长期任务";
            }
@@ -511,9 +500,7 @@
        return "多维长期任务-匹配类型为空";
    }
    private void markFlagAsNoConfig(PatMedInhosp patMedInhosp,
                                    int type,
                                    String reason){
    private void markFlagAsNoConfig(PatMedInhosp patMedInhosp, int type, String reason) {
        switch (type) {
            case 1: { // 科室
                patMedInhosp.setDeptcheckFlag("2");
@@ -537,14 +524,14 @@
    }
    private void markAllFlagsAsError(PatMedInhosp patMedInhosp,
                                    String reason){
    private void markAllFlagsAsError(PatMedInhosp patMedInhosp, String reason) {
        patMedInhosp.setDeptcheckFlag("2");
        patMedInhosp.setWardcheckFlag("2");
        patMedInhosp.setDiagcheckFlag("2");
        patMedInhosp.setRemark(reason);
        patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
    }
    /**
     * 根据维度类型查询匹配的长期任务 ID 列表
     */
@@ -556,8 +543,7 @@
                query.setDeptCode(patMedInhosp1.getLeaveldeptcode());
                query.setDeptType("1");
                query.setOrgid(patMedInhosp1.getOrgid());
                return serviceTaskdeptMapper.selectServiceTaskdeptList(query)
                        .stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());
                return serviceTaskdeptMapper.selectServiceTaskdeptList(query).stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());
            }
            case 2: { // 病区
                ServiceTaskdept query = new ServiceTaskdept();
@@ -565,8 +551,7 @@
                query.setDeptCode(patMedInhosp1.getLeavehospitaldistrictcode());
                query.setDeptType("2");
                query.setOrgid(patMedInhosp1.getOrgid());
                return serviceTaskdeptMapper.selectServiceTaskdeptList(query)
                        .stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());
                return serviceTaskdeptMapper.selectServiceTaskdeptList(query).stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());
            }
            case 3: { // 疾病
                if (StringUtils.isEmpty(patMedInhosp1.getLeaveicd10code())) return Collections.emptyList();
@@ -574,8 +559,7 @@
                query.setLongtask(1L);
                query.setIcd10code(patMedInhosp1.getLeaveicd10code());
                query.setOrgid(patMedInhosp1.getOrgid());
                return serviceTaskdiagMapper.selectServiceTaskdiagList(query)
                        .stream().map(ServiceTaskdiag::getTaskId).collect(Collectors.toList());
                return serviceTaskdiagMapper.selectServiceTaskdiagList(query).stream().map(ServiceTaskdiag::getTaskId).collect(Collectors.toList());
            }
        }
        return Collections.emptyList();
@@ -741,13 +725,12 @@
    }
    /**
     *
     * @param taskid 任务id
     * @param check 是否需要校验
     * @param taskid        任务id
     * @param check         是否需要校验
     * @param patMedInhosp1 病人出入院信息
     * @param patArchive 病人信息
     * @param type 随访类型(1-科室,2-病区,3-疾病)
     * @param config 配置信息 visit.early.day
     * @param patArchive    病人信息
     * @param type          随访类型(1-科室,2-病区,3-疾病)
     * @param config        配置信息 visit.early.day
     */
    //将患者放到subtask中
    private void writeInSubTask(Long taskid, Boolean check, PatMedInhosp patMedInhosp1, PatArchive patArchive, Integer type, String config) {
@@ -992,8 +975,18 @@
        if (Objects.isNull(patArchive)) {
            return;
        }
        PatMedInhosp patMedInhosp = new PatMedInhosp();
        patMedInhosp.setPatid(patMedOperation.getPatid());
        patMedInhosp.setInhospstate("1");
        patMedInhosp.setFuflag("1");
        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
        if (CollectionUtils.isEmpty(patMedInhospList)) {
            return;
        }
        //封装serviceSubtask
        ServiceSubtask serviceSubtask = boxedServiceSubtaskForOp(serviceTask, patMedOperation, patMedOperationItem, patArchive, config);
        ServiceSubtask serviceSubtask = boxedServiceSubtaskForOp(serviceTask, patMedInhospList.get(0), patMedOperation, patMedOperationItem, patArchive, config);
        if (ObjectUtils.isEmpty(serviceSubtask)) {
            return;
        }
@@ -1204,7 +1197,7 @@
    }
    //封装serviceSubtask
    private ServiceSubtask boxedServiceSubtaskForOp(ServiceTask serviceTask, PatMedOperation patMedOperation, PatMedOperationItem patMedOperationItem, PatArchive patArchive, String config) {
    private ServiceSubtask boxedServiceSubtaskForOp(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatMedOperation patMedOperation, PatMedOperationItem patMedOperationItem, PatArchive patArchive, String config) {
        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
        serviceSubtask.setTaskid(serviceTask.getTaskid());
        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
@@ -1243,11 +1236,20 @@
        serviceSubtask.setOperationItemId(patMedOperationItem.getId());
        serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
        serviceSubtask.setUpdateTime(new Date());
        //todo
        //设置发送时间
        if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L);
        Date newDate = null;
        //todo
        newDate = addDays(patMedOperation.getCreateTime(), serviceTask.getSendDay().intValue());
        if (!Objects.isNull(patMedInhosp1.getEndtime())) {
            newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue());
        } else {
            patMedInhosp1.setDeptcheckFlag("2");
            patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 该患者手术出院时间为空,出院记录ID为:" + patMedInhosp1.getInhospid());
            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
            //如果出院时间为空,则返回一个新对象
            return new ServiceSubtask();
        }
        serviceSubtask.setLongSendTime(newDate);
        serviceSubtask.setVisitTime(newDate);
@@ -1255,7 +1257,6 @@
        if ("3".equals(serviceTask.getType())) {
            serviceSubtask.setVisitTime(minusDay(newDate, StringUtils.isNotEmpty(config) ? Integer.parseInt(config) : 0));
        }
        //患者发送时间
        if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
            String remark = patArchive.getNotrequiredreason();
@@ -1304,8 +1305,7 @@
                        }
                        //景宁 出院首次(7天)随访一定要做
                        boolean firstVisit = false;
                        if (serviceSubtask1.getOrgid().equals("47255004333112711A1001")
                                && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
                        if (serviceSubtask1.getOrgid().equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
                            firstVisit = true;
                        }
                        if (!firstVisit) {
@@ -1313,18 +1313,15 @@
                                //如果当前循环的子任务的出院时间在“准备新增的子任务”的出院时间之前,则将循环的子任务停掉
//                            log.error("患者再入院的serviceSubtask1为:{}", serviceSubtask1);
                                serviceSubtask1.setSendstate(4L);
                                serviceSubtask1.setIsVisitAgain(2);
                                serviceSubtask1.setRemark("患者再入院");
                                serviceSubtask1.setResult("error");
//                            serviceSubtask1.setFinishtime(new Date());
                                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
                            }
                        }
                    }
                }
                //将患入的入院数据设置为已处理
                //更新状态值 patMedInhosp1.setDeptcheckFlag("0");
                //patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
            } catch (Exception e) {
                log.error("入院数据信息出异常了:{},{}", patMedInhosp1, e.getMessage());
            }