protected void ButtonDownload_Click(object sender, EventArgs e) { try { // Retrieve gen settings GeneralizedSetting generalizedSetting = dataBLL.GetGeneralizedSettingFromDb(); #region Validation: Match and Get only valid inputs FilteredValues filteredValues = new FilteredValues(); // Marital Status foreach (ListItem item in inputMaritalStatusLevel.Items) { if (item.Selected) { if (generalizedSetting.maritalStatusOptions.Any(t => t.Item1.Equals(item.Value.Trim()))) { filteredValues.maritalStatus.Add(item.Value.Trim()); } } } // Sex foreach (ListItem item in inputSexLevel.Items) { if (item.Selected) { if (generalizedSetting.sexOptions.Any(t => t.Item1.Equals(item.Value.Trim()))) { filteredValues.sex.Add(item.Value.Trim()); } } } // Gender foreach (ListItem item in inputGenderLevel.Items) { if (item.Selected) { if (generalizedSetting.genderOptions.Any(t => t.Item1.Equals(item.Value.Trim()))) { filteredValues.gender.Add(item.Value.Trim()); } } } // Age foreach (ListItem item in inputAgeLevel.Items) { if (item.Selected) { if (generalizedSetting.ageOptions.Any(t => t.Item1.Equals(item.Value.Trim()))) { filteredValues.age.Add(item.Value.Trim()); } } } // Postal DataTable postalTable = dataBLL.GetPostal(); foreach (ListItem item in inputPostal.Items) { if (item.Selected) { if (postalTable.AsEnumerable().Any(row => row.Field <string>("postal").Equals(item.Value.Trim()))) { filteredValues.postal.Add(item.Value.Trim()); } } } // Diagnosis DataTable diagnosesTable = dataBLL.GetDiagnoses(); foreach (ListItem item in inputDiagnosis.Items) { if (item.Selected) { if (diagnosesTable.AsEnumerable().Any(row => row.Field <string>("diagnosis_code").Equals(item.Value.Trim()))) { filteredValues.diagnoses.Add(item.Value.Trim()); } } } // Record Type foreach (ListItem item in inputRecordType.Items) { if (item.Selected) { filteredValues.recordType.Add(item.Value.Trim()); } } // Record Diagnosis DataTable recordDiagnosesTable = dataBLL.GetRecordDiagnoses(); foreach (ListItem item in inputRecordDiagnosis.Items) { if (item.Selected) { if (recordDiagnosesTable.AsEnumerable().Any(row => row.Field <string>("diagnosis_code").Equals(item.Value.Trim()))) { filteredValues.recordDiagnoses.Add(item.Value.Trim()); } } } #endregion DataTable anonPatientsTable = dataBLL.GetPatientsForDownload(filteredValues); string delimiter = ","; using (MemoryStream memoryStream = new MemoryStream()) { using (StreamWriter streamWriter = new StreamWriter(memoryStream)) { for (int i = 0; i < anonPatientsTable.Columns.Count; i++) { streamWriter.Write(anonPatientsTable.Columns[i].ColumnName); streamWriter.Write((i < anonPatientsTable.Columns.Count - 1) ? delimiter : Environment.NewLine); } foreach (DataRow row in anonPatientsTable.Rows) { for (int i = 0; i < anonPatientsTable.Columns.Count; i++) { if (row[i].ToString().IndexOf(",") > -1) { streamWriter.Write("\"" + row[i].ToString() + "\""); } else { streamWriter.Write(row[i].ToString()); } streamWriter.Write((i < anonPatientsTable.Columns.Count - 1) ? delimiter : Environment.NewLine); } } } Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "text/csv"; Response.Charset = string.Empty; Response.Cache.SetCacheability(HttpCacheability.Public); Response.AddHeader("Content-Disposition", "attachment; filename=\"anon_data.csv\""); Response.BinaryWrite(memoryStream.ToArray()); } ViewState["GridViewPatientAnonymised"] = null; GridViewPatientAnonymised.DataSource = null; GridViewPatientAnonymised.DataBind(); PanelViewHeader.Visible = false; PanelView.Visible = false; UpdatePanelPatientAnonymised.Update(); Response.Flush(); Response.Close(); } catch { } }
protected void Page_Load(object sender, EventArgs e) { Master.LiActiveResearcherSearchData(); if (!IsPostBack) { GeneralizedSetting generalizedSetting = dataBLL.GetGeneralizedSettingFromDb(); #region Initialize Controls // Age labelTitleAge.Attributes.Add("title", "This quasi-identifier has been generalized to Level " + generalizedSetting.age); if (generalizedSetting.ageOptions != null) { foreach (Tuple <string, string> option in generalizedSetting.ageOptions) { inputAgeLevel.Items.Add(new ListItem(option.Item2, option.Item1)); } } else { inputAgeLevel.Attributes.Add("disabled", "true"); } // Marital Status labelTitleMaritalStatus.Attributes.Add("title", "This quasi-identifier has been generalized to Level " + generalizedSetting.maritalStatus); if (generalizedSetting.maritalStatusOptions != null) { foreach (Tuple <string, string> option in generalizedSetting.maritalStatusOptions) { inputMaritalStatusLevel.Items.Add(new ListItem(option.Item2, option.Item1)); } } else { inputMaritalStatusLevel.Attributes.Add("disabled", "true"); } // Gender labelTitleGender.Attributes.Add("title", "This quasi-identifier has been generalized to Level " + generalizedSetting.gender); if (generalizedSetting.genderOptions != null) { foreach (Tuple <string, string> option in generalizedSetting.genderOptions) { inputGenderLevel.Items.Add(new ListItem(option.Item2, option.Item1)); } } else { inputGenderLevel.Attributes.Add("disabled", "true"); } // Sex labelTitleSex.Attributes.Add("title", "This quasi-identifier has been generalized to Level " + generalizedSetting.sex); if (generalizedSetting.sexOptions != null) { foreach (Tuple <string, string> option in generalizedSetting.sexOptions) { inputSexLevel.Items.Add(new ListItem(option.Item2, option.Item1)); } } else { inputSexLevel.Attributes.Add("disabled", "true"); } // Postal labelTitlePostalCode.Attributes.Add("title", "This quasi-identifier has been generalized to Level " + generalizedSetting.postal); DataTable postalCodeTable = dataBLL.GetPostal(); if (postalCodeTable.Rows.Contains("*")) { inputPostal.Attributes.Add("disabled", "true"); } else { foreach (DataRow postalCode in postalCodeTable.Rows) { inputPostal.Items.Add(new ListItem(postalCode["postal"].ToString(), postalCode["postal"].ToString())); } } // Diagnoses DataTable diagnosesTable = dataBLL.GetDiagnoses(); foreach (DataRow diagnosis in diagnosesTable.Rows) { string buffer = diagnosis["diagnosis_code"].ToString(); inputDiagnosis.Items.Add(new ListItem(buffer + ": " + diagnosis["diagnosis_description_short"].ToString(), buffer)); } // Record Type inputRecordType.Items.Add(new ListItem("Blood Pressure Reading", "Blood Pressure Reading")); inputRecordType.Items.Add(new ListItem("ECG Reading", "ECG Reading")); inputRecordType.Items.Add(new ListItem("Gait", "Gait")); inputRecordType.Items.Add(new ListItem("Height Measurement", "Height Measurement")); inputRecordType.Items.Add(new ListItem("MRI", "MRI")); inputRecordType.Items.Add(new ListItem("Weight Measurement", "Weight Measurement")); inputRecordType.Items.Add(new ListItem("X-ray", "X-ray")); // Record Diagnoses DataTable recordDiagnosesTable = dataBLL.GetRecordDiagnoses(); foreach (DataRow diagnosis in recordDiagnosesTable.Rows) { string buffer = diagnosis["diagnosis_code"].ToString(); inputRecordDiagnosis.Items.Add(new ListItem(buffer + ": " + diagnosis["diagnosis_description_short"].ToString(), buffer)); } GridViewPatientAnonymised.DataBind(); #endregion } }
protected void ButtonFilter_ServerClick(object sender, EventArgs e) { try { // Retrieve gen settings GeneralizedSetting generalizedSetting = dataBLL.GetGeneralizedSettingFromDb(); #region Validation: Match and Get only valid inputs FilteredValues filteredValues = new FilteredValues(); // Marital Status foreach (ListItem item in inputMaritalStatusLevel.Items) { if (item.Selected) { if (generalizedSetting.maritalStatusOptions.Any(t => t.Item1.Equals(item.Value.Trim()))) { filteredValues.maritalStatus.Add(item.Value.Trim()); } } } // Sex foreach (ListItem item in inputSexLevel.Items) { if (item.Selected) { if (generalizedSetting.sexOptions.Any(t => t.Item1.Equals(item.Value.Trim()))) { filteredValues.sex.Add(item.Value.Trim()); } } } // Gender foreach (ListItem item in inputGenderLevel.Items) { if (item.Selected) { if (generalizedSetting.genderOptions.Any(t => t.Item1.Equals(item.Value.Trim()))) { filteredValues.gender.Add(item.Value.Trim()); } } } // Age foreach (ListItem item in inputAgeLevel.Items) { if (item.Selected) { if (generalizedSetting.ageOptions.Any(t => t.Item1.Equals(item.Value.Trim()))) { filteredValues.age.Add(item.Value.Trim()); } } } // Postal DataTable postalTable = dataBLL.GetPostal(); foreach (ListItem item in inputPostal.Items) { if (item.Selected) { if (postalTable.AsEnumerable().Any(row => row.Field <string>("postal").Equals(item.Value.Trim()))) { filteredValues.postal.Add(item.Value.Trim()); } } } // Diagnosis DataTable diagnosesTable = dataBLL.GetDiagnoses(); foreach (ListItem item in inputDiagnosis.Items) { if (item.Selected) { if (diagnosesTable.AsEnumerable().Any(row => row.Field <string>("diagnosis_code").Equals(item.Value.Trim()))) { filteredValues.diagnoses.Add(item.Value.Trim()); } } } // Record Type foreach (ListItem item in inputRecordType.Items) { if (item.Selected) { filteredValues.recordType.Add(item.Value.Trim()); } } // Record Diagnosis DataTable recordDiagnosesTable = dataBLL.GetRecordDiagnoses(); foreach (ListItem item in inputRecordDiagnosis.Items) { if (item.Selected) { if (recordDiagnosesTable.AsEnumerable().Any(row => row.Field <string>("diagnosis_code").Equals(item.Value.Trim()))) { filteredValues.recordDiagnoses.Add(item.Value.Trim()); } } } #endregion List <PatientAnonymised> recordAnonymised = dataBLL.GetPatients(filteredValues); ViewState["GridViewPatientAnonymised"] = recordAnonymised; GridViewPatientAnonymised.DataSource = recordAnonymised; GridViewPatientAnonymised.DataBind(); PanelViewHeader.Visible = true; PanelView.Visible = true; UpdatePanelPatientAnonymised.Update(); ScriptManager.RegisterStartupScript(this, GetType(), "alert", "toastr['success']('Data successfully displayed.');", true); } catch { ScriptManager.RegisterStartupScript(this, GetType(), "alert", "toastr['error']('Error occured when displaying data.');", true); } }
protected void GridViewPatientAnonymised_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridViewPatientAnonymised.PageIndex = e.NewPageIndex; GridViewPatientAnonymised.DataSource = ViewState["GridViewPatientAnonymised"]; GridViewPatientAnonymised.DataBind(); }