public static List <ConsultaModel> Procedimentos(ConvenioModel convenio, FiltroPessoa filtro, string pesquisa)
        {
            var lista = new List <ConsultaModel>();

            try
            {
                var cmd = $@"SELECT
	                            C.id_consulta,
                                C.id_medico,
	                            C.id_cliente,
	                            ISNULL(C.id_convenio, 0) AS id_convenio,
	                            C.numero_procedimento,
	                            C.forma_de_atendimento,
	                            C.data,
                                C.horario,
	                            C.valor,
	                            C.status_pagamento, 
	                            C.tipo_de_consulta,
                                C.retorno,
                                C.observacao,
	                            C.ativo
                            FROM
	                            consulta    C
                            INNER JOIN cliente CLI
                                ON CLI.id_cliente = C.id_cliente
                            WHERE
	                            C.ativo	            = 1
                                AND
	                            CLI.{filtro} LIKE @pesquisa
                                AND
                                C.status_pagamento     = 1
	                            AND
                                C.forma_de_atendimento = 1 ";

                if (convenio != null)
                {
                    cmd += " AND C.id_convenio = @id_convenio ";
                }

                cmd += " ORDER BY C.data, C.horario";

                Conexao.AbrirConexao();
                Conexao.Cmd = new SqlCommand(cmd, Conexao.ConexaoSQL);
                Conexao.Cmd.Parameters.AddWithValue("pesquisa", $"%{pesquisa}%");

                if (cmd.Contains("@id_convenio"))
                {
                    Conexao.Cmd.Parameters.AddWithValue("id_convenio", convenio?.id);
                }

                Conexao.Leitor = Conexao.Cmd.ExecuteReader();

                while (Conexao.Leitor.Read())
                {
                    var obj = new ConsultaModel();

                    obj.id = int.Parse(Conexao.Leitor["id_consulta"].ToString());

                    obj.medico = new FuncionarioModel
                    {
                        id = int.Parse(Conexao.Leitor["id_medico"].ToString())
                    };

                    obj.cliente = new ClienteModel
                    {
                        id = int.Parse(Conexao.Leitor["id_cliente"].ToString())
                    };

                    obj.convenio = new ConvenioModel
                    {
                        id = Conexao.Leitor["id_convenio"] != DBNull.Value ?
                             int.Parse(Conexao.Leitor["id_convenio"].ToString()) : 1
                    };

                    obj.numeroProcedimento = Conexao.Leitor["numero_procedimento"].ToString();
                    obj.formaDeAtentimento = (FormaDeAtendimento)Enum.Parse(typeof(FormaDeAtendimento), Conexao.Leitor["forma_de_atendimento"].ToString());
                    obj.data            = DateTime.Parse(Conexao.Leitor["data"].ToString());
                    obj.horario         = TimeSpan.Parse(Conexao.Leitor["horario"].ToString());
                    obj.valor           = decimal.Parse(Conexao.Leitor["valor"].ToString());
                    obj.statusPagamento = (StatusPagamento)Enum.Parse(typeof(StatusPagamento), Conexao.Leitor["status_pagamento"].ToString());
                    obj.tipoDeConsulta  = (TipoDeConsulta)Enum.Parse(typeof(TipoDeConsulta), Conexao.Leitor["tipo_de_consulta"].ToString());
                    obj.retorno         = bool.Parse(Conexao.Leitor["retorno"].ToString());
                    obj.ativo           = bool.Parse(Conexao.Leitor["ativo"].ToString());
                    obj.observacao      = Conexao.Leitor["observacao"].ToString();

                    obj.cirgurgia = new CirurgiaModel
                    {
                        idConsulta = obj.id
                    };

                    obj.receita = new ReceitaModel
                    {
                        idConsulta = obj.id
                    };

                    lista.Add(obj);
                }
            }
            catch (Exception ex)
            {
                Excecao.Mostrar(ex);
            }
            finally
            {
                Conexao.FecharConexao();
            }

            lista.ForEach(x => x.convenio?.Carregar());
            lista.ForEach(x => x.medico.Carregar());
            lista.ForEach(x => x.cliente.Carregar());

            lista.ForEach(x => x.receita.Carregar());
            lista.ForEach(x => x.cirgurgia.Carregar());

            return(lista);
        }
        public void Carregar()
        {
            try
            {
                var cmd = @"SELECT
	                            id_medico,
	                            id_cliente,
	                            ISNULL(id_convenio, 0) AS id_convenio,
	                            numero_procedimento,
	                            forma_de_atendimento,
	                            data,
                                horario,
	                            valor,
	                            status_pagamento, 
	                            tipo_de_consulta,
                                retorno,
                                observacao,
	                            ativo
                            FROM
	                            consulta
                            WHERE
	                            id_consulta	= @id"    ;

                Conexao.AbrirConexao();
                Conexao.Cmd = new SqlCommand(cmd, Conexao.ConexaoSQL);
                Conexao.Cmd.Parameters.AddWithValue("id", id);

                Conexao.Leitor = Conexao.Cmd.ExecuteReader();

                if (Conexao.Leitor.Read())
                {
                    this.id = id;
                    medico  = new FuncionarioModel
                    {
                        id = int.Parse(Conexao.Leitor["id_medico"].ToString())
                    };

                    cliente = new ClienteModel
                    {
                        id = int.Parse(Conexao.Leitor["id_cliente"].ToString())
                    };


                    convenio = new ConvenioModel
                    {
                        id = Conexao.Leitor["id_convenio"] != DBNull.Value ?
                             int.Parse(Conexao.Leitor["id_convenio"].ToString()) : 1
                    };

                    numeroProcedimento = Conexao.Leitor["numero_procedimento"].ToString();
                    formaDeAtentimento = (FormaDeAtendimento)Enum.Parse(typeof(FormaDeAtendimento), Conexao.Leitor["forma_de_atendimento"].ToString());
                    data            = DateTime.Parse(Conexao.Leitor["data"].ToString());
                    horario         = TimeSpan.Parse(Conexao.Leitor["horario"].ToString());
                    valor           = decimal.Parse(Conexao.Leitor["valor"].ToString());
                    statusPagamento = (StatusPagamento)Enum.Parse(typeof(StatusPagamento), Conexao.Leitor["status_pagamento"].ToString());
                    tipoDeConsulta  = (TipoDeConsulta)Enum.Parse(typeof(TipoDeConsulta), Conexao.Leitor["tipo_de_consulta"].ToString());
                    retorno         = bool.Parse(Conexao.Leitor["retorno"].ToString());
                    ativo           = bool.Parse(Conexao.Leitor["ativo"].ToString());
                    observacao      = Conexao.Leitor["observacao"].ToString();
                }
            }
            catch (Exception ex)
            {
                Excecao.Mostrar(ex);
            }
            finally
            {
                Conexao.FecharConexao();
            }

            CarregarPagamentos();
        }