none
agendamento de consultas

    Question

  • boa tarde, estou tentando fazer um programa de agendamento de consulta para entregar no final desse ano na minha facul.

    acontece que parei na parte de agendar consulta, até parei de fazer o programa uns dias por causa disso, mas preciso terminar e falta muita coisa e nao posso avançar sem terminar essa parte. estou ate sem ideia de como fazer, inicialmente pensei em colocar um calendario na minha tela e um formulario onde a pessoa prenche o paciente,medico,tipo de consulta horarios etc... q deseja marcar. O B.O é q nao sei como fazer para que nao aconteça de marcar 2 consulta no msm horario do msm dia. e tbm pensei prencher meu droplist de acordo com os horarios disponiveis para aquela data escolhida no calendario, mas tbm nem imagino de como posso fazer isso. alguem pode dar alguma ideia? exemplos de como fazer? sou iniciante e nem sei como fazer essa parte, e ai fica muito dificil!

    obs: tenho todas tabelas do meu BD relacionadas certinhos. ja fiz a parte de cadastrar,consultar,excluir,alterar pacientes.

    Tuesday, October 25, 2011 3:45 PM

Answers

  • Um exemplo sobre a manipulação do controle calendar.

    Eu criei uma classe "Evento" com três atributos. Toda vez que clico em "Cadastrar evento" o mesmo é exibido no controle Calendar. Isto é um exemplo simples de como trabalhar com o controle. Não utilizei nada de banco de dados... os dados coloquei em sessão.

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="msdnCalendar.aspx.cs" Inherits="AgendarConsulta" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <style type="text/css">
            .style1
            {
                width: 48%;
                height: 78px;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
            <table class="style1">
                <tr>
                    <td>
                        Nome do Evento:</td>
                    <td>
                        <asp:TextBox ID="txtEvento" runat="server" Width="212px"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        Descrição:</td>
                    <td>
                        <asp:TextBox ID="txtDescricao" runat="server" TextMode="MultiLine" 
                            Width="212px"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        Data:</td>
                    <td>
                        <asp:TextBox ID="txtData" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        &nbsp;</td>
                    <td>
                        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
                            Text="Cadastrar Evento" />
                    </td>
                </tr>
            </table>
            Eventos:<asp:Calendar ID="Calendar1" runat="server" BackColor="White" 
                BorderColor="Black" BorderStyle="Solid" CellSpacing="1" Font-Names="Verdana" 
                Font-Size="9pt" ForeColor="Black" Height="250px" NextPrevFormat="ShortMonth" 
                ondayrender="Calendar1_DayRender" Width="330px">
                <DayHeaderStyle Font-Bold="True" Font-Size="8pt" ForeColor="#333333" 
                    Height="8pt" />
                <DayStyle BackColor="#CCCCCC" />
                <NextPrevStyle Font-Bold="True" Font-Size="8pt" ForeColor="White" />
                <OtherMonthDayStyle ForeColor="#999999" />
                <SelectedDayStyle BackColor="#333399" ForeColor="White" />
                <TitleStyle BackColor="#333399" BorderStyle="Solid" Font-Bold="True" 
                    Font-Size="12pt" ForeColor="White" Height="12pt" />
                <TodayDayStyle BackColor="#999999" ForeColor="White" />
            </asp:Calendar>
        
        </div>
        </form>
    </body>
    </html>
    
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.IO;
    
    
    public class Evento
    {
        public string Nome { get; set; }
        public string Descricao { get; set; }
        public DateTime DataDoEvento {get;set;}   
    }
    
    public partial class AgendarConsulta : System.Web.UI.Page
    {
        private const string listaDeEventosKey = "_listaDeEventosKey";
        LiteralControl controlLiterial;
    
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            string evento = txtEvento.Text;
            string descricao = txtDescricao.Text;
            DateTime dataEvento = DateTime.Parse(txtData.Text);
    
            AdicionarEvento(evento, descricao ,dataEvento);
        }
    
        private void AdicionarEvento(string evento, string desc ,DateTime dataDoEvento)
        {
            List<Evento> listEventos;
    
            if (Session[listaDeEventosKey] == null)
            {
                listEventos = new List<Evento>();
                listEventos.Add(new Evento() { Nome = evento, Descricao = desc, DataDoEvento = dataDoEvento });
                Session[listaDeEventosKey] = listEventos;
            }
            else
            {
                listEventos = (Session[listaDeEventosKey] as List<Evento>);
                listEventos.Add(new Evento() { Nome = evento, Descricao = desc, DataDoEvento = dataDoEvento });
                Session[listaDeEventosKey] = listEventos;
            }
        }
    
        protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
        {
            if (Session[listaDeEventosKey] != null)
            {
                List<Evento> listEventos = (Session[listaDeEventosKey] as List<Evento>);
    
                string dia = e.Day.Date.ToShortDateString();
    
                e.Cell.Text = e.Day.Date.Day + "<br>"; //quebrar a linha
                controlLiterial = new LiteralControl();
                controlLiterial.Text = e.Day.Date.Day + "<br>";
                e.Cell.Controls.Add(controlLiterial);
    
                foreach (Evento evento in listEventos)
                {
                    //verifica se a data do evento é o mesmo dia do calendário
                    if (dia == evento.DataDoEvento.ToShortDateString())
                    {
                        Label lblEventos = new Label();
                        lblEventos.Text = "-" + evento.Nome + "<br>";                
                        e.Cell.Controls.Add(lblEventos);
                    }
                }
            }
        }
    }
    





    --
    Marque as respostas e ajude a melhorar a busca do fórum. pcfviana@gmail.com
    Wednesday, October 26, 2011 1:26 PM

All replies

  • "obs: tenho todas tabelas do meu BD relacionadas certinhos. ja fiz a parte de cadastrar,consultar,excluir,alterar pacientes."

    Fez como? Rapaz, o que você quer fazer é simples.

    Um controle Calendar vai resolver.

    Com relação a não deixar marcar no mesmo horário/dia, basta você fazer a validação na hora de cadastrar ou, e melhor ainda, deixar habilitado somente os horários/dias disponíveis (que não tem data agendado).

     


    --
    Marque as respostas e ajude a melhorar a busca do fórum. pcfviana@gmail.com
    Tuesday, October 25, 2011 4:09 PM
  • Olá Godinis22,

    Concordo com o que o Paulo César falou é simples o que você quer fazer, porem eu também entendo o seu lado quando somos iniciantes qualquer duvida é grande :) 

    Voltando ao seu problema, você tem mais de uma opção como resposta. Antes de pensar em qual componente utilizar você terá que definir qual estratégia utilizar o Paulo já te mostrou duas. Uma quando o usuário for salvar o agendamento da consulta você valida se já existe alguma consulta para aquele paciente ou médico naquela data e hora. Outra é exibir para o paciente somente datas livres para realizar consultas. A melhor solução vai depender do que você colocou como escopo (Requisito) do projeto. Por exemplo, o paciente vai poder visualizar em algum lugar do sistema todas as consultas que ele tem? Ele vai pesquisar por médico ou especialidade medica? 

    Não sei se você entendeu o que eu estou falando, mas você não falou de uma forma clara qual é a sua duvida. O que você que dizer com "Agendar consulta"? Como deve ser o comportamento do seu sistema nessa parte? 

    Temos que saber essas partes para te ajudar, entendeu :)

    Sobre quais componentes e como utilizá-los seu sistema é web ou windows? Você o separou em camadas? 

    Wednesday, October 26, 2011 2:23 AM
  • Um exemplo sobre a manipulação do controle calendar.

    Eu criei uma classe "Evento" com três atributos. Toda vez que clico em "Cadastrar evento" o mesmo é exibido no controle Calendar. Isto é um exemplo simples de como trabalhar com o controle. Não utilizei nada de banco de dados... os dados coloquei em sessão.

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="msdnCalendar.aspx.cs" Inherits="AgendarConsulta" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <style type="text/css">
            .style1
            {
                width: 48%;
                height: 78px;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
            <table class="style1">
                <tr>
                    <td>
                        Nome do Evento:</td>
                    <td>
                        <asp:TextBox ID="txtEvento" runat="server" Width="212px"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        Descrição:</td>
                    <td>
                        <asp:TextBox ID="txtDescricao" runat="server" TextMode="MultiLine" 
                            Width="212px"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        Data:</td>
                    <td>
                        <asp:TextBox ID="txtData" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        &nbsp;</td>
                    <td>
                        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
                            Text="Cadastrar Evento" />
                    </td>
                </tr>
            </table>
            Eventos:<asp:Calendar ID="Calendar1" runat="server" BackColor="White" 
                BorderColor="Black" BorderStyle="Solid" CellSpacing="1" Font-Names="Verdana" 
                Font-Size="9pt" ForeColor="Black" Height="250px" NextPrevFormat="ShortMonth" 
                ondayrender="Calendar1_DayRender" Width="330px">
                <DayHeaderStyle Font-Bold="True" Font-Size="8pt" ForeColor="#333333" 
                    Height="8pt" />
                <DayStyle BackColor="#CCCCCC" />
                <NextPrevStyle Font-Bold="True" Font-Size="8pt" ForeColor="White" />
                <OtherMonthDayStyle ForeColor="#999999" />
                <SelectedDayStyle BackColor="#333399" ForeColor="White" />
                <TitleStyle BackColor="#333399" BorderStyle="Solid" Font-Bold="True" 
                    Font-Size="12pt" ForeColor="White" Height="12pt" />
                <TodayDayStyle BackColor="#999999" ForeColor="White" />
            </asp:Calendar>
        
        </div>
        </form>
    </body>
    </html>
    
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.IO;
    
    
    public class Evento
    {
        public string Nome { get; set; }
        public string Descricao { get; set; }
        public DateTime DataDoEvento {get;set;}   
    }
    
    public partial class AgendarConsulta : System.Web.UI.Page
    {
        private const string listaDeEventosKey = "_listaDeEventosKey";
        LiteralControl controlLiterial;
    
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            string evento = txtEvento.Text;
            string descricao = txtDescricao.Text;
            DateTime dataEvento = DateTime.Parse(txtData.Text);
    
            AdicionarEvento(evento, descricao ,dataEvento);
        }
    
        private void AdicionarEvento(string evento, string desc ,DateTime dataDoEvento)
        {
            List<Evento> listEventos;
    
            if (Session[listaDeEventosKey] == null)
            {
                listEventos = new List<Evento>();
                listEventos.Add(new Evento() { Nome = evento, Descricao = desc, DataDoEvento = dataDoEvento });
                Session[listaDeEventosKey] = listEventos;
            }
            else
            {
                listEventos = (Session[listaDeEventosKey] as List<Evento>);
                listEventos.Add(new Evento() { Nome = evento, Descricao = desc, DataDoEvento = dataDoEvento });
                Session[listaDeEventosKey] = listEventos;
            }
        }
    
        protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
        {
            if (Session[listaDeEventosKey] != null)
            {
                List<Evento> listEventos = (Session[listaDeEventosKey] as List<Evento>);
    
                string dia = e.Day.Date.ToShortDateString();
    
                e.Cell.Text = e.Day.Date.Day + "<br>"; //quebrar a linha
                controlLiterial = new LiteralControl();
                controlLiterial.Text = e.Day.Date.Day + "<br>";
                e.Cell.Controls.Add(controlLiterial);
    
                foreach (Evento evento in listEventos)
                {
                    //verifica se a data do evento é o mesmo dia do calendário
                    if (dia == evento.DataDoEvento.ToShortDateString())
                    {
                        Label lblEventos = new Label();
                        lblEventos.Text = "-" + evento.Nome + "<br>";                
                        e.Cell.Controls.Add(lblEventos);
                    }
                }
            }
        }
    }
    





    --
    Marque as respostas e ajude a melhorar a busca do fórum. pcfviana@gmail.com
    Wednesday, October 26, 2011 1:26 PM