| | |
| | | package com.smartor.service.impl; |
| | | |
| | | import com.ruoyi.othervisit.api.OtherVisitFacade; |
| | | import com.ruoyi.inhospvisit.api.InhospVisitFacade; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.core.type.TypeReference; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.ruoyi.common.core.domain.entity.SysDept; |
| | | import com.ruoyi.common.core.service.IConfigService; |
| | | import com.ruoyi.common.core.service.dto.PatMedReq; |
| | | import com.ruoyi.common.core.service.dto.PatMedRes; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.DtoConversionUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.smartor.common.ScheduleSubtaskBuilder; |
| | | import com.smartor.domain.*; |
| | | import com.smartor.domain.entity.ServiceSubtaskEntity; |
| | | import com.ruoyi.inhospvisit.domain.PatMedInhospDTO; |
| | | import com.smartor.mapper.*; |
| | | import com.smartor.service.IPatMedInhospService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import com.ruoyi.othervisit.domain.PatMedOperationItem; |
| | | import com.ruoyi.inhospvisit.domain.PatMedInhospVO; |
| | | import com.ruoyi.inhospvisit.domain.PatMedInhosp; |
| | | import com.ruoyi.common.core.domain.entity.PatArchive; |
| | | import com.ruoyi.task.domain.entity.ServiceSubtaskEntity; |
| | | import com.ruoyi.task.domain.ServiceSubtask; |
| | | import com.ruoyi.task.domain.ServiceTask; |
| | | import com.ruoyi.task.domain.ServiceTaskdept; |
| | | import com.ruoyi.task.domain.ServiceTaskdiag; |
| | | import com.ruoyi.task.domain.ServiceTaskmedical; |
| | | import com.ruoyi.task.domain.ServiceTaskoper; |
| | | import com.ruoyi.task.domain.ServiceTaskRule; |
| | | import com.ruoyi.task.domain.ServiceTaskSchedule; |
| | | import com.ruoyi.task.domain.ServiceTaskScheduleDetail; |
| | | import com.ruoyi.task.mapper.ServiceSubtaskMapper; |
| | | import com.ruoyi.task.mapper.ServiceTaskdeptMapper; |
| | | import com.ruoyi.task.mapper.ServiceTaskdiagMapper; |
| | | import com.ruoyi.task.mapper.ServiceTaskMapper; |
| | | import com.ruoyi.task.mapper.ServiceTaskmedicalMapper; |
| | | import com.ruoyi.task.mapper.ServiceTaskoperMapper; |
| | | import com.ruoyi.task.mapper.ServiceTaskRuleMapper; |
| | | import com.ruoyi.task.mapper.ServiceTaskScheduleDetailMapper; |
| | | import com.ruoyi.task.mapper.ServiceTaskScheduleMapper; |
| | | import com.ruoyi.task.domain.ServiceSubtaskPreachform; |
| | | import com.ruoyi.task.common.ScheduleSubtaskBuilder; |
| | | /** |
| | | * 患者住院记录Service业务层处理 |
| | | * |
| | |
| | | @Service |
| | | public class PatMedInhospServiceImpl implements IPatMedInhospService { |
| | | @Autowired |
| | | private PatMedInhospMapper patMedInhospMapper; |
| | | private InhospVisitFacade inhospVisitFacade; |
| | | |
| | | /** |
| | | * 手术数据一律经 ruoyi-othervisit 的门面取用(跨模块数据访问原则)。 |
| | | */ |
| | | @Autowired |
| | | private OtherVisitFacade otherVisitFacade; |
| | | @Autowired |
| | | private ServiceTaskdeptMapper serviceTaskdeptMapper; |
| | | @Autowired |
| | |
| | | @Autowired |
| | | private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper; |
| | | @Autowired |
| | | private PatMedOperationMapper patMedOperationMapper; |
| | | @Autowired |
| | | private PatMedOperationItemMapper patMedOperationItemMapper; |
| | | private ServiceTaskmedicalMapper serviceTaskmedicalMapper; |
| | | @Autowired |
| | | private ServiceTaskRuleMapper serviceTaskRuleMapper; |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public PatMedInhosp selectPatMedInhospByInhospid(Long inhospid) { |
| | | return patMedInhospMapper.selectPatMedInhospByInhospid(inhospid); |
| | | return inhospVisitFacade.selectPatMedInhospByInhospid(inhospid); |
| | | } |
| | | |
| | | @Override |
| | | public List<PatMedInhosp> selectPatMedInhosp(PatMedInhosp patMedInhosp) { |
| | | return patMedInhospMapper.selectPatMedInhosp(patMedInhosp); |
| | | return inhospVisitFacade.selectPatMedInhosp(patMedInhosp); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp) { |
| | | //入院床位排序只在「在院」查询(cry=0)下生效,其它查询一律忽略,保证原有排序不变 |
| | | patMedInhosp.setBedSort(normalizeBedSort(patMedInhosp.getCry(), patMedInhosp.getBedSort())); |
| | | if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 0) { |
| | | patMedInhosp.setDeptcodeList(patMedInhosp.getLeaveldeptcodes()); |
| | | patMedInhosp.setHospitaldistrictcodeList(patMedInhosp.getLeavehospitaldistrictcodes()); |
| | |
| | | patMedInhosp.setInhospstate("3"); |
| | | } |
| | | |
| | | List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp); |
| | | for (PatMedInhosp patMedInhosp1 : patMedInhospList) { |
| | | String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid()); |
| | | patMedInhosp1.setTagname(tagname); |
| | | } |
| | | List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp); |
| | | fillTagname(patMedInhospList); |
| | | return patMedInhospList; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Integer> queryPersonCount(PatServiceCount patServiceCount) { |
| | | if (patServiceCount.getInterval() == 1) { |
| | | //周 |
| | | } else if (patServiceCount.getInterval() == 2) { |
| | | //月 |
| | | } else if (patServiceCount.getInterval() == 3) { |
| | | //年 |
| | | /** |
| | | * 批量填充患者标签 |
| | | * <p> |
| | | * 原实现是每行调一次 getTagnameBypatid,SQL 往返次数随 pageSize 线性增长; |
| | | * 这里按 patid 去重后分批一次查回,结果与逐行查询完全一致(患者无标签时仍为 null)。 |
| | | * |
| | | * @param patMedInhospList 待填充的住院记录,允许为空 |
| | | */ |
| | | private void fillTagname(List<PatMedInhosp> patMedInhospList) { |
| | | if (CollectionUtils.isEmpty(patMedInhospList)) { |
| | | return; |
| | | } |
| | | // LinkedHashSet 去重同时保持顺序,避免 IN 列表出现重复 patid |
| | | Set<Long> patids = new LinkedHashSet<>(); |
| | | for (PatMedInhosp patMedInhosp : patMedInhospList) { |
| | | if (patMedInhosp.getPatid() != null) { |
| | | patids.add(patMedInhosp.getPatid()); |
| | | } |
| | | } |
| | | if (patids.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | Map<Long, String> tagnameMap = new HashMap<>(); |
| | | List<Long> patidList = new ArrayList<>(patids); |
| | | // 分片,防止 IN 参数过多 |
| | | int batchSize = 1000; |
| | | for (int i = 0; i < patidList.size(); i += batchSize) { |
| | | List<Long> batch = patidList.subList(i, Math.min(i + batchSize, patidList.size())); |
| | | List<Map<String, Object>> rows = inhospVisitFacade.getTagnameByPatids(batch); |
| | | if (CollectionUtils.isEmpty(rows)) { |
| | | continue; |
| | | } |
| | | for (Map<String, Object> row : rows) { |
| | | Object patid = row.get("patid"); |
| | | Object tagname = row.get("tagname"); |
| | | if (patid != null) { |
| | | tagnameMap.put(((Number) patid).longValue(), tagname == null ? null : tagname.toString()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | for (PatMedInhosp patMedInhosp : patMedInhospList) { |
| | | if (patMedInhosp.getPatid() != null) { |
| | | patMedInhosp.setTagname(tagnameMap.get(patMedInhosp.getPatid())); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 归一化入院床位排序参数 |
| | | * <p> |
| | | * asc / 1 -> asc(床位正序),desc / 2 -> desc(床位倒序),其余(含不传)-> null(不排序)。 |
| | | * 只对「在院」患者查询(cry=0)生效,出院/转科等查询忽略该参数。 |
| | | * |
| | | * @param cry 出入院标识:0入院 1出院 2转科 3预入院 |
| | | * @param bedSort 前端传入的床位排序值 |
| | | * @return 归一化后的排序值(asc / desc / null) |
| | | */ |
| | | private String normalizeBedSort(Integer cry, String bedSort) { |
| | | if (cry == null || cry != 0 || StringUtils.isEmpty(bedSort)) return null; |
| | | String value = bedSort.trim().toLowerCase(); |
| | | if ("asc".equals(value) || "1".equals(value)) return "asc"; |
| | | if ("desc".equals(value) || "2".equals(value)) return "desc"; |
| | | return null; |
| | | } |
| | | |
| | | @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; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return |
| | | */ |
| | | public List<PatMedInhosp> selectPatMedInhospListByCondition(PatMedInhospVO patMedInhospVO) { |
| | | return patMedInhospMapper.selectPatMedInhospListByCondition(patMedInhospVO); |
| | | return inhospVisitFacade.selectPatMedInhospListByCondition(patMedInhospVO); |
| | | } |
| | | |
| | | |
| | |
| | | public PatMedRes selectPatMedInhospListCount(PatMedReq patMedReq) { |
| | | PatMedRes patMedRes = null; |
| | | // 获取当前登陆人的部门权限 |
| | | patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq); |
| | | patMedRes = inhospVisitFacade.selectPatMedInhospCount(patMedReq); |
| | | return patMedRes; |
| | | } |
| | | |
| | |
| | | public int insertPatMedInhosp(PatMedInhosp patMedInhosp) { |
| | | patMedInhosp.setCreateTime(DateUtils.getNowDate()); |
| | | patMedInhosp.setUpdateTime(DateUtils.getNowDate()); |
| | | return patMedInhospMapper.insertPatMedInhosp(patMedInhosp); |
| | | return inhospVisitFacade.insertPatMedInhosp(patMedInhosp); |
| | | } |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public int updatePatMedInhosp(PatMedInhosp patMedInhosp) { |
| | | patMedInhosp.setUpdateTime(DateUtils.getNowDate()); |
| | | return patMedInhospMapper.updatePatMedInhosp(patMedInhosp); |
| | | return inhospVisitFacade.updatePatMedInhosp(patMedInhosp); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public int deletePatMedInhospByInhospids(Long[] inhospids) { |
| | | return patMedInhospMapper.deletePatMedInhospByInhospids(inhospids); |
| | | return inhospVisitFacade.deletePatMedInhospByInhospids(inhospids); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public int deletePatMedInhospByInhospid(Long inhospid) { |
| | | return patMedInhospMapper.deletePatMedInhospByInhospid(inhospid); |
| | | return inhospVisitFacade.deletePatMedInhospByInhospid(inhospid); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public int deletePatMedInhospByInhospno(String inhospno) { |
| | | return patMedInhospMapper.deletePatMedInhospByInhospno(inhospno); |
| | | return inhospVisitFacade.deletePatMedInhospByInhospno(inhospno); |
| | | } |
| | | |
| | | @Override |
| | | public int dealOutHospInfo(String config) { |
| | | PatMedInhosp pmks = new PatMedInhosp(); |
| | | pmks.setDeptcheckFlag("0"); |
| | | pmks.setInhospstate("1"); |
| | | pmks.setFuflag("1"); |
| | | List<PatMedInhosp> patMedInhosps = inhospVisitFacade.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)) { |
| | | patMedInhosp1.setInDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("患者基本信息为空"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | continue; |
| | | } |
| | | try { |
| | |
| | | List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept); |
| | | //如果部门模板为空(将deptIsNull设置为true) |
| | | if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) { |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | patMedInhosp1.setInDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + "该患者所在科室未配置入院长期宣教任务;" : "该患者所在科室未配置入院长期宣教任务;"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } else { |
| | | for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) { |
| | | writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 4, config); |
| | |
| | | } catch (Exception e) { |
| | | log.error("人员入院科室处理出异常了:{}", e.getMessage()); |
| | | patMedInhosp1.setInDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("人员入院科室处理出异常了:" + e.getMessage()); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | patMedInhosp1.setLongTaskReason("人员入院科室处理出异常了"); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } |
| | | } |
| | | |
| | | |
| | | //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 = inhospVisitFacade.selectPatMedInhospList(pmks); |
| | | for (PatMedInhosp patMedInhosp1 : inPatMedInhospsWard) { |
| | | //获取患者信息 |
| | | PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid()); |
| | | if (Objects.isNull(patArchive)) { |
| | | patMedInhosp1.setInDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("患者基本信息为空"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | continue; |
| | | } |
| | | //根据患者所在病区,获取该病区的入院长期宣教任务(会出现一个问题,科室和病区发的同一个模板) |
| | |
| | | List<ServiceTaskdept> serviceTaskWardList = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskWard); |
| | | //如果部门模板为空(将deptIsNull设置为true) |
| | | if (CollectionUtils.isEmpty(serviceTaskWardList) || serviceTaskWardList.size() == 0) { |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | patMedInhosp1.setInDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + "该患者所在病区未配置入院长期宣教任务;"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } else { |
| | | for (ServiceTaskdept serviceTaskdept1 : serviceTaskWardList) { |
| | | writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 5, config); |
| | |
| | | } |
| | | } |
| | | |
| | | //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); |
| | | } |
| | |
| | | PatMedInhosp patMedInhosp = new PatMedInhosp(); |
| | | patMedInhosp.setDeptcheckFlag("0"); |
| | | patMedInhosp.setInhospstate("0"); |
| | | List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp); |
| | | List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp); |
| | | if (CollectionUtils.isNotEmpty(patMedInhospList) && patMedInhospList.size() > 0) { |
| | | dealInHospInfo(patMedInhospList); |
| | | } |
| | |
| | | |
| | | 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(); |
| | |
| | | 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"); |
| | |
| | | patMedInhospVo.setLeaveldeptcodes(deptCodeList); |
| | | patMedInhospVo.setLeavehospitaldistrictcodes(wardCodeList); |
| | | patMedInhospVo.setIcd10codeList(icd10CodeList); |
| | | List<PatMedInhosp> patList = patMedInhospMapper.selectPatMedInhospList(patMedInhospVo); |
| | | List<PatMedInhosp> patList = inhospVisitFacade.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()); |
| | |
| | | |
| | | 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()); |
| | | } |
| | | } |
| | |
| | | PatMedInhosp flagUpd = new PatMedInhosp(); |
| | | flagUpd.setInhospid(patMedInhosp.getInhospid()); |
| | | flagUpd.setScheduleCheckFlag("1"); |
| | | patMedInhospMapper.updatePatMedInhosp(flagUpd); |
| | | inhospVisitFacade.updatePatMedInhosp(flagUpd); |
| | | } |
| | | }else { |
| | | } else { |
| | | //任务组 - 手术随访 |
| | | if(CollectionUtils.isNotEmpty(opLevelCodeList)){ |
| | | if (CollectionUtils.isNotEmpty(opLevelCodeList)) { |
| | | PatMedOperationItem pmoi = new PatMedOperationItem(); |
| | | //获取需要出院疾病随访,未处理的数据 |
| | | pmoi.setOpercheckFlag("0"); |
| | |
| | | pmoi.setDeptCodes(deptCodeList); |
| | | pmoi.setWardCodes(wardCodeList); |
| | | pmoi.setOpLevelCodes(opLevelCodeList); |
| | | List<PatMedOperationItem> patMedOperationItems = patMedOperationItemMapper.selectOperationItemList(pmoi); |
| | | for(PatMedOperationItem patMedOperationItem : patMedOperationItems){ |
| | | |
| | | //每次查询只查最大的手术等级记录 |
| | | List<PatMedOperationItem> patMedOperationItems = otherVisitFacade.selectOperationItemListMaxLevel(pmoi); |
| | | for (PatMedOperationItem patMedOperationItem : patMedOperationItems) { |
| | | PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOperationItem.getPatid()); |
| | | if (Objects.isNull(patArchive)) { |
| | | continue; |
| | |
| | | patMedInhospVo.setScheduleCheckFlag("0"); |
| | | patMedInhospVo.setInhospstate("1"); |
| | | patMedInhospVo.setFuflag("1"); |
| | | List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhospVo); |
| | | if(CollectionUtils.isNotEmpty(patMedInhospList)){ |
| | | List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhospVo); |
| | | if (CollectionUtils.isNotEmpty(patMedInhospList)) { |
| | | ServiceTaskScheduleDetail scheduleDetailVo = new ServiceTaskScheduleDetail(); |
| | | scheduleDetailVo.setTaskid(serviceTask.getTaskid()); |
| | | scheduleDetailVo.setScheduleid(serviceTaskSchedule.getId()); |
| | |
| | | //封装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()); |
| | | } |
| | | } |
| | |
| | | PatMedInhosp flagUpd = new PatMedInhosp(); |
| | | flagUpd.setInhospid(patMedInhospList.get(0).getInhospid()); |
| | | flagUpd.setScheduleCheckFlag("1"); |
| | | patMedInhospMapper.updatePatMedInhosp(flagUpd); |
| | | inhospVisitFacade.updatePatMedInhosp(flagUpd); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | @Override |
| | | public List<PatMedInhosp> getDocAndPat(PatMedInhosp patMedInhosp) { |
| | | List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp); |
| | | List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp); |
| | | for (PatMedInhosp patMedInhosp1 : patMedInhospList) { |
| | | String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid()); |
| | | String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid()); |
| | | patMedInhosp1.setTagname(tagname); |
| | | } |
| | | if (StringUtils.isNotEmpty(patMedInhosp.getPatname()) || StringUtils.isNotEmpty(patMedInhosp.getNurseName()) || StringUtils.isNotEmpty(patMedInhosp.getDrname())) { |
| | |
| | | * @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中 |
| | |
| | | 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); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | return; |
| | | } |
| | | if (type == 1) { |
| | | log.info("该患者出院随访长期任务不存在,任务ID为:{}", taskid); |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者离院科室长期任务不存在,任务ID为:" + taskid); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | return; |
| | | } else if (type == 2) { |
| | | patMedInhosp1.setWardcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者离院病区长期任务不存在,任务ID为:" + taskid); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | return; |
| | | } else if (type == 3) { |
| | | patMedInhosp1.setDiagcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者疾病长期任务不存在,任务ID为:" + taskid); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | return; |
| | | } else if (type == 4) { |
| | | patMedInhosp1.setInDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者入院科室长期任务不存在,任务ID为:" + taskid); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | return; |
| | | } else if (type == 5) { |
| | | patMedInhosp1.setInWardcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者入院病区长期任务不存在,任务ID为:" + taskid); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | return; |
| | | } |
| | | } else { |
| | |
| | | //再入院逻辑 |
| | | //景宁 出院首次(7天)随访一定要做 |
| | | boolean firstVisit = false; |
| | | if (orgId.equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) { |
| | | if (orgId.equals("47255004333112711A1001")) { |
| | | firstVisit = true; |
| | | } |
| | | if (!firstVisit) { |
| | |
| | | addServiceSubtaskPreachform(serviceSubtask, null); |
| | | } |
| | | |
| | | //将check_flag改成1(已处理) |
| | | //将 check_flag 改成 1(已处理) |
| | | if (i == 1) { |
| | | PatMedInhosp patMedInhosp2 = new PatMedInhosp(); |
| | | patMedInhosp2.setInhospid(patMedInhosp1.getInhospid()); |
| | |
| | | if (type == 3) patMedInhosp2.setDiagcheckFlag("1"); |
| | | if (type == 4) patMedInhosp2.setInDeptcheckFlag("1"); |
| | | if (type == 5) patMedInhosp2.setInWardcheckFlag("1"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp2); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp2); |
| | | } else { |
| | | //生成子任务失败, |
| | | log.info("生成子任务失败serviceSubtask的taskid为:{},patid为:{}", serviceSubtask.getTaskid(), serviceSubtask.getPatid()); |
| | |
| | | if (type == 4) patMedInhosp2.setInDeptcheckFlag("2"); |
| | | if (type == 5) patMedInhosp2.setInWardcheckFlag("2"); |
| | | patMedInhosp2.setRemark("生成子任务失败 " + type); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp2); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp2); |
| | | } |
| | | } catch (Exception e) { |
| | | //出错回滚事务 |
| | |
| | | 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); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp2); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | |
| | | if (CollectionUtils.isEmpty(serviceTasks)) { |
| | | log.info("该手术对应手术等级的长期任务不存在,任务ID为:{}", taskid); |
| | | patMedOperationItem.setOpercheckFlag("2"); |
| | | patMedOperationItem.setLongTaskReason(longTaskReason + " & 该手术对应手术等级的长期任务不存在,任务ID为:" + taskid); |
| | | patMedOperationItemMapper.insertPatMedOperationItem(patMedOperationItem); |
| | | patMedOperationItem.setLongTaskReason(" & 该手术对应手术等级的长期任务不存在,任务ID为:" + taskid +";"); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem); |
| | | return; |
| | | } else { |
| | | serviceTask = serviceTasks.get(0); |
| | |
| | | patMedInhosp.setPatid((patMedOperationItem.getPatid())); |
| | | patMedInhosp.setInhospstate("1"); |
| | | patMedInhosp.setFuflag("1"); |
| | | List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp); |
| | | //手术随访 |
| | | if(!active.equals("hzszlyy")){ |
| | | patMedInhosp.setSerialnum(patMedOperationItem.getSerialnum()); |
| | | } |
| | | List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp); |
| | | |
| | | if (CollectionUtils.isEmpty(patMedInhospList)) { |
| | | return; |
| | |
| | | |
| | | //封装serviceSubtask |
| | | ServiceSubtask serviceSubtask = boxedServiceSubtaskForOp(serviceTask, patMedInhospList.get(0), patMedOperationItem, patArchive, config); |
| | | if (ObjectUtils.isEmpty(serviceSubtask)) { |
| | | if (ObjectUtils.isEmpty(serviceSubtask) || Objects.isNull(serviceSubtask.getTaskid())) { |
| | | 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; |
| | |
| | | PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem(); |
| | | patMedOperationItem2.setId(patMedOperationItem.getId()); |
| | | patMedOperationItem2.setOpercheckFlag("1"); |
| | | patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem2); |
| | | } else { |
| | | //生成子任务失败, |
| | | log.info("生成子任务失败serviceSubtask的taskid为:{},patid为:{}", serviceSubtask.getTaskid(), serviceSubtask.getPatid()); |
| | | PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem(); |
| | | patMedOperationItem2.setId(patMedOperationItem.getId()); |
| | | patMedOperationItem2.setOpercheckFlag("2"); |
| | | patMedOperationItem2.setRemark("生成子任务失败 4"); |
| | | patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2); |
| | | patMedOperationItem2.setLongTaskReason("生成子任务失败 4;"); |
| | | patMedOperationItem2.setUpdateTime(new Date()); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem2); |
| | | } |
| | | } catch (Exception e) { |
| | | //出错回滚事务 |
| | | |
| | | log.info("生成子任务报错回滚sserviceSubtask的taskid为:{},patid为:{}", serviceSubtask.getTaskid(), serviceSubtask.getPatid()); |
| | | log.error("生成子任务报错回滚sserviceSubtask的taskid为:{},patid为:{},手术详情ID为:{}", |
| | | serviceSubtask.getTaskid(), serviceSubtask.getPatid(), patMedOperationItem.getId(), e); |
| | | PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem(); |
| | | patMedOperationItem2.setId(patMedOperationItem.getId()); |
| | | patMedOperationItem2.setOpercheckFlag("2"); |
| | | patMedOperationItem2.setRemark("生成子任务报错回滚 4"); |
| | | patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2); |
| | | patMedOperationItem2.setUpdateTime(new Date()); |
| | | patMedOperationItem2.setLongTaskReason("生成子任务报错回滚 4;"); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem2); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | |
| | | private Integer addServiceSubtaskPreachform(ServiceSubtask serviceSubtask, String sendstate) { |
| | | //将preachformDesc的json对象,放到list集合中 |
| | | ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); |
| | | if (Objects.isNull(serviceTask)) { |
| | | log.error("addServiceSubtaskPreachform taskid={} 查不到任务,跳过preachform子表生成", serviceSubtask.getTaskid()); |
| | | return 0; |
| | | } |
| | | String preachformDesc = serviceTask.getPreachformDesc(); |
| | | |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | |
| | | }); |
| | | } catch (JsonProcessingException e) { |
| | | log.error("preachform转List<ServiceSubtaskPreachform>报错了:{}", e.getMessage()); |
| | | } |
| | | if (CollectionUtils.isEmpty(serviceSubtaskPreachformList)) { |
| | | log.error("preachformDesc解析后为空,跳过preachform子表生成,taskid为:{},preachformDesc为:{}", |
| | | serviceSubtask.getTaskid(), preachformDesc); |
| | | return 0; |
| | | } |
| | | for (ServiceSubtaskPreachform serviceSubtaskPreachform : serviceSubtaskPreachformList) { |
| | | serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid()); |
| | |
| | | |
| | | |
| | | //封装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; |
| | | // } |
| | | ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class); |
| | | serviceSubtask.setTaskid(serviceTask.getTaskid()); |
| | | serviceSubtask.setOrgid(serviceTask.getOrgid()); |
| | | serviceSubtask.setCampusid(serviceTask.getCampusid()); |
| | | if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid())) |
| | | serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid())); |
| | | serviceSubtask.setNurseId(patMedInhosp1.getNurseId()); |
| | |
| | | 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()); |
| | |
| | | if (type != 4 && type != 5) { |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 该患者疾病出院时间为空,出院记录ID为:" + patMedInhosp1.getInhospid()); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | //如果出院时间为空,则返回一个新对象 |
| | | return new ServiceSubtask(); |
| | | } |
| | |
| | | private ServiceSubtask boxedServiceSubtaskForOp(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatMedOperationItem patMedOperationItem, PatArchive patArchive, String config) { |
| | | ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class); |
| | | serviceSubtask.setTaskid(serviceTask.getTaskid()); |
| | | serviceSubtask.setOrgid(serviceTask.getOrgid()); |
| | | serviceSubtask.setCampusid(serviceTask.getCampusid()); |
| | | 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()); |
| | |
| | | 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()); |
| | |
| | | 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); |
| | | patMedOperationItem.setOpercheckFlag("2"); |
| | | patMedOperationItem.setLongTaskReason("该患者手术出院时间为空,手术详情ID为:" + patMedOperationItem.getId() + ";"); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem); |
| | | // patMedInhosp1.setDeptcheckFlag("2"); |
| | | // patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 该患者手术出院时间为空,出院记录ID为:" + patMedInhosp1.getInhospid()); |
| | | // inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | //如果出院时间为空,则返回一个新对象 |
| | | return new ServiceSubtask(); |
| | | return null; |
| | | } |
| | | serviceSubtask.setLongSendTime(newDate); |
| | | serviceSubtask.setVisitTime(newDate); |
| | |
| | | } |
| | | //景宁 出院首次(7天)随访一定要做 |
| | | boolean firstVisit = false; |
| | | if (serviceSubtask1.getOrgid().equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) { |
| | | if (serviceSubtask1.getOrgid().equals("47255004333112711A1001")) { |
| | | firstVisit = true; |
| | | } |
| | | if (!firstVisit) { |
| | |
| | | public void addOperationSubTask(String config) { |
| | | // 手术随访 |
| | | PatMedOperationItem pmoi = new PatMedOperationItem(); |
| | | //获取需要出院疾病随访,未处理的数据 |
| | | //获取需要出院手术随访,未处理的数据 |
| | | if(!active.equals("hzszlyy")){ |
| | | pmoi.setInhospstate("1"); |
| | | } |
| | | pmoi.setOpercheckFlag("0"); |
| | | pmoi.setMainFlag("1"); |
| | | |
| | | List<PatMedOperationItem> patMedOperationItems = patMedOperationItemMapper.selectOperationItemList(pmoi); |
| | | //每次查询只查最大的手术等级记录 |
| | | List<PatMedOperationItem> patMedOperationItems = otherVisitFacade.selectOperationItemListMaxLevel(pmoi); |
| | | log.info("dealOutHospInfo需要处理的出院手术患者信息:{}", CollectionUtils.isNotEmpty(patMedOperationItems) ? patMedOperationItems.size() : null); |
| | | |
| | | for (PatMedOperationItem opItem : patMedOperationItems) { |
| | |
| | | continue; |
| | | } |
| | | // 根据患者的疾病,获取该疾病的长期任务 |
| | | ServiceTaskoper serviceTaskoper = new ServiceTaskoper(); |
| | | serviceTaskoper.setLongtask(1L); |
| | | serviceTaskoper.setOrgid(opItem.getOrgid()); |
| | | serviceTaskoper.setOplevelcode(opItem.getOplevelcode()); |
| | | List<ServiceTaskoper> serviceTaskopersDept = new ArrayList<>(); |
| | | if(StringUtils.isNotEmpty(opItem.getLeaveldeptcode())){ |
| | | ServiceTaskoper serviceTaskoper1 = new ServiceTaskoper(); |
| | | serviceTaskoper1.setLongtask(1L); |
| | | serviceTaskoper1.setOrgid(opItem.getOrgid()); |
| | | serviceTaskoper1.setOplevelcode(opItem.getOplevelcode()); |
| | | serviceTaskoper1.setDeptCode(opItem.getLeaveldeptcode()); |
| | | serviceTaskopersDept = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper1); |
| | | } |
| | | |
| | | //根据科室、病区过滤 |
| | | serviceTaskoper.setDeptCode(opItem.getDeptcode()); |
| | | serviceTaskoper.setWardCode(opItem.getHospitaldistrictcode()); |
| | | |
| | | List<ServiceTaskoper> serviceTaskopers = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper); |
| | | List<ServiceTaskoper> serviceTaskopersWard = new ArrayList<>(); |
| | | if(StringUtils.isNotEmpty(opItem.getLeavehospitaldistrictcode())){ |
| | | ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper(); |
| | | serviceTaskoper2.setLongtask(1L); |
| | | serviceTaskoper2.setOrgid(opItem.getOrgid()); |
| | | serviceTaskoper2.setOplevelcode(opItem.getOplevelcode()); |
| | | serviceTaskoper2.setWardCode(opItem.getLeavehospitaldistrictcode()); |
| | | serviceTaskopersWard = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper2); |
| | | } |
| | | |
| | | |
| | | List<ServiceTaskoper> serviceTaskopers = new ArrayList<>(); |
| | | serviceTaskopers.addAll(serviceTaskopersDept); |
| | | serviceTaskopers.addAll(serviceTaskopersWard); |
| | | //如果部门模板为空(将deptIsNull设置为true) |
| | | if (CollectionUtils.isEmpty(serviceTaskopers) || serviceTaskopers.size() == 0) { |
| | | PatMedOperationItem patMedOperationItem = patMedOperationItemMapper.selectPatMedOperationItemById(opItem.getId()); |
| | | PatMedOperationItem patMedOperationItem = otherVisitFacade.selectOperationItemById(opItem.getId()); |
| | | patMedOperationItem.setOpercheckFlag("2"); |
| | | patMedOperationItem.setLongTaskReason(patMedOperationItem.getLongTaskReason() + "所患的手术未配置长期任务;"); |
| | | patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem); |
| | | patMedOperationItem.setLongTaskReason("所患的手术未配置长期任务;"); |
| | | patMedOperationItem.setUpdateTime(new Date()); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem); |
| | | } else { |
| | | for (ServiceTaskoper serviceTaskoper1 : serviceTaskopers) { |
| | | writeInSubTaskForOp(serviceTaskoper1.getTaskId(), true, opItem, config); |
| | | for (ServiceTaskoper serviceTaskoper : serviceTaskopers) { |
| | | writeInSubTaskForOp(serviceTaskoper.getTaskId(), true, opItem, config); |
| | | } |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("人员手术处理出异常了:{}", e.getMessage()); |
| | | opItem.setUpdateTime(new Date()); |
| | | opItem.setOpercheckFlag("2"); |
| | | opItem.setLongTaskReason("人员手术处理异常"); |
| | | patMedOperationItemMapper.updatePatMedOperationItem(opItem); |
| | | otherVisitFacade.updateOperationItem(opItem); |
| | | } |
| | | } |
| | | } |
| | |
| | | pmjb.setDiagcheckFlag("0"); |
| | | pmjb.setInhospstate("1"); |
| | | pmjb.setFuflag("1"); |
| | | List<PatMedInhosp> patMedInhospJBs = patMedInhospMapper.selectPatMedInhospList(pmjb); |
| | | List<PatMedInhosp> patMedInhospJBs = inhospVisitFacade.selectPatMedInhospList(pmjb); |
| | | log.info("dealOutHospInfo需要处理的出院疾病患者信息:{}", CollectionUtils.isNotEmpty(patMedInhospJBs) ? patMedInhospJBs.size() : null); |
| | | for (PatMedInhosp patMedInhosp1 : patMedInhospJBs) { |
| | | String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid()); |
| | | String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid()); |
| | | patMedInhosp1.setTagname(tagname); |
| | | } |
| | | |
| | |
| | | if (Objects.isNull(patArchive)) { |
| | | pmiJB.setDiagcheckFlag("2"); |
| | | pmiJB.setLongTaskReason("患者基本信息为空"); |
| | | patMedInhospMapper.updatePatMedInhosp(pmiJB); |
| | | inhospVisitFacade.updatePatMedInhosp(pmiJB); |
| | | continue; |
| | | } |
| | | try { |
| | |
| | | // 根据患者的疾病,获取该疾病的长期任务 |
| | | ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag(); |
| | | serviceTaskdiag.setLongtask(1L); |
| | | serviceTaskdiag.setServiceType("2"); |
| | | // serviceTaskdiag.setServiceType("2"); |
| | | if (active.equals("nhfy")) { |
| | | //南华附一的icd10code有重复,所以用主诊断名称去查询 |
| | | serviceTaskdiag.setIcd10name(pmiJB.getLeavediagname()); |
| | |
| | | |
| | | //如果部门模板为空(将deptIsNull设置为true) |
| | | if (StringUtils.isNotEmpty(errorIcd)) { |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(pmiJB.getInhospid()); |
| | | pmiJB.setDiagcheckFlag("2"); |
| | | pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd); |
| | | patMedInhospMapper.updatePatMedInhosp(pmiJB); |
| | | inhospVisitFacade.updatePatMedInhosp(pmiJB); |
| | | } else if (CollectionUtils.isEmpty(serviceTaskdiags)) { |
| | | errorIcd = "该患者所患疾病未配置长期任务;"; |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(pmiJB.getInhospid()); |
| | | pmiJB.setDiagcheckFlag("2"); |
| | | pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd); |
| | | patMedInhospMapper.updatePatMedInhosp(pmiJB); |
| | | inhospVisitFacade.updatePatMedInhosp(pmiJB); |
| | | } else { |
| | | int flag = 0; |
| | | for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) { |
| | |
| | | if (flag == 0) { |
| | | log.error("该科室或病区对于患者所患疾病未配置长期任务,患者:{}", pmiJB.getInhospid()); |
| | | errorIcd = "该科室或病区对于患者所患疾病未配置长期任务;"; |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(pmiJB.getInhospid()); |
| | | pmiJB.setDiagcheckFlag("2"); |
| | | pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd); |
| | | patMedInhospMapper.updatePatMedInhosp(pmiJB); |
| | | inhospVisitFacade.updatePatMedInhosp(pmiJB); |
| | | } |
| | | |
| | | } |
| | |
| | | log.error("人员疾病处理出异常了:{}", e.getMessage()); |
| | | pmiJB.setDiagcheckFlag("2"); |
| | | pmiJB.setLongTaskReason("人员疾病处理异常"); |
| | | patMedInhospMapper.updatePatMedInhosp(pmiJB); |
| | | inhospVisitFacade.updatePatMedInhosp(pmiJB); |
| | | } |
| | | } |
| | | } |
| | |
| | | pmbq.setWardcheckFlag("0"); |
| | | pmbq.setInhospstate("1"); |
| | | pmbq.setFuflag("1"); |
| | | List<PatMedInhosp> patMedInhospBQs = patMedInhospMapper.selectPatMedInhospList(pmbq); |
| | | List<PatMedInhosp> patMedInhospBQs = inhospVisitFacade.selectPatMedInhospList(pmbq); |
| | | log.info("dealOutHospInfo需要处理的出院病区患者信息:{}", CollectionUtils.isNotEmpty(patMedInhospBQs) ? patMedInhospBQs.size() : null); |
| | | for (PatMedInhosp patMedInhosp1 : patMedInhospBQs) { |
| | | String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid()); |
| | | String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid()); |
| | | patMedInhosp1.setTagname(tagname); |
| | | } |
| | | |
| | |
| | | if ("1".equals(pmiBQ1.getLeavehospitaldistrictcode()) && pmiBQ1.getDiagcheckFlag().equals("1")) { |
| | | pmiBQ1.setWardcheckFlag("2"); |
| | | pmiBQ1.setLongTaskReason("根据交叉生成随访任务规则,病区任务可以不用生成"); |
| | | patMedInhospMapper.updatePatMedInhosp(pmiBQ1); |
| | | inhospVisitFacade.updatePatMedInhosp(pmiBQ1); |
| | | continue; |
| | | } |
| | | |
| | |
| | | if (Objects.isNull(patArchive)) { |
| | | pmiBQ1.setWardcheckFlag("2"); |
| | | pmiBQ1.setLongTaskReason("患者基本信息为空"); |
| | | patMedInhospMapper.updatePatMedInhosp(pmiBQ1); |
| | | inhospVisitFacade.updatePatMedInhosp(pmiBQ1); |
| | | continue; |
| | | } |
| | | try { |
| | |
| | | } |
| | | //如果部门模板为空(将deptIsNull设置为true) |
| | | if (StringUtils.isNotEmpty(errorreason)) { |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiBQ1.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(pmiBQ1.getInhospid()); |
| | | pmiBQ1.setWardcheckFlag("2"); |
| | | pmiBQ1.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorreason : errorreason); |
| | | patMedInhospMapper.updatePatMedInhosp(pmiBQ1); |
| | | inhospVisitFacade.updatePatMedInhosp(pmiBQ1); |
| | | } else { |
| | | for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) { |
| | | writeInSubTask(serviceTaskdept1.getTaskId(), true, pmiBQ1, patArchive, 2, config); |
| | |
| | | log.error("人员病区处理出异常了:{}", e.getMessage()); |
| | | pmiBQ1.setWardcheckFlag("2"); |
| | | pmiBQ1.setLongTaskReason("人员病区处理异常"); |
| | | patMedInhospMapper.updatePatMedInhosp(pmiBQ1); |
| | | inhospVisitFacade.updatePatMedInhosp(pmiBQ1); |
| | | } |
| | | } |
| | | } |
| | |
| | | pmks.setDeptcheckFlag("0"); |
| | | pmks.setInhospstate("1"); |
| | | pmks.setFuflag("1"); |
| | | List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks); |
| | | List<PatMedInhosp> patMedInhosps = inhospVisitFacade.selectPatMedInhospList(pmks); |
| | | log.info("dealOutHospInfo需要处理的出院部门患者信息:{}", CollectionUtils.isNotEmpty(patMedInhosps) ? patMedInhosps.size() : null); |
| | | for (PatMedInhosp patMedInhosp1 : patMedInhosps) { |
| | | String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid()); |
| | | String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid()); |
| | | patMedInhosp1.setTagname(tagname); |
| | | } |
| | | |
| | |
| | | if ("1".equals(patMedInhosp1.getLeavehospitaldistrictcode()) && patMedInhosp1.getDiagcheckFlag().equals("1")) { |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("根据交叉生成随访任务规则,部门任务可以不用生成"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | continue; |
| | | } |
| | | //获取患者信息 |
| | |
| | | if (Objects.isNull(patArchive)) { |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("患者基本信息为空"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | continue; |
| | | } |
| | | try { |
| | |
| | | List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept); |
| | | //如果部门模板为空(将deptIsNull设置为true) |
| | | if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) { |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + "该患者所在科室未配置离院长期任务;"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } else { |
| | | for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) { |
| | | writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 1, config); |
| | |
| | | log.error("人员科室处理出异常了:{}", e.getMessage()); |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("人员科室处理异常"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } |
| | | } |
| | | } |
| | |
| | | if (StringUtils.isNotEmpty(remark)) { |
| | | updateObj.setRemark(remark + " (type=" + type + ")"); |
| | | } |
| | | patMedInhospMapper.updatePatMedInhosp(updateObj); |
| | | inhospVisitFacade.updatePatMedInhosp(updateObj); |
| | | } |
| | | |
| | | /** |
| | |
| | | * 根据患者离院科室或病区查询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()); |
| | | if (Objects.isNull(patArchive)) { |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("患者基本信息为空"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | continue; |
| | | } |
| | | |
| | |
| | | log.error("【基于规则】患者{}处理异常:{}", patMedInhosp1.getInhospid(), e.getMessage()); |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("基于规则处理异常"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } |
| | | } |
| | | } |
| | |
| | | List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept); |
| | | |
| | | if (CollectionUtils.isEmpty(serviceTaskdepts)) { |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setWardcheckFlag(patMedInhosp.getWardcheckFlag()); |
| | | patMedInhosp1.setDiagcheckFlag(patMedInhosp.getDiagcheckFlag()); |
| | | patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + "该患者所在科室未配置离院长期任务;"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } else { |
| | | for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) { |
| | | writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 1, config); |
| | |
| | | log.error("【科室任务】患者{}处理异常:{}", patMedInhosp1.getInhospid(), e.getMessage()); |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("科室任务处理异常"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } |
| | | return generatedCount; |
| | | } |
| | |
| | | } |
| | | |
| | | if (StringUtils.isNotEmpty(errorreason)) { |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | patMedInhosp1.setWardcheckFlag("2"); |
| | | patMedInhosp1.setDeptcheckFlag(patMedInhosp.getDeptcheckFlag()); |
| | | patMedInhosp1.setDiagcheckFlag(patMedInhosp.getDiagcheckFlag()); |
| | | patMedInhosp1.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorreason : errorreason); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } else { |
| | | for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) { |
| | | writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 2, config); |
| | |
| | | log.error("【病区任务】患者{}处理异常:{}", patMedInhosp1.getInhospid(), e.getMessage()); |
| | | patMedInhosp1.setWardcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("病区任务处理异常"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } |
| | | return generatedCount; |
| | | } |
| | |
| | | |
| | | 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())) { |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | patMedInhosp1.setDiagcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("该患者主诊断名称为空;"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | return 0; |
| | | } |
| | | } else { |
| | |
| | | List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagListByIcdName(serviceTaskdiag); |
| | | |
| | | if (CollectionUtils.isEmpty(serviceTaskdiags)) { |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | patMedInhosp.setDiagcheckFlag("2"); |
| | | patMedInhosp.setLongTaskReason("该患者所患疾病未配置长期任务;"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp); |
| | | } else { |
| | | int flag = 0; |
| | | for (ServiceTaskdiag serviceTaskdiag1 : serviceTaskdiags) { |
| | |
| | | } |
| | | if (flag == 0) { |
| | | log.error("该科室或病区对于患者所患疾病未配置长期任务,患者:{}", patMedInhosp1.getInhospid()); |
| | | PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid()); |
| | | patMedInhosp.setDiagcheckFlag("2"); |
| | | patMedInhosp.setLongTaskReason("该科室或病区对于患者所患疾病未配置长期任务;"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | |
| | | log.error("【疾病任务】患者{}处理异常:{}", patMedInhosp1.getInhospid(), e.getMessage()); |
| | | patMedInhosp1.setDiagcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("疾病任务处理异常"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } |
| | | return generatedCount; |
| | | } |
| | | |
| | | // ========================================================================== |
| | | // 出入院随访模块化(第一批)—— 3 个过渡期入口(纯转发,零业务逻辑) |
| | | // |
| | | // ⚠️ 这 3 个方法是刻意新增的,不是误加: |
| | | // 见 IPatMedInhospService 里同名的接口声明注释,以及 |
| | | // sql/_probe/verify_step16_service_restore.py 的 expected_added 断言。 |
| | | // ========================================================================== |
| | | |
| | | /** |
| | | * 【过渡期用】手术随访扫描 —— 与 {@link #addOperationSubTask(String)} 完全等价。 |
| | | * <p> |
| | | * ⚠️ {@code addOperationSubTask} 原实现返回 {@code void},所以这里按"处理了 1 轮"返回 1, |
| | | * 仅用于日志;<b>调用方不得依赖该返回值的业务含义</b>。 |
| | | */ |
| | | @Override |
| | | public int runOperationVisit(String config) { |
| | | addOperationSubTask(config); |
| | | return 1; |
| | | } |
| | | |
| | | /** |
| | | * 【过渡期用】科室维度未处理的在院患者。 |
| | | * <p> |
| | | * 条件与原 {@code dealOutHospInfo} 第一段查询逐字一致: |
| | | * {@code deptcheckFlag="0"} + {@code inhospstate="1"} + {@code fuflag="1"}。 |
| | | */ |
| | | @Override |
| | | public List<PatMedInhosp> selectPendingDeptPatientsForVisit() { |
| | | PatMedInhosp pmks = new PatMedInhosp(); |
| | | pmks.setDeptcheckFlag("0"); |
| | | pmks.setInhospstate("1"); |
| | | pmks.setFuflag("1"); |
| | | return inhospVisitFacade.selectPatMedInhospList(pmks); |
| | | } |
| | | |
| | | /** |
| | | * 【过渡期用】把一条已组装好的子任务落库(原 {@code serviceSubtaskMapper.insertServiceSubtask})。 |
| | | */ |
| | | @Override |
| | | public boolean persistSubtask(ServiceSubtask serviceSubtask) { |
| | | return serviceSubtaskMapper.insertServiceSubtask(serviceSubtask) == 1; |
| | | } |
| | | |
| | | } |