Search in sources :

Example 16 with Status

use of org.akaza.openclinica.bean.core.Status in project OpenClinica by OpenClinica.

the class ListStudySubjectTableFactory method singleEventDivBuilder.

private void singleEventDivBuilder(HtmlBuilder eventDiv, SubjectBean subject, Integer rowCount, List<StudyEventBean> studyEvents, StudyEventDefinitionBean sed, StudySubjectBean studySubject) {
    String tableHeaderRowStyleClass = "table_header_row";
    String tableHeaderRowLeftStyleClass = "table_header_row_left";
    String add_another_occurrence = resword.getString("add_another_occurrence");
    String click_for_more_options = resword.getString("click_for_more_options");
    String schedule = resword.getString("schedule");
    String view = resword.getString("view") + "/" + resword.getString("enter_data");
    String edit = resword.getString("edit");
    String remove = resword.getString("remove");
    String occurrence_x_of = resword.getString("ocurrence");
    String subjectText = resword.getString("subject");
    String eventText = resword.getString("event");
    String status = resword.getString("status");
    SubjectEventStatus eventStatus = studyEvents.size() == 0 ? SubjectEventStatus.NOT_SCHEDULED : studyEvents.get(0).getSubjectEventStatus();
    String studyEventName = studyEvents.size() == 0 ? "" : studyEvents.get(0).getName();
    String studyEventId = studyEvents.size() == 0 ? "" : String.valueOf(studyEvents.get(0).getId());
    Status eventSysStatus = studySubject.getStatus();
    String studySubjectLabel = studySubject.getLabel();
    eventDiv.td(0).styleClass(tableHeaderRowLeftStyleClass).close();
    eventDiv.append(subjectText).append(": ").append(studySubjectLabel).br();
    eventDiv.append(eventText).append(": ").append(sed.getName()).br();
    if (!sed.isRepeating()) {
        eventDiv.append(resword.getString("status")).append(":").append(eventStatus.getName()).br();
        eventDiv.tdEnd();
        eventDiv.td(0).styleClass(tableHeaderRowLeftStyleClass).align("right").close();
        linkBuilder(eventDiv, studySubjectLabel, rowCount, studyEvents, sed);
        eventDiv.tdEnd();
    } else {
        eventDiv.tdEnd();
        eventDiv.td(0).styleClass(tableHeaderRowLeftStyleClass).align("right").close();
        linkBuilder(eventDiv, studySubjectLabel, rowCount, studyEvents, sed);
        eventDiv.tdEnd();
        eventDiv.tr(0).valign("top").close();
        eventDiv.td(0).styleClass(tableHeaderRowStyleClass).colspan("2").close();
        eventDiv.bold().append(occurrence_x_of).append("#1 of 1").br();
        if (studyEvents.size() > 0) {
            eventDiv.append(formatDate(studyEvents.get(0).getDateStarted())).br();
            eventDiv.append(status + " : " + studyEvents.get(0).getSubjectEventStatus().getName());
        } else {
            eventDiv.append(status + " : " + SubjectEventStatus.NOT_SCHEDULED.getName());
        }
        eventDiv.boldEnd().tdEnd().trEnd(0);
        if (eventStatus != SubjectEventStatus.NOT_SCHEDULED && eventSysStatus != Status.DELETED && eventSysStatus != Status.AUTO_DELETED) {
            eventDiv.tr(0).close().td(0).styleClass("table_cell_left").close();
            eventDiv.ahref("CreateNewStudyEvent?studySubjectId=" + studySubject.getId() + "&studyEventDefinition=" + sed.getId(), add_another_occurrence);
            eventDiv.tdEnd().trEnd(0);
        }
    }
    eventDiv.trEnd(0);
    eventDiv.tr(0).id("Menu_off_" + studySubjectLabel + "_" + sed.getId() + "_" + rowCount).style("display: all").close();
    eventDiv.td(0).styleClass("table_cell_left").colspan("2").close().append("<i>").append(click_for_more_options).append("</i>").tdEnd();
    eventDiv.trEnd(0);
    eventDiv.tr(0).id("Menu_on_" + studySubjectLabel + "_" + sed.getId() + "_" + rowCount).style("display: none").close();
    eventDiv.td(0).colspan("2").close();
    eventDiv.table(0).border("0").cellpadding("0").cellspacing("0").width("100%").close();
    if (eventSysStatus.getId() == Status.AVAILABLE.getId() || eventSysStatus == Status.SIGNED) {
        if (eventStatus == SubjectEventStatus.NOT_SCHEDULED && currentRole.getRole() != Role.MONITOR && !studyBean.getStatus().isFrozen()) {
            eventDiv.tr(0).valign("top").close();
            eventDiv.td(0).styleClass("table_cell_left").close();
            createNewStudyEventLinkBuilder(eventDiv, studySubject.getId(), sed, schedule);
            eventDiv.tdEnd().trEnd(0);
        } else if (eventStatus == SubjectEventStatus.COMPLETED) {
            eventDiv.tr(0).valign("top").close();
            eventDiv.td(0).styleClass("table_cell_left").close();
            enterDataForStudyEventLinkBuilder(eventDiv, studyEventId, view);
            eventDiv.tdEnd().trEnd(0);
            if ((currentRole.getRole() == Role.STUDYDIRECTOR || currentUser.isSysAdmin()) && studyBean.getStatus() == Status.AVAILABLE) {
                eventDiv.tr(0).valign("top").close();
                eventDiv.td(0).styleClass("table_cell_left").close();
                updateStudyEventLinkBuilder(eventDiv, studySubject.getId(), studyEventId, edit);
                eventDiv.tdEnd().trEnd(0);
                eventDiv.tr(0).valign("top").close();
                eventDiv.td(0).styleClass("table_cell_left").close();
                removeStudyEventLinkBuilder(eventDiv, studySubject.getId(), studyEventId, remove);
                eventDiv.tdEnd().trEnd(0);
            }
        } else if (eventStatus == SubjectEventStatus.LOCKED) {
            eventDiv.tdEnd().trEnd(0);
            if (currentRole.getRole() == Role.STUDYDIRECTOR || currentUser.isSysAdmin()) {
                eventDiv.tr(0).valign("top").close();
                eventDiv.td(0).styleClass("table_cell_left").close();
                enterDataForStudyEventLinkBuilder(eventDiv, studyEventId, view);
                eventDiv.tdEnd().trEnd(0);
                if (studyBean.getStatus() == Status.AVAILABLE) {
                    eventDiv.tr(0).valign("top").close();
                    eventDiv.td(0).styleClass("table_cell_left").close();
                    removeStudyEventLinkBuilder(eventDiv, studySubject.getId(), studyEventId, remove);
                    eventDiv.tdEnd().trEnd(0);
                }
            }
        } else {
            eventDiv.tr(0).valign("top").close();
            eventDiv.td(0).styleClass("table_cell_left");
            enterDataForStudyEventLinkBuilder(eventDiv, studyEventId, view);
            eventDiv.tdEnd().trEnd(0);
            if ((currentRole.getRole() == Role.STUDYDIRECTOR || currentUser.isSysAdmin()) && studyBean.getStatus() == Status.AVAILABLE) {
                eventDiv.tr(0).valign("top").close();
                eventDiv.td(0).styleClass("table_cell_left").close();
                updateStudyEventLinkBuilder(eventDiv, studySubject.getId(), studyEventId, edit);
                eventDiv.tdEnd().trEnd(0);
                eventDiv.tr(0).valign("top").close();
                eventDiv.td(0).styleClass("table_cell_left").close();
                removeStudyEventLinkBuilder(eventDiv, studySubject.getId(), studyEventId, remove);
                eventDiv.tdEnd().trEnd(0);
            }
        }
    }
    if (eventSysStatus == Status.DELETED || eventSysStatus == Status.AUTO_DELETED) {
        eventDiv.tr(0).valign("top").close();
        eventDiv.td(0).styleClass("table_cell_left").close();
        enterDataForStudyEventLinkBuilder(eventDiv, studyEventId, view);
        eventDiv.tdEnd().trEnd(0);
    }
    eventDiv.tableEnd(0).tdEnd().trEnd(0);
    eventDiv.tableEnd(0);
    eventDiv.divEnd().divEnd().divEnd().divEnd().divEnd().divEnd().divEnd().divEnd().divEnd().divEnd().divEnd();
    iconLinkBuilder(eventDiv, studySubjectLabel, rowCount, studyEvents, sed);
}
Also used : Status(org.akaza.openclinica.bean.core.Status) SubjectEventStatus(org.akaza.openclinica.bean.core.SubjectEventStatus) SubjectEventStatus(org.akaza.openclinica.bean.core.SubjectEventStatus)

Example 17 with Status

use of org.akaza.openclinica.bean.core.Status in project OpenClinica by OpenClinica.

the class UserAccountTable method showRow.

@Override
public String showRow(EntityBean e) {
    UserAccountBean u = (UserAccountBean) e;
    Status s = u.getStatus();
    // do the first row, just the "flat" properties
    String row = "<tr>\n";
    // username
    String colorOn = s.equals(Status.AVAILABLE) ? "" : "<font color='gray'>";
    String colorOff = s.equals(Status.AVAILABLE) ? "" : "</font>";
    row += "<td>" + colorOn + u.getName() + colorOff + "</td>\n";
    row += "<td>" + u.getFirstName() + "</td>\n";
    row += "<td>" + u.getLastName() + "</td>\n";
    // status
    row += "<td>" + s.getName() + "</td>\n";
    // actions
    row += "<td>";
    if (!s.equals(Status.DELETED)) {
        String confirmQuestion = "Are you sure you want to delete " + u.getName() + "?";
        String onClick = "onClick=\"return confirm('" + confirmQuestion + "');\"";
        row += "<a href='" + ViewUserAccountServlet.getLink(u.getId()) + "'>view</a>";
        row += " <a href='" + EditUserAccountServlet.getLink(u.getId()) + "'>edit</a>";
        row += " <a href='" + DeleteUserServlet.getLink(u, EntityAction.DELETE) + "'" + onClick + ">delete</a>";
    } else {
        String confirmQuestion = "Are you sure you want to restore " + u.getName() + "?";
        String onClick = "onClick=\"return confirm('" + confirmQuestion + "');\"";
        row += " <a href='" + DeleteUserServlet.getLink(u, EntityAction.RESTORE) + "'" + onClick + ">restore</a>";
    }
    row += "</td>\n";
    row += "</tr>\n";
    // do the next row, with the user's roles
    row += "<tr>\n";
    row += "<td>&nbsp;</td>\n";
    ArrayList userRoles = u.getRoles();
    // study user roles cell
    row += "<td colspan='3'>";
    if (userRoles.size() <= 0) {
        row += "<i>No roles assigned</i>";
    }
    for (int i = 0; i < userRoles.size(); i++) {
        StudyUserRoleBean sur = (StudyUserRoleBean) userRoles.get(i);
        colorOn = sur.getStatus().equals(Status.AVAILABLE) ? "" : "<font color='gray'>";
        colorOff = sur.getStatus().equals(Status.AVAILABLE) ? "" : "</font>";
        String studyName = getStudyName(sur);
        row += studyName + " - " + colorOn + sur.getRole().getDescription() + colorOff + "<br/>\n";
    }
    row += "</td>\n";
    // actions on the study user roles
    row += "<td>";
    for (int i = 0; i < userRoles.size(); i++) {
        StudyUserRoleBean sur = (StudyUserRoleBean) userRoles.get(i);
        if (!sur.getStatus().equals(Status.DELETED)) {
            String studyName = getStudyName(sur);
            String confirmQuestion = "Are you sure you want to delete the " + sur.getRole().getDescription() + " role for " + u.getName() + " in " + studyName + "?";
            row += " <a href='" + EditStudyUserRoleServlet.getLink(sur, u) + "'>edit role</a>";
            row += " <a href='" + DeleteStudyUserRoleServlet.getLink(u.getName(), sur.getStudyId(), EntityAction.DELETE) + "' onClick='return confirm(\"" + confirmQuestion + "\");'>delete role</a>";
        } else {
            String confirmQuestion = "Are you sure you want to restore the " + sur.getRole().getDescription() + " role for " + u.getName() + " in Study " + sur.getStudyId() + "?";
            row += " <a href='" + DeleteStudyUserRoleServlet.getLink(u.getName(), sur.getStudyId(), EntityAction.RESTORE) + "' onClick=\"return confirm('" + confirmQuestion + "');\">restore role</a>";
        }
        row += "<br/>\n";
    }
    row += "</td>\n";
    row += "<tr>\n";
    row += "</tr>\n";
    return row;
}
Also used : Status(org.akaza.openclinica.bean.core.Status) StudyUserRoleBean(org.akaza.openclinica.bean.login.StudyUserRoleBean) UserAccountBean(org.akaza.openclinica.bean.login.UserAccountBean) ArrayList(java.util.ArrayList)

Example 18 with Status

use of org.akaza.openclinica.bean.core.Status in project OpenClinica by OpenClinica.

the class CrfBusinessLogicHelper method markCRFComplete.

/**
     * The following methods are for 'mark CRF complete' Note that we will also wrap Study Event status changes in this
     * code, possibly split out in a later release, tbh 06/2008
     * 
     * @return
     */
public boolean markCRFComplete(EventCRFBean ecb, UserAccountBean ub) throws Exception {
    // locale = LocaleResolver.getLocale(request);
    // < respage =
    // ResourceBundle.getBundle("org.akaza.openclinica.i18n.page_messages",
    // locale);
    // < restext =
    // ResourceBundle.getBundle("org.akaza.openclinica.i18n.notes",locale);
    // <
    // resexception=ResourceBundle.getBundle(
    // "org.akaza.openclinica.i18n.exceptions",locale);
    // getEventCRFBean();
    // getEventDefinitionCRFBean();
    DataEntryStage stage = ecb.getStage();
    EventCRFDAO eventCrfDao = new EventCRFDAO(ds);
    ItemDataDAO itemDataDao = new ItemDataDAO(ds);
    StudyDAO sdao = new StudyDAO(ds);
    StudySubjectDAO ssdao = new StudySubjectDAO(ds);
    StudyBean study = sdao.findByStudySubjectId(ecb.getStudySubjectId());
    EventDefinitionCRFBean edcb = getEventDefinitionCrfByStudyEventAndCrfVersion(ecb, study);
    // StudyEventDAO studyEventDao = new StudyEventDAO(ds);
    // StudyEventBean studyEventBean = (StudyEventBean)
    // studyEventDao.findByPK(ecb.getStudyEventId());
    // Status studyEventStatus = studyEventBean.getStatus();
    StudyEventDefinitionDAO studyEventDefinitionDao = new StudyEventDefinitionDAO(ds);
    StudyEventDefinitionBean sedBean = (StudyEventDefinitionBean) studyEventDefinitionDao.findByPK(edcb.getStudyEventDefinitionId());
    CRFDAO crfDao = new CRFDAO(ds);
    ArrayList crfs = (ArrayList) crfDao.findAllActiveByDefinition(sedBean);
    sedBean.setCrfs(crfs);
    // request.setAttribute(TableOfContentsServlet.INPUT_EVENT_CRF_BEAN,
    // ecb);
    // request.setAttribute(INPUT_EVENT_CRF_ID, new
    // Integer(ecb.getId()));
    logger.debug("inout_event_crf_id:" + ecb.getId());
    logger.debug("inout_study_event_def_id:" + sedBean.getId());
    // below bit is from DataEntryServlet, is more appropriate for filling
    // in by hand than by automatic
    // removing this in favor of the more streamlined effect below, tbh
    // 06/2008
    // Page errorPage = getJSPPage();
    // if (stage.equals(DataEntryStage.UNCOMPLETED) ||
    // stage.equals(DataEntryStage.DOUBLE_DATA_ENTRY_COMPLETE) ||
    // stage.equals(DataEntryStage.LOCKED)) {
    // logger.info(
    // "addPageMessage(respage.getString(\"not_mark_CRF_complete1\"))");
    // return false;
    // }
    //
    // if (stage.equals(DataEntryStage.INITIAL_DATA_ENTRY_COMPLETE) ||
    // stage.equals(DataEntryStage.DOUBLE_DATA_ENTRY)) {
    //
    // /*
    // * if (!edcb.isDoubleEntry()) {
    // *
    // logger.info(
    // "addPageMessage(respage.getString(\"not_mark_CRF_complete2\"))");
    // * return false; }
    // *
    // */
    // }
    //
    // /*
    // * if (!isEachSectionReviewedOnce()) { addPageMessage("You may not
    // mark
    // * this Event CRF complete, because there are some sections which have
    // * not been reviewed once."); return false; }
    // */
    //
    // if (!isEachRequiredFieldFillout(ecb)) {
    // logger.info(
    // "addPageMessage(respage.getString(\"not_mark_CRF_complete4\"))");
    // return false;
    // }
    //
    // /*
    // * if (ecb.getInterviewerName().trim().equals("")) { throw new
    // * InconsistentStateException(errorPage, "You may not mark this Event
    // * CRF complete, because the interviewer name is blank."); }
    // */
    Status newStatus = ecb.getStatus();
    DataEntryStage newStage = ecb.getStage();
    boolean ide = true;
    // currently we are setting the event crf status to complete, so this
    // block is all to
    // complete, tbh
    // if (stage.equals(DataEntryStage.INITIAL_DATA_ENTRY) &&
    // edcb.isDoubleEntry()) {
    // newStatus = Status.PENDING;
    // ecb.setUpdaterId(ub.getId());
    // ecb.setUpdater(ub);
    // ecb.setUpdatedDate(new Date());
    // ecb.setDateCompleted(new Date());
    // } else if (stage.equals(DataEntryStage.INITIAL_DATA_ENTRY) &&
    // !edcb.isDoubleEntry()) {
    // newStatus = Status.UNAVAILABLE;
    // ecb.setUpdaterId(ub.getId());
    // ecb.setUpdater(ub);
    // ecb.setUpdatedDate(new Date());
    // ecb.setDateCompleted(new Date());
    // ecb.setDateValidateCompleted(new Date());
    // } else if
    // (stage.equals(DataEntryStage.INITIAL_DATA_ENTRY_COMPLETE)
    // || stage.equals(DataEntryStage.DOUBLE_DATA_ENTRY)) {
    // newStatus = Status.UNAVAILABLE;
    // ecb.setDateValidateCompleted(new Date());
    // ide = false;
    // }
    newStatus = Status.UNAVAILABLE;
    // ecb.setUpdaterId(ub.getId());
    ecb.setUpdater(ub);
    ecb.setUpdatedDate(new Date());
    ecb.setDateCompleted(new Date());
    ecb.setDateValidateCompleted(new Date());
    /*
         * //for the non-reviewed sections, no item data in DB yet, need to //create them if
         * (!isEachSectionReviewedOnce()) { boolean canSave = saveItemsToMarkComplete(newStatus); if (canSave == false){
         * addPageMessage("You may not mark this Event CRF complete, because there are some required entries which have
         * not been filled out."); return false; } }
         */
    ecb.setStatus(newStatus);
    ecb.setStage(newStage);
    ecb = (EventCRFBean) eventCrfDao.update(ecb);
    logger.debug("just updated event crf id: " + ecb.getId());
    // note the below statement only updates the DATES, not the STATUS
    eventCrfDao.markComplete(ecb, ide);
    // update all the items' status to complete
    itemDataDao.updateStatusByEventCRF(ecb, newStatus);
    // change status for study event
    StudyEventDAO sedao = new StudyEventDAO(ds);
    StudyEventBean seb = (StudyEventBean) sedao.findByPK(ecb.getStudyEventId());
    seb.setUpdatedDate(new Date());
    seb.setUpdater(ub);
    // updates with Pauls observation from bug:2488:
    // 1. If there is only one CRF in the event (whether the CRF was
    // required or not), and data was imported for it, the status of the
    // event should be Completed.
    //
    logger.debug("sed bean get crfs get size: " + sedBean.getCrfs().size());
    logger.debug("edcb get crf id: " + edcb.getCrfId() + " version size? " + edcb.getVersions().size());
    logger.debug("ecb get crf id: " + ecb.getCrf().getId());
    logger.debug("ecb get crf version id: " + ecb.getCRFVersionId());
    if (sedBean.getCrfs().size() == 1) {
        seb.setSubjectEventStatus(SubjectEventStatus.COMPLETED);
        logger.info("just set subj event status to -- COMPLETED --");
    } else // removing sedBean.getCrfs().size() > 1 &&
    if (areAllRequired(seb, study) && !areAllCompleted(seb, study)) {
        seb.setSubjectEventStatus(SubjectEventStatus.DATA_ENTRY_STARTED);
        logger.info("just set subj event status to -- DATAENTRYSTARTED --");
    } else // removing sedBean.getCrfs().size() > 1 &&
    if (!areAllRequired(seb, study)) {
        if (areAllRequiredCompleted(seb, study)) {
            seb.setSubjectEventStatus(SubjectEventStatus.COMPLETED);
            logger.info("just set subj event status to -- 3completed3 --");
        } else {
            seb.setSubjectEventStatus(SubjectEventStatus.DATA_ENTRY_STARTED);
            logger.info("just set subj event status to -- DATAENTRYSTARTED --");
        }
    } else if (noneAreRequired(seb, study)) {
        seb.setSubjectEventStatus(SubjectEventStatus.COMPLETED);
        logger.info("just set subj event status to -- 5completed5 --");
    }
    logger.debug("just set subj event status, final status is " + seb.getSubjectEventStatus().getName());
    logger.debug("final overall status is " + seb.getStatus().getName());
    seb = (StudyEventBean) sedao.update(seb);
    return true;
}
Also used : Status(org.akaza.openclinica.bean.core.Status) SubjectEventStatus(org.akaza.openclinica.bean.core.SubjectEventStatus) EventDefinitionCRFDAO(org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO) EventCRFDAO(org.akaza.openclinica.dao.submit.EventCRFDAO) CRFDAO(org.akaza.openclinica.dao.admin.CRFDAO) StudyBean(org.akaza.openclinica.bean.managestudy.StudyBean) ArrayList(java.util.ArrayList) StudyEventDefinitionBean(org.akaza.openclinica.bean.managestudy.StudyEventDefinitionBean) StudyEventBean(org.akaza.openclinica.bean.managestudy.StudyEventBean) StudySubjectDAO(org.akaza.openclinica.dao.managestudy.StudySubjectDAO) ItemDataDAO(org.akaza.openclinica.dao.submit.ItemDataDAO) Date(java.util.Date) DataEntryStage(org.akaza.openclinica.bean.core.DataEntryStage) StudyEventDefinitionDAO(org.akaza.openclinica.dao.managestudy.StudyEventDefinitionDAO) StudyEventDAO(org.akaza.openclinica.dao.managestudy.StudyEventDAO) EventDefinitionCRFBean(org.akaza.openclinica.bean.managestudy.EventDefinitionCRFBean) StudyDAO(org.akaza.openclinica.dao.managestudy.StudyDAO) EventCRFDAO(org.akaza.openclinica.dao.submit.EventCRFDAO)

Example 19 with Status

use of org.akaza.openclinica.bean.core.Status in project OpenClinica by OpenClinica.

the class CrfBusinessLogicHelper method markCRFComplete.

/**
     * The following methods are for 'mark CRF complete' Note that we will also wrap Study Event status changes in this
     * code, possibly split out in a later release, tbh 06/2008
     * 
     * @return
     */
public boolean markCRFComplete(EventCRFBean ecb, UserAccountBean ub, boolean inTransaction) throws Exception {
    DataEntryStage stage = ecb.getStage();
    EventCRFDAO eventCrfDao = new EventCRFDAO(ds);
    ItemDataDAO itemDataDao = new ItemDataDAO(ds);
    StudyDAO sdao = new StudyDAO(ds);
    StudySubjectDAO ssdao = new StudySubjectDAO(ds);
    StudyBean study = sdao.findByStudySubjectId(ecb.getStudySubjectId());
    EventDefinitionCRFBean edcb = getEventDefinitionCrfByStudyEventAndCrfVersion(ecb, study);
    // StudyEventDAO studyEventDao = new StudyEventDAO(ds);
    // StudyEventBean studyEventBean = (StudyEventBean)
    // studyEventDao.findByPK(ecb.getStudyEventId());
    // Status studyEventStatus = studyEventBean.getStatus();
    StudyEventDefinitionDAO studyEventDefinitionDao = new StudyEventDefinitionDAO(ds);
    StudyEventDefinitionBean sedBean = (StudyEventDefinitionBean) studyEventDefinitionDao.findByPK(edcb.getStudyEventDefinitionId());
    CRFDAO crfDao = new CRFDAO(ds);
    ArrayList crfs = (ArrayList) crfDao.findAllActiveByDefinition(sedBean);
    sedBean.setCrfs(crfs);
    // request.setAttribute(TableOfContentsServlet.INPUT_EVENT_CRF_BEAN,
    // ecb);
    // request.setAttribute(INPUT_EVENT_CRF_ID, new
    // Integer(ecb.getId()));
    logger.debug("inout_event_crf_id:" + ecb.getId());
    logger.debug("inout_study_event_def_id:" + sedBean.getId());
    Status newStatus = ecb.getStatus();
    DataEntryStage newStage = ecb.getStage();
    boolean ide = true;
    newStatus = Status.UNAVAILABLE;
    // ecb.setUpdaterId(ub.getId());
    ecb.setUpdater(ub);
    ecb.setUpdatedDate(new Date());
    ecb.setDateCompleted(new Date());
    ecb.setDateValidateCompleted(new Date());
    /*
         * //for the non-reviewed sections, no item data in DB yet, need to //create them if
         * (!isEachSectionReviewedOnce()) { boolean canSave = saveItemsToMarkComplete(newStatus); if (canSave == false){
         * addPageMessage("You may not mark this Event CRF complete, because there are some required entries which have
         * not been filled out."); return false; } }
         */
    ecb.setStatus(newStatus);
    ecb.setStage(newStage);
    ecb = (EventCRFBean) eventCrfDao.update(ecb);
    logger.debug("just updated event crf id: " + ecb.getId());
    // note the below statement only updates the DATES, not the STATUS
    eventCrfDao.markComplete(ecb, ide);
    // update all the items' status to complete
    itemDataDao.updateStatusByEventCRF(ecb, newStatus);
    // change status for study event
    StudyEventDAO sedao = new StudyEventDAO(ds);
    StudyEventBean seb = (StudyEventBean) sedao.findByPK(ecb.getStudyEventId());
    seb.setUpdatedDate(new Date());
    seb.setUpdater(ub);
    // updates with Pauls observation from bug:2488:
    // 1. If there is only one CRF in the event (whether the CRF was
    // required or not), and data was imported for it, the status of the
    // event should be Completed.
    //
    logger.debug("sed bean get crfs get size: " + sedBean.getCrfs().size());
    logger.debug("edcb get crf id: " + edcb.getCrfId() + " version size? " + edcb.getVersions().size());
    logger.debug("ecb get crf id: " + ecb.getCrf().getId());
    logger.debug("ecb get crf version id: " + ecb.getCRFVersionId());
    if (sedBean.getCrfs().size() == 1) {
        // && edcb.getCrfId() ==
        // ecb.getCrf().getId()) {
        seb.setSubjectEventStatus(SubjectEventStatus.COMPLETED);
        logger.info("just set subj event status to -- COMPLETED --");
    } else // removing sedBean.getCrfs().size() > 1 &&
    if (areAllRequired(seb, study) && !areAllCompleted(seb, study)) {
        seb.setSubjectEventStatus(SubjectEventStatus.DATA_ENTRY_STARTED);
        logger.info("just set subj event status to -- DATAENTRYSTARTED --");
    } else // removing sedBean.getCrfs().size() > 1 &&
    if (!areAllRequired(seb, study)) {
        if (areAllRequiredCompleted(seb, study)) {
            seb.setSubjectEventStatus(SubjectEventStatus.COMPLETED);
            logger.info("just set subj event status to -- 3completed3 --");
        } else {
            seb.setSubjectEventStatus(SubjectEventStatus.DATA_ENTRY_STARTED);
            logger.info("just set subj event status to -- DATAENTRYSTARTED --");
        }
    } else if (noneAreRequired(seb, study)) {
        seb.setSubjectEventStatus(SubjectEventStatus.COMPLETED);
        logger.info("just set subj event status to -- 5completed5 --");
    }
    logger.debug("just set subj event status, final status is " + seb.getSubjectEventStatus().getName());
    logger.debug("final overall status is " + seb.getStatus().getName());
    seb = (StudyEventBean) sedao.update(seb, inTransaction);
    return true;
}
Also used : Status(org.akaza.openclinica.bean.core.Status) SubjectEventStatus(org.akaza.openclinica.bean.core.SubjectEventStatus) EventDefinitionCRFDAO(org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO) EventCRFDAO(org.akaza.openclinica.dao.submit.EventCRFDAO) CRFDAO(org.akaza.openclinica.dao.admin.CRFDAO) StudyBean(org.akaza.openclinica.bean.managestudy.StudyBean) ArrayList(java.util.ArrayList) StudyEventDefinitionBean(org.akaza.openclinica.bean.managestudy.StudyEventDefinitionBean) StudyEventBean(org.akaza.openclinica.bean.managestudy.StudyEventBean) StudySubjectDAO(org.akaza.openclinica.dao.managestudy.StudySubjectDAO) ItemDataDAO(org.akaza.openclinica.dao.submit.ItemDataDAO) Date(java.util.Date) DataEntryStage(org.akaza.openclinica.bean.core.DataEntryStage) StudyEventDefinitionDAO(org.akaza.openclinica.dao.managestudy.StudyEventDefinitionDAO) StudyEventDAO(org.akaza.openclinica.dao.managestudy.StudyEventDAO) EventDefinitionCRFBean(org.akaza.openclinica.bean.managestudy.EventDefinitionCRFBean) StudyDAO(org.akaza.openclinica.dao.managestudy.StudyDAO) EventCRFDAO(org.akaza.openclinica.dao.submit.EventCRFDAO)

Example 20 with Status

use of org.akaza.openclinica.bean.core.Status in project OpenClinica by OpenClinica.

the class CrfBusinessLogicHelper method markCRFStarted.

/**
     * The following methods are for 'mark CRF Started' Note that we will also wrap Study Event status changes in this
     * code, possibly split out in a later release, tbh 06/2008
     * 
     * @return
     */
public boolean markCRFStarted(EventCRFBean ecb, UserAccountBean ub, boolean inTransaction) throws Exception {
    EventCRFDAO eventCrfDao = new EventCRFDAO(ds);
    StudyDAO sdao = new StudyDAO(ds);
    StudyBean study = sdao.findByStudySubjectId(ecb.getStudySubjectId());
    EventDefinitionCRFBean edcb = getEventDefinitionCrfByStudyEventAndCrfVersion(ecb, study);
    StudyEventDefinitionDAO studyEventDefinitionDao = new StudyEventDefinitionDAO(ds);
    StudyEventDefinitionBean sedBean = (StudyEventDefinitionBean) studyEventDefinitionDao.findByPK(edcb.getStudyEventDefinitionId());
    CRFDAO crfDao = new CRFDAO(ds);
    ArrayList crfs = (ArrayList) crfDao.findAllActiveByDefinition(sedBean);
    sedBean.setCrfs(crfs);
    logger.debug("inout_event_crf_id:" + ecb.getId());
    logger.debug("inout_study_event_def_id:" + sedBean.getId());
    Status newStatus = Status.AVAILABLE;
    DataEntryStage newStage = ecb.getStage();
    ecb.setUpdater(ub);
    ecb.setUpdatedDate(new Date());
    ecb.setStatus(newStatus);
    ecb.setStage(newStage);
    ecb = (EventCRFBean) eventCrfDao.update(ecb);
    logger.debug("just updated event crf id: " + ecb.getId());
    StudyEventDAO sedao = new StudyEventDAO(ds);
    StudyEventBean seb = (StudyEventBean) sedao.findByPK(ecb.getStudyEventId());
    if (seb.getSubjectEventStatus().isScheduled() || seb.getSubjectEventStatus().isNotScheduled() || seb.getSubjectEventStatus().isDE_Started()) {
        // change status for study event
        seb.setUpdatedDate(new Date());
        seb.setUpdater(ub);
        seb.setSubjectEventStatus(SubjectEventStatus.DATA_ENTRY_STARTED);
        seb = (StudyEventBean) sedao.update(seb, inTransaction);
    }
    return true;
}
Also used : Status(org.akaza.openclinica.bean.core.Status) SubjectEventStatus(org.akaza.openclinica.bean.core.SubjectEventStatus) EventDefinitionCRFDAO(org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO) EventCRFDAO(org.akaza.openclinica.dao.submit.EventCRFDAO) CRFDAO(org.akaza.openclinica.dao.admin.CRFDAO) StudyBean(org.akaza.openclinica.bean.managestudy.StudyBean) ArrayList(java.util.ArrayList) StudyEventDefinitionBean(org.akaza.openclinica.bean.managestudy.StudyEventDefinitionBean) StudyEventBean(org.akaza.openclinica.bean.managestudy.StudyEventBean) Date(java.util.Date) DataEntryStage(org.akaza.openclinica.bean.core.DataEntryStage) StudyEventDefinitionDAO(org.akaza.openclinica.dao.managestudy.StudyEventDefinitionDAO) StudyEventDAO(org.akaza.openclinica.dao.managestudy.StudyEventDAO) EventDefinitionCRFBean(org.akaza.openclinica.bean.managestudy.EventDefinitionCRFBean) StudyDAO(org.akaza.openclinica.dao.managestudy.StudyDAO) EventCRFDAO(org.akaza.openclinica.dao.submit.EventCRFDAO)

Aggregations

Status (org.akaza.openclinica.bean.core.Status)41 ArrayList (java.util.ArrayList)22 SubjectEventStatus (org.akaza.openclinica.bean.core.SubjectEventStatus)22 StudyEventBean (org.akaza.openclinica.bean.managestudy.StudyEventBean)16 StudyBean (org.akaza.openclinica.bean.managestudy.StudyBean)15 Date (java.util.Date)14 DataEntryStage (org.akaza.openclinica.bean.core.DataEntryStage)13 StudyEventDAO (org.akaza.openclinica.dao.managestudy.StudyEventDAO)13 EventCRFBean (org.akaza.openclinica.bean.submit.EventCRFBean)12 StudyEventDefinitionBean (org.akaza.openclinica.bean.managestudy.StudyEventDefinitionBean)11 EventDefinitionCRFDAO (org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO)11 EventCRFDAO (org.akaza.openclinica.dao.submit.EventCRFDAO)11 StudySubjectBean (org.akaza.openclinica.bean.managestudy.StudySubjectBean)10 StudyEventDefinitionDAO (org.akaza.openclinica.dao.managestudy.StudyEventDefinitionDAO)10 EventDefinitionCRFBean (org.akaza.openclinica.bean.managestudy.EventDefinitionCRFBean)9 StudyDAO (org.akaza.openclinica.dao.managestudy.StudyDAO)9 StudySubjectDAO (org.akaza.openclinica.dao.managestudy.StudySubjectDAO)9 HashMap (java.util.HashMap)8 ResolutionStatus (org.akaza.openclinica.bean.core.ResolutionStatus)8 List (java.util.List)7