private void mergeVisits(Patient preferred, Patient notPreferred, PersonMergeLogData mergedData) { // move all visits, including voided ones (encounters will be handled below) //TODO: this should be a copy, not a move VisitService visitService = Context.getVisitService(); for (Visit visit : visitService.getVisitsByPatient(notPreferred, true, true)) { if (log.isDebugEnabled()) { log.debug("Merging visit " + visit.getVisitId() + " to " + preferred.getPatientId()); } visit.setPatient(preferred); Visit persisted = visitService.saveVisit(visit); mergedData.addMovedVisit(persisted.getUuid()); } }
@Test public void validate_shouldPassValidationIfVisitDateOnBirthDate() { Visit visit = new Visit(); Patient patient = new Patient(); calendar.set(1974, 4, 8); patient.setBirthdate(calendar.getTime()); patient.setBirthdateEstimated(false); visit.setPatient(patient); calendar.set(1974, 4, 8); visit.setStartDatetime(calendar.getTime()); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertThat(errors, not(hasFieldErrors("startDatetime"))); }
@Test public void validate_shouldPassValidationIfVisitDateOnEstimatedBirthDatesGracePeriod() { Visit visit = new Visit(); Patient patient = new Patient(); calendar.set(2000, 7, 25); patient.setBirthdate(calendar.getTime()); patient.setBirthdateEstimated(true); calendar.set(2010, 7, 25); patient.setDeathDate(calendar.getTime()); visit.setPatient(patient); calendar.set(1995, 7, 25); visit.setStartDatetime(calendar.getTime()); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertThat(errors, not(hasFieldErrors("startDatetime"))); }
@Test public void validate_shouldPassValidationIfVisitDateOnEstimatedBirthDatesMinimumOneYearGracePeriod() { Visit visit = new Visit(); Patient patient = new Patient(); calendar.set(2000, 7, 25); patient.setBirthdate(calendar.getTime()); patient.setBirthdateEstimated(true); calendar.set(2000, 8, 25); patient.setDeathDate(calendar.getTime()); visit.setPatient(patient); calendar.set(1999, 7, 25); visit.setStartDatetime(calendar.getTime()); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertThat(errors, not(hasFieldErrors("startDatetime"))); }
@Test public void validate_shouldPassValidationIfVisitDateAfterBirthDate() { Visit visit = new Visit(); Patient patient = new Patient(); calendar.set(1974, 4, 8); patient.setBirthdate(calendar.getTime()); patient.setBirthdateEstimated(false); visit.setPatient(patient); calendar.set(1974, 4, 9); visit.setStartDatetime(calendar.getTime()); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertThat(errors, not(hasFieldErrors("startDatetime"))); }
@Test public void validate_shouldFailValidationIfVisitDateBeforeBirthDate() { Visit visit = new Visit(); Patient patient = new Patient(); calendar.set(1974, 4, 8); patient.setBirthdate(calendar.getTime()); patient.setBirthdateEstimated(false); visit.setPatient(patient); calendar.set(1974, 4, 7); visit.setStartDatetime(calendar.getTime()); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertThat(errors, hasFieldErrors("startDatetime", "Visit.startDateCannotFallBeforeTheBirthDateOfTheSamePatient")); }
@Test public void validate_shouldFailValidationIfVisitDateBeforeEstimatedBirthDatesGracePeriod() { Visit visit = new Visit(); Patient patient = new Patient(); calendar.set(2000, 7, 25); patient.setBirthdate(calendar.getTime()); patient.setBirthdateEstimated(true); calendar.set(2010, 7, 25); patient.setDeathDate(calendar.getTime()); visit.setPatient(patient); calendar.set(1995, 7, 24); visit.setStartDatetime(calendar.getTime()); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertThat(errors, hasFieldErrors("startDatetime", "Visit.startDateCannotFallBeforeTheBirthDateOfTheSamePatient")); }
@Test public void validate_shouldFailValidationIfVisitDateBeforeEstimatedBirthDatesMinimumOneYearGracePeriod() { Visit visit = new Visit(); Patient patient = new Patient(); calendar.set(2000, 7, 25); patient.setBirthdate(calendar.getTime()); patient.setBirthdateEstimated(true); calendar.set(2000, 8, 25); patient.setDeathDate(calendar.getTime()); visit.setPatient(patient); calendar.set(1999, 7, 24); visit.setStartDatetime(calendar.getTime()); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertThat(errors, hasFieldErrors("startDatetime", "Visit.startDateCannotFallBeforeTheBirthDateOfTheSamePatient")); } }
private Visit makeVisit(Integer patientId) { Visit visit = new Visit(); visit.setPatient(Context.getPatientService().getPatient(patientId)); visit.setStartDatetime(new Date()); visit.setVisitType(visitService.getVisitType(1)); return visit; }
visit.setStartDatetime(encounter.getEncounterDatetime()); visit.setLocation(encounter.getLocation()); visit.setPatient(encounter.getPatient());
/** * @see VisitService#saveVisit(Visit) */ @Test public void saveVisit_shouldPassIfNoValidationErrorsAreFound() { Visit visit = new Visit(); visit.setPatient(Context.getPatientService().getPatient(2)); visit.setVisitType(visitService.getVisitType(1)); visit.setStartDatetime(new Date()); visitService.saveVisit(visit); }
/** * @see VisitValidator#validate(Object,Errors) */ @Test public void validate_shouldFailIfVisitTypeIsNotSet() { Visit visit = new Visit(); visit.setPatient(Context.getPatientService().getPatient(2)); visit.setStartDatetime(new Date()); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertTrue(errors.hasFieldErrors("visitType")); }
/** * @see EncounterValidator#validate(Object,Errors) */ @Test public void validate_shouldFailIfEncounterDateTimeIsAfterVisitStopDateTime() { Encounter encounter = Context.getEncounterService().getEncounter(3); Visit visit = Context.getVisitService().getVisit(1); visit.setPatient(encounter.getPatient()); encounter.setVisit(visit); //Set encounter dateTime to after the visit stopDateTime. visit.setStopDatetime(new Date()); Date date = new Date(visit.getStopDatetime().getTime() + 1); encounter.setEncounterDatetime(date); errors = new BindException(encounter, "encounter"); encounterValidator.validate(encounter, errors); Assert.assertEquals(true, errors.hasFieldErrors("encounterDatetime")); }
/** * @see EncounterValidator#validate(Object,Errors) */ @Test public void validate_shouldFailIfEncounterDateTimeIsBeforeVisitStartDateTime() { Encounter encounter = Context.getEncounterService().getEncounter(3); Visit visit = Context.getVisitService().getVisit(1); visit.setPatient(encounter.getPatient()); encounter.setVisit(visit); //Set encounter dateTime to before the visit startDateTime. Date date = new Date(visit.getStartDatetime().getTime() - 1); encounter.setEncounterDatetime(date); errors = new BindException(encounter, "encounter"); encounterValidator.validate(encounter, errors); Assert.assertEquals(true, errors.hasFieldErrors("encounterDatetime")); }
/** * @see EncounterValidator#validate(Object,Errors) */ @Test public void validate_shouldFailIfThePatientsForTheVisitAndTheEncounterDontMatch() { encounter.setPatient(new Patient(2)); Visit visit = new Visit(); visit.setPatient(new Patient(3)); encounter.setVisit(visit); encounterValidator.validate(encounter, errors); Assert.assertEquals("Encounter.visit.patients.dontMatch", errors.getFieldError("visit").getCode()); }
/** * @see VisitValidator#validate(Object,Errors) */ @Test public void validate_shouldFailIfTheStartDatetimeIsAfterAnyEncounter() { Visit visit = Context.getVisitService().getVisit(1); Encounter encounter = Context.getEncounterService().getEncounter(3); visit.setPatient(encounter.getPatient()); encounter.setVisit(visit); encounter.setEncounterDatetime(visit.getStartDatetime()); Context.getEncounterService().saveEncounter(encounter); //Set visit start date to after the encounter date. Date date = new Date(encounter.getEncounterDatetime().getTime() + 1); visit.setStartDatetime(date); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertEquals(true, errors.hasFieldErrors("startDatetime")); }
/** * @see VisitValidator#validate(Object,Errors) */ @Test public void validate_shouldFailIfTheStopDatetimeIsBeforeAnyEncounter() { Visit visit = Context.getVisitService().getVisit(1); Encounter encounter = Context.getEncounterService().getEncounter(3); visit.setPatient(encounter.getPatient()); encounter.setVisit(visit); encounter.setEncounterDatetime(visit.getStartDatetime()); Context.getEncounterService().saveEncounter(encounter); //Set visit stop date to before the encounter date. Date date = new Date(encounter.getEncounterDatetime().getTime() - 1); visit.setStopDatetime(date); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertEquals(true, errors.hasFieldErrors("stopDatetime")); }
/** * @see VisitValidator#validate(Object,Errors) */ @Test public void validate_shouldFailIfStartDatetimeIsNotSet() { VisitService vs = Context.getVisitService(); Visit visit = new Visit(); visit.setVisitType(vs.getVisitType(1)); visit.setPatient(Context.getPatientService().getPatient(2)); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertTrue(errors.hasFieldErrors("startDatetime")); }