/// <summary>
        /// Adiciona um novo procedimento para a prescrição válida
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void OnClick_AdicionarProcedimentoAlterar(object sender, EventArgs e)
        {
            if (ViewState["co_prescricao_alterar"] == null)
            {
                ScriptManager.RegisterStartupScript(Page, typeof(Page), "alert", "alert('Selecione uma prescrição para executar esta operação!');", true);
                return;
            }

            //try
            //{
            IPrescricao iPrescricao = Factory.GetInstance<IPrescricao>();
            ViverMais.Model.Prescricao prescricao = iPrescricao.BuscarPorCodigo<ViverMais.Model.Prescricao>(long.Parse(ViewState["co_prescricao_alterar"].ToString()));
            Usuario usuario = (ViverMais.Model.Usuario)Session["Usuario"];
            string co_procedimento = DropDownList_ProcedimentoAlterar.SelectedValue;

            if (((IList<PrescricaoProcedimento>)Session["procedimentosPrescritos"]).Where(p => p.CodigoProcedimento == co_procedimento).FirstOrDefault() == null)
            {
                IRegistro iRegistro = Factory.GetInstance<IRegistro>();
                ICid iCid = Factory.GetInstance<ICid>();
                bool exigenciaCid = iRegistro.ProcedimentoExigeCid(DropDownList_ProcedimentoAlterar.SelectedValue);

                if (exigenciaCid && DropDownList_CidAlterarProcedimento.SelectedValue == "-1")
                {
                    ScriptManager.RegisterStartupScript(Page, typeof(Page), "alert", "alert('Este procedimento exige a escolha de um CID.')", true);
                    return;
                }

                PrescricaoProcedimento proc = new PrescricaoProcedimento();
                proc.Prescricao = prescricao;
                proc.CodigoProcedimento = DropDownList_ProcedimentoAlterar.SelectedValue;
                proc.SetIntervalo(TextBox_IntervaloProcedimentoAlterar.Text, int.Parse(DropDownList_UnidadeTempoFrequenciaProcedimentoAlterar.SelectedValue));
                proc.Data = DateTime.Now;

                UsuarioProfissionalUrgence usuarioprofissional = Factory.GetInstance<IUsuarioProfissionalUrgence>().BuscarPorCodigo<UsuarioProfissionalUrgence>(((Usuario)Session["Usuario"]).Codigo);
                proc.CodigoProfissional = usuarioprofissional.Id_Profissional;
                proc.CBOProfissional = usuarioprofissional.CodigoCBO;
                proc.Suspenso = false;
                proc.CodigoCid = DropDownList_CidAlterarProcedimento.SelectedValue;
                proc.Cid = iCid.BuscarPorCodigo<Cid>(DropDownList_CidAlterarProcedimento.SelectedValue);

                if (proc.IntervaloValido())
                {
                    iPrescricao.Inserir(proc);
                    iPrescricao.Inserir(new LogUrgencia(DateTime.Now, usuario.Codigo, 39, "id_prescricao=" + proc.Prescricao.Codigo + " co_procedimento = " + proc.CodigoProcedimento));

                    this.WUC_PrescricaoProcedimentoCID.WUC_DropDownListGrupoCID.SelectedValue = "-1";
                    this.WUC_PrescricaoProcedimentoCID.WUC_UpdatePanelPesquisarCID.Update();

                    this.OnSelectedIndexChanged_RetiraCids(new object(), new EventArgs());
                    this.DropDownList_ProcedimentoAlterar.SelectedValue = "-1";
                    this.TextBox_IntervaloProcedimentoAlterar.Text = "";
                    this.TextBox_IntervaloProcedimentoAlterar.Enabled = true;
                    this.HabilitaDesabilitaFrequencia(this.TextBox_IntervaloProcedimentoAlterar, this.RequiredFieldValidator_PrescricaoFrequenciaProcedimento,
                this.RegularExpressionValidator_PrescricaoFrequenciaProcedimento, this.CompareValidator_PrescricaoFrequenciaProcedimento,
                true);

                    this.DropDownList_UnidadeTempoFrequenciaProcedimentoAlterar.SelectedValue = ((int)PrescricaoProcedimento.UNIDADETEMPO.HORAS).ToString();
                    CarregaProcedimentosAlterar(long.Parse(ViewState["co_prescricao_alterar"].ToString()));
                    HelperView.ExecutarPlanoContingencia(usuario.Codigo, prescricao.Prontuario.Codigo);
                    //try
                    //{
                    //    StartBackgroundThread(delegate { this.ExecutarPlanoContingencia(usuario.Codigo, prescricao.Prontuario.Codigo); });
                    //}
                    //catch { }
                }
                else
                    ScriptManager.RegisterStartupScript(Page, typeof(Page), "alert", "alert('O intervalo máximo para aplicação do procedimento é de 24 horas.');", true);
            }
            else
                ScriptManager.RegisterStartupScript(Page, typeof(Page), "alert", "alert('O procedimento já se encontra registrado na prescrição escolhida! Por favor, escolha outro procedimento.');", true);
            //}
            //catch (Exception f)
            //{
            //    throw f;
            //}
        }
        /// <summary>
        /// Adiciona o procedimento na lista temporária
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void OnClick_AdicionarProcedimento(object sender, EventArgs e)
        {
            IList<PrescricaoProcedimento> procedimentos = RetornaListaProcedimento();
            UsuarioProfissionalUrgence usuarioProfissional = Factory.GetInstance<IUsuarioProfissionalUrgence>().BuscarPorCodigo<UsuarioProfissionalUrgence>(((Usuario)Session["Usuario"]).Codigo);
            IProcedimento iProcedimento = Factory.GetInstance<IProcedimento>();

            if (this.CheckBox_ExecutarProcimentoAgora.Checked &&
                !iProcedimento.CBOExecutaProcedimento(DropDownList_Procedimento.SelectedValue, usuarioProfissional.CodigoCBO))
            {
                ScriptManager.RegisterStartupScript(Page, typeof(Page), "alert", "alert('Usuário, de acordo com o seu CBO, você não tem permissão para executar este procedimento.');", true);
                return;
            }

            if (procedimentos.Where(p => p.Procedimento.Codigo == DropDownList_Procedimento.SelectedValue).FirstOrDefault() == null)
            {
                IRegistro iRegistro = Factory.GetInstance<IRegistro>();
                bool exigenciaCid = iRegistro.ProcedimentoExigeCid(DropDownList_Procedimento.SelectedValue);

                if (exigenciaCid && DropDownList_ProcedimentoCID.SelectedValue == "-1")
                {
                    ScriptManager.RegisterStartupScript(Page, typeof(Page), "alert", "alert('Este procedimento exige a escolha de um CID.')", true);
                    return;
                }

                ICid iCid = Factory.GetInstance<ICid>();
                PrescricaoProcedimento procedimento = new PrescricaoProcedimento();

                procedimento.CodigoProcedimento = DropDownList_Procedimento.SelectedValue;
                procedimento.Procedimento = iProcedimento.BuscarPorCodigo<Procedimento>(DropDownList_Procedimento.SelectedValue);
                procedimento.CodigoCid = this.DropDownList_ProcedimentoCID.SelectedValue;
                procedimento.Cid = iCid.BuscarPorCodigo<Cid>(this.DropDownList_ProcedimentoCID.SelectedValue);
                procedimento.ExecutarPrimeiroMomento = CheckBox_ExecutarProcimentoAgora.Checked;
                procedimento.SetIntervalo(TextBox_IntervaloProcedimento.Text, int.Parse(DropDownList_UnidadeTempoFrequenciaProcedimento.SelectedValue));

                if (!procedimento.IntervaloValido())
                {
                    ScriptManager.RegisterStartupScript(Page, typeof(Page), "alert", "alert('O intervalo máximo para aplicação do procedimento é de 24 horas.');", true);
                    return;
                }

                procedimentos.Add(procedimento);
                Session["ListaProcedimento"] = procedimentos;
                CarregaGridProcedimento(procedimentos);
                OnClick_CancelarProcedimento(sender, e);
            }
            else
                ScriptManager.RegisterStartupScript(Page, typeof(Page), "alert", "alert('Este Procedimento já se encontra na lista de solicitações.');", true);
        }