Skip to content

Commit

Permalink
Add LastVisit and EditVisit require an EndDate
Browse files Browse the repository at this point in the history
  • Loading branch information
reagan committed Jan 24, 2020
1 parent 5789acc commit e1c5339
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
import org.joda.time.DateTime;
import org.openmrs.Location;
import org.openmrs.Patient;
import org.openmrs.Visit;
import org.openmrs.module.appui.AppUiConstants;
import org.openmrs.module.emrapi.adt.AdtService;
import org.openmrs.module.emrapi.adt.exception.ExistingVisitDuringTimePeriodException;
import org.openmrs.module.emrapi.visit.VisitDomainWrapper;
import org.openmrs.ui.framework.SimpleObject;
import org.openmrs.ui.framework.UiUtils;
import org.openmrs.ui.framework.fragment.action.SuccessResult;
import org.openmrs.ui.framework.annotation.SpringBean;
import org.openmrs.ui.framework.fragment.action.FailureResult;
import org.slf4j.Logger;
Expand All @@ -31,31 +33,30 @@ public Object create(@SpringBean("adtService") AdtService adtService,
@RequestParam(value = "stopDate", required = false) Date stopDate,
HttpServletRequest request, UiUtils ui) {

// if no stop date, set it to start date
if (stopDate == null) {
stopDate = startDate;
}

// set the startDate time component to the start of day
startDate = new DateTime(startDate).withTime(0,0,0,0).toDate();

// if stopDate is today, set stopDate to current datetime, otherwise set time component to end of date
if (stopDate != null){
if (new DateTime().withTime(0,0,0,0).equals(new DateTime(stopDate).withTime(0,0,0,0))) {
stopDate = new Date();
}
else {
stopDate = new DateTime(stopDate).withTime(23, 59, 59, 999).toDate();
}
}

try {

VisitDomainWrapper createdVisit = adtService.createRetrospectiveVisit(patient, location, startDate, stopDate);

request.getSession().setAttribute(AppUiConstants.SESSION_ATTRIBUTE_INFO_MESSAGE,
ui.message("coreapps.retrospectiveVisit.addedVisitMessage"));
request.getSession().setAttribute(AppUiConstants.SESSION_ATTRIBUTE_TOAST_MESSAGE, "true");

return SimpleObject.create("success", true, "id", createdVisit.getVisit().getId().toString(), "uuid", createdVisit.getVisit().getUuid());
}

}
catch (ExistingVisitDuringTimePeriodException e) {

// if there are existing visit(s), return these existing visits
Expand All @@ -70,6 +71,7 @@ public Object create(@SpringBean("adtService") AdtService adtService,
}
}


return simpleVisits;
}
catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,16 @@ public SimpleObject setDuration(@SpringBean("visitService") VisitService visitSe
@RequestParam(value="stopDate", required = false) Date stopDate,
HttpServletRequest request, UiUtils ui) {


if (!isSameDay(startDate, visit.getStartDatetime())) {
visit.setStartDatetime(new DateTime(startDate).toDateMidnight().toDate());
}

if ( (stopDate!=null) && !isSameDay(stopDate, visit.getStopDatetime())) {
if(stopDate == null){

visit.setStopDatetime(null);

} else if (!isSameDay(stopDate, visit.getStopDatetime())) {

Date now = new DateTime().toDate();
if (isSameDay(stopDate, now)) {
visit.setStopDatetime(now);
Expand All @@ -54,15 +58,16 @@ public SimpleObject setDuration(@SpringBean("visitService") VisitService visitSe
.withMillisOfSecond(999)
.toDate());
}

}

visitService.saveVisit(visit);

request.getSession().setAttribute(AppUiConstants.SESSION_ATTRIBUTE_INFO_MESSAGE, ui.message("coreapps.editVisitDate.visitSavedMessage"));
request.getSession().setAttribute(AppUiConstants.SESSION_ATTRIBUTE_TOAST_MESSAGE, "true");

return SimpleObject.create("success", true, "search", "?patientId=" + visit.getPatient().getId() + "&visitId=" + visit.getId());

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
defaultDate: config.defaultStartDate
])}
</p>
<% if(config.defaultEndDate != null) { %>
<% if(config.visitEndDate != null) { %>
<p>
<label for="stopDate" class="required">
${ ui.message("coreapps.stopDate.label") }
Expand Down
24 changes: 19 additions & 5 deletions omod/src/main/webapp/fragments/patientdashboard/visitIncludes.gsp
Original file line number Diff line number Diff line change
Expand Up @@ -73,19 +73,33 @@
])}
</p>
<p>
<label for="stopDate" class="required">
<p>
<label for="stopDate" class="required">
${ ui.message("coreapps.stopDate.label") }
</label>
</label>
${ ui.includeFragment("uicommons", "field/datetimepicker", [
<% if(activeVisits){ %>
${ ui.includeFragment("uicommons", "field/datetimepicker", [
id: "retrospectiveVisitStopDate",
formFieldName: "retrospectiveVisitStopDate",
label:"",
defaultDate: visitEndTime,
endDate: editDateFormat.format(visitEndTime),
useTime: false,
])}
])}
<% } else { %>
${ ui.includeFragment("uicommons", "field/datetimepicker", [
id: "noActiveVisitStopDate",
formFieldName: "retrospectiveVisitStopDate",
label:"",
defaultDate: null,
endDate: editDateFormat.format(visitEndTime),
useTime: false,
])}
<% } %>
</p>
<br><br>
Expand Down
3 changes: 2 additions & 1 deletion omod/src/main/webapp/fragments/patientdashboard/visits.gsp
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,8 @@
startDateLowerLimit: (idx + 1 == visits.size || visits[idx + 1].stopDatetime == null) ? null : editDateFormat.format(org.apache.commons.lang.time.DateUtils.addDays(visits[idx + 1].stopDatetime, 1)),
startDateUpperLimit: wrapper.oldestEncounter == null && wrapper.stopDatetime == null ? editDateFormat.format(new Date()) : editDateFormat.format(wrapper.oldestEncounter == null ? wrapper.stopDatetime : wrapper.oldestEncounter.encounterDatetime),
defaultStartDate: wrapper.startDatetime,
defaultEndDate: wrapper.stopDatetime
defaultEndDate:idx == 0 ? null : wrapper.stopDatetime,
visitEndDate: wrapper.stopDatetime
]) }
${ ui.includeFragment("coreapps", "patientdashboard/editVisit", [
visit: wrapper.visit,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public void setUp() throws Exception {

controller = new VisitDatesFragmentController();
visitService = mock(VisitService.class);

request = mock(HttpServletRequest.class);
session = mock(HttpSession.class);
when(request.getSession()).thenReturn(session);
Expand Down Expand Up @@ -76,6 +76,25 @@ public void shouldSetVisitStartAndStopDates() throws Exception {
assertThat(actualVisit.getStopDatetime(), is(expectedStopDate));
}

@Test
public void shouldSetVisitStopDateAsNullIfStopDateIsNotSpecified() throws Exception {
Date startDate = (new DateTime(2013, 6, 24, 13, 1, 7)).toDate();
Date stopDate = null;

Date expectedStartDate = (new DateTime(2013, 6, 24, 0, 0, 0)).toDate();
Date expectedStopDate = null;

Visit visit = new Visit(1);
visit.setStartDatetime(new Date());
visit.setStopDatetime(new Date());
visit.setPatient(new Patient(1));

controller.setDuration(visitService, visit, startDate, stopDate, request, mock(UiUtils.class));

Visit actualVisit = savedVisit();
assertThat(actualVisit.getStartDatetime(), is(expectedStartDate));
assertThat(actualVisit.getStopDatetime(), is(expectedStopDate));
}
@Test
public void shouldNotChangeStartOrStopDatetimeIfSettingToSameDay() throws Exception {
Visit visit = new Visit(1);
Expand Down

0 comments on commit e1c5339

Please sign in to comment.