| | |
| | | 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.DTO.PatMedInhospDTO; |
| | | 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 |
| | |
| | | private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper; |
| | | @Autowired |
| | | private ServiceTaskmedicalMapper serviceTaskmedicalMapper; |
| | | @Autowired |
| | | private PatMedOperationItemMapper patMedOperationItemMapper; |
| | | @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; |
| | | } |
| | | |
| | | /** |
| | | * 批量填充患者标签 |
| | | * <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 |
| | |
| | | return patMedInhospDTOList; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Integer> queryPersonCount(PatServiceCount patServiceCount) { |
| | | if (patServiceCount.getInterval() == 1) { |
| | | //周 |
| | | } else if (patServiceCount.getInterval() == 2) { |
| | | //月 |
| | | } else if (patServiceCount.getInterval() == 3) { |
| | | //年 |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 查询当前登陆人自己(病区、部门)的患者住院记录列表 |
| | | * |
| | |
| | | * @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 |
| | |
| | | pmks.setDeptcheckFlag("0"); |
| | | pmks.setInhospstate("1"); |
| | | pmks.setFuflag("1"); |
| | | List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks); |
| | | List<PatMedInhosp> patMedInhosps = inhospVisitFacade.selectPatMedInhospList(pmks); |
| | | |
| | | //1.入院宣教 |
| | | String helibrarySwitch = iSysConfigService.selectConfigByKey("in.helibrary.switch"); |
| | |
| | | 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); |
| | |
| | | log.error("人员入院科室处理出异常了:{}", e.getMessage()); |
| | | patMedInhosp1.setInDeptcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason("人员入院科室处理出异常了"); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | } |
| | | } |
| | | |
| | |
| | | pmks.setInDeptcheckFlag(null); |
| | | pmks.setInWardcheckFlag("0"); |
| | | pmks.setDeptcheckFlag(null); |
| | | List<PatMedInhosp> inPatMedInhospsWard = patMedInhospMapper.selectPatMedInhospList(pmks); |
| | | 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); |
| | |
| | | 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); |
| | | } |
| | |
| | | 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) { |
| | |
| | | PatMedInhosp flagUpd = new PatMedInhosp(); |
| | | flagUpd.setInhospid(patMedInhosp.getInhospid()); |
| | | flagUpd.setScheduleCheckFlag("1"); |
| | | patMedInhospMapper.updatePatMedInhosp(flagUpd); |
| | | inhospVisitFacade.updatePatMedInhosp(flagUpd); |
| | | } |
| | | } else { |
| | | //任务组 - 手术随访 |
| | |
| | | pmoi.setDeptCodes(deptCodeList); |
| | | pmoi.setWardCodes(wardCodeList); |
| | | pmoi.setOpLevelCodes(opLevelCodeList); |
| | | List<PatMedOperationItem> patMedOperationItems = patMedOperationItemMapper.selectOperationItemList(pmoi); |
| | | |
| | | //每次查询只查最大的手术等级记录 |
| | | List<PatMedOperationItem> patMedOperationItems = otherVisitFacade.selectOperationItemListMaxLevel(pmoi); |
| | | for (PatMedOperationItem patMedOperationItem : patMedOperationItems) { |
| | | PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOperationItem.getPatid()); |
| | | if (Objects.isNull(patArchive)) { |
| | |
| | | patMedInhospVo.setScheduleCheckFlag("0"); |
| | | patMedInhospVo.setInhospstate("1"); |
| | | patMedInhospVo.setFuflag("1"); |
| | | List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhospVo); |
| | | List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhospVo); |
| | | if (CollectionUtils.isNotEmpty(patMedInhospList)) { |
| | | ServiceTaskScheduleDetail scheduleDetailVo = new ServiceTaskScheduleDetail(); |
| | | scheduleDetailVo.setTaskid(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())) { |
| | |
| | | log.info("该患者药品宣教长期任务不存在,任务ID为:{}", taskid); |
| | | patMedInhosp1.setMedcheckFlag("2"); |
| | | patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者药品宣教长期任务不存在,任务ID为:" + taskid); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | 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 { |
| | |
| | | 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 == 3) patMedInhosp2.setDiagcheckFlag("2"); |
| | | if (type == 0) patMedInhosp2.setMedcheckFlag("2"); |
| | | patMedInhosp2.setRemark("生成子任务报错回滚 " + type); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp2); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp2); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | |
| | | log.info("该手术对应手术等级的长期任务不存在,任务ID为:{}", taskid); |
| | | patMedOperationItem.setOpercheckFlag("2"); |
| | | patMedOperationItem.setLongTaskReason(" & 该手术对应手术等级的长期任务不存在,任务ID为:" + taskid +";"); |
| | | patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem); |
| | | return; |
| | | } else { |
| | | serviceTask = serviceTasks.get(0); |
| | |
| | | if(!active.equals("hzszlyy")){ |
| | | patMedInhosp.setSerialnum(patMedOperationItem.getSerialnum()); |
| | | } |
| | | List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp); |
| | | List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp); |
| | | |
| | | if (CollectionUtils.isEmpty(patMedInhospList)) { |
| | | return; |
| | |
| | | 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()); |
| | |
| | | patMedOperationItem2.setOpercheckFlag("2"); |
| | | patMedOperationItem2.setLongTaskReason("生成子任务失败 4;"); |
| | | patMedOperationItem2.setUpdateTime(new Date()); |
| | | patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem2); |
| | | } |
| | | } catch (Exception e) { |
| | | //出错回滚事务 |
| | |
| | | patMedOperationItem2.setOpercheckFlag("2"); |
| | | patMedOperationItem2.setUpdateTime(new Date()); |
| | | patMedOperationItem2.setLongTaskReason("生成子任务报错回滚 4;"); |
| | | patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem2); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | |
| | | if (type != 4 && type != 5) { |
| | | patMedInhosp1.setDeptcheckFlag("2"); |
| | | patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 该患者疾病出院时间为空,出院记录ID为:" + patMedInhosp1.getInhospid()); |
| | | patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | //如果出院时间为空,则返回一个新对象 |
| | | return new ServiceSubtask(); |
| | | } |
| | |
| | | } else { |
| | | patMedOperationItem.setOpercheckFlag("2"); |
| | | patMedOperationItem.setLongTaskReason("该患者手术出院时间为空,手术详情ID为:" + patMedOperationItem.getId() + ";"); |
| | | patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem); |
| | | // patMedInhosp1.setDeptcheckFlag("2"); |
| | | // patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 该患者手术出院时间为空,出院记录ID为:" + patMedInhosp1.getInhospid()); |
| | | // patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | // inhospVisitFacade.updatePatMedInhosp(patMedInhosp1); |
| | | //如果出院时间为空,则返回一个新对象 |
| | | return null; |
| | | } |
| | |
| | | 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) { |
| | |
| | | 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.setUpdateTime(new Date()); |
| | | patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem); |
| | | otherVisitFacade.updateOperationItem(patMedOperationItem); |
| | | } else { |
| | | for (ServiceTaskoper serviceTaskoper : serviceTaskopers) { |
| | | writeInSubTaskForOp(serviceTaskoper.getTaskId(), true, opItem, config); |
| | |
| | | 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 { |
| | |
| | | |
| | | //如果部门模板为空(将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); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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; |
| | | } |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |