| | |
| | | import com.ruoyi.system.mapper.SysConfigMapper; |
| | | import com.smartor.common.FtpService; |
| | | import com.smartor.common.MtSubmitSmUtil; |
| | | import com.smartor.common.ScheduleSubtaskBuilder; |
| | | import com.smartor.config.PhoneUtils; |
| | | import com.smartor.domain.DTO.ServiceSubtaskDetailDTO; |
| | | import com.smartor.domain.*; |
| | |
| | | private IServiceTaskScheduleService serviceTaskScheduleService; |
| | | |
| | | @Autowired |
| | | private com.smartor.common.ScheduleSubtaskBuilder scheduleSubtaskBuilder; |
| | | private ScheduleSubtaskBuilder scheduleSubtaskBuilder; |
| | | |
| | | @Autowired |
| | | private FtpService ftpService; |
| | |
| | | scheduleVO.setOrgid(serviceTask.getOrgid()); |
| | | scheduleVO.setCampusid(serviceTask.getCampusid()); |
| | | scheduleVO.setCreateBy(serviceTask.getCreateBy()); |
| | | |
| | | scheduleVO.setDeptCodes(serviceTaskVO.getDeptcode()); |
| | | scheduleVO.setWardCodes(serviceTaskVO.getLeavehospitaldistrictcode()); |
| | | scheduleVO.setIcd10Codes(serviceTaskVO.getIcd10code()); |
| | | scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode()); |
| | | |
| | | log.info("----serviceTaskSchedule的值为:{}", scheduleVO); |
| | | serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO); |
| | | // 绑定维度写条件表(供 HIS 自动纳入匹配,longtask 恒=1) |
| | | bindDimensionCondition(serviceTask, serviceTaskVO); |
| | | } else { |
| | | ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); |
| | | serviceTaskdept.setTaskId(serviceTask.getTaskid()); |
| | |
| | | List<ServiceTaskScheduleDetail> detailList = |
| | | serviceTaskScheduleService.selectDetailByScheduleid(schedule.getId()); |
| | | scheduleSubtaskBuilder.buildSubtasksForPatient( |
| | | serviceTask, serviceTaskVO, schedule, detailList, patTaskRelevance, serviceSubtask); |
| | | serviceTask, serviceTaskVO.getPreachformList(), schedule, detailList, patTaskRelevance, serviceSubtask); |
| | | continue; |
| | | } |
| | | |
| | |
| | | scheduleVO.setTaskid(serviceTask.getTaskid()); |
| | | scheduleVO.setOrgid(serviceTask.getOrgid()); |
| | | scheduleVO.setCampusid(serviceTask.getCampusid()); |
| | | scheduleVO.setDeptCodes(serviceTaskVO.getDeptcode()); |
| | | scheduleVO.setWardCodes(serviceTaskVO.getLeavehospitaldistrictcode()); |
| | | scheduleVO.setIcd10Codes(serviceTaskVO.getIcd10code()); |
| | | scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode()); |
| | | scheduleVO.setCreateBy(serviceTask.getUpdateBy()); |
| | | serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO); |
| | | // 先清旧维度条件表,再按最新入参重写(防过期维度残留导致误纳入) |
| | | clearDimensionCondition(serviceTask.getTaskid()); |
| | | bindDimensionCondition(serviceTask, serviceTaskVO); |
| | | } |
| | | } |
| | | if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) { |
| | |
| | | serviceSubtask.setUpdateBy(serviceTask.getUpdateBy()); |
| | | serviceSubtask.setCreateBy(serviceTask.getUpdateBy()); |
| | | scheduleSubtaskBuilder.buildSubtasksForPatient( |
| | | serviceTask, serviceTaskVO, schedule, detailList, patTaskRelevance, serviceSubtask); |
| | | serviceTask, serviceTaskVO.getPreachformList(), schedule, detailList, patTaskRelevance, serviceSubtask); |
| | | continue; |
| | | } |
| | | if (patTaskRelevance.getIsoperation() == 2) { |
| | |
| | | Map<String, Integer> map = new HashMap<>(); |
| | | map.put("taskId", serviceTask.getTaskid().intValue()); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 任务组(appltype=5)绑定维度写条件表,供 HIS 自动纳入匹配。 |
| | | * longtask 恒=1(否则独立扫描/主扫描按 longtask=1 查不到)。 |
| | | * 复用现有 service_taskdept(科室deptType=1/病区deptType=2)、service_taskdiag(疾病)。 |
| | | * 手术维度本期不写(暂不支持自动纳入)。 |
| | | */ |
| | | private void bindDimensionCondition(ServiceTask serviceTask, ServiceTaskVO vo) { |
| | | // 科室 |
| | | if (StringUtils.isNotEmpty(vo.getDeptcode())) { |
| | | for (String deptCode : vo.getDeptcode().split(",")) { |
| | | if (StringUtils.isEmpty(deptCode)) continue; |
| | | ServiceTaskdept d = new ServiceTaskdept(); |
| | | d.setTaskId(serviceTask.getTaskid()); |
| | | d.setTaskName(serviceTask.getTaskName()); |
| | | d.setOrgid(serviceTask.getOrgid()); |
| | | d.setLongtask(1L); |
| | | d.setDeptCode(deptCode); |
| | | d.setDeptType("1"); |
| | | d.setServiceType(vo.getServiceType()); |
| | | serviceTaskdeptService.insertServiceTaskdept(d); |
| | | } |
| | | } |
| | | // 病区 |
| | | if (StringUtils.isNotEmpty(vo.getLeavehospitaldistrictcode())) { |
| | | for (String wardCode : vo.getLeavehospitaldistrictcode().split(",")) { |
| | | if (StringUtils.isEmpty(wardCode)) continue; |
| | | ServiceTaskdept d = new ServiceTaskdept(); |
| | | d.setTaskId(serviceTask.getTaskid()); |
| | | d.setTaskName(serviceTask.getTaskName()); |
| | | d.setOrgid(serviceTask.getOrgid()); |
| | | d.setLongtask(1L); |
| | | d.setDeptCode(wardCode); |
| | | d.setDeptType("2"); |
| | | d.setServiceType(vo.getServiceType()); |
| | | serviceTaskdeptService.insertServiceTaskdept(d); |
| | | } |
| | | } |
| | | // 疾病(用 split(","),勿照抄 appltype=3 现网的 split("$") bug) |
| | | if (StringUtils.isNotEmpty(vo.getIcd10code())) { |
| | | String[] codes = vo.getIcd10code().split(","); |
| | | String[] names = StringUtils.isNotEmpty(vo.getIcd10name()) ? vo.getIcd10name().split(",") : new String[0]; |
| | | for (int i = 0; i < codes.length; i++) { |
| | | if (StringUtils.isEmpty(codes[i])) continue; |
| | | ServiceTaskdiag dg = new ServiceTaskdiag(); |
| | | dg.setTaskId(serviceTask.getTaskid()); |
| | | dg.setTaskName(serviceTask.getTaskName()); |
| | | dg.setOrgid(serviceTask.getOrgid()); |
| | | dg.setLongtask(1L); |
| | | dg.setServiceType(vo.getServiceType()); |
| | | dg.setIcd10code(codes[i]); |
| | | dg.setIcd10name(i < names.length ? names[i] : null); |
| | | dg.setGuid(serviceTask.getGuid()); |
| | | dg.setCreateTime(new Date()); |
| | | serviceTaskdiagService.insertServiceTaskdiag(dg); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 任务组修改时,先软删该 task 旧的维度条件表记录(防过期维度残留导致误纳入)。 |
| | | */ |
| | | private void clearDimensionCondition(Long taskId) { |
| | | ServiceTaskdept dq = new ServiceTaskdept(); |
| | | dq.setTaskId(taskId); |
| | | List<ServiceTaskdept> depts = serviceTaskdeptService.selectServiceTaskdeptList(dq); |
| | | if (CollectionUtils.isNotEmpty(depts)) { |
| | | for (ServiceTaskdept d : depts) { |
| | | serviceTaskdeptService.deleteServiceTaskdeptById(d.getId()); |
| | | } |
| | | } |
| | | ServiceTaskdiag gq = new ServiceTaskdiag(); |
| | | gq.setTaskId(taskId); |
| | | List<ServiceTaskdiag> diags = serviceTaskdiagService.selectServiceTaskdiagList(gq); |
| | | if (CollectionUtils.isNotEmpty(diags)) { |
| | | for (ServiceTaskdiag g : diags) { |
| | | serviceTaskdiagService.deleteServiceTaskdiagById(g.getId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |