package us.mn.state.health.lims.sample.action; import java.lang.reflect.InvocationTargetException; import java.util.Calendar; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.PropertyUtils; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import us.mn.state.health.lims.common.action.BaseActionForm; import us.mn.state.health.lims.common.action.IActionConstants; import us.mn.state.health.lims.common.exception.LIMSRuntimeException; import us.mn.state.health.lims.common.formfields.FormFields; import us.mn.state.health.lims.common.services.DisplayListService; import us.mn.state.health.lims.common.services.SampleOrderService; import us.mn.state.health.lims.common.services.DisplayListService.ListType; import us.mn.state.health.lims.common.util.DateUtil; import us.mn.state.health.lims.dictionary.ObservationHistoryList; import us.mn.state.health.lims.organization.util.OrganizationTypeList; import us.mn.state.health.lims.patient.action.bean.PatientManagementInfo; import us.mn.state.health.lims.patient.action.bean.PatientSearch; import us.mn.state.health.lims.patient.saving.Accessioner; import us.mn.state.health.lims.sample.util.CI.ProjectForm; /** * The SampleEntryByProjectAction class represents the initial Action for the SampleEntry * form of the application for the Retro-CI workflow * */ public class SampleEntryByProjectAction extends BaseSampleEntryAction { protected ActionForward performAction(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { request.getSession().setAttribute(IActionConstants.SAVE_DISABLED, IActionConstants.TRUE); BaseActionForm dynaForm = (BaseActionForm) form; // retrieve the current project, before clearing, so that we can set it on later. String projectFormId = Accessioner.findProjectFormName(dynaForm); // Initialize the form. dynaForm.initialize(mapping); updateRequestType(request); // Set received date and entered date to today's date Date today = Calendar.getInstance().getTime(); String dateAsText = DateUtil.formatDateAsText(today ); PropertyUtils.setProperty(form, "currentDate", dateAsText); PropertyUtils.setProperty(dynaForm, "receivedDateForDisplay", dateAsText); PropertyUtils.setProperty(dynaForm, "interviewDate", dateAsText); PropertyUtils.setProperty(dynaForm, "labNo", ""); SampleOrderService sampleOrderService = new SampleOrderService(); PropertyUtils.setProperty( dynaForm, "sampleOrderItems", sampleOrderService.getSampleOrderItem() ); PropertyUtils.setProperty(dynaForm, "patientProperties", new PatientManagementInfo()); PropertyUtils.setProperty( dynaForm, "patientSearch", new PatientSearch() ); PropertyUtils.setProperty(dynaForm, "sampleTypes", DisplayListService.getList(ListType.SAMPLE_TYPE_ACTIVE)); PropertyUtils.setProperty(dynaForm, "testSectionList", DisplayListService.getList(ListType.TEST_SECTION)); addGenderList(dynaForm); addProjectList(dynaForm); addOrganizationLists(dynaForm); addAllPatientFormLists(dynaForm); setProjectFormName(form, projectFormId); if (FormFields.getInstance().useField(FormFields.Field.InitialSampleCondition)) { PropertyUtils.setProperty(dynaForm, "initialSampleConditionList", DisplayListService.getList(ListType.INITIAL_SAMPLE_CONDITION)); } String forward = findForward(projectFormId); return mapping.findForward(forward); } /** * One form ID at this time is actually on another JSP page, someday maybe others * @param projectFormId * @return */ private String findForward(String projectFormId) { ProjectForm projectForm = ProjectForm.findProjectFormByFormId(projectFormId); if (projectForm == null) { return FWD_SUCCESS; } switch (projectForm) { case EID: return FWD_EID_ENTRY; case VL: return FWD_VL_ENTRY; default: return FWD_SUCCESS; } } protected String getPageSubtitleKey() { String key = null; switch (requestType) { case INITIAL: { key = "banner.menu.createSample.Initial"; break; } case VERIFY: { key = "banner.menu.createSample.Verify"; break; } default: { key = "banner.menu.sampleCreate"; } } return key; } protected void addOrganizationLists(BaseActionForm dynaForm) throws LIMSRuntimeException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { //Get ARV Centers PropertyUtils.setProperty(dynaForm, "ProjectData.ARVCenters", OrganizationTypeList.ARV_ORGS.getList()); PropertyUtils.setProperty(dynaForm, "organizationTypeLists", OrganizationTypeList.MAP); //Get EID Sites PropertyUtils.setProperty(dynaForm, "ProjectData.EIDSites", OrganizationTypeList.EID_ORGS.getList()); PropertyUtils.setProperty(dynaForm, "ProjectData.EIDSitesByName", OrganizationTypeList.EID_ORGS_BY_NAME.getList()); //Get EID whichPCR List //PropertyUtils.setProperty(dynaForm, "ProjectData.eidWhichPCRList", ObservationHistoryList.EID_WHICH_PCR.getList()); //Get EID secondTestReason List PropertyUtils.setProperty(dynaForm, "ProjectData.eidSecondPCRReasonList", ObservationHistoryList.EID_SECOND_PCR_REASON.getList()); //Get SPE Request Reasons PropertyUtils.setProperty(dynaForm, "ProjectData.requestReasons", ObservationHistoryList.SPECIAL_REQUEST_REASONS.getList()); PropertyUtils.setProperty(dynaForm, "ProjectData.isUnderInvestigationList", ObservationHistoryList.YES_NO.getList()); } }