internal void registraAgenda(Medico medicoSeleccionado, Especialidad especialidadSeleccionada, Dictionary <System.Windows.Forms.NumericUpDown, System.Windows.Forms.NumericUpDown> horasDesde, Dictionary <System.Windows.Forms.NumericUpDown, System.Windows.Forms.NumericUpDown> horasHasta, String fechaDesde, String fechaHasta)
        {
            this.obtenerDiasSeleccionados(horasDesde);
            ProfesionalManager pm = new ProfesionalManager();

            Dictionary <KeyValuePair <NumericUpDown, NumericUpDown>, KeyValuePair <NumericUpDown, NumericUpDown> > rangoAtencion = this.obtenerRangoAtencion(horasDesde, horasHasta);

            Decimal horasTrabajadas = pm.getHorasTrabajadas(medicoSeleccionado, fechaDesde, fechaHasta);
            Decimal horasAInsertar  = 0;

            foreach (KeyValuePair <KeyValuePair <NumericUpDown, NumericUpDown>, KeyValuePair <NumericUpDown, NumericUpDown> > rango in rangoAtencion)
            {
                Decimal hd   = ((rango.Key.Key.Value) * 60);
                Decimal md   = (rango.Key.Value.Value);
                Decimal hdmd = hd + md;

                Decimal hh   = ((rango.Value.Key.Value) * 60);
                Decimal mh   = (rango.Value.Value.Value);
                Decimal hhmh = hh + mh;

                horasAInsertar += (Decimal.Divide((hhmh - hdmd), 60));
            }

            Decimal horasTotales = horasTrabajadas + horasAInsertar;

            if (horasTotales <= 48)
            {
                foreach (KeyValuePair <KeyValuePair <NumericUpDown, NumericUpDown>, KeyValuePair <NumericUpDown, NumericUpDown> > rango in rangoAtencion)
                {
                    pm.registrarRangoAtencion(medicoSeleccionado, especialidadSeleccionada, rango.Key, rango.Value, fechaDesde, fechaHasta);
                }
            }
            else
            {
                Exception ex = new Exception("Las horas trabajadas no pueden superar las 48 hs semanales");
                throw ex;
            }
        }
        internal List <Especialidad> buscarEspecialidadesMedico(Medico medico)
        {
            List <Especialidad> especialidades = new List <Especialidad>();

            try
            {
                ParametroParaSP        parametro4 = new ParametroParaSP("matricula", SqlDbType.Decimal, medico.matricula);
                List <ParametroParaSP> parametros = new List <ParametroParaSP>();
                parametros.Add(parametro4);

                this.openDB();

                SqlCommand    procedure = this.createCallableProcedure("BETTER_CALL_JUAN.Procedure_Get_Especialidades_Medico", parametros);
                SqlDataReader sqlReader = procedure.ExecuteReader();

                if (sqlReader.HasRows)
                {
                    while (sqlReader.Read())
                    {
                        Especialidad especialidad = new Especialidad();

                        especialidad.codigo      = sqlReader.GetDecimal(0);
                        especialidad.descripcion = sqlReader.GetString(1);

                        especialidades.Add(especialidad);
                    }
                }
            }
            catch (Exception e)
            {
                especialidades = null;
            }
            finally
            {
                this.closeDB();
            }
            return(especialidades);
        }
        internal void buscarTurnosParaFechaActual(Medico medico, Especialidad especialidad)
        {
            ConsultaManager managerConsultas = new ConsultaManager();
            List <Turno>    turnos           = managerConsultas.getTurnosParaFechaDeHoy(medico, especialidad);

            if (turnos != null)
            {
                if (turnos.Count == 0)
                {
                    this.form.showErrorMessage("No se encontraron turnos para la fecha.");
                    this.form.Close();
                }
                else
                {
                    this.form.llenarTablaConTurnos(turnos);
                    this.form.Show();
                }
            }
            else
            {
                this.form.showErrorMessage("Ocurrio un error al buscar los horarios.");
            }
        }
예제 #4
0
        internal bool pedirTurnoAfiliado(Medico medico, Especialidad especialidad, string fechaElegida, string horarioElegido)
        {
            bool turnoPedido = true;

            try
            {
                decimal usuario_id = UsuarioConfiguracion.getInstance().getUsuarioId();

                DateTime fecha_hora_turno = DateTime.Parse(fechaElegida) + TimeSpan.Parse(horarioElegido);

                ParametroParaSP parametro1 = new ParametroParaSP("usuario_id_afiliado", SqlDbType.Decimal, usuario_id);
                ParametroParaSP parametro2 = new ParametroParaSP("medico_id", SqlDbType.Decimal, medico.matricula);
                ParametroParaSP parametro3 = new ParametroParaSP("especialidad_codigo", SqlDbType.Decimal, especialidad.codigo);
                ParametroParaSP parametro4 = new ParametroParaSP("fecha_hora_turno", SqlDbType.DateTime, fecha_hora_turno);

                List <ParametroParaSP> parametros = new List <ParametroParaSP>();
                parametros.Add(parametro1);
                parametros.Add(parametro2);
                parametros.Add(parametro3);
                parametros.Add(parametro4);

                this.openDB();

                SqlCommand procedure = this.createCallableProcedure("BETTER_CALL_JUAN.Procedure_Pedir_Turno_Con_Usuario_Id", parametros);
                procedure.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                turnoPedido = false;
            }
            finally
            {
                this.closeDB();
            }
            return(turnoPedido);
        }
예제 #5
0
        internal List <Turno> buscarTurnosConFiltros(DateTime fechaBuscar, string nombreMedico, string apellidoMedico, string nombrePaciente, string apellidoPaciente)
        {
            List <Turno> turnos = new List <Turno>();

            try
            {
                ParametroParaSP        parametro1 = new ParametroParaSP("fecha_a_buscar", SqlDbType.DateTime, fechaBuscar);
                ParametroParaSP        parametro2 = new ParametroParaSP("nombre_medico", SqlDbType.VarChar, nombreMedico);
                ParametroParaSP        parametro3 = new ParametroParaSP("apellido_medico", SqlDbType.VarChar, apellidoMedico);
                ParametroParaSP        parametro4 = new ParametroParaSP("nombre_paciente", SqlDbType.VarChar, nombrePaciente);
                ParametroParaSP        parametro5 = new ParametroParaSP("apellido_paciente", SqlDbType.VarChar, apellidoPaciente);
                List <ParametroParaSP> parametros = new List <ParametroParaSP>();
                parametros.Add(parametro1);
                parametros.Add(parametro2);
                parametros.Add(parametro3);
                parametros.Add(parametro4);
                parametros.Add(parametro5);

                this.openDB();

                SqlCommand    procedure = this.createCallableProcedure("BETTER_CALL_JUAN.Get_Turnos_Con_Filtros", parametros);
                SqlDataReader sqlReader = procedure.ExecuteReader();

                if (sqlReader.HasRows)
                {
                    while (sqlReader.Read())
                    {
                        Turno turno = new Turno();
                        turno.numero               = sqlReader.GetDecimal(0);
                        turno.fechaHora            = sqlReader.GetDateTime(1);
                        turno.medicoEspecialidadId = sqlReader.GetDecimal(2);
                        turno.pacienteId           = sqlReader.GetDecimal(3);

                        Medico medico = new Medico();
                        medico.apellido = sqlReader.GetString(4);
                        medico.nombre   = sqlReader.GetString(5);
                        turno.medico    = medico;

                        Especialidad especialidad = new Especialidad();
                        especialidad.descripcion = sqlReader.GetString(6);
                        turno.especialidad       = especialidad;

                        Paciente paciente = new Paciente();
                        paciente.nombre   = sqlReader.GetString(7);
                        paciente.apellido = sqlReader.GetString(8);
                        paciente.tipoDoc  = sqlReader.GetString(9);
                        paciente.nroDoc   = sqlReader.GetDecimal(10);
                        turno.paciente    = paciente;

                        turnos.Add(turno);
                    }
                }
            }
            catch (Exception e)
            {
                turnos = null;
            }
            finally
            {
                this.closeDB();
            }
            return(turnos);
        }
        internal void mostrarHorarios(List <CheckBox> CBLDias, Medico medico, Especialidad especialidad)
        {
            especialidadSeleccionada = especialidad;
            medicoSeleccionado       = medico;
            this.horasDesde          = new Dictionary <NumericUpDown, NumericUpDown>();
            this.horasHasta          = new Dictionary <NumericUpDown, NumericUpDown>();
            int ycoords = 0;
            int xcoords = 3;

            this.fechaDesde.Value = ConfiguracionApp.getInstance().fechaActual;
            this.fechaHasta.Value = ConfiguracionApp.getInstance().fechaActual;

            CBLDias.ForEach(cbdia =>
            {
                if (cbdia.Checked)
                {
                    Label dia    = new Label();
                    dia.Width    = 70;
                    dia.Text     = cbdia.Text;
                    dia.Location = new Point(xcoords, ycoords);
                    dia.Font     = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                    diasPanel.Controls.Add(dia);
                    xcoords += 96;

                    NumericUpDown horaDesde = new NumericUpDown();
                    horaDesde.Name          = dia.Text;
                    horaDesde.Maximum       = 23;
                    horaDesde.Minimum       = 0;
                    horaDesde.Width         = 40;
                    horaDesde.Location      = new Point(xcoords, ycoords);
                    horaDesde.Font          = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                    diasPanel.Controls.Add(horaDesde);
                    xcoords += 80;

                    NumericUpDown minutosDesde = new NumericUpDown();
                    minutosDesde.Name          = dia.Text;
                    minutosDesde.Maximum       = 59;
                    minutosDesde.Minimum       = 0;
                    minutosDesde.Width         = 40;
                    minutosDesde.Location      = new Point(xcoords, ycoords);
                    minutosDesde.Font          = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                    diasPanel.Controls.Add(minutosDesde);
                    xcoords += 73;

                    NumericUpDown horaHasta = new NumericUpDown();
                    horaHasta.Name          = dia.Text;
                    horaHasta.Maximum       = 23;
                    horaHasta.Minimum       = 0;
                    horaHasta.Width         = 40;
                    horaHasta.Location      = new Point(xcoords, ycoords);
                    horaHasta.Font          = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                    diasPanel.Controls.Add(horaHasta);
                    xcoords += 70;

                    NumericUpDown minutosHasta = new NumericUpDown();
                    minutosHasta.Name          = dia.Text;
                    minutosHasta.Maximum       = 59;
                    minutosHasta.Minimum       = 0;
                    minutosHasta.Width         = 40;
                    minutosHasta.Location      = new Point(xcoords, ycoords);
                    minutosHasta.Font          = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                    diasPanel.Controls.Add(minutosHasta);

                    ycoords += 25;
                    this.horasDesde.Add(horaDesde, minutosDesde);
                    this.horasHasta.Add(horaHasta, minutosHasta);
                    xcoords = 3;
                }
            });

            this.Show();
        }