protected void MemberMetricsGrid_OnItemCreated(Object sender, Telerik.Web.UI.GridItemEventArgs eventArgs)
        {
            if (MercuryApplication == null)
            {
                return;
            }

            if (eventArgs.Item is Telerik.Web.UI.GridCommandItem)
            {
                Telerik.Web.UI.GridCommandItem commandItem = (Telerik.Web.UI.GridCommandItem)eventArgs.Item;

                Telerik.Web.UI.RadToolBar MemberMetricToolbar = (Telerik.Web.UI.RadToolBar)commandItem.FindControl("MemberMetricToolbar");

                ((Telerik.Web.UI.RadToolBarButton)MemberMetricToolbar.Items[0]).Checked = MemberMetricShowHidden;

                Telerik.Web.UI.RadComboBox MemberMetricSelection = (Telerik.Web.UI.RadComboBox)MemberMetricToolbar.Items[2].FindControl("MemberMetricSelection");

                Telerik.Web.UI.RadDateInput MemberMetricEventDate = (Telerik.Web.UI.RadDateInput)MemberMetricToolbar.Items[2].FindControl("MemberMetricEventDate");

                Telerik.Web.UI.RadNumericTextBox MemberMetricValue = (Telerik.Web.UI.RadNumericTextBox)MemberMetricToolbar.Items[2].FindControl("MemberMetricValue");

                if (MemberMetricSelection != null)
                {
                    if (MemberMetricSelection.Items.Count == 0)
                    {
                        MemberMetricSelection.Items.Add(new Telerik.Web.UI.RadComboBoxItem("** No Metric Selected", String.Empty));

                        foreach (Client.Core.Metrics.Metric currentMetric in MercuryApplication.MetricsAvailable(true))
                        {
                            if (currentMetric.Enabled)
                            {
                                MemberMetricSelection.Items.Add(new Telerik.Web.UI.RadComboBoxItem(currentMetric.Name, currentMetric.Id.ToString()));
                            }
                        }
                    }

                    MemberMetricSelection.SelectedValue = MemberMetricSelection_SelectedValue;
                }

                if (MemberMetricEventDate != null)
                {
                    if (Member != null)
                    {
                        MemberMetricEventDate.MinDate = Member.BirthDate;
                    }

                    MemberMetricEventDate.SelectedDate = MemberMetricEventDate_SelectedDate;
                }

                if (MemberMetricValue != null)
                {
                    MemberMetricValue.Value = MemberMetricValue_SelectedValue;
                }
            }

            return;
        }
        protected void MemberServicesGrid_OnItemCreated(Object sender, Telerik.Web.UI.GridItemEventArgs eventArgs)
        {
            if (MercuryApplication == null)
            {
                return;
            }

            if (eventArgs.Item is Telerik.Web.UI.GridCommandItem)
            {
                Telerik.Web.UI.GridCommandItem commandItem = (Telerik.Web.UI.GridCommandItem)eventArgs.Item;

                Telerik.Web.UI.RadToolBar MemberServiceToolbar = (Telerik.Web.UI.RadToolBar)commandItem.FindControl("MemberServiceToolbar");

                ((Telerik.Web.UI.RadToolBarButton)MemberServiceToolbar.Items[0]).Checked = MemberServiceShowHidden;

                Telerik.Web.UI.RadComboBox MemberServiceSelection = (Telerik.Web.UI.RadComboBox)MemberServiceToolbar.Items[2].FindControl("MemberServiceSelection");

                Telerik.Web.UI.RadDateInput MemberServiceEventDate = (Telerik.Web.UI.RadDateInput)MemberServiceToolbar.Items[2].FindControl("MemberServiceEventDate");

                if (MemberServiceSelection != null)
                {
                    if (MemberServiceSelection.Items.Count == 0)
                    {
                        MemberServiceSelection.Items.Add(new Telerik.Web.UI.RadComboBoxItem("** No Service Selected", String.Empty));

                        foreach (Mercury.Server.Application.SearchResultMedicalServiceHeader currentService in MercuryApplication.MedicalServiceHeadersGet(true))
                        {
                            if (currentService.Enabled)
                            {
                                MemberServiceSelection.Items.Add(new Telerik.Web.UI.RadComboBoxItem(currentService.Name, currentService.Id.ToString()));
                            }
                        }
                    }

                    MemberServiceSelection.SelectedValue = MemberServiceSelection_SelectedValue;
                }

                if (MemberServiceEventDate != null)
                {
                    if (Member != null)
                    {
                        MemberServiceEventDate.MinDate = Member.BirthDate;
                    }

                    MemberServiceEventDate.SelectedDate = MemberServiceEventDate_SelectedDate;
                }
            }

            return;
        }
        protected void MemberMetricsGrid_OnItemCommand(Object sender, Telerik.Web.UI.GridCommandEventArgs eventArgs)
        {
            if (MercuryApplication == null)
            {
                return;
            }


            Telerik.Web.UI.RadToolBar gridToolBar = null;

            Boolean success = false;

            String postScript = String.Empty;


            switch (eventArgs.CommandName)
            {
            case "ExpandCollapse":

                #region Expand/Collapse

                Telerik.Web.UI.GridDataItem gridItem = (Telerik.Web.UI.GridDataItem)eventArgs.Item;

                Int64 memberServiceId;

                if (Int64.TryParse(gridItem["MemberMetricId"].Text, out memberServiceId))
                {
                    // TODO?
                }

                #endregion

                break;

            case "MemberMetricAdd":

                #region Add Member Metric

                gridToolBar = (Telerik.Web.UI.RadToolBar)eventArgs.Item.FindControl("MemberMetricToolbar");

                if (gridToolBar != null)
                {
                    Telerik.Web.UI.RadComboBox MemberMetricSelection = (Telerik.Web.UI.RadComboBox)(gridToolBar.Items[2].FindControl("MemberMetricSelection"));

                    Telerik.Web.UI.RadDateInput MemberMetricEventDate = (Telerik.Web.UI.RadDateInput)(gridToolBar.Items[2].FindControl("MemberMetricEventDate"));

                    Telerik.Web.UI.RadNumericTextBox MemberMetricValue = (Telerik.Web.UI.RadNumericTextBox)(gridToolBar.Items[2].FindControl("MemberMetricValue"));

                    if (MemberMetricSelection != null)
                    {
                        if (!String.IsNullOrEmpty(MemberMetricSelection.SelectedValue))
                        {
                            if ((MemberMetricEventDate.SelectedDate.HasValue) && (MemberMetricValue.Value.HasValue))
                            {
                                success = MercuryApplication.MemberMetricAddManual(Member.Id, Convert.ToInt64(MemberMetricSelection.SelectedValue), MemberMetricEventDate.SelectedDate.Value, Convert.ToDecimal(MemberMetricValue.Value.Value));

                                if (!success)
                                {
                                    postScript = ("alert (\"" + MercuryApplication.LastException.Message.Replace("\"", "\\") + "\");");
                                }

                                else
                                {
                                    MemberMetricsGrid_Count = 0;

                                    MemberMetricsGrid.DataSource = null;

                                    MemberMetricsGrid.Rebind();
                                }
                            }

                            else
                            {
                                postScript = ("alert (\"Event Date and Value of Metric is Required.\");");
                            }
                        }

                        else
                        {
                            postScript = ("alert (\"No Metric Selected for Manual Add.\");");
                        }
                    }

                    else
                    {
                        postScript = ("alert (\"Internal Error: Unable to Find Control MemberMetricSelection.\");");
                    }


                    if ((TelerikAjaxManager != null) && (!String.IsNullOrEmpty(postScript)))
                    {
                        TelerikAjaxManager.ResponseScripts.Add(postScript);
                    }
                }

                #endregion

                break;

            default:

                System.Diagnostics.Debug.WriteLine("MemberMetricsGrid_OnItemCommand: " + eventArgs.CommandSource + " " + eventArgs.CommandName + " (" + eventArgs.CommandArgument + ")");

                break;
            }

            return;
        }
        protected void MemberMetricsGrid_OnNeedDataSource(Object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs eventArgs)
        {
            if (MercuryApplication == null)
            {
                return;
            }

            System.Data.DataTable memberMetricsDataTable = MemberMetricsGrid_DataTable;

            if (!eventArgs.IsFromDetailTable)
            {
                switch (eventArgs.RebindReason)
                {
                case Telerik.Web.UI.GridRebindReason.InitialLoad:

                    #region Initialize Grid

                    MemberMetricsGrid_Count = 0;

                    MemberMetricsGrid_CurrentPage = 0;

                    MemberMetricsGrid_PageSize = 10;


                    MemberMetricsGrid.CurrentPageIndex = MemberMetricsGrid_CurrentPage;

                    MemberMetricsGrid.PageSize = MemberMetricsGrid_PageSize;

                    MemberMetricsGrid.VirtualItemCount = MemberMetricsGrid_Count;

                    #endregion

                    break;

                case Telerik.Web.UI.GridRebindReason.PostbackViewStateNotPersisted:

                    #region Restore Grid State

                    MemberMetricsGrid.CurrentPageIndex = MemberMetricsGrid_CurrentPage;

                    MemberMetricsGrid.PageSize = MemberMetricsGrid_PageSize;

                    MemberMetricsGrid.VirtualItemCount = MemberMetricsGrid_Count;


                    if (MemberMetricToolbar != null)
                    {
                        Telerik.Web.UI.RadComboBox MemberMetricSelection = (Telerik.Web.UI.RadComboBox)MemberMetricToolbar.Items[2].FindControl("MemberMetricSelection");

                        if (MemberMetricSelection != null)
                        {
                            MemberMetricSelection_SelectedValue = MemberMetricSelection.SelectedValue;
                        }

                        Telerik.Web.UI.RadDateInput MemberMetricEventDate = (Telerik.Web.UI.RadDateInput)MemberMetricToolbar.Items[2].FindControl("MemberMetricEventDate");

                        if (MemberMetricEventDate != null)
                        {
                            MemberMetricEventDate_SelectedDate = MemberMetricEventDate.SelectedDate;
                        }

                        Telerik.Web.UI.RadNumericTextBox MemberMetricValue = (Telerik.Web.UI.RadNumericTextBox)MemberMetricToolbar.Items[2].FindControl("MemberMetricValue");

                        if (MemberMetricValue != null)
                        {
                            MemberMetricValue_SelectedValue = MemberMetricValue.Value;
                        }
                    }

                    #endregion

                    break;

                case Telerik.Web.UI.GridRebindReason.ExplicitRebind:

                case Telerik.Web.UI.GridRebindReason.PostBackEvent:

                    #region Initialize Toolbar and Security

                    if (MemberMetricToolbar != null)
                    {
                        MemberMetricToolbar.Items[1].Visible = MercuryApplication.HasEnvironmentPermission(Mercury.Server.EnvironmentPermissions.MemberMetricManage);

                        MemberMetricToolbar.Items[2].Visible = MercuryApplication.HasEnvironmentPermission(Mercury.Server.EnvironmentPermissions.MemberMetricManage);
                    }

                    #endregion

                    #region Rebind Grid

                    if (Member == null)
                    {
                        memberMetricsDataTable.Rows.Clear();
                    }

                    else
                    {
                        if (MemberMetricsGrid_Count == 0)
                        {
                            MemberMetricsGrid_Count = Convert.ToInt32(MercuryApplication.MemberMetricsGetCount(Member.Id, MemberMetricShowHidden));

                            MemberMetricsGrid.VirtualItemCount = MemberMetricsGrid_Count;
                        }

                        MemberMetricsGrid_PageSize = MemberMetricsGrid.PageSize;

                        MemberMetricsGrid_CurrentPage = MemberMetricsGrid.CurrentPageIndex;

                        memberMetricsDataTable.Rows.Clear();

                        List <Mercury.Server.Application.MemberMetric> memberMetrics;

                        memberMetrics = MercuryApplication.MemberMetricsGetByPage(Member.Id, (MemberMetricsGrid.CurrentPageIndex) * MemberMetricsGrid.PageSize + 1, MemberMetricsGrid.PageSize, MemberMetricShowHidden);

                        foreach (Mercury.Server.Application.MemberMetric currentMetric in memberMetrics)
                        {
                            memberMetricsDataTable.Rows.Add(

                                currentMetric.Id.ToString(),

                                currentMetric.Metric.Name,

                                currentMetric.Metric.MetricType,

                                currentMetric.MetricValue.ToString(),

                                currentMetric.EventDate.ToString("MM/dd/yyyy"),

                                currentMetric.AddedManually.ToString(),

                                currentMetric.CreateAccountInfo.UserAccountName,

                                currentMetric.CreateAccountInfo.ActionDate.ToString("MM/dd/yyyy")

                                );
                        }
                    }

                    #endregion

                    break;

                default:

                    System.Diagnostics.Debug.WriteLine(eventArgs.RebindReason + " [" + eventArgs.IsFromDetailTable.ToString() + "]");

                    break;
                }

                MemberMetricsGrid_DataTable = memberMetricsDataTable;

                MemberMetricsGrid.DataSource = MemberMetricsGrid_DataTable;
            }

            return;
        }
        protected void MemberServicesGrid_OnItemCommand(Object sender, Telerik.Web.UI.GridCommandEventArgs eventArgs)
        {
            if (MercuryApplication == null)
            {
                return;
            }


            System.Data.DataTable detailTable = null;

            Telerik.Web.UI.RadToolBar gridToolBar = null;

            Boolean success = false;

            String postScript = String.Empty;


            switch (eventArgs.CommandName)
            {
            case "ExpandCollapse":

                #region Expand/Collapse

                Telerik.Web.UI.GridDataItem gridItem = (Telerik.Web.UI.GridDataItem)eventArgs.Item;

                Int64 memberServiceId;

                if (Int64.TryParse(gridItem["MemberServiceId"].Text, out memberServiceId))
                {
                    switch (gridItem["ServiceType"].Text)
                    {
                    case "Singleton":

                        #region Singleton Detail Table

                        detailTable = MemberServicesGrid_DataTableSingletonTable;

                        detailTable.Rows.Clear();

                        List <Mercury.Server.Application.MemberServiceDetailSingleton> detailSingletons;

                        detailSingletons = MercuryApplication.MemberServiceDetailSingletonGet(memberServiceId);

                        foreach (Mercury.Server.Application.MemberServiceDetailSingleton currentDetail in detailSingletons)
                        {
                            // String principalDiagnosisInformation = "<span title=\"" + MercuryApplication.DiagnosisDescription (currentDetail.PrincipalDiagnosisCode, currentDetail.PrincipalDiagnosisVersion) + "\">" + currentDetail.PrincipalDiagnosisCode + "</span>";

                            // String diagnosisInformation = "<span title=\"" + MercuryApplication.DiagnosisDescription (currentDetail.DiagnosisCode, currentDetail.DiagnosisVersion) + "\">" + currentDetail.DiagnosisCode + "</span>";

                            String principalDiagnosisInformation = CommonFunctions.DiagnosisDescription(MercuryApplication, currentDetail.PrincipalDiagnosisCode, currentDetail.PrincipalDiagnosisVersion);

                            String diagnosisInformation = CommonFunctions.DiagnosisDescription(MercuryApplication, currentDetail.DiagnosisCode, currentDetail.DiagnosisVersion);


                            String revenueCodeInformation = "<span title=\"" + MercuryApplication.RevenueCodeDescription(currentDetail.RevenueCode) + "\">" + currentDetail.RevenueCode + "</span>";

                            String procedureCodeInformation = "<span title=\"" + MercuryApplication.ProcedureCodeDescription(currentDetail.ProcedureCode) + "\">" + currentDetail.ProcedureCode + "</span>";

                            String billTypeInformation = "<span title=\"" + MercuryApplication.BillTypeDescription(currentDetail.BillType) + "\">" + currentDetail.BillType + "</span>";

                            String icd9ProcedureCodeInformation = "<span title=\"" + MercuryApplication.Icd9ProcedureCodeDescription(currentDetail.Icd9ProcedureCode) + "\">" + currentDetail.Icd9ProcedureCode + "</span>";

                            detailTable.Rows.Add(

                                currentDetail.MemberServiceId.ToString(),

                                currentDetail.SingletonDefinitionId.ToString(),

                                currentDetail.EventDate.ToString("MM/dd/yyyy"),

                                currentDetail.ExternalClaimId,

                                currentDetail.ClaimLine.ToString(),

                                currentDetail.ClaimType,

                                billTypeInformation,

                                principalDiagnosisInformation,

                                diagnosisInformation,

                                icd9ProcedureCodeInformation,

                                currentDetail.LocationCode,

                                revenueCodeInformation,

                                procedureCodeInformation,

                                currentDetail.ModifierCode,

                                currentDetail.SpecialtyName,

                                currentDetail.IsPcpClaim.ToString(),

                                currentDetail.NdcCode,

                                currentDetail.Units.ToString(),

                                currentDetail.TherapeuticClassification,

                                currentDetail.LabLoincCode,

                                currentDetail.LabValue.ToString(),

                                currentDetail.Description

                                );
                        }

                        MemberServicesGrid_DataTableSingletonTable = detailTable;

                        MemberServicesGrid.MasterTableView.DetailTables[0].DataSource = detailTable;


                        #endregion

                        break;

                    case "Set":

                        #region Set Detail Table

                        detailTable = MemberServicesGrid_DataTableSetTable;

                        detailTable.Rows.Clear();

                        List <Mercury.Server.Application.MemberServiceDetailSet> detailSets;

                        detailSets = MercuryApplication.MemberServiceDetailSetGet(memberServiceId);

                        foreach (Mercury.Server.Application.MemberServiceDetailSet currentDetail in detailSets)
                        {
                            detailTable.Rows.Add(

                                currentDetail.MemberServiceId.ToString(),

                                currentDetail.SetDefinitionId.ToString(),

                                currentDetail.DetailMemberServiceId.ToString(),

                                currentDetail.EventDate.ToString("MM/dd/yyyy"),

                                currentDetail.ServiceName,

                                currentDetail.ServiceType.ToString()

                                );
                        }

                        MemberServicesGrid_DataTableSetTable = detailTable;

                        MemberServicesGrid.MasterTableView.DetailTables[1].DataSource = detailTable;

                        #endregion

                        break;
                    }
                }

                #endregion

                break;

            case "MemberServiceAdd":

                #region Member Service Add

                gridToolBar = (Telerik.Web.UI.RadToolBar)eventArgs.Item.FindControl("MemberServiceToolbar");

                if (gridToolBar != null)
                {
                    Telerik.Web.UI.RadComboBox MemberServiceSelection = (Telerik.Web.UI.RadComboBox)(gridToolBar.Items[2].FindControl("MemberServiceSelection"));

                    Telerik.Web.UI.RadDateInput MemberServiceEventDate = (Telerik.Web.UI.RadDateInput)(gridToolBar.Items[2].FindControl("MemberServiceEventDate"));

                    if (MemberServiceSelection != null)
                    {
                        if (!String.IsNullOrEmpty(MemberServiceSelection.SelectedValue))
                        {
                            if (MemberServiceEventDate.SelectedDate.HasValue)
                            {
                                success = MercuryApplication.MemberServiceAddManual(Member.Id, Convert.ToInt64(MemberServiceSelection.SelectedValue), MemberServiceEventDate.SelectedDate.Value);

                                if (!success)
                                {
                                    postScript = ("alert (\"" + MercuryApplication.LastException.Message.Replace("\"", "\\") + "\");");
                                }

                                else
                                {
                                    MemberServicesGrid_Count = 0;

                                    MemberServicesGrid.DataSource = null;

                                    MemberServicesGrid.Rebind();
                                }
                            }

                            else
                            {
                                postScript = ("alert (\"Event Date of Service is Required.\");");
                            }
                        }

                        else
                        {
                            postScript = ("alert (\"No Service Selected for Manual Add.\");");
                        }
                    }

                    else
                    {
                        postScript = ("alert (\"Internal Error: Unable to Find Control MemberServiceSelection.\");");
                    }


                    if ((TelerikAjaxManager != null) && (!String.IsNullOrEmpty(postScript)))
                    {
                        TelerikAjaxManager.ResponseScripts.Add(postScript);
                    }
                }

                #endregion

                break;

            default:

                System.Diagnostics.Debug.WriteLine("MemberServicesGrid_OnItemCommand: " + eventArgs.CommandSource + " " + eventArgs.CommandName + " (" + eventArgs.CommandArgument + ")");

                break;
            }

            return;
        }