@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"))); }
@Override public boolean matches(Object argument) { Visit visit = (Visit) argument; return OpenmrsUtil.nullSafeEquals(visit.getLocation(), expected.getLocation()) && OpenmrsUtil.nullSafeEquals(visit.getVisitType(), expected.getVisitType()) && OpenmrsUtil.nullSafeEquals(visit.getIndication(), expected.getIndication()) && OpenmrsUtil.nullSafeEquals(visit.getStartDatetime(), expected.getStartDatetime()) && OpenmrsUtil.nullSafeEquals(visit.getStopDatetime(), expected.getStopDatetime()) && (visit.getEncounters().size() == expected.getEncounters().size()); } };
/** * @see VisitService#saveVisit(Visit) */ @Test public void saveVisit_shouldVoidAnAttributeIfMaxOccursIs1AndSameAttributeTypeAlreadyExists() { executeDataSet(VISITS_ATTRIBUTES_XML); Visit visit = new Visit(new Patient(2), new VisitType(3), new Date()); visit.setAttribute(createVisitAttribute(new Date())); visit.setAttribute(createVisitAttribute(new Date(System.currentTimeMillis() - 1000000))); assertEquals(1, visit.getAttributes().size()); visit = visitService.saveVisit(visit); assertNotNull(visit.getId()); visit.setAttribute(createVisitAttribute("second visit")); assertEquals(2, visit.getAttributes().size()); VisitAttribute firstAttribute = (VisitAttribute) visit.getAttributes().toArray()[0]; assertTrue(firstAttribute.getVoided()); }
private void validateStartDatetime(Visit visit, Visit otherVisit, Errors errors) { if (visit.getStartDatetime() != null && otherVisit.getStartDatetime() != null && visit.getStartDatetime().equals(otherVisit.getStartDatetime())) { errors.rejectValue("startDatetime", "Visit.startCannotBeTheSameAsOtherStartDateOfTheSamePatient", "This visit has the same start date and time as another visit of this patient."); } if (visit.getStartDatetime() != null && otherVisit.getStartDatetime() != null && otherVisit.getStopDatetime() != null && visit.getStartDatetime().after(otherVisit.getStartDatetime()) && visit.getStartDatetime().before(otherVisit.getStopDatetime())) { errors.rejectValue("startDatetime", "Visit.startDateCannotFallIntoAnotherVisitOfTheSamePatient", "This visit has a start date that falls into another visit of the same patient."); } }
private void validateVisitStartedBeforePatientBirthdate(Visit visit, Errors errors) { if (visit.getPatient() == null || visit.getPatient().getBirthdate() == null || visit.getStartDatetime() == null) { return; } if (visit.getStartDatetime().before(getPatientBirthdateAdjustedIfEstimated(visit.getPatient()))) { errors.rejectValue("startDatetime", "Visit.startDateCannotFallBeforeTheBirthDateOfTheSamePatient", "This visit has a start date that falls before the birthdate of the same patient."); } }
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()); } }
Visit visit = new Visit(new Patient(2), new VisitType(1), new Date()); visit.addEncounter(encounter); int visitId = visit.getVisitId(); assertNotNull(visit.getId()); assertNotNull(visit.getUuid()); assertNotNull(visit.getCreator()); assertNotNull(visit.getDateCreated()); assertEquals(originalSize + 1, visitService.getAllVisits().size()); assertEquals(1, visit.getEncounters().size()); assertEquals(Integer.valueOf(4), ((Encounter) visit.getEncounters().toArray()[0]).getEncounterId());
Visit visit = new Visit(); visit.setStartDatetime(encounter.getEncounterDatetime()); visit.setLocation(encounter.getLocation()); visit.setPatient(encounter.getPatient()); visit.setVisitType(visitType); visit.setStopDatetime(OpenmrsUtil.getLastMomentOfDay(encounter.getEncounterDatetime()));
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; }
/** * @see EncounterService#getEncountersByVisit(Visit, boolean) */ @Test public void getEncountersByVisit_shouldGetActiveEncountersByVisit() { List<Encounter> encounters = Context.getEncounterService().getEncountersByVisit(new Visit(1), false); assertEquals(1, encounters.size()); }
/** * @see VisitService#saveVisit(Visit) */ @Test public void saveVisit_shouldAddANewVisitToTheDatabase() { Integer originalSize = visitService.getAllVisits().size(); Visit visit = new Visit(new Patient(2), new VisitType(1), new Date()); visit = visitService.saveVisit(visit); assertNotNull(visit.getId()); assertNotNull(visit.getUuid()); assertNotNull(visit.getCreator()); assertNotNull(visit.getDateCreated()); assertEquals(originalSize + 1, visitService.getAllVisits().size()); }
if (visit.getStartDatetime().after(encounterDate)) { continue; if (visit.getStopDatetime() != null && visit.getStopDatetime().before(encounterDate)) { continue; if (visit.getLocation() == null || Location.isInHierarchy(encounter.getLocation(), visit.getLocation())) { encounter.setVisit(visit); return;
/** * @see VisitService#saveVisit(Visit) */ @Test(expected = APIException.class) public void saveVisit_shouldFailIfValidationErrorsAreFound() { Visit visit = new Visit(); //Not setting the patient so that we get validation errors visit.setVisitType(visitService.getVisitType(1)); visit.setStartDatetime(new Date()); visitService.saveVisit(visit); }
/** * @see org.openmrs.module.webservices.rest.web.resource.impl.BaseDelegatingResourceTest#validateDefaultRepresentation() */ @Override public void validateDefaultRepresentation() throws Exception { super.validateDefaultRepresentation(); assertPropPresent("patient"); assertPropPresent("visitType"); assertPropPresent("indication"); assertPropPresent("location"); assertPropPresent("encounters"); assertPropEquals("startDatetime", getObject().getStartDatetime()); assertPropEquals("stopDatetime", getObject().getStopDatetime()); assertPropPresent("attributes"); assertPropEquals("voided", getObject().isVoided()); }
ValidationUtils.rejectIfEmpty(errors, "visitType", "Visit.error.visitType.required"); ValidationUtils.rejectIfEmpty(errors, "startDatetime", "Visit.error.startDate.required"); if (visit.getStartDatetime() != null && OpenmrsUtil.compareWithNullAsLatest(visit.getStartDatetime(), visit.getStopDatetime()) > 0) { errors.rejectValue("stopDatetime", "Visit.error.endDateBeforeStartDate"); if (visit.getId() != null) { Date startDateTime = visit.getStartDatetime(); Date stopDateTime = visit.getStopDatetime(); List<Visit> otherVisitList = Context.getVisitService().getVisitsByPatient(visit.getPatient()); for (Visit otherVisit : otherVisitList) { validateStartDatetime(visit, otherVisit, errors);
/** * Returns a display string * * @param visit * @return the display string */ @PropertyGetter("display") public String getDisplayString(Visit visit) { String ret = visit.getVisitType() == null ? "?" : visit.getVisitType().getName(); ret += " "; ret += visit.getLocation() == null ? "?" : "@ " + visit.getLocation().getName(); ret += " - "; ret += visit.getStartDatetime() == null ? "?" : Context.getDateTimeFormat().format(visit.getStartDatetime()); return ret; }
/** * @see VisitService#saveVisit(Visit) */ @Test public void saveVisit_shouldAssociateEncounterWithVisitOnSaveEncounter() { Visit visit = visitService.getVisit(1); EncounterService es = Context.getEncounterService(); Encounter encounter = new Encounter(); encounter.setEncounterDatetime(new Date()); encounter.setPatient(visit.getPatient()); encounter.setLocation(visit.getLocation()); encounter.setEncounterType(es.getEncounterType(1)); visit.addEncounter(encounter); Context.getEncounterService().saveEncounter(encounter); Integer encounterId = encounter.getEncounterId(); Context.flushSession(); Context.clearSession(); // reload the visit visit = visitService.getVisit(1); assertEquals(1, visit.getEncounters().size()); assertEquals(encounterId, ((Encounter) visit.getEncounters().toArray()[0]).getEncounterId()); }
if (encounter.getVisit() != null && !ObjectUtils.equals(encounter.getVisit().getPatient(), encounter.getPatient())) { errors.rejectValue("visit", "Encounter.visit.patients.dontMatch", "The patient for the encounter and visit should be the same"); if (visit.getStartDatetime() != null && encounterDateTime.before(visit.getStartDatetime())) { errors.rejectValue("encounterDatetime", "Encounter.datetimeShouldBeInVisitDatesRange", "The encounter datetime should be between the visit start and stop dates."); if (visit.getStopDatetime() != null && encounterDateTime.after(visit.getStopDatetime())) { errors.rejectValue("encounterDatetime", "Encounter.datetimeShouldBeInVisitDatesRange", "The encounter datetime should be between the visit start and stop dates.");
/** * @see VisitValidator#validate(Object,Errors) */ @Test public void validate_shouldFailIfTheEndDatetimeIsBeforeTheStartDatetime() { Visit visit = new Visit(); Calendar c = Calendar.getInstance(); visit.setStartDatetime(c.getTime()); c.set(2010, 3, 15);//set to an older date visit.setStopDatetime(c.getTime()); Errors errors = new BindException(visit, "visit"); new VisitValidator().validate(visit, errors); assertEquals(true, errors.hasFieldErrors("stopDatetime")); }
/** * @see VisitService#saveVisit(Visit) */ @Test public void saveVisit_shouldSaveAVisitThoughChangedByAndDateCreatedAreNotSetForVisitAttributeExplictly() { executeDataSet(VISITS_ATTRIBUTES_XML); Visit visit = new Visit(new Patient(2), new VisitType(3), new Date()); VisitAttribute visitAttribute = createVisitAttributeWithoutCreatorAndDateCreated(); visit.setAttribute(visitAttribute); visit = visitService.saveVisit(visit); assertNotNull(visit.getId()); }