/// <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);"; } } } }
/// <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(); } }