Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void SetQuestionnaireRadio(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // always need to set question number label
                string question         = DataBinder.Eval(e.Row.DataItem, PatientProtocolRegQuestionnaire.Question).ToString();
                string questionNumber   = DataBinder.Eval(e.Row.DataItem, PatientProtocolRegQuestionnaire.QuestionNum).ToString();
                Label  questionLabel    = e.Row.FindControl("QuestionLabel") as Label;
                Label  questionNumLabel = e.Row.FindControl("QuestionNumLabel") as Label;
                questionLabel.Text    = question;
                questionNumLabel.Text = questionNumber;

                // set QuestionIdField field
                string      metaQuestionId      = DataBinder.Eval(e.Row.DataItem, MetadataSurveyQuestion.MetadataSurveyQuestionId).ToString();
                HiddenField metaQuestionIdField = e.Row.FindControl("MetaQuestionIdField") as HiddenField;
                metaQuestionIdField.Value = metaQuestionId;

                // Set RegQuestioId for updates
                string      regQuestionId      = DataBinder.Eval(e.Row.DataItem, PatientProtocolRegQuestionnaire.PatientProtocolRegQuestionnaireId).ToString();
                HiddenField regQuestionIdField = e.Row.FindControl("RegQuestionIdField") as HiddenField;
                regQuestionIdField.Value = regQuestionId;

                // Popualate hidden fields
                HiddenField regIneligibleOverride = e.Row.FindControl("InEligibleRadioHidden") as HiddenField;
                string      overrideBit           = DataBinder.Eval(e.Row.DataItem, PatientProtocolRegQuestionnaire.IneligibleResponseOverride).ToString();
                regIneligibleOverride.Value = !string.IsNullOrEmpty(overrideBit) ? (bool.Parse(overrideBit) ? "1" : "") : "";
                HiddenField regIneligibleOverrideReason = e.Row.FindControl("InEligibleRadioReason") as HiddenField;
                regIneligibleOverrideReason.Value = DataBinder.Eval(e.Row.DataItem, PatientProtocolRegQuestionnaire.IneligibleOverrideReason).ToString();


                // v6.x
                bool isr = !string.IsNullOrEmpty(regQuestionId);
                // set response + add scripts
                string questionResponse = DataBinder.Eval(e.Row.DataItem, PatientProtocolRegQuestionnaire.Response).ToString();

                CaisisRadioButtonList responseRadioBtns = e.Row.FindControl("ResponsesContainer").Controls[0] as CaisisRadioButtonList;
                bool responseFound = false;
                bool isCanned      = responseRadioBtns.CssClass == "canned";
                responseRadioBtns.Value = questionResponse;
                foreach (ListItem responseItem in responseRadioBtns.Items)
                {
                    string responseValue = responseItem.Value;
                    // if current response equal values, check
                    if (!responseFound && !string.IsNullOrEmpty(responseValue) && questionResponse.Equals(responseValue, StringComparison.OrdinalIgnoreCase))
                    {
                        // responseItem.Selected = true;
                        //responseFound = true;
                    }
                    // add scripts: only in default cases
                    if (isCanned)
                    {
                        responseItem.Attributes["onclick"] = "onResponseSelected(this, '" + PageUtil.EscapeSingleQuotes(responseValue) + "', event);";
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// Manually build a list of responses
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void SetQuestionnaireResponses(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowIndex > -1)
            {
                // v6.x
                string questionIdValue = "";
                // get meta question id
                if (e.Row.DataItem != null)
                {
                    questionIdValue = DataBinder.Eval(e.Row.DataItem, MetadataSurveyQuestion.MetadataSurveyQuestionId).ToString();
                }
                else
                {
                    questionIdValue = (e.Row.FindControl("MetaQuestionIdField") as HiddenField).Value;
                }
                int?questionId = null;
                if (!string.IsNullOrEmpty(questionIdValue))
                {
                    questionId = int.Parse(questionIdValue);
                }

                // create input control
                Control responseContainer = e.Row.FindControl("ResponsesContainer");
                CaisisRadioButtonList responseRadioBtns = new CaisisRadioButtonList();

                Dictionary <string, string> radioResponses = GetRowResponses(questionId);
                bool isCanned = radioResponses == CANNED_RESPONSES;
                if (isCanned)
                {
                    responseRadioBtns.CssClass = "canned";
                }
                responseRadioBtns.SelectedIndexChanged += SaveCheckRow;
                responseRadioBtns.Uncheckable           = true;
                responseRadioBtns.ShowEmptyListItem     = false;
                responseRadioBtns.ShowOther             = false;
                responseRadioBtns.ID = "ResponsesRadioBtns";
                responseRadioBtns.AppendDataBoundItems = false;
                responseRadioBtns.DataTextField        = "Key";
                responseRadioBtns.DataValueField       = "Value";
                responseRadioBtns.DataSource           = radioResponses;
                responseRadioBtns.DataBind();

                // add to container
                responseContainer.Controls.Add(responseRadioBtns);
            }
        }
        private void PopulateSpecimenDetailsRow(Control row, int specimenId)
        {
            // Core
            HiddenField   SpecimenNumField     = row.FindControl("SpecimenNumField") as HiddenField;
            HiddenField   SpecimenSubTypeField = row.FindControl("SpecimenSubTypeField") as HiddenField;
            CaisisTextBox StatusDate           = row.FindControl("StatusDate") as CaisisTextBox;
            // Sequencing
            CaisisSelect          Sequencing_Failed_Reason = row.FindControl("Sequencing_Failed_Reason") as CaisisSelect;
            CaisisRadioButtonList Extraction_Radio         = row.FindControl("Extraction_Radio") as CaisisRadioButtonList;
            CaisisRadioButtonList Library_Radio            = row.FindControl("Library_Radio") as CaisisRadioButtonList;
            CaisisRadioButtonList Sequenced_Radio          = row.FindControl("Sequenced_Radio") as CaisisRadioButtonList;
            // Analysis
            CaisisRadioButtonList Analysis_Radio  = row.FindControl("Analysis_Radio") as CaisisRadioButtonList;
            CaisisRadioButtonList Pathology_Radio = row.FindControl("Pathology_Radio") as CaisisRadioButtonList;
            // Pathology
            CaisisSelect   Analysis_Failed_Reason = row.FindControl("Analysis_Failed_Reason") as CaisisSelect;
            CaisisComboBox SpecimenConditionNotes = row.FindControl("SpecimenConditionNotes") as CaisisComboBox;

            Specimen specimen = new Specimen();

            specimen.Get(specimenId);
            string num    = specimen[BOL.Specimen.SpecimenReferenceNumber].ToString();
            string status = specimen[BOL.Specimen.SpecimenStatus].ToString();
            string notes  = specimen[BOL.Specimen.SpecimenNotes].ToString();

            SpecimenNumField.Value     = num;
            SpecimenSubTypeField.Value = specimen[BOL.Specimen.SpecimenSubType].ToString();

            SpecimenEvents specimenEvent = GetSequencingEvent(specimenId);

            // applies to all
            if (specimenEvent != null)
            {
                StatusDate.Value = string.Format("{0:d}", specimenEvent[SpecimenEvents.EventDate]);
            }
            // set relevant radios
            if (InventoryMode == SpecimenInventoryMode.Sequencing)
            {
                switch (status)
                {
                case "Tissue Extraction Successful":
                    Extraction_Radio.Value = ANSWER_YES;
                    break;

                case "Tissue Extraction Unsuccessful":
                    Extraction_Radio.Value = ANSWER_NO;
                    if (specimenEvent != null && !specimenEvent.IsNull(SpecimenEvents.EventResult))
                    {
                        Sequencing_Failed_Reason.Value = specimenEvent[SpecimenEvents.EventResult].ToString();
                    }
                    break;

                case "Library Construction Successful":
                    Extraction_Radio.Value = ANSWER_YES;
                    Library_Radio.Value    = ANSWER_YES;
                    break;

                case "Library Construction Unsuccessful":
                    Extraction_Radio.Value = ANSWER_YES;
                    Library_Radio.Value    = ANSWER_NO;
                    if (specimenEvent != null && !specimenEvent.IsNull(SpecimenEvents.EventResult))
                    {
                        Sequencing_Failed_Reason.Value = specimenEvent[SpecimenEvents.EventResult].ToString();
                    }
                    break;

                case "Sequenced":
                    Extraction_Radio.Value = ANSWER_YES;
                    Library_Radio.Value    = ANSWER_YES;
                    Sequenced_Radio.Value  = ANSWER_YES;
                    break;

                case "Sequencing Unsuccessful":
                    Extraction_Radio.Value = ANSWER_YES;
                    Library_Radio.Value    = ANSWER_YES;
                    Sequenced_Radio.Value  = ANSWER_NO;
                    if (specimenEvent != null && !specimenEvent.IsNull(SpecimenEvents.EventResult))
                    {
                        Sequencing_Failed_Reason.Value = specimenEvent[SpecimenEvents.EventResult].ToString();
                    }
                    break;

                default:
                    Extraction_Radio.ClearSelection();
                    Library_Radio.ClearSelection();
                    Sequenced_Radio.ClearSelection();
                    break;
                }
            }
            else if (InventoryMode == SpecimenInventoryMode.Analysis)
            {
                switch (status)
                {
                case "Analysis Complete":
                    Analysis_Radio.Value = ANSWER_YES;
                    break;

                case "Analysis Unsuccessul":
                    Analysis_Radio.Value = ANSWER_NO;
                    if (specimenEvent != null && !specimenEvent.IsNull(SpecimenEvents.EventResult))
                    {
                        Analysis_Failed_Reason.Value = specimenEvent[SpecimenEvents.EventResult].ToString();
                    }
                    break;

                default:
                    Analysis_Radio.ClearSelection();
                    break;
                }
            }
            else if (InventoryMode == SpecimenInventoryMode.Pathology)
            {
                switch (status)
                {
                case "Pathology Review Completed":
                    Pathology_Radio.Value = ANSWER_YES;
                    break;

                case "Banked by Pathology":
                    Pathology_Radio.Value = ANSWER_NO;
                    break;

                default:
                    Pathology_Radio.ClearSelection();
                    break;
                }
                // build condition list, fill into notes field
                DataTable conditions = new DataTable();
                conditions.Columns.Add("Condition");
                string foundCondition = "";
                foreach (string condition in specimenController.GetConditions())
                {
                    // find selected
                    if (specimenController.GetSpecimenCondition(notes) == condition)
                    {
                        foundCondition = condition;
                    }
                    // add data
                    conditions.Rows.Add(new object[] { condition });
                }

                SpecimenConditionNotes.BuildComboData(conditions, "Condition", "Condition");

                SpecimenConditionNotes.Value = notes;
            }
        }
        private void UpdateSpecimenDetailsRow(Control row, int specimenId)
        {
            // Core
            HiddenField   SpecimenNumField     = row.FindControl("SpecimenNumField") as HiddenField;
            HiddenField   SpecimenSubTypeField = row.FindControl("SpecimenSubTypeField") as HiddenField;
            CaisisTextBox StatusDate           = row.FindControl("StatusDate") as CaisisTextBox;
            // Sequencing
            CaisisSelect          Sequencing_Failed_Reason = row.FindControl("Sequencing_Failed_Reason") as CaisisSelect;
            CaisisRadioButtonList Extraction_Radio         = row.FindControl("Extraction_Radio") as CaisisRadioButtonList;
            CaisisRadioButtonList Library_Radio            = row.FindControl("Library_Radio") as CaisisRadioButtonList;
            CaisisRadioButtonList Sequenced_Radio          = row.FindControl("Sequenced_Radio") as CaisisRadioButtonList;
            // Analysis
            CaisisRadioButtonList Analysis_Radio  = row.FindControl("Analysis_Radio") as CaisisRadioButtonList;
            CaisisRadioButtonList Pathology_Radio = row.FindControl("Pathology_Radio") as CaisisRadioButtonList;
            // Pathology
            CaisisSelect   Analysis_Failed_Reason = row.FindControl("Analysis_Failed_Reason") as CaisisSelect;
            CaisisComboBox SpecimenConditionNotes = row.FindControl("SpecimenConditionNotes") as CaisisComboBox;


            // shared variables
            string   status     = "";
            DateTime?statusDate = null;

            if (!string.IsNullOrEmpty(StatusDate.Value))
            {
                statusDate = DateTime.Parse(StatusDate.Value);
            }
            if (InventoryMode == SpecimenInventoryMode.Sequencing)
            {
                string failedReason = Sequencing_Failed_Reason.Value;
                string statusResult = "";
                // determine new status, top down
                if (Extraction_Radio.Value == ANSWER_NO)
                {
                    status       = "Tissue Extraction Unsuccessful";
                    statusResult = failedReason;
                }
                else if (Extraction_Radio.Value == ANSWER_YES)
                {
                    if (Library_Radio.Value == ANSWER_NO)
                    {
                        status       = "Library Construction Unsuccessful";
                        statusResult = failedReason;
                    }
                    else if (Library_Radio.Value == ANSWER_YES)
                    {
                        if (Sequenced_Radio.Value == ANSWER_NO)
                        {
                            status       = "Sequencing Unsuccessful";
                            statusResult = failedReason;
                        }
                        else if (Sequenced_Radio.Value == ANSWER_YES)
                        {
                            status = "Sequenced";
                        }
                        else
                        {
                            status = "Library Construction Successful";
                        }
                    }
                    else
                    {
                        status = "Tissue Extraction Successful";
                    }
                }
                // update event
                if (!string.IsNullOrEmpty(status) || statusDate.HasValue || !string.IsNullOrEmpty(statusResult))
                {
                    UpdateSequencingEvent(specimenId, status, statusDate, statusResult);
                }
            }
            else if (InventoryMode == SpecimenInventoryMode.Pathology)
            {
                if (Pathology_Radio.Value == ANSWER_YES)
                {
                    status = "Pathology Review Completed";
                }
                else if (Analysis_Radio.Value == ANSWER_NO)
                {
                    status = "Banked by Pathology";
                }
                // update event
                if (!string.IsNullOrEmpty(status) || statusDate.HasValue)
                {
                    UpdateSequencingEvent(specimenId, status, statusDate, "");
                }
            }
            else if (InventoryMode == SpecimenInventoryMode.Analysis)
            {
                string failedReason = Analysis_Failed_Reason.Value;
                if (Analysis_Radio.Value == ANSWER_YES)
                {
                    status = "Analysis Complete";
                    // on successful analysis, update event
                    UpdateSequencingEvent(specimenId, status, statusDate, "");
                }
                else if (Analysis_Radio.Value == ANSWER_NO)
                {
                    status = "Analysis Unsuccessul";
                    UpdateSequencingEvent(specimenId, status, statusDate, failedReason);
                }
            }
            // update specimen status
            if (!string.IsNullOrEmpty(status))
            {
                Specimen specimen = new Specimen();
                specimen.Get(specimenId);
                specimen[Specimen.SpecimenStatus] = status;
                // special case
                if (InventoryMode == SpecimenInventoryMode.Pathology)
                {
                    specimen[Specimen.SpecimenNotes] = SpecimenConditionNotes.Value;
                }
                specimen.Save();
            }
        }