using framework_business; using framework_library; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using Telerik.Web.UI; public partial class controls_module_diagnosis : UserControl, ISurfaceControlBase { #region override public void ReloadControl(oSurfaceFieldData controlFieldData, bool alternateView = false, bool readOnly = false) { try { LoadCategories(); ArrayList list = xData.GetTypedByCriteriaSpecific("recId", typeof(oMedicalPatientDiagnosis), "surfaceItemId", controlFieldData.surfaceItemId.ToString()); PopulateForm(list); } catch (Exception ex) { exception.HandleException("diagnosis:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } public void SaveControlData(ref oSurfaceFieldData _surfaceFieldData) { try { SaveForm(_surfaceFieldData.surfaceItemId); } catch (Exception ex) { exception.HandleException("diagnosis:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } #endregion #region methods private HtmlGenericControl BuildDiagnosis(oMedicalDiagnosis diag, DataTable dtICD) { HtmlGenericControl divCatDiagCol = new HtmlGenericControl(); try { DropDownList ddPrimary = new DropDownList(); ddPrimary.ID = "ddPrimary" + diag.recId; ddPrimary.CssClass = "form-control"; ddPrimary.DataSource = dtICD; ddPrimary.DataTextField = "CodeDescription"; ddPrimary.DataValueField = "recId"; ddPrimary.DataBind(); ddPrimary.Items.Insert(0, new ListItem("None selected", "0")); if (ddPrimary.Items.FindByValue(diag.primaryICD10Id.ToString()) != null) ddPrimary.Items.FindByValue(diag.primaryICD10Id.ToString()).Selected = true; HtmlGenericControl divDDPrimary = new HtmlGenericControl(); divDDPrimary.ID = "divDDPrimary" + diag.recId; divDDPrimary.Attributes.Add("class", "col-sm-8"); divDDPrimary.Controls.Add(ddPrimary); Label lblPrimary = new Label(); lblPrimary.ID = "lblPrimary" + diag.recId; lblPrimary.CssClass = "col-sm-4 control-label"; lblPrimary.Text = "Primary ICD10"; HtmlGenericControl divPrimaryCol = new HtmlGenericControl(); divPrimaryCol.ID = "divPrimaryCol" + diag.recId; divPrimaryCol.Attributes.Add("class", "col-sm-6"); divPrimaryCol.Controls.Add(lblPrimary); divPrimaryCol.Controls.Add(divDDPrimary); ListBox ddSecondary = new ListBox(); ddSecondary.ID = "ddSecondary" + diag.recId; ddSecondary.CssClass = "palette-multiselect"; ddSecondary.SelectionMode = ListSelectionMode.Multiple; ddSecondary.DataSource = dtICD; ddSecondary.DataTextField = "CodeDescription"; ddSecondary.DataValueField = "recId"; ddSecondary.DataBind(); HtmlGenericControl divDDSecondary = new HtmlGenericControl(); divDDSecondary.ID = "divDDSecondary" + diag.recId; divDDSecondary.Attributes.Add("class", "col-sm-8"); divDDSecondary.Controls.Add(ddSecondary); Label lblSecondary = new Label(); lblSecondary.ID = "lblSecondary" + diag.recId; lblSecondary.CssClass = "col-sm-4 control-label"; lblSecondary.Text = "Secondary ICD10"; HtmlGenericControl divSecondaryCol = new HtmlGenericControl(); divSecondaryCol.ID = "divSecondaryCol" + diag.recId; divSecondaryCol.Attributes.Add("class", "col-sm-6"); divSecondaryCol.Controls.Add(lblSecondary); divSecondaryCol.Controls.Add(divDDSecondary); HtmlGenericControl divDiagCol = new HtmlGenericControl(); divDiagCol.ID = "divDiagCol" + diag.recId; divDiagCol.Attributes.Add("class", "col-sm-12"); divDiagCol.Controls.Add(divPrimaryCol); divDiagCol.Controls.Add(divSecondaryCol); HtmlGenericControl divDiagRow = new HtmlGenericControl(); divDiagRow.ID = "divDiagRow" + diag.recId; divDiagRow.Attributes.Add("class", "row"); divDiagRow.Controls.Add(divDiagCol); HtmlGenericControl divDiagICD = new HtmlGenericControl(); divDiagICD.ID = "divDiagICD" + diag.recId; divDiagICD.Visible = false; divDiagICD.Controls.Add(divDiagRow); Button btn = new Button(); btn.ID = "btnDiag" + diag.recId; btn.CssClass = "btn btn-default col-md-3 diagnosisbtn"; btn.Text = diag.diagnosis; btn.Click += new EventHandler(btnDiagnosis_Click); HtmlGenericControl divDiag = new HtmlGenericControl(); divDiag.ID = "divDiag" + diag.recId; divDiag.Controls.Add(btn); divDiag.Controls.Add(divDiagICD); divCatDiagCol.ID = "divCatDiagCol" + diag.recId; divCatDiagCol.Attributes.Add("class", "col-sm-11 col-sm-offset-1"); divCatDiagCol.Controls.Add(divDiag); } catch (Exception ex) { exception.HandleException("diagnosis:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } return divCatDiagCol; } private HtmlGenericControl BuildCategory(oMedicalDiagnosisCategory cat, DataTable dtICD) { HtmlGenericControl divCat = new HtmlGenericControl(); try { divCat.ID = "divCat" + cat.recId; Button btnCat = new Button(); btnCat.ID = "btnCat" + cat.recId; btnCat.Text = cat.category; btnCat.Click += new EventHandler(btnCategory_Click); btnCat.CssClass = "btn btn-default col-md-3 diagnosiscatbtn"; HtmlGenericControl divButton = new HtmlGenericControl(); divButton.ID = "divCatBtn" + cat.recId; divButton.Attributes.Add("class", "col-md-12"); divButton.Controls.Add(btnCat); divCat.Controls.Add(divButton); HtmlGenericControl divCatDiagRow = new HtmlGenericControl(); divCatDiagRow.ID = "divCatDiagRow" + cat.recId; divCatDiagRow.Attributes.Add("class", "row"); //add diagnosis here to Col foreach (oMedicalDiagnosis diag in xData.GetTypedByCriteriaSpecific("recId", typeof(oMedicalDiagnosis), "isActive,categoryId", "1," + cat.recId)) { divCatDiagRow.Controls.Add(BuildDiagnosis(diag, dtICD)); } HtmlGenericControl divCatDiag = new HtmlGenericControl(); divCatDiag.ID = "divCatDiag" + cat.recId; divCatDiag.Visible = false; divCatDiag.Controls.Add(divCatDiagRow); divCat.Controls.Add(divCatDiag); } catch (Exception ex) { exception.HandleException("diagnosis:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } return divCat; } private void LoadCategories() { try { DataTable dtICD = xData.GetDynamicByCriteriaSpecific("recId", typeof(oMedicalICD10), "isActive", "1"); dtICD.Columns.Add("CodeDescription", typeof(string), "icdCode + ' - ' + icdDescription"); divDiagnosis.Controls.Clear(); foreach (oMedicalDiagnosisCategory cat in xData.GetTypedByCriteriaSpecific("recId", typeof(oMedicalDiagnosisCategory), "isActive", "1", "sequence")) { divDiagnosis.Controls.Add(BuildCategory(cat, dtICD)); } } catch (Exception ex) { exception.HandleException("diagnosis:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void PopulateForm(ArrayList pdList) { try { //find the buttons and divs and set style & visibility ArrayList dList = xData.GetTypedCollection("recId", typeof(oMedicalDiagnosis)); foreach (oMedicalPatientDiagnosis pd in pdList) { oMedicalDiagnosis d = new oMedicalDiagnosis(); foreach (oMedicalDiagnosis diag in dList) { if (diag.recId == pd.diagnosisId) { d = diag; break; } } HtmlGenericControl divCat = (HtmlGenericControl)divDiagnosis.FindControl("divCat" + d.categoryId); if (divCat != null && divCat.Controls.Count > 0) { Button btnCat = (Button)divCat.Controls[0].FindControl("btnCat" + d.categoryId); if (btnCat != null) { HtmlGenericControl divCatDiag = (HtmlGenericControl)divCat.FindControl("divCatDiag" + d.categoryId); if (divCatDiag != null && divCatDiag.Controls.Count > 0) { btnCat.AddCssClass("selected"); divCatDiag.Visible = true; HtmlGenericControl divCatDiagCol = (HtmlGenericControl)divCatDiag.Controls[0].FindControl("divCatDiagCol" + d.recId); if (divCatDiagCol != null && divCatDiagCol.Controls.Count > 0) { Button btnDiag = (Button)divCatDiagCol.Controls[0].FindControl("btnDiag" + d.recId); if (btnDiag != null) { HtmlGenericControl divDiagICD = (HtmlGenericControl)divCatDiagCol.Controls[0].FindControl("divDiagICD" + d.recId); if (divDiagICD != null) { btnDiag.AddCssClass("selected"); divDiagICD.Visible = true; if (divDiagICD.Controls.Count > 0 && divDiagICD.Controls[0].Controls.Count > 0 && divDiagICD.Controls[0].Controls[0].Controls.Count > 1 && divDiagICD.Controls[0].Controls[0].Controls[0].Controls.Count > 1 && divDiagICD.Controls[0].Controls[0].Controls[1].Controls.Count > 1) { DropDownList ddPrimary = (DropDownList)divDiagICD.Controls[0].Controls[0].Controls[0].Controls[1].FindControl("ddPrimary" + d.recId); if (ddPrimary != null && ddPrimary.Items.FindByValue(pd.primaryIcd) != null) { ddPrimary.ClearSelection(); ddPrimary.Items.FindByValue(pd.primaryIcd).Selected = true; } ListBox ddSecondary = (ListBox)divDiagICD.Controls[0].Controls[0].Controls[1].Controls[1].FindControl("ddSecondary" + d.recId); if (ddSecondary != null) { if (pd.secondaryIcd != String.Empty) { string[] icds = pd.secondaryIcd.Split(char.Parse(",")); foreach (string icd in icds) { foreach (ListItem item in ddSecondary.Items) { if (item.Value == icd) { item.Selected = true; break; } } } } } } } } } } } } } } catch (Exception ex) { exception.HandleException("diagnosis:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void SaveForm(int surfaceItemId) { try { //resave from scratch. delete all existing patient diagnosis for this surfaceItemId if (xData.DeleteTyped("surfaceItemId", surfaceItemId.ToString(), typeof(oMedicalPatientDiagnosis))) { ArrayList itemsToUpdate = new ArrayList(); foreach (Control divCat in divDiagnosis.Controls) { if (divCat.GetType() != typeof(HtmlGenericControl)) continue; HtmlGenericControl divCatDiag = (HtmlGenericControl)divCat.FindControl("divCatDiag" + divCat.ID.Replace("divCat", "")); if (divCatDiag != null && divCatDiag.Visible && divCatDiag.Controls.Count > 0) { foreach (Control divCatDiagCol in divCatDiag.Controls[0].Controls) { if (divCatDiagCol.GetType() == typeof(HtmlGenericControl) && divCatDiagCol.Controls.Count > 0 && divCatDiagCol.Controls[0].Controls.Count > 0) { int diagnosisId = 0; int.TryParse(divCatDiagCol.ID.Replace("divCatDiagCol", ""), out diagnosisId); if (diagnosisId > 0) { HtmlGenericControl divDiagICD = (HtmlGenericControl)divCatDiagCol.Controls[0].FindControl("divDiagICD" + diagnosisId); if (divDiagICD != null && divDiagICD.Visible && divDiagICD.Controls.Count > 0 && divDiagICD.Controls[0].Controls.Count > 0 && divDiagICD.Controls[0].Controls[0].Controls.Count > 1 && divDiagICD.Controls[0].Controls[0].Controls[0].Controls.Count > 1 && divDiagICD.Controls[0].Controls[0].Controls[1].Controls.Count > 1) { oMedicalPatientDiagnosis pd = new oMedicalPatientDiagnosis(); pd.dateSaved = System.DateTime.Now; pd.diagnosisId = diagnosisId; pd.surfaceItemId = surfaceItemId; int userId = 0; if (utils.verifySession("user")) userId = ((oUser)Session["user"]).recId; pd.userIdSaved = userId; DropDownList ddPrimary = (DropDownList)divDiagICD.Controls[0].Controls[0].Controls[0].FindControl("ddPrimary" + diagnosisId); if (ddPrimary != null && ddPrimary.SelectedItem != null) pd.primaryIcd = ddPrimary.SelectedItem.Value; ListBox ddSecondary = (ListBox)divDiagICD.Controls[0].Controls[0].Controls[1].FindControl("ddSecondary" + diagnosisId); if (ddSecondary != null) { string secondary = ""; foreach (ListItem item in ddSecondary.Items) { if (item.Selected) if (secondary == String.Empty) secondary = item.Value; else secondary += "," + item.Value; } pd.secondaryIcd = secondary; } pd.recId = xData.SaveTyped("recId", typeof(oMedicalPatientDiagnosis), pd); if (pd.surfaceItemId == 0) itemsToUpdate.Add(pd); } } } } } } if (itemsToUpdate.Count > 0) Session["PatientDiagnosisItemsNotLinked"] = itemsToUpdate; } } catch (Exception ex) { exception.HandleException("diagnosis:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } #endregion #region events protected void Page_Init(object sender, EventArgs e) { try { LoadCategories(); } catch (Exception ex) { exception.HandleException("diagnosis:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void Page_Load(object sender, EventArgs e) { try { //LoadCategories(); if (!IsPostBack) { //LoadCategories(); } } catch (Exception ex) { exception.HandleException("diagnosis:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void btnCategory_Click(object sender, EventArgs e) { try { Button btn = (Button)sender; if (btn != null) { HtmlGenericControl div = (HtmlGenericControl)btn.Parent.Parent.FindControl("divCatDiag" + btn.ID.Replace("btnCat", "")); if (div != null) { if (btn.CssClass.Contains("selected")) { btn.RemoveCssClass("selected"); div.Visible = false; } else { btn.AddCssClass("selected"); div.Visible = true; } } } } catch (Exception ex) { exception.HandleException("diagnosis:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void btnDiagnosis_Click(object sender, EventArgs e) { try { Button btn = (Button)sender; if (btn != null) { HtmlGenericControl div = (HtmlGenericControl)btn.Parent.Parent.FindControl("divDiagICD" + btn.ID.Replace("btnDiag", "")); if (div != null) { if (btn.CssClass.Contains("selected")) { btn.RemoveCssClass("selected"); div.Visible = false; } else { btn.AddCssClass("selected"); div.Visible = true; } } } } catch (Exception ex) { } } #endregion }