public void saveTreatment(Treatment treatment) throws InvalidModelException { // validation List<String> errors = new ArrayList<String>(); List<Treatment> treatmentsList = treatmentDao.getTreatmentsByRadarNumber(treatment.getRadarNumber()); // Cannot start a new treatment after a previous treatment start date which has not been closed for (Treatment existingTreatment : treatmentsList) { if (existingTreatment.getId().equals(treatment.getId())) { continue; } if (existingTreatment.getEndDate() == null && treatment.getStartDate().compareTo(existingTreatment.getStartDate()) > 0) { if (treatment.getEndDate() != null) { if (treatment.getEndDate().compareTo(existingTreatment.getStartDate()) > 0) { errors.add(TreatmentManager.PREVIOUS_TREATMENT_NOT_CLOSED_ERROR); break; } } } } // dates must not overlap for (Treatment existingTreatment : treatmentsList) { if (existingTreatment.getId().equals(treatment.getId())) { continue; } if (RadarUtility.isEventsOverlapping( existingTreatment.getStartDate(), existingTreatment.getEndDate(), treatment.getStartDate(), treatment.getEndDate())) { errors.add(TreatmentManager.OVERLAPPING_ERROR); break; } } List<Date> datesToCheck = Arrays.asList(treatment.getStartDate(), treatment.getEndDate()); // cannot be before date of birth Patient patient = patientManager.getPatientByRadarNumber(treatment.getRadarNumber()); if (patient != null) { Date dob = patient.getDob(); if (dob != null) { for (Date date : datesToCheck) { if (date != null) { if (dob.compareTo(date) > 0) { errors.add(TreatmentManager.BEFORE_DOB_ERROR); break; } } } } } // cannot be after today Date today = new Date(); for (Date date : datesToCheck) { if (date != null) { if (today.compareTo(date) < 0) { errors.add(TreatmentManager.AFTER_TODAY_ERROR); break; } } } if (!errors.isEmpty()) { InvalidModelException exception = new InvalidModelException("treatment model is not valid"); exception.setErrors(errors); throw exception; } treatmentDao.saveTreatment(treatment); }
public List<TreatmentModality> getTreatmentModalities() { return treatmentDao.getTreatmentModalities(); }
public TreatmentModality getTreatmentModality(long id) { return treatmentDao.getTreatmentModality(id); }
public List<Treatment> getTreatmentsByRadarNumber(long radarNumber) { return treatmentDao.getTreatmentsByRadarNumber(radarNumber); }
public Treatment getTreatment(long id) { return treatmentDao.getTreatment(id); }
public void deleteTreatment(Treatment treatment) { treatmentDao.deleteTreatment(treatment); }