public IHttpActionResult PutConsentimientoInformado(ConsentimientoInformado consentimientoInformado)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.Entry(consentimientoInformado).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ConsentimientoInformadoExists(consentimientoInformado.fecha, consentimientoInformado.hora, consentimientoInformado.tipoIdPaciente,
                                                   consentimientoInformado.numeroIdPaciente, consentimientoInformado.codigoProcedimiento))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#2
0
        // GET: ConsentimientoInformado/Create
        public IActionResult Create()
        {
            var i = (ClaimsIdentity)User.Identity;

            if (i.IsAuthenticated)
            {
                var permisos = i.Claims.Where(c => c.Type == "ConsentimientoInformado").Select(c => c.Value).SingleOrDefault().Split(";");

                if (Convert.ToBoolean(permisos[1]))
                {
                    ConsentimientoInformado consentimientoInformado = new ConsentimientoInformado();

                    //llenar combos de paciente y doctor select * from citaodontologica where HoraInicio >= '9:00' and HoraFin <= '10:30'

                    //TimeSpan intInicial = new TimeSpan(fecha.Hour, fecha.Minute, 00);
                    TimeSpan intInicial = new TimeSpan(19, 30, 00);
                    TimeSpan intFinal   = new TimeSpan(22, 30, 00);

                    //ver estos condiciones.
                    var c = _context.CitaOdontologica.Where(ci => ci.FechaInicio.Date == fecha.Date);
                    c = c.Where(ci => ci.HoraInicio >= intInicial || ci.HoraFin <= intFinal);
                    CitaOdontologica cita = c.FirstOrDefault();
                    //CitaOdontologica cita = _context.CitaOdontologica.Where(ci => ci.FechaInicio.Date == fecha.Date && ci.HoraInicio >= intInicial || ci.HoraFin <= intFinal).SingleOrDefault();
                    //-- fin ver las condiciones
                    List <SelectListItem> Personal = null;
                    List <SelectListItem> Paciente = null;
                    if (cita == null)
                    {
                        Personal = new SelectList(_context.Personal.OrderBy(c => c.NombreCompleto).Where(c => c.Estado == true), "Codigo", "NombreCompleto").ToList();
                        Personal.Insert(0, vacio);
                        Paciente = new SelectList(_context.Paciente.OrderBy(p => p.NombreCompleto).Where(p => p.Estado == true), "Codigo", "NombreCompleto").ToList();
                        Paciente.Insert(0, vacio);
                        consentimientoInformado.CodigoCitaOdontologica = null;
                    }
                    else
                    {
                        Personal = new SelectList(_context.Personal.OrderBy(c => c.NombreCompleto).Where(c => c.Estado == true), "Codigo", "NombreCompleto", cita.CodigoPersonal).ToList();
                        Paciente = new SelectList(_context.Paciente.OrderBy(p => p.NombreCompleto).Where(p => p.Estado == true), "Codigo", "NombreCompleto", cita.CodigoPaciente).ToList();
                        consentimientoInformado.CodigoCitaOdontologica = cita.Codigo;
                    }

                    ViewData["CodigoPersonal"] = Personal;
                    ViewData["CodigoPaciente"] = Paciente;

                    var PlantillaCI = _context.PlantillaConsentimientoInformado.SingleOrDefault();
                    ViewData["Descripcion"] = PlantillaCI.Descripcion;

                    return(View(consentimientoInformado));
                }
                else
                {
                    return(Redirect("../ConsentimientoInformado"));
                }
            }
            else
            {
                return(Redirect("../Identity/Account/Login"));
            }
        }
        public IHttpActionResult GetConsentimientoInformado(DateTime fecha, TimeSpan hora, string tipoIdPaciente, int numeroIdPaciente, int codigoCUP)
        {
            ConsentimientoInformado consentimientoInformado = db.ConsentimientoInformado.Where(c => c.fecha == fecha & c.hora == hora &&
                                                                                               c.tipoIdPaciente == tipoIdPaciente && c.numeroIdPaciente == numeroIdPaciente && c.codigoProcedimiento == codigoCUP).FirstOrDefault();

            if (consentimientoInformado == null)
            {
                return(NotFound());
            }

            return(Ok(consentimientoInformado));
        }
        public IHttpActionResult PostConsentimientoInformado(ConsentimientoInformado consentimientoInformado)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.ConsentimientoInformado.Add(consentimientoInformado);

            try
            {
                db.SaveChanges();
            }
            //catch (DbUpdateException)
            //{
            //    if (ConsentimientoInformadoExists(consentimientoInformado.fecha, consentimientoInformado.hora, consentimientoInformado.tipoIdPaciente,
            //        consentimientoInformado.numeroIdPaciente, consentimientoInformado.codigoProcedimiento))
            //    {
            //        return Conflict();
            //    }
            //    else
            //    {
            //        throw;
            //    }
            //}
            catch (DbEntityValidationException dbEx)
            {
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        System.Console.WriteLine("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
                    }
                }
            }

            return(CreatedAtRoute("DefaultApi", new { id = consentimientoInformado.tipoIdPaciente }, consentimientoInformado));
        }
示例#5
0
        public async Task <IActionResult> Edit(ConsentimientoInformado consentimientoInformado)
        {
            var i = (ClaimsIdentity)User.Identity;
            List <SelectListItem> Personal = new SelectList(_context.Personal.OrderBy(c => c.NombreCompleto).Where(c => c.Estado == true), "Codigo", "NombreCompleto", consentimientoInformado.CodigoPersonal).ToList();
            List <SelectListItem> Paciente = new SelectList(_context.Paciente.OrderBy(p => p.NombreCompleto).Where(p => p.Estado == true), "Codigo", "NombreCompleto", consentimientoInformado.CodigoPaciente).ToList();
            var PlantillaCI = _context.PlantillaConsentimientoInformado.SingleOrDefault();

            ViewData["Descripcion"] = PlantillaCI.Descripcion;

            if (i.IsAuthenticated)
            {
                try
                {
                    if (ModelState.IsValid)
                    {
                        try
                        {
                            consentimientoInformado.Codigo = Encriptacion.Decrypt(consentimientoInformado.Codigo);
                            consentimientoInformado.Fecha  = Funciones.ObtenerFechaActual("SA Pacific Standard Time");
                            _context.Update(consentimientoInformado);
                            await _context.SaveChangesAsync();

                            await _auditoria.GuardarLogAuditoria(consentimientoInformado.Fecha, i.Name, "ConsentimientoInformado", consentimientoInformado.Codigo, "U");

                            ViewBag.Message = "Save";

                            Personal.Insert(0, vacio);
                            ViewData["CodigoPersonal"] = Personal;

                            Paciente.Insert(0, vacio);
                            ViewData["CodigoPaciente"] = Paciente;

                            ViewData["Descripcion"] = PlantillaCI.Descripcion;

                            return(View(consentimientoInformado));
                        }
                        catch (DbUpdateConcurrencyException)
                        {
                            throw;
                        }
                    }
                    Personal.Insert(0, vacio);
                    ViewData["CodigoPersonal"] = Personal;

                    Paciente.Insert(0, vacio);
                    ViewData["CodigoPaciente"] = Paciente;

                    ViewData["Descripcion"] = PlantillaCI.Descripcion;

                    return(View(consentimientoInformado));
                }
                catch (Exception e)
                {
                    string mensaje = e.Message;
                    if (e.InnerException != null)
                    {
                        mensaje = MensajesError.UniqueKey(e.InnerException.Message);
                    }

                    ViewBag.Message = mensaje;

                    Personal.Insert(0, vacio);
                    ViewData["CodigoPersonal"] = Personal;

                    Paciente.Insert(0, vacio);
                    ViewData["CodigoPaciente"] = Paciente;

                    ViewData["Descripcion"] = PlantillaCI.Descripcion;

                    return(View(consentimientoInformado));
                }
            }
            else
            {
                return(Redirect("../Identity/Account/Login"));
            }
        }
示例#6
0
        public async Task <IActionResult> Create(ConsentimientoInformado consentimientoInformado)
        {
            var i = (ClaimsIdentity)User.Identity;

            if (i.IsAuthenticated)
            {
                try
                {
                    List <SelectListItem> Personal = new SelectList(_context.Personal.OrderBy(c => c.NombreCompleto).Where(c => c.Estado == true), "Codigo", "NombreCompleto").ToList();
                    Personal.Insert(0, vacio);
                    ViewData["CodigoPersonal"] = Personal;

                    List <SelectListItem> Paciente = new SelectList(_context.Paciente.OrderBy(p => p.NombreCompleto).Where(p => p.Estado == true), "Codigo", "NombreCompleto").ToList();
                    Paciente.Insert(0, vacio);
                    ViewData["CodigoPaciente"] = Paciente;

                    var PlantillaCI = _context.PlantillaConsentimientoInformado.SingleOrDefault();
                    ViewData["Descripcion"] = PlantillaCI.Descripcion;

                    if (ModelState.IsValid)
                    {
                        //cita odontologica
                        CitaOdontologica citaOdontologica  = _context.CitaOdontologica.Where(ci => ci.Codigo == consentimientoInformado.CodigoCitaOdontologica).SingleOrDefault();                       //_context.CitaOdontologica.Where(ci => ci.FechaInicio.Date == fecha.Date && ci.HoraInicio <= intInicial && ci.HoraFin >= intFinal && ci.CodigoPaciente == anamnesis.CodigoPaciente && ci.CodigoPersonal == anamnesis.CodigoPersonal).FirstOrDefault();
                        DateTime         FechaCitaCreacion = Funciones.ObtenerFechaActual("SA Pacific Standard Time");
                        var transaction = _context.Database.BeginTransaction();
                        if (citaOdontologica == null)
                        {
                            CitaOdontologica cita        = new CitaOdontologica();
                            Int64            maxCodigoHC = 0;
                            maxCodigoHC          = Convert.ToInt64(_context.CitaOdontologica.Max(f => f.Codigo));
                            maxCodigoHC         += 1;
                            cita.Codigo          = maxCodigoHC.ToString("D8");
                            cita.CodigoPaciente  = consentimientoInformado.CodigoPaciente;
                            cita.CodigoPersonal  = consentimientoInformado.CodigoPersonal;
                            cita.FechaCreacion   = FechaCitaCreacion;
                            cita.Observaciones   = null;
                            cita.Estado          = "N";
                            cita.FechaInicio     = FechaCitaCreacion;
                            cita.FechaFin        = FechaCitaCreacion;
                            cita.HoraInicio      = new TimeSpan(FechaCitaCreacion.Hour, FechaCitaCreacion.Minute, 00);
                            cita.HoraFin         = new TimeSpan(FechaCitaCreacion.Hour, FechaCitaCreacion.Minute, 00);
                            cita.UsuarioCreacion = i.Name;
                            _context.Add(cita);
                            await _context.SaveChangesAsync();

                            await _auditoria.GuardarLogAuditoria(cita.FechaCreacion, i.Name, "CitaOdontologica", cita.Codigo, "I");

                            consentimientoInformado.CodigoCitaOdontologica = cita.Codigo;
                        }
                        else
                        {
                            consentimientoInformado.CodigoCitaOdontologica = citaOdontologica.Codigo;
                        }
                        //consentimientoInformado
                        Int64 maxCodigo = 0;
                        maxCodigo  = Convert.ToInt64(_context.ConsentimientoInformado.Max(f => f.Codigo));
                        maxCodigo += 1;
                        consentimientoInformado.Codigo = maxCodigo.ToString("D8");
                        consentimientoInformado.Fecha  = FechaCitaCreacion;

                        _context.Add(consentimientoInformado);
                        await _context.SaveChangesAsync();

                        transaction.Commit();
                        await _auditoria.GuardarLogAuditoria(consentimientoInformado.Fecha, i.Name, "ConsentimientoInformado", consentimientoInformado.Codigo, "I");

                        ViewBag.Message = "Save";
                        return(View(consentimientoInformado));
                    }

                    return(View(consentimientoInformado));
                }
                catch (Exception e)
                {
                    string mensaje = e.Message;
                    if (e.InnerException != null)
                    {
                        mensaje = MensajesError.UniqueKey(e.InnerException.Message);
                    }

                    ViewBag.Message = mensaje;
                    List <SelectListItem> Personal = new SelectList(_context.Personal.OrderBy(c => c.NombreCompleto).Where(c => c.Estado == true), "Codigo", "NombreCompleto").ToList();
                    Personal.Insert(0, vacio);
                    ViewData["CodigoPersonal"] = Personal;

                    List <SelectListItem> Paciente = new SelectList(_context.Paciente.OrderBy(p => p.NombreCompleto).Where(p => p.Estado == true), "Codigo", "NombreCompleto").ToList();
                    Paciente.Insert(0, vacio);
                    ViewData["CodigoPaciente"] = Paciente;

                    var PlantillaCI = _context.PlantillaConsentimientoInformado.SingleOrDefault();
                    ViewData["Descripcion"] = PlantillaCI.Descripcion;


                    return(View(consentimientoInformado));
                }
            }
            else
            {
                return(Redirect("../Identity/Account/Login"));
            }
        }
示例#7
0
        public async Task <IActionResult> Edit(CitaOdontologica citaOdontologica, List <string> enfermedades)
        {
            var i           = (ClaimsIdentity)User.Identity;
            var transaction = _context.Database.BeginTransaction();

            DateTime fecha1 = Convert.ToDateTime("29/04/2020");
            var      fechaC = Funciones.ObtenerFecha(fecha1, "SA Pacific Standard Time");

            var fechaU = Funciones.ObtenerFecha(Convert.ToDateTime(citaOdontologica.UltimaVisitaOdontologo), "SA Pacific Standard Time");

            if (i.IsAuthenticated)
            {
                try
                {
                    if (citaOdontologica.UltimaVisitaOdontologo >= Funciones.ObtenerFechaActual("SA Pacific Standard Time").Date)
                    {
                        var mensajeR = "La fecha debe ser menor a la actual.";
                        if (!string.IsNullOrEmpty(mensajeR))
                        {
                            ModelState.AddModelError("UltimaVisitaOdontologo", mensajeR);
                        }
                    }

                    if (!String.IsNullOrEmpty(citaOdontologica.DescripcionReceta))
                    {
                        if (String.IsNullOrEmpty(citaOdontologica.Indicaciones))
                        {
                            var mensajeR = "Debe llenar las indicaciones para los medicamentos";
                            if (!string.IsNullOrEmpty(mensajeR))
                            {
                                ModelState.AddModelError("Indicaciones", mensajeR);
                            }
                        }
                    }

                    if (!String.IsNullOrEmpty(citaOdontologica.Indicaciones))
                    {
                        if (String.IsNullOrEmpty(citaOdontologica.DescripcionReceta))
                        {
                            var mensajeR = "Debe llenar los medicamentos";
                            if (!string.IsNullOrEmpty(mensajeR))
                            {
                                ModelState.AddModelError("DescripcionReceta", mensajeR);
                            }
                        }
                    }


                    if (ModelState.IsValid)
                    {
                        //guardar los imagenes de las firmas
                        String FirmaConsentimiento = string.Empty;
                        String FirmaDiagnostico    = string.Empty;

                        if (citaOdontologica.FirmaC != null)
                        {
                            if (GetMimeTypes().SingleOrDefault(p => p.Value == citaOdontologica.FirmaC.ContentType && p.Key == "." + citaOdontologica.FirmaC.FileName.Split(".")[citaOdontologica.FirmaC.FileName.Split(".").Count() - 1]).Value != null)
                            {
                                FirmaConsentimiento = UploadFile(citaOdontologica.FirmaC, Encriptacion.Decrypt(citaOdontologica.Codigo), citaOdontologica.Identificacion, "CI");
                            }
                            else
                            {
                                citaOdontologica.FirmaC      = null;
                                ViewData["ExtensionArchivo"] = "Extensión del documento incorrecto";
                            }
                        }

                        if (citaOdontologica.FirmaD != null)
                        {
                            if (GetMimeTypes().SingleOrDefault(p => p.Value == citaOdontologica.FirmaD.ContentType && p.Key == "." + citaOdontologica.FirmaC.FileName.Split(".")[citaOdontologica.FirmaC.FileName.Split(".").Count() - 1]).Value != null)
                            {
                                FirmaDiagnostico = UploadFile(citaOdontologica.FirmaD, Encriptacion.Decrypt(citaOdontologica.Codigo), citaOdontologica.Identificacion, "DG");
                            }
                            else
                            {
                                citaOdontologica.FirmaC      = null;
                                ViewData["ExtensionArchivo"] = "Extensión del documento incorrecto";
                            }
                        }


                        DateTime fecha = Funciones.ObtenerFechaActual("SA Pacific Standard Time");
                        citaOdontologica.Codigo = Encriptacion.Decrypt(citaOdontologica.Codigo);

                        //anamnesis
                        Anamnesis anamnesis          = new Anamnesis();
                        Int64     maxCodigoAnamnesis = 0;
                        maxCodigoAnamnesis  = Convert.ToInt64(_context.Anamnesis.Max(f => f.Codigo));
                        maxCodigoAnamnesis += 1;
                        anamnesis.Codigo    = maxCodigoAnamnesis.ToString("D8");
                        anamnesis.CodigoCitaOdontologica = citaOdontologica.Codigo;
                        anamnesis.MotivoConsulta         = citaOdontologica.MotivoConsulta;
                        anamnesis.EnfermedadActual       = citaOdontologica.EnfermedadActual;
                        anamnesis.Alerta   = citaOdontologica.Alerta;
                        anamnesis.Alergico = citaOdontologica.Alergico;
                        anamnesis.AntecedentesQuirurgicos = citaOdontologica.AntecedentesQuirurgicos;
                        anamnesis.Alergico               = citaOdontologica.Alergico;
                        anamnesis.Medicamentos           = citaOdontologica.Medicamentos;
                        anamnesis.Habitos                = citaOdontologica.Habitos;
                        anamnesis.AntecedentesFamiliares = citaOdontologica.AntecedentesFamiliares;
                        anamnesis.Fuma                   = citaOdontologica.Fuma;
                        anamnesis.Embarazada             = citaOdontologica.Embarazada;
                        anamnesis.UltimaVisitaOdontologo = citaOdontologica.UltimaVisitaOdontologo;
                        anamnesis.Endocrino              = citaOdontologica.Endocrino;
                        anamnesis.Traumatologico         = citaOdontologica.Traumatologico;
                        anamnesis.Fecha                  = fecha;
                        _context.Anamnesis.Add(anamnesis);

                        var anamnesisEnf = _context.AnamnesisEnfermedad.Where(a => a.CodigoAnamnesis == anamnesis.Codigo).ToList();
                        foreach (var item in anamnesisEnf)
                        {
                            _context.AnamnesisEnfermedad.Remove(item);
                        }

                        _context.SaveChanges();

                        //guardar AnamenesisEnefermedad
                        Int64 maxCodigoAe = 0;
                        maxCodigoAe = Convert.ToInt64(_context.AnamnesisEnfermedad.Max(f => f.Codigo));

                        foreach (var enf in enfermedades)
                        {
                            AnamnesisEnfermedad anamnesisEnfermedad = new AnamnesisEnfermedad();
                            maxCodigoAe += 1;
                            anamnesisEnfermedad.Codigo           = maxCodigoAe.ToString("D8");
                            anamnesisEnfermedad.CodigoAnamnesis  = anamnesis.Codigo;
                            anamnesisEnfermedad.CodigoEnfermedad = enf;
                            _context.AnamnesisEnfermedad.Add(anamnesisEnfermedad);
                        }

                        _context.SaveChanges();

                        //diagnostico
                        Diagnostico diagnostico   = new Diagnostico();
                        Int64       maxCodigoDiag = 0;
                        maxCodigoDiag      = Convert.ToInt64(_context.Diagnostico.Max(f => f.Codigo));
                        maxCodigoDiag     += 1;
                        diagnostico.Codigo = maxCodigoDiag.ToString("D8");
                        diagnostico.CodigoCitaOdontologica = citaOdontologica.Codigo;
                        diagnostico.Fecha         = fecha;
                        diagnostico.Pieza         = citaOdontologica.Pieza;
                        diagnostico.Observacion   = citaOdontologica.Observacion;
                        diagnostico.Firma         = FirmaDiagnostico;
                        diagnostico.Acuerdo       = true;
                        diagnostico.Recomendacion = citaOdontologica.Recomendacion;
                        _context.Diagnostico.Add(diagnostico);

                        var diagnosticoCie10 = _context.DiagnosticoCie10.Where(a => a.CodigoDiagnostico == diagnostico.Codigo).ToList();
                        foreach (var item in diagnosticoCie10)
                        {
                            _context.DiagnosticoCie10.Remove(item);
                        }
                        _context.SaveChanges();

                        //guardar diagnosticoCie10
                        Int64 maxCodigoCie = 0;
                        maxCodigoCie  = Convert.ToInt64(_context.DiagnosticoCie10.Max(f => f.Codigo));
                        maxCodigoCie += 1;
                        DiagnosticoCie10 diagCie10 = new DiagnosticoCie10();
                        diagCie10.Codigo            = maxCodigoCie.ToString("D8");
                        diagCie10.CodigoDiagnostico = diagnostico.Codigo;
                        diagCie10.CodigoCie10       = citaOdontologica.CodigoDiagnosticoCie10;
                        _context.DiagnosticoCie10.Add(diagCie10);
                        _context.SaveChanges();

                        //consentimiento informado
                        ConsentimientoInformado consentimientoInformado = new ConsentimientoInformado();
                        Int64 maxCodigoCi = 0;
                        maxCodigoCi  = Convert.ToInt64(_context.ConsentimientoInformado.Max(f => f.Codigo));
                        maxCodigoCi += 1;
                        consentimientoInformado.Codigo = maxCodigoCi.ToString("D8");
                        consentimientoInformado.CodigoCitaOdontologica = citaOdontologica.Codigo;
                        consentimientoInformado.Descripcion            = citaOdontologica.Descripcion;
                        consentimientoInformado.Firma   = FirmaConsentimiento;         //citaOdontologica.FirmaConcentimiento;
                        consentimientoInformado.Acuerdo = true;                        //citaOdontologica.AcuerdoConsentimiento;
                        consentimientoInformado.Fecha   = fecha;
                        _context.Add(consentimientoInformado);
                        _context.SaveChanges();

                        var     codigoReceta   = "";
                        Boolean registroReceta = false;
                        if (!((string.IsNullOrEmpty(citaOdontologica.DescripcionReceta)) && (string.IsNullOrEmpty(citaOdontologica.Indicaciones))))
                        {
                            //receta medica
                            RecetaMedica recetaMedica = new RecetaMedica();
                            Int64        maxCodigoR   = 0;
                            maxCodigoR          = Convert.ToInt64(_context.RecetaMedica.Max(f => f.Codigo));
                            maxCodigoR         += 1;
                            recetaMedica.Codigo = maxCodigoR.ToString("D8");
                            recetaMedica.CodigoCitaOdontologica = citaOdontologica.Codigo;
                            recetaMedica.Descripcion            = citaOdontologica.DescripcionReceta;
                            recetaMedica.Fecha = fecha;
                            if (citaOdontologica.CodigoPlantillaRecetaMedica == "0")
                            {
                                recetaMedica.CodigoPlantillaRecetaMedica = null;
                            }
                            else
                            {
                                recetaMedica.CodigoPlantillaRecetaMedica = citaOdontologica.CodigoPlantillaRecetaMedica;
                            }

                            recetaMedica.Indicaciones = citaOdontologica.Indicaciones;
                            codigoReceta = recetaMedica.Codigo;
                            _context.Add(recetaMedica);
                            _context.SaveChanges();
                            registroReceta = true;
                        }


                        CitaOdontologica citaAntigua = _context.CitaOdontologica.SingleOrDefault(p => p.Codigo == citaOdontologica.Codigo);
                        citaAntigua.Codigo               = citaOdontologica.Codigo;
                        citaAntigua.CodigoPaciente       = citaOdontologica.CodigoPaciente;
                        citaAntigua.CodigoPersonal       = citaOdontologica.CodigoPersonal;
                        citaAntigua.FechaCreacion        = citaOdontologica.FechaCreacion;
                        citaAntigua.Observaciones        = citaOdontologica.Observaciones;
                        citaAntigua.Estado               = "A";
                        citaAntigua.FechaInicio          = citaOdontologica.FechaInicio;
                        citaAntigua.FechaFin             = citaOdontologica.FechaFin;
                        citaAntigua.HoraInicio           = citaOdontologica.HoraInicio;
                        citaAntigua.HoraFin              = citaOdontologica.HoraFin;
                        citaAntigua.UsuarioCreacion      = i.Name;
                        citaAntigua.RegistroRecetaMedica = registroReceta;
                        _context.Update(citaAntigua);

                        _context.SaveChanges();

                        await _auditoria.GuardarLogAuditoria(fecha, i.Name, "Anamnesis", anamnesis.Codigo, "I");

                        await _auditoria.GuardarLogAuditoria(fecha, i.Name, "Diagnostico", diagnostico.Codigo, "I");

                        await _auditoria.GuardarLogAuditoria(fecha, i.Name, "ConsentmientoInformado", consentimientoInformado.Codigo, "I");

                        if (!string.IsNullOrEmpty(codigoReceta))
                        {
                            await _auditoria.GuardarLogAuditoria(fecha, i.Name, "Receta", codigoReceta, "I");
                        }

                        await _auditoria.GuardarLogAuditoria(fecha, i.Name, "CitaOdontologica", citaOdontologica.Codigo, "I");

                        transaction.Commit();

                        //cargar los datos

                        var paciente = _context.Paciente.Where(p => p.Codigo == citaOdontologica.CodigoPaciente).Include(p => p.Facultad).Include(p => p.Carrera).SingleOrDefault();

                        //datos del paciente
                        ViewData["Cedula"]    = paciente.Identificacion;
                        ViewData["Nombre"]    = paciente.NombreCompleto;
                        ViewData["Direccion"] = paciente.Direccion;
                        ViewData["Correo"]    = paciente.MailEpn;
                        ViewData["Telefono"]  = paciente.Celular;
                        if (paciente.Facultad == null)
                        {
                            ViewData["Facultad"] = "";
                            ViewData["Carrera"]  = "";
                        }
                        else
                        {
                            ViewData["Facultad"] = paciente.Facultad.Nombre;
                            ViewData["Carrera"]  = paciente.Carrera.Nombre;
                        }

                        ViewData["CodigoCitaOdontologica"] = citaOdontologica.Codigo;

                        //paciente
                        List <SelectListItem> TipoIdentificacion = new SelectList(_context.TipoIdentificacion.OrderBy(f => f.Nombre), "Codigo", "Nombre").ToList();
                        ViewData["CodigoTipoIdentificacion"] = TipoIdentificacion;

                        List <SelectListItem> Facultad = new SelectList(_context.Facultad.OrderBy(f => f.Nombre), "Codigo", "Nombre").ToList();
                        Facultad.Insert(0, vacio);
                        ViewData["CodigoFacultad"] = Facultad;

                        //anamnesis

                        List <SelectListItem> Enfermedades = null;
                        Enfermedades = new SelectList(_context.Enfermedad.OrderBy(c => c.Nombre).Where(c => c.Estado == true), "Codigo", "Nombre").ToList();
                        ViewData["AnamnesisEnfermedad"] = Enfermedades;

                        //diagnostico
                        List <SelectListItem> Cie10 = new SelectList(_context.Cie10.OrderBy(f => f.CodigoInterno), "Codigo", "CodigoNombre").ToList();                       //.Where(f => f.Nombre.StartsWith("C")).ToList(); //QUITAR LUEGO					;
                        Cie10.Insert(0, vacio);
                        ViewData["CIE10"] = Cie10;

                        //consentimiento informado
                        var PlantillaCI = _context.PlantillaConsentimientoInformado.Where(c => c.Nombre.Contains("Consentimiento Informado")).SingleOrDefault();
                        ViewData["Descripcion"] = PlantillaCI.Descripcion;

                        //receta medica
                        List <SelectListItem> PlantillaRM = new SelectList(_context.PlantillaRecetaMedica.OrderBy(c => c.Nombre), "Codigo", "Nombre").ToList();
                        PlantillaRM.Insert(0, vacio);
                        ViewData["CodigoPlantillaReceta"] = PlantillaRM;

                        //imagen


                        ViewBag.Message = "Save";
                        return(View(citaOdontologica));
                    }
                    else
                    {
                        //cargar los datos

                        var paciente = _context.Paciente.Where(p => p.Codigo == citaOdontologica.CodigoPaciente).Include(p => p.Facultad).Include(p => p.Carrera).SingleOrDefault();

                        //datos del paciente
                        ViewData["Cedula"]    = paciente.Identificacion;
                        ViewData["Nombre"]    = paciente.NombreCompleto;
                        ViewData["Direccion"] = paciente.Direccion;
                        ViewData["Correo"]    = paciente.MailEpn;
                        ViewData["Telefono"]  = paciente.Celular;
                        if (paciente.Facultad == null)
                        {
                            ViewData["Facultad"] = "";
                            ViewData["Carrera"]  = "";
                        }
                        else
                        {
                            ViewData["Facultad"] = paciente.Facultad.Nombre;
                            ViewData["Carrera"]  = paciente.Carrera.Nombre;
                        }

                        ViewData["CodigoCitaOdontologica"] = citaOdontologica.Codigo;

                        //paciente
                        List <SelectListItem> TipoIdentificacion = new SelectList(_context.TipoIdentificacion.OrderBy(f => f.Nombre), "Codigo", "Nombre").ToList();
                        ViewData["CodigoTipoIdentificacion"] = TipoIdentificacion;

                        List <SelectListItem> Facultad = new SelectList(_context.Facultad.OrderBy(f => f.Nombre), "Codigo", "Nombre").ToList();
                        Facultad.Insert(0, vacio);
                        ViewData["CodigoFacultad"] = Facultad;

                        //anamnesis

                        List <SelectListItem> Enfermedades = null;
                        Enfermedades = new SelectList(_context.Enfermedad.OrderBy(c => c.Nombre).Where(c => c.Estado == true), "Codigo", "Nombre").ToList();
                        ViewData["AnamnesisEnfermedad"] = Enfermedades;

                        //diagnostico
                        List <SelectListItem> Cie10 = new SelectList(_context.Cie10.OrderBy(f => f.CodigoInterno), "Codigo", "CodigoNombre").ToList();                       //.Where(f => f.Nombre.StartsWith("C")).ToList(); //QUITAR LUEGO					;
                        Cie10.Insert(0, vacio);
                        ViewData["CIE10"] = Cie10;

                        //consentimiento informado
                        var PlantillaCI = _context.PlantillaConsentimientoInformado.Where(c => c.Nombre.Contains("Consentimiento Informado")).SingleOrDefault();
                        ViewData["Descripcion"] = PlantillaCI.Descripcion;

                        //receta medica
                        List <SelectListItem> PlantillaRM = new SelectList(_context.PlantillaRecetaMedica.OrderBy(c => c.Nombre), "Codigo", "Nombre").ToList();
                        PlantillaRM.Insert(0, vacio);
                        ViewData["CodigoPlantillaReceta"] = PlantillaRM;

                        try
                        {
                            var odontograma = await _context.Odontograma.SingleOrDefaultAsync(f => f.CodigoCitaOdontologica == Encriptacion.Decrypt(citaOdontologica.Codigo));

                            _context.Odontograma.Remove(odontograma);
                            await _context.SaveChangesAsync();
                        }
                        catch (Exception e)
                        {
                            string mens = e.Message;
                            ViewBag.Message = mens;
                        }

                        ViewBag.Message = "Debe revisar los datos de Anamnesis o Receta Medica";

                        return(View(citaOdontologica));
                    }
                }
                catch (Exception e)
                {
                    string mensaje = e.Message;
                    if (e.InnerException != null)
                    {
                        mensaje = MensajesError.UniqueKey(e.InnerException.Message);
                    }

                    ViewBag.Message = mensaje;

                    transaction.Rollback();

                    //eliminar el odontograma si hay algun error
                    //citaOdontologica.Codigo = Encriptacion.Decrypt(citaOdontologica.Codigo);
                    var odontograma = await _context.Odontograma.SingleOrDefaultAsync(f => f.CodigoCitaOdontologica == citaOdontologica.Codigo);

                    _context.Odontograma.Remove(odontograma);
                    await _context.SaveChangesAsync();

                    //cargar los datos
                    var paciente = _context.Paciente.Where(p => p.Codigo == citaOdontologica.CodigoPaciente).Include(p => p.Facultad).Include(p => p.Carrera).SingleOrDefault();

                    //datos del paciente
                    ViewData["Cedula"]    = paciente.Identificacion;
                    ViewData["Nombre"]    = paciente.NombreCompleto;
                    ViewData["Direccion"] = paciente.Direccion;
                    ViewData["Correo"]    = paciente.MailEpn;
                    ViewData["Telefono"]  = paciente.Celular;
                    if (paciente.Facultad == null)
                    {
                        ViewData["Facultad"] = "";
                        ViewData["Carrera"]  = "";
                    }
                    else
                    {
                        ViewData["Facultad"] = paciente.Facultad.Nombre;
                        ViewData["Carrera"]  = paciente.Carrera.Nombre;
                    }

                    ViewData["CodigoCitaOdontologica"] = citaOdontologica.Codigo;

                    //paciente
                    List <SelectListItem> TipoIdentificacion = new SelectList(_context.TipoIdentificacion.OrderBy(f => f.Nombre), "Codigo", "Nombre").ToList();
                    ViewData["CodigoTipoIdentificacion"] = TipoIdentificacion;

                    List <SelectListItem> Facultad = new SelectList(_context.Facultad.OrderBy(f => f.Nombre), "Codigo", "Nombre").ToList();
                    Facultad.Insert(0, vacio);
                    ViewData["CodigoFacultad"] = Facultad;

                    //anamnesis

                    List <SelectListItem> Enfermedades = null;
                    Enfermedades = new SelectList(_context.Enfermedad.OrderBy(c => c.Nombre).Where(c => c.Estado == true), "Codigo", "Nombre").ToList();
                    ViewData["AnamnesisEnfermedad"] = Enfermedades;

                    //diagnostico
                    List <SelectListItem> Cie10 = new SelectList(_context.Cie10.OrderBy(f => f.CodigoInterno), "Codigo", "CodigoNombre").ToList();                   //.Where(f => f.Nombre.StartsWith("C")).ToList(); //QUITAR LUEGO					;
                    Cie10.Insert(0, vacio);
                    ViewData["CIE10"] = Cie10;

                    //consentimiento informado
                    var PlantillaCI = _context.PlantillaConsentimientoInformado.Where(c => c.Nombre.Contains("Consentimiento Informado")).SingleOrDefault();
                    ViewData["Descripcion"] = PlantillaCI.Descripcion;

                    //receta medica
                    List <SelectListItem> PlantillaRM = new SelectList(_context.PlantillaRecetaMedica.OrderBy(c => c.Nombre), "Codigo", "Nombre").ToList();
                    PlantillaRM.Insert(0, vacio);
                    ViewData["CodigoPlantillaReceta"] = PlantillaRM;
                    //fin cargar datos
                    return(View(citaOdontologica));
                }
            }
            else
            {
                return(Redirect("../Identity/Account/Login"));
            }
        }