public async Task <JsonResult> ConsultarCedula(string cedula)
        {
            var paciente = await _context.Pacientes
                           .FirstOrDefaultAsync(m => m.Cedula == cedula);

            if (paciente == null)
            {
                paciente = new Paciente();
            }

            var consultaEstudio = await _context.ConsultaEstudios
                                  .Include(c => c.Medico).Include(c => c.Diagnostico).Include(c => c.Estudio).Include(c => c.Paciente).FirstOrDefaultAsync(x => x.PacienteId == paciente.PacienteId);

            if (consultaEstudio == null)
            {
                consultaEstudio = new ConsultaEstudio();
            }
            consultaEstudio.Paciente = paciente;

            return(this.Json(new ConsultaEstudio
            {
                ConsultaEstudioId = consultaEstudio.ConsultaEstudioId,
                FechaActual = consultaEstudio.FechaActual,
                Paciente = consultaEstudio.Paciente,
                PacienteId = paciente.PacienteId,
            }));
        }
        public async Task <IActionResult> Edit(int id, [Bind("ConsultaEstudioId,PacienteId,Cedula,PacienteNombre,FechaActual,MedicoId,EstudioId,DiagnosticoId")] ConsultaEstudio consultaEstudio)
        {
            if (id != consultaEstudio.ConsultaEstudioId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(consultaEstudio);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ConsultaEstudioExists(consultaEstudio.ConsultaEstudioId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            var listaDiagnosticos = await this._context.Diagnosticos.AsNoTracking()
                                    .Include(x => x.Especialidad)
                                    .Where(x => x.DiagnosticoId == consultaEstudio.DiagnosticoId && x.EspecialidadId == consultaEstudio.Diagnostico.EspecialidadId)
                                    .ToListAsync();

            var listaMedicos = await ListaMedicos(consultaEstudio.DiagnosticoId);

            var listaEstudios = await ListaEstudios(consultaEstudio.DiagnosticoId);

            ViewData["DiagnosticoId"] = new SelectList(listaDiagnosticos, "DiagnosticoId", "DiagnosticoNombre", consultaEstudio.DiagnosticoId);
            ViewData["MedicoId"]      = new SelectList(listaMedicos, "MedicoId", "Nombre", consultaEstudio.MedicoId);
            ViewData["EstudioId"]     = new SelectList(listaEstudios, "EstudioId", "TerapiaNombre", consultaEstudio.EstudioId);
            return(View(consultaEstudio));
        }
        public async Task <IActionResult> Create([Bind("ConsultaEstudioId,Cedula,PacienteNombre,FechaActual,MedicoId,EstudioId,DiagnosticoId")] ConsultaEstudioViewModel consultaEstudio)
        {
            if (ModelState.IsValid)
            {
                var paciente = await _context.Pacientes
                               .FirstOrDefaultAsync(m => m.Cedula == consultaEstudio.Cedula);

                if (!PacienteExists(consultaEstudio.Cedula))
                {
                    paciente = new Paciente
                    {
                        Cedula         = consultaEstudio.Cedula,
                        PacienteNombre = consultaEstudio.PacienteNombre
                    };
                    _context.Add(paciente);
                    await _context.SaveChangesAsync();
                }

                var objConsultaEstudio = new ConsultaEstudio
                {
                    PacienteId    = paciente.PacienteId,
                    FechaActual   = DateTime.Now,
                    MedicoId      = consultaEstudio.MedicoId,
                    DiagnosticoId = consultaEstudio.DiagnosticoId,
                    EstudioId     = consultaEstudio.EstudioId
                };
                _context.Add(objConsultaEstudio);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            var listaMedicos = await ListaMedicos(consultaEstudio.DiagnosticoId);

            var listaEstudios = await ListaEstudios(consultaEstudio.DiagnosticoId);

            ViewData["DiagnosticoId"] = new SelectList(_context.Diagnosticos, "DiagnosticoId", "DiagnosticoNombre", consultaEstudio.DiagnosticoId);
            ViewData["MedicoId"]      = new SelectList(listaMedicos, "MedicoId", "Nombre", consultaEstudio.MedicoId);
            ViewData["EstudioId"]     = new SelectList(listaEstudios, "EstudioId", "EstudioNombre", consultaEstudio.EstudioId);
            return(View(consultaEstudio));
        }