| | |
| | | import java.time.ZoneId; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 患者门诊记录Service业务层处理 |
| | |
| | | @Override |
| | | public Integer dealPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum){ |
| | | Integer num = 0; |
| | | ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity(); |
| | | serviceSubtask.setInhospid(patMedOuthosp.getId()); |
| | | serviceSubtask.setServiceType("3"); |
| | | serviceSubtask.setVisitCount(1); |
| | | List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask); |
| | | if(CollectionUtils.isEmpty(serviceSubtasks)){ |
| | | num = followUpByPatMedOuthosp(patMedOuthosp, visitTimeNum); |
| | | |
| | | //景宁 存在相同诊断的门诊记录则新增再次随访,否则新增随访 |
| | | if(patMedOuthosp.getOrgid().equals("47255004333112711A1001")){ |
| | | PatMedOuthosp patMedOuthospVo = new PatMedOuthosp(); |
| | | List<PatMedOuthosp> patMedOuthosps = new ArrayList<>(); |
| | | patMedOuthospVo.setOrgid(patMedOuthosp.getOrgid()); |
| | | patMedOuthospVo.setPatid(patMedOuthosp.getPatid()); |
| | | patMedOuthospVo.setIcd10code(patMedOuthosp.getIcd10code()); |
| | | // 同一个患者 + 同一个诊断,历史上已经有门诊随访记录(排除本次就诊,本次在调用前已落库) |
| | | patMedOuthosps = selectPatMedOuthospList(patMedOuthospVo); |
| | | Long currentId = patMedOuthosp.getId(); |
| | | List<Long> ids = patMedOuthosps.stream().map(PatMedOuthosp::getId).filter(ObjectUtils::isNotEmpty) |
| | | .filter(id -> !id.equals(currentId)) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity(); |
| | | //景宁 只要存在相同诊断、患者的门诊记录则当再次随访处理 |
| | | serviceSubtask.setInhospids(ids); |
| | | serviceSubtask.setServiceType("3"); |
| | | List<ServiceSubtask> serviceSubtasks = CollectionUtils.isEmpty(ids) |
| | | ? new ArrayList<>() |
| | | : serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask); |
| | | if(CollectionUtils.isEmpty(serviceSubtasks)){ |
| | | num = followUpByPatMedOuthosp(patMedOuthosp, visitTimeNum); |
| | | }else { |
| | | num = followUpAgainByPatMedOuthosp(patMedOuthosp, visitTimeNum, ids); |
| | | } |
| | | }else { |
| | | num = followUpAgainByPatMedOuthosp(patMedOuthosp, visitTimeNum); |
| | | ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity(); |
| | | serviceSubtask.setInhospid(patMedOuthosp.getId()); |
| | | serviceSubtask.setServiceType("3"); |
| | | serviceSubtask.setVisitCount(1); |
| | | List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask); |
| | | if(CollectionUtils.isEmpty(serviceSubtasks)){ |
| | | num = followUpByPatMedOuthosp(patMedOuthosp, visitTimeNum); |
| | | }else { |
| | | num = followUpAgainByPatMedOuthosp(patMedOuthosp, visitTimeNum, null); |
| | | } |
| | | } |
| | | return num; |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum) { |
| | | public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum, List<Long> inhospids) { |
| | | Date adminDate = patMedOuthosp.getAdmitdate(); |
| | | Date newDate = addDays(adminDate, visitTimeNum); |
| | | |
| | |
| | | serviceSubtaskEntity0.setOrgid(patMedOuthosp.getOrgid()); |
| | | serviceSubtaskEntity0.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 7L))); |
| | | serviceSubtaskEntity0.setPatid(patid); |
| | | serviceSubtaskEntity0.setDeptcode(deptcode); |
| | | //景宁根据诊断再次随访 |
| | | if(patMedOuthosp.getOrgid().equals("47255004333112711A1001") && !CollectionUtils.isEmpty(inhospids)){ |
| | | serviceSubtaskEntity0.setInhospids(inhospids); |
| | | }else { |
| | | serviceSubtaskEntity0.setDeptcode(deptcode); |
| | | } |
| | | |
| | | serviceSubtaskEntity0.setSort(0); |
| | | List<ServiceSubtask> serviceSubtaskList0 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity0); |
| | | if (!CollectionUtils.isEmpty(serviceSubtaskList0)) { |
| | | ServiceSubtask serviceSubtask0 = serviceSubtaskList0.get(0); |
| | | serviceSubtask0.setSendstate(6L); |
| | | serviceSubtask0.setUpdateTime(new Date()); |
| | | serviceSubtask0.setFinishtime(adminDate); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask0); |
| | | for (ServiceSubtask serviceSubtask0 : serviceSubtaskList0) { |
| | | serviceSubtask0.setSendstate(6L); |
| | | serviceSubtask0.setUpdateTime(new Date()); |
| | | serviceSubtask0.setFinishtime(adminDate); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask0); |
| | | |
| | | ServiceSubtask serviceSubtask1 = DtoConversionUtils.sourceToTarget(serviceSubtask0, ServiceSubtask.class); |
| | | serviceSubtask1.setId(null); |
| | | serviceSubtask1.setSendstate(2L); |
| | | serviceSubtask1.setUpid(serviceSubtask0.getId().intValue()); |
| | | serviceSubtask1.setVisitCount(serviceSubtask0.getVisitCount() + 1); |
| | | serviceSubtask1.setVisitType(serviceSubtask0.getVisitType()); |
| | | serviceSubtask1.setVisitDeptCode(serviceSubtask0.getVisitDeptCode()); |
| | | serviceSubtask1.setVisitDeptName(serviceSubtask0.getVisitDeptName()); |
| | | serviceSubtask1.setCreateTime(new Date()); |
| | | serviceSubtask1.setUpdateTime(new Date()); |
| | | serviceSubtask1.setFinishtime(null); |
| | | serviceSubtask1.setAdmindate(adminDate); |
| | | ServiceSubtask serviceSubtask1 = DtoConversionUtils.sourceToTarget(serviceSubtask0, ServiceSubtask.class); |
| | | serviceSubtask1.setId(null); |
| | | serviceSubtask1.setSendstate(2L); |
| | | serviceSubtask1.setUpid(serviceSubtask0.getId().intValue()); |
| | | //老数据的visit_count可能为空,默认按第1次算 |
| | | Integer visitCount = ObjectUtils.isEmpty(serviceSubtask0.getVisitCount()) ? 1 : serviceSubtask0.getVisitCount(); |
| | | serviceSubtask1.setVisitCount(visitCount + 1); |
| | | serviceSubtask1.setVisitType(serviceSubtask0.getVisitType()); |
| | | serviceSubtask1.setVisitDeptCode(serviceSubtask0.getVisitDeptCode()); |
| | | serviceSubtask1.setVisitDeptName(serviceSubtask0.getVisitDeptName()); |
| | | //新任务科室是当前出院科室 |
| | | serviceSubtask1.setDeptcode(patMedOuthosp.getDeptcode()); |
| | | serviceSubtask1.setCreateTime(new Date()); |
| | | serviceSubtask1.setUpdateTime(new Date()); |
| | | serviceSubtask1.setFinishtime(null); |
| | | serviceSubtask1.setAdmindate(adminDate); |
| | | |
| | | serviceSubtask1.setVisitTime(newDate); |
| | | serviceSubtask1.setLongSendTime(newDate); |
| | | i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask1); |
| | | serviceSubtask1.setVisitTime(newDate); |
| | | serviceSubtask1.setLongSendTime(newDate); |
| | | i = i + serviceSubtaskMapper.insertServiceSubtask(serviceSubtask1); |
| | | } |
| | | } else { |
| | | //查看已完成的任务 |
| | | // ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity(); |