private TrackingAttendanceStatusVo populateTrackingAttendanceStatus(TrackingStatus status) { TrackingAttendanceStatusVo trackingAttStatus = new TrackingAttendanceStatusVo(); trackingAttStatus.setPatient(form.getGlobalContext().Core.getPatientShort()); trackingAttStatus.setEpisode(form.getGlobalContext().Core.getEpisodeofCareShort()); trackingAttStatus.setAttendance(form.getGlobalContext().Core.getCurrentCareContext()); trackingAttStatus.setTrackingArea(form.getLocalContext().getcurrentTracking().getCurrentArea()); trackingAttStatus.setStatusDatetime(new DateTime()); Object mos = domain.getMosUser(); if (mos instanceof MemberOfStaffLiteVo) { trackingAttStatus.setCreatedBy((MemberOfStaffLiteVo) mos); } trackingAttStatus.setStatus(status); // WDEV-16777 trackingAttStatus.setPrevStatus( (form.getLocalContext().getcurrentTracking() != null && form.getLocalContext().getcurrentTracking().getCurrentStatus() != null) ? form.getLocalContext().getcurrentTracking().getCurrentStatus().getStatus() : null); return trackingAttStatus; }
private boolean save(boolean bSave) { BedAvailabilityVo bedAvailabilityToSave = null; // WDEV-15162 bedAvailabilityToSave = populateDataFromScreen(form.getLocalContext().getcurrentBedAvailability()); String[] errors = bedAvailabilityToSave.validate(getUIErrors()); if (errors != null && errors.length > 0) { engine.showErrors(errors); return false; } // Check SOE if (bedAvailabilityToSave.getID_BedAvailabilityIsNotNull() && domain.isStale(bedAvailabilityToSave)) { engine.showMessage(ConfigFlag.UI.STALE_OBJECT_MESSAGE.getValue()); engine.close(DialogResult.ABORT); return false; } try { TrackingForBedAvailabilityVo trackingToSave = form.getLocalContext().getcurrentTracking(); // Create new current status (Decision To Admit) for tracking TrackingAttendanceStatusVo newStatus = new TrackingAttendanceStatusVo(); newStatus.setPatient(trackingToSave.getPatient()); newStatus.setEpisode(form.getGlobalContext().Core.getEpisodeofCareShort()); newStatus.setAttendance(form.getGlobalContext().Core.getCurrentCareContext()); newStatus.setTrackingArea(trackingToSave.getCurrentArea()); newStatus.setStatusDatetime(new DateTime()); newStatus.setCreatedBy((MemberOfStaffRefVo) domain.getMosUser()); newStatus.setStatus(TrackingStatus.DECISION_TO_ADMIT); newStatus.setPrevStatus( (trackingToSave != null && trackingToSave.getCurrentStatus() != null) ? trackingToSave.getCurrentStatus().getStatus() : null); newStatus.setPrevTrackingArea( (trackingToSave != null && trackingToSave.getCurrentStatus() != null) ? trackingToSave.getCurrentStatus().getTrackingArea() : null); trackingToSave.setCurrentStatus(newStatus); trackingToSave.getAttendance().setConclusionDateTime(form.dtimAwaitingBed().getValue()); trackingToSave.getAttendance().setBedTypeRequested(form.cmbDTABedType().getValue()); trackingToSave.setBedAvailability(bedAvailabilityToSave); trackingToSave.setAssociatedPendingEmergencyAdmission( populatePendingAdmission(trackingToSave)); String[] errors1 = trackingToSave.validate(); if (errors1 != null && errors1.length > 0) { engine.showErrors(errors1); return false; } form.getLocalContext().setcurrentBedAvailability(domain.save(null, trackingToSave)); } catch (StaleObjectException e) { engine.showMessage(ConfigFlag.UI.STALE_OBJECT_MESSAGE.getValue()); engine.close(DialogResult.ABORT); return false; } catch (UniqueKeyViolationException e) { engine.showMessage("There can only be one BedAvailability record for an attendance!"); engine.close(DialogResult.ABORT); return false; } return true; }