陈昶聿
3 天以前 518ae81bde48d173d468a5de3cec3f966783041e
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.smartor.common.ScheduleSubtaskBuilder;
import com.smartor.domain.*;
import com.smartor.domain.DTO.PatMedInhospDTO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
import com.smartor.service.IPatMedInhospService;
@@ -55,7 +56,7 @@
    @Autowired
    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
    @Autowired
    private PatMedOperationMapper patMedOperationMapper;
    private ServiceTaskmedicalMapper serviceTaskmedicalMapper;
    @Autowired
    private PatMedOperationItemMapper patMedOperationItemMapper;
    @Autowired
@@ -98,14 +99,18 @@
     */
    @Override
    public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp) {
        if (patMedInhosp.getCry() == 0) {
        if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 0) {
            patMedInhosp.setDeptcodeList(patMedInhosp.getLeaveldeptcodes());
            patMedInhosp.setHospitaldistrictcodeList(patMedInhosp.getLeavehospitaldistrictcodes());
            patMedInhosp.setLeaveldeptcodes(null);
            patMedInhosp.setLeavehospitaldistrictcodes(null);
            patMedInhosp.setInhospstate("0");
        } else if (patMedInhosp.getCry() == 1) {
        } else if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 1) {
            patMedInhosp.setInhospstate("1");
        } else if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 2) {
            patMedInhosp.setInhospstate("2");
        } else if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 3) {
            patMedInhosp.setInhospstate("3");
        }
        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
@@ -114,6 +119,24 @@
            patMedInhosp1.setTagname(tagname);
        }
        return patMedInhospList;
    }
    @Override
    public List<PatMedInhospDTO> selectPatMedInhospByApplication(PatMedInhosp patMedInhosp) {
        List<PatMedInhosp> patMedInhosps = selectPatMedInhospList(patMedInhosp);
        if (!org.springframework.util.CollectionUtils.isEmpty(patMedInhosps)) {
            return null;
        }
        List<PatMedInhospDTO> patMedInhospDTOList = DtoConversionUtils.sourceToTarget(patMedInhosps, PatMedInhospDTO.class);
        for (PatMedInhospDTO pmd : patMedInhospDTOList) {
            ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity();
            serviceSubtask.setServiceType("4");
            serviceSubtask.setInhospid(pmd.getInhospid());
            List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask);
            if (CollectionUtils.isNotEmpty(serviceSubtasks)) pmd.setFinishFlag("1");
        }
        return patMedInhospDTOList;
    }
    @Override
@@ -233,17 +256,18 @@
    @Override
    public int dealOutHospInfo(String config) {
        PatMedInhosp pmks = new PatMedInhosp();
        pmks.setDeptcheckFlag("0");
        pmks.setInhospstate("1");
        pmks.setFuflag("1");
        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks);
        //1.入院宣教
        String helibrarySwitch = iSysConfigService.selectConfigByKey("in.helibrary.switch");
        if (StringUtils.isNotEmpty(helibrarySwitch) && "2".equals(helibrarySwitch)) {
            PatMedInhosp inhosp = new PatMedInhosp();
            inhosp.setInDeptcheckFlag("0");
            inhosp.setInhospstate("0");
            inhosp.setFuflag("1");
            List<PatMedInhosp> inPatMedInhosps = patMedInhospMapper.selectPatMedInhospList(inhosp);
            //1.1 科室
            for (PatMedInhosp patMedInhosp1 : inPatMedInhosps) {
            for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
                //获取患者信息
                PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
                if (Objects.isNull(patArchive)) {
@@ -283,9 +307,10 @@
            //1.2 病区
            inhosp.setInDeptcheckFlag(null);
            inhosp.setInWardcheckFlag("0");
            List<PatMedInhosp> inPatMedInhospsWard = patMedInhospMapper.selectPatMedInhospList(inhosp);
            pmks.setInDeptcheckFlag(null);
            pmks.setInWardcheckFlag("0");
            pmks.setDeptcheckFlag(null);
            List<PatMedInhosp> inPatMedInhospsWard = patMedInhospMapper.selectPatMedInhospList(pmks);
            for (PatMedInhosp patMedInhosp1 : inPatMedInhospsWard) {
                //获取患者信息
                PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
@@ -317,9 +342,44 @@
            }
        }
        //2.出院随访 - 基于规则的任务生成
        addSubTaskByRule(config);
        //根据患者所在病区,获取该病区的长期任务,新华医院可以先不用根据病区和疾病来做
        //2.药品宣教(省立同德的需求,其它地方没提)
        if (active.equals("sltd")) {
            for (PatMedInhosp patMedInhosp : patMedInhosps) {
                String medicalCode = patMedInhosp.getMedicalCode();
                if (StringUtils.isNotEmpty(medicalCode)) {
                    String[] split = medicalCode.split(",");
                    // 防御性编程:确保 medicalCompany 和 medicalName 不为 null
                    String medicalCompanyStr = patMedInhosp.getMedicalCompany() != null ? patMedInhosp.getMedicalCompany() : "";
                    String medicalNameStr = patMedInhosp.getMedicalName() != null ? patMedInhosp.getMedicalName() : "";
                    String[] medicalCompanyArray = medicalCompanyStr.split(",");
                    String[] medicalNameArray = medicalNameStr.split(",");
                    for (int i = 0; i < split.length; i++) {
                        ServiceTaskmedical serviceTaskmedical = new ServiceTaskmedical();
                        //拿药品编码和公司去查
                        serviceTaskmedical.setMedicalCode(split[i]);
                        // 防止下标越界:如果数组长度不一致,取最小长度
                        if (i < medicalCompanyArray.length) {
                            serviceTaskmedical.setMedicalCompany(medicalCompanyArray[i]);
                        } else {
                            log.warn("【药品宣教】药品编码{}对应的公司信息下标越界,medicalCompany 数组长度={}, 当前索引={}", split[i], medicalCompanyArray.length, i);
                            serviceTaskmedical.setMedicalName(""); // 越界时设置为空
                        }
                        List<ServiceTaskmedical> serviceTaskmedicals = serviceTaskmedicalMapper.selectServiceTaskmedicalList(serviceTaskmedical);
                        if (CollectionUtils.isNotEmpty(serviceTaskmedicals)) {
                            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp.getPatid());
                            // check=true,让 writeInSubTask 内部做去重校验
                            writeInSubTask(serviceTaskmedicals.get(0).getTaskId(), true, patMedInhosp, patArchive, 0, config);
                        }
                        //查不到的药品就是不需要宣教的,就不管了
                    }
                }
            }
        }
        //3.出院随访 - 基于规则的任务生成
        // 获取所有需要处理的出院患者(科室维度未处理)
        addSubTaskByRule(config, patMedInhosps);
        if (!active.equals("xh")) {
            addOperationSubTask(config);
        }
@@ -351,12 +411,12 @@
        if (CollectionUtils.isNotEmpty(serviceTasks)) {
            for (ServiceTask serviceTask : serviceTasks) {
                if(!ObjectUtils.isEmpty(serviceTask.getTaskid())){
                if (!ObjectUtils.isEmpty(serviceTask.getTaskid())) {
                    ServiceTaskSchedule serviceTaskSchedule = new ServiceTaskSchedule();
                    ServiceTaskSchedule taskSchedule = new ServiceTaskSchedule();
                    taskSchedule.setTaskid(serviceTask.getTaskid());
                    List<ServiceTaskSchedule> serviceTaskSchedules = serviceTaskScheduleMapper.selectServiceTaskScheduleList(taskSchedule);
                    if(CollectionUtils.isNotEmpty(serviceTaskSchedules)){
                    if (CollectionUtils.isNotEmpty(serviceTaskSchedules)) {
                        serviceTaskSchedule = serviceTaskSchedules.get(0);
                        String deptCodes = serviceTaskSchedule.getDeptCodes();
                        String wardCodes = serviceTaskSchedule.getWardCodes();
@@ -374,22 +434,22 @@
                        Integer type = 1;
                        if (StringUtils.isNotEmpty(deptCodes)) {
                            type = 1;
                            deptCodeList = Arrays.asList(deptCodes.split(","));
                            deptCodeList = new ArrayList<>(Arrays.asList(deptCodes.split(",")));
                        }
                        if(StringUtils.isNotEmpty(wardCodes)) {
                        if (StringUtils.isNotEmpty(wardCodes)) {
                            type = 2;
                            wardCodeList = Arrays.asList(wardCodes.split(","));
                            wardCodeList = new ArrayList<>(Arrays.asList(wardCodes.split(",")));
                        }
                        if(StringUtils.isNotEmpty(icd10Codes)) {
                        if (StringUtils.isNotEmpty(icd10Codes)) {
                            type = 3;
                            icd10CodeList = Arrays.asList(icd10Codes.split(","));
                            icd10CodeList = new ArrayList<>(Arrays.asList(icd10Codes.split(",")));
                        }
                        if (StringUtils.isNotEmpty(opLevelCodes)) {
                            type = 6;
                            opLevelCodeList = Arrays.asList(opLevelCodes.split(","));
                            opLevelCodeList = new ArrayList<>(Arrays.asList(opLevelCodes.split(",")));
                        }
                        //非手术处理方式
                        if(type != 6){
                        if (type != 6) {
                            PatMedInhosp patMedInhospVo = new PatMedInhosp();
                            patMedInhospVo.setScheduleCheckFlag("0");
                            patMedInhospVo.setInhospstate("1");
@@ -401,7 +461,7 @@
                            List<PatMedInhosp> patList = patMedInhospMapper.selectPatMedInhospList(patMedInhospVo);
                            log.info("dealOutHospInfoBySchedule 任务组随访, taskid = {}, 扫描患者人数 {}", serviceTask.getTaskid(), patList.size());
                            for(PatMedInhosp patMedInhosp : patList){
                            for (PatMedInhosp patMedInhosp : patList) {
                                ServiceTaskScheduleDetail scheduleDetailVo = new ServiceTaskScheduleDetail();
                                scheduleDetailVo.setTaskid(serviceTask.getTaskid());
                                scheduleDetailVo.setScheduleid(serviceTaskSchedule.getId());
@@ -415,11 +475,11 @@
                                ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp, patArchive, config, type);
                                List<Map<String, Object>> preachformList = new ArrayList<>();
                                if(StringUtils.isNotEmpty(serviceTask.getPreachformDesc())){
                                if (StringUtils.isNotEmpty(serviceTask.getPreachformDesc())) {
                                    try {
                                        ObjectMapper objectMapper = new ObjectMapper();
                                        preachformList = objectMapper.readValue(serviceTask.getPreachformDesc(), List.class);
                                    }catch (Exception e){
                                    } catch (Exception e) {
                                        log.error("任务组preachformDesc解析失败,taskid={},inhospid={}", serviceTask.getTaskid(), patMedInhosp.getInhospid());
                                    }
                                }
@@ -430,9 +490,9 @@
                                flagUpd.setScheduleCheckFlag("1");
                                patMedInhospMapper.updatePatMedInhosp(flagUpd);
                            }
                        }else {
                        } else {
                            //任务组 - 手术随访
                            if(CollectionUtils.isNotEmpty(opLevelCodeList)){
                            if (CollectionUtils.isNotEmpty(opLevelCodeList)) {
                                PatMedOperationItem pmoi = new PatMedOperationItem();
                                //获取需要出院疾病随访,未处理的数据
                                pmoi.setOpercheckFlag("0");
@@ -441,7 +501,7 @@
                                pmoi.setWardCodes(wardCodeList);
                                pmoi.setOpLevelCodes(opLevelCodeList);
                                List<PatMedOperationItem> patMedOperationItems = patMedOperationItemMapper.selectOperationItemList(pmoi);
                                for(PatMedOperationItem patMedOperationItem : patMedOperationItems){
                                for (PatMedOperationItem patMedOperationItem : patMedOperationItems) {
                                    PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOperationItem.getPatid());
                                    if (Objects.isNull(patArchive)) {
                                        continue;
@@ -452,7 +512,7 @@
                                    patMedInhospVo.setInhospstate("1");
                                    patMedInhospVo.setFuflag("1");
                                    List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhospVo);
                                    if(CollectionUtils.isNotEmpty(patMedInhospList)){
                                    if (CollectionUtils.isNotEmpty(patMedInhospList)) {
                                        ServiceTaskScheduleDetail scheduleDetailVo = new ServiceTaskScheduleDetail();
                                        scheduleDetailVo.setTaskid(serviceTask.getTaskid());
                                        scheduleDetailVo.setScheduleid(serviceTaskSchedule.getId());
@@ -460,11 +520,11 @@
                                        //封装serviceSubtask
                                        ServiceSubtask serviceSubtask = boxedServiceSubtaskForOp(serviceTask, patMedInhospList.get(0), patMedOperationItem, patArchive, config);
                                        List<Map<String, Object>> preachformList = new ArrayList<>();
                                        if(StringUtils.isNotEmpty(serviceTask.getPreachformDesc())){
                                        if (StringUtils.isNotEmpty(serviceTask.getPreachformDesc())) {
                                            try {
                                                ObjectMapper objectMapper = new ObjectMapper();
                                                preachformList = objectMapper.readValue(serviceTask.getPreachformDesc(), List.class);
                                            }catch (Exception e){
                                            } catch (Exception e) {
                                                log.error("任务组(手术)preachformDesc解析失败,taskid={}", serviceTask.getTaskid());
                                            }
                                        }
@@ -547,7 +607,7 @@
     * @param check         是否需要校验
     * @param patMedInhosp1 病人出入院信息
     * @param patArchive    病人信息
     * @param type          随访类型(1-科室,2-病区,3-疾病 4-入院科室 5-入院病区)
     * @param type          随访类型(0-宣教,1-科室,2-病区,3-疾病 4-入院科室 5-入院病区)
     * @param config        配置信息 visit.early.day
     */
    //将患者放到subtask中
@@ -561,6 +621,13 @@
        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
        ServiceTask serviceTask = null;
        if (CollectionUtils.isEmpty(serviceTasks)) {
            if (type == 0) {
                log.info("该患者药品宣教长期任务不存在,任务ID为:{}", taskid);
                patMedInhosp1.setMedcheckFlag("2");
                patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者药品宣教长期任务不存在,任务ID为:" + taskid);
                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
                return;
            }
            if (type == 1) {
                log.info("该患者出院随访长期任务不存在,任务ID为:{}", taskid);
                patMedInhosp1.setDeptcheckFlag("2");
@@ -739,7 +806,7 @@
                addServiceSubtaskPreachform(serviceSubtask, null);
            }
            //将check_flag改成1(已处理)
            //将 check_flag 改成 1(已处理)
            if (i == 1) {
                PatMedInhosp patMedInhosp2 = new PatMedInhosp();
                patMedInhosp2.setInhospid(patMedInhosp1.getInhospid());
@@ -770,6 +837,7 @@
            if (type == 1) patMedInhosp2.setDeptcheckFlag("2");
            if (type == 2) patMedInhosp2.setWardcheckFlag("2");
            if (type == 3) patMedInhosp2.setDiagcheckFlag("2");
            if (type == 0) patMedInhosp2.setMedcheckFlag("2");
            patMedInhosp2.setRemark("生成子任务报错回滚 " + type);
            patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
            e.printStackTrace();
@@ -817,6 +885,10 @@
        patMedInhosp.setPatid((patMedOperationItem.getPatid()));
        patMedInhosp.setInhospstate("1");
        patMedInhosp.setFuflag("1");
        //手术随访
        if(!active.equals("hzszlyy")){
            patMedInhosp.setSerialnum(patMedOperationItem.getSerialnum());
        }
        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
        if (CollectionUtils.isEmpty(patMedInhospList)) {
@@ -828,12 +900,12 @@
        if (ObjectUtils.isEmpty(serviceSubtask)) {
            return;
        }
        if(StringUtils.isNotEmpty(patMedOperationItem.getDeptcode())){
            serviceSubtask.setVisitDeptCode(patMedOperationItem.getDeptcode());
            serviceSubtask.setVisitDeptName(patMedOperationItem.getDeptname());
        }else {
            serviceSubtask.setVisitDeptCode(patMedOperationItem.getHospitaldistrictcode());
            serviceSubtask.setVisitDeptName(patMedOperationItem.getHospitaldistrictname());
        if (StringUtils.isNotEmpty(patMedOperationItem.getLeaveldeptcode())) {
            serviceSubtask.setVisitDeptCode(patMedOperationItem.getLeaveldeptcode());
            serviceSubtask.setVisitDeptName(patMedOperationItem.getLeaveldeptname());
        } else {
            serviceSubtask.setVisitDeptCode(patMedOperationItem.getLeavehospitaldistrictcode());
            serviceSubtask.setVisitDeptName(patMedOperationItem.getLeavehospitaldistrictname());
        }
        //记录insertServiceSubtask语句返回状态
        Integer i = 0;
@@ -952,7 +1024,8 @@
    //封装serviceSubtask
    private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive, String config, Integer type) {
    @Override
    public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive, String config, Integer type) {
        //增加serviceTask判空
//        if(Objects.isNull(serviceTask)){
//            return null;
@@ -990,6 +1063,7 @@
        serviceSubtask.setSex(patArchive.getSex());
        serviceSubtask.setAge(patArchive.getAge());
        serviceSubtask.setSendstate(2L);
        serviceSubtask.setCampusid(patMedInhosp1.getCampusid());
        serviceSubtask.setManagementDoctor(patMedInhosp1.getManagementDoctor());
        serviceSubtask.setManagementDoctorCode(patMedInhosp1.getManagementDoctorCode());
        serviceSubtask.setStarttime(patMedInhosp1.getStarttime());
@@ -1071,13 +1145,15 @@
        serviceSubtask.setTaskid(serviceTask.getTaskid());
        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
        serviceSubtask.setNurseId(patMedOperationItem.getNurseId());
        serviceSubtask.setNurseName(patMedOperationItem.getNurseName());
//        serviceSubtask.setInhospid(patMedInhosp.getInhospid());
        serviceSubtask.setDrcode(patMedOperationItem.getDrcode());
        serviceSubtask.setDrname(patMedOperationItem.getDrname());
        serviceSubtask.setDeptcode(patMedOperationItem.getDeptcode());
        serviceSubtask.setDeptname(patMedOperationItem.getDeptname());
        serviceSubtask.setNurseId(patMedInhosp1.getNurseId());
        serviceSubtask.setNurseName(patMedInhosp1.getNurseName());
        serviceSubtask.setInhospid(patMedInhosp1.getInhospid());
        serviceSubtask.setDrcode(patMedInhosp1.getDrcode());
        serviceSubtask.setDrname(patMedInhosp1.getDrname());
        serviceSubtask.setDeptcode(patMedInhosp1.getLeaveldeptcode());
        serviceSubtask.setDeptname(patMedInhosp1.getLeaveldeptname());
        serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());
        serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
        serviceSubtask.setTemplateid(serviceTask.getTemplateid());
        serviceSubtask.setTemplatename(serviceTask.getTemplatename());
@@ -1089,19 +1165,18 @@
        serviceSubtask.setSex(patArchive.getSex());
        serviceSubtask.setAge(patArchive.getAge());
        serviceSubtask.setSendstate(2L);
        serviceSubtask.setManagementDoctor(patMedOperationItem.getDrname());
        serviceSubtask.setManagementDoctorCode(patMedOperationItem.getDrcode());
//        serviceSubtask.setStarttime(patMedInhosp.getStarttime());
//        serviceSubtask.setEndtime(patMedInhosp.getEndtime());
        serviceSubtask.setManagementDoctor(patMedInhosp1.getDrname());
        serviceSubtask.setManagementDoctorCode(patMedInhosp1.getDrcode());
        serviceSubtask.setStarttime(patMedInhosp1.getStarttime());
        serviceSubtask.setEndtime(patMedInhosp1.getEndtime());
        serviceSubtask.setServiceType(serviceTask.getServiceType());
        serviceSubtask.setPreachform(serviceTask.getPreachform());
        serviceSubtask.setHospType("2");
        serviceSubtask.setCreateTime(new Date());
        serviceSubtask.setUpdateTime(new Date());
        serviceSubtask.setCreateBy(patMedOperationItem.getNurseName());
//        serviceSubtask.setLeavehospitaldistrictcode(patArchive.getLeavehospitaldistrictcode());
//        serviceSubtask.setLeavehospitaldistrictname(patArchive.getLeavehospitaldistrictname());
        serviceSubtask.setCreateBy(patMedInhosp1.getNurseName());
        serviceSubtask.setOperationItemId(patMedOperationItem.getId());
        serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
        serviceSubtask.setUpdateTime(new Date());
@@ -1200,7 +1275,10 @@
    public void addOperationSubTask(String config) {
        //            手术随访
        PatMedOperationItem pmoi = new PatMedOperationItem();
        //获取需要出院疾病随访,未处理的数据
        //获取需要出院手术随访,未处理的数据
        if(!active.equals("hzszlyy")){
            pmoi.setInhospstate("1");
        }
        pmoi.setOpercheckFlag("0");
        pmoi.setMainFlag("1");
@@ -1220,8 +1298,11 @@
                serviceTaskoper.setOplevelcode(opItem.getOplevelcode());
                //根据科室、病区过滤
                serviceTaskoper.setDeptCode(opItem.getDeptcode());
                serviceTaskoper.setWardCode(opItem.getHospitaldistrictcode());
                if(StringUtils.isNotEmpty(opItem.getLeaveldeptcode())){
                    serviceTaskoper.setDeptCode(opItem.getLeaveldeptcode());
                }else {
                    serviceTaskoper.setWardCode(opItem.getLeavehospitaldistrictcode());
                }
                List<ServiceTaskoper> serviceTaskopers = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper);
                //如果部门模板为空(将deptIsNull设置为true)
@@ -1276,7 +1357,7 @@
                // 根据患者的疾病,获取该疾病的长期任务
                ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
                serviceTaskdiag.setLongtask(1L);
                serviceTaskdiag.setServiceType("2");
//                serviceTaskdiag.setServiceType("2");
                if (active.equals("nhfy")) {
                    //南华附一的icd10code有重复,所以用主诊断名称去查询
                    serviceTaskdiag.setIcd10name(pmiJB.getLeavediagname());
@@ -1505,15 +1586,7 @@
     * 根据患者离院科室或病区查询service_task_rule,获取deptRule、wradRule、diagRule
     * 根据规则值决定调用哪个方法生成随访任务
     */
    private void addSubTaskByRule(String config) {
        // 获取所有需要处理的出院患者(科室维度未处理)
        PatMedInhosp pmks = new PatMedInhosp();
        pmks.setDeptcheckFlag("0");
        pmks.setInhospstate("1");
        pmks.setFuflag("1");
        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks);
        log.info("【基于规则】需要处理的出院患者信息:{}", CollectionUtils.isNotEmpty(patMedInhosps) ? patMedInhosps.size() : null);
    private void addSubTaskByRule(String config, List<PatMedInhosp> patMedInhosps) {
        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
            // 获取患者基本信息
            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
@@ -1773,7 +1846,7 @@
            ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
            serviceTaskdiag.setLongtask(1L);
            serviceTaskdiag.setServiceType("2");
//            serviceTaskdiag.setServiceType("2");
            if (active.equals("nhfy")) {
                serviceTaskdiag.setIcd10name(patMedInhosp1.getLeavediagname());
                if (StringUtils.isEmpty(patMedInhosp1.getLeavediagname())) {