public ActionResult Agregar(RegistroPacienteCLS registroPacienteCLS)
        {
            int    nRegistrosEncontrados = 0;
            string cedula = registroPacienteCLS.paciente.cedula;

            using (var bd = new BDD_ConsultorioDermatologicoEntities())
            {
                nRegistrosEncontrados = bd.tblPaciente.Where(p => p.cedula.Equals(cedula)).Count();//Verificación de que no exista cédula repetida
            }

            if (!ModelState.IsValid || nRegistrosEncontrados >= 1)
            {
                if (nRegistrosEncontrados >= 1)
                {
                    registroPacienteCLS.mensajeError = "ESTE USUARIO YA SE ENCUENTRA REGISTRADO";
                }
                llenarDropDown();
                //retorno de la vista en caso de errores al llenar un campo
                return(View(registroPacienteCLS));
            }
            else
            {
                using (var bd = new BDD_ConsultorioDermatologicoEntities())
                {
                    int?idContactoEmergencia = null;
                    //Creación de un contacto de emergencia para añadirse al paciente
                    tblContactoEmergencia tblContactoEmergencia = new tblContactoEmergencia();
                    tblContactoEmergencia.nombreContactoEmergencia   = registroPacienteCLS.contactoEmergencia.nombreContactoEmergencia;
                    tblContactoEmergencia.telefonoContactoEmergencia = registroPacienteCLS.contactoEmergencia.telefonoContactoEmergencia;

                    bd.tblContactoEmergencia.Add(tblContactoEmergencia); //Guardado del Contacto de emergencia
                    int?idPaciente = null;                               //Obtencion del id del Contacto de Emergencia para paciente
                    idContactoEmergencia = tblContactoEmergencia.idContactoEmergencia;

                    //Creación de un paciente
                    tblPaciente tblPaciente = new tblPaciente();
                    tblPaciente.nombres                = registroPacienteCLS.paciente.nombres;
                    tblPaciente.apellidos              = registroPacienteCLS.paciente.apellidos;
                    tblPaciente.cedula                 = registroPacienteCLS.paciente.cedula;
                    tblPaciente.fechaNacimiento        = registroPacienteCLS.paciente.fechaNacimiento;
                    tblPaciente.idOrientacionSexual    = registroPacienteCLS.paciente.idOrientacionSexual;
                    tblPaciente.idIdentidadGenero      = registroPacienteCLS.paciente.idIdentidadGenero;
                    tblPaciente.ciudadNacimiento       = registroPacienteCLS.paciente.ciudadNacimiento;
                    tblPaciente.ciudadResidencia       = registroPacienteCLS.paciente.ciudadResidencia;
                    tblPaciente.ocupacion              = registroPacienteCLS.paciente.ocupacion;
                    tblPaciente.profesion              = registroPacienteCLS.paciente.profesion;
                    tblPaciente.idTipoDiscapacidad     = registroPacienteCLS.paciente.idTipoDiscapacidad;
                    tblPaciente.porcentajeDiscapacidad = registroPacienteCLS.paciente.porcentajeDiscapacidad;
                    tblPaciente.idEstadoCivil          = registroPacienteCLS.paciente.idEstadoCivil;
                    tblPaciente.idLateralidad          = registroPacienteCLS.paciente.idLateralidad;
                    tblPaciente.idNivelEducacion       = registroPacienteCLS.paciente.idNivelEducacion;
                    tblPaciente.direccion              = registroPacienteCLS.paciente.direccion;
                    tblPaciente.telefonoPersonal       = registroPacienteCLS.paciente.telefonoPersonal;
                    tblPaciente.telefonoResidencial    = registroPacienteCLS.paciente.telefonoResidencial;
                    tblPaciente.correoElectronico      = registroPacienteCLS.paciente.correoElectronico;
                    tblPaciente.idReligion             = registroPacienteCLS.paciente.idReligion;
                    if (idContactoEmergencia != null)
                    {
                        tblPaciente.idContactoEmergencia = idContactoEmergencia;
                    }
                    tblPaciente.habilitado = 1;

                    bd.tblPaciente.Add(tblPaciente);     //Guardado del paciente en la bddd
                    idPaciente = tblPaciente.idPaciente; //id para la historia clinica

                    int?idAntecedenteReprodMasculino  = null;
                    int?idAntecedenteGinecoObstetrico = null;
                    if (!(registroPacienteCLS.antecedenteReprodMasculino.parejaSexual == null &&
                          registroPacienteCLS.antecedenteReprodMasculino.ets == null))
                    {
                        //Creación de antecedentes reproductivo masculino de ser necesario
                        tblAntecedenteReprodMasculino tblAntecedenteReprodMasculino = new tblAntecedenteReprodMasculino();
                        tblAntecedenteReprodMasculino.ets          = registroPacienteCLS.antecedenteReprodMasculino.ets;
                        tblAntecedenteReprodMasculino.parejaSexual = registroPacienteCLS.antecedenteReprodMasculino.parejaSexual;

                        bd.tblAntecedenteReprodMasculino.Add(tblAntecedenteReprodMasculino);                       //Guardado del antecedente en la bdd
                        idAntecedenteReprodMasculino = tblAntecedenteReprodMasculino.idAntecedenteReprodMasculino; //id para la historia clinica
                    }

                    if (!(registroPacienteCLS.antecedenteGinecoObstetrico.menarquia == null &&
                          registroPacienteCLS.antecedenteGinecoObstetrico.gestas == null &&
                          registroPacienteCLS.antecedenteGinecoObstetrico.partos == null &&
                          registroPacienteCLS.antecedenteGinecoObstetrico.cesarea == null &&
                          registroPacienteCLS.antecedenteGinecoObstetrico.abortos == null &&
                          registroPacienteCLS.antecedenteGinecoObstetrico.hijosVivos == null &&
                          registroPacienteCLS.antecedenteGinecoObstetrico.hijosMuertos == null))
                    {
                        //Creación de antecedentes gineco obstetricos de ser necesario
                        tblAntecedenteGinecoObstetrico tblAntecedenteGinecoObstetrico = new tblAntecedenteGinecoObstetrico();
                        tblAntecedenteGinecoObstetrico.menarquia    = registroPacienteCLS.antecedenteGinecoObstetrico.menarquia;
                        tblAntecedenteGinecoObstetrico.gestas       = registroPacienteCLS.antecedenteGinecoObstetrico.gestas;
                        tblAntecedenteGinecoObstetrico.partos       = registroPacienteCLS.antecedenteGinecoObstetrico.partos;
                        tblAntecedenteGinecoObstetrico.cesarea      = registroPacienteCLS.antecedenteGinecoObstetrico.cesarea;
                        tblAntecedenteGinecoObstetrico.abortos      = registroPacienteCLS.antecedenteGinecoObstetrico.abortos;
                        tblAntecedenteGinecoObstetrico.hijosMuertos = registroPacienteCLS.antecedenteGinecoObstetrico.hijosMuertos;
                        tblAntecedenteGinecoObstetrico.hijosVivos   = registroPacienteCLS.antecedenteGinecoObstetrico.hijosVivos;

                        bd.tblAntecedenteGinecoObstetrico.Add(tblAntecedenteGinecoObstetrico);                        //Guardado del antecedente en la bdd
                        idAntecedenteGinecoObstetrico = tblAntecedenteGinecoObstetrico.idAntecedenteGinecoObstetrico; //id para la historia clinica
                    }

                    //Creación y guardado de la historia clinica
                    tblHistoriaClinica tblHistoriaClinica = new tblHistoriaClinica();
                    tblHistoriaClinica.idPaciente                    = idPaciente;
                    tblHistoriaClinica.idSeguroMedico                = registroPacienteCLS.historiaClinica.idSeguroMedico;
                    tblHistoriaClinica.idTipoSangre                  = registroPacienteCLS.historiaClinica.idTipoSangre;
                    tblHistoriaClinica.antecedenteFamiliarClinico    = registroPacienteCLS.historiaClinica.antecedenteFamiliarClinico;
                    tblHistoriaClinica.antecedenteFamiliarQuirurgico = registroPacienteCLS.historiaClinica.antecedenteFamiliarQuirurgico;
                    tblHistoriaClinica.antecedentePersonalClinico    = registroPacienteCLS.historiaClinica.antecedentePersonalClinico;
                    tblHistoriaClinica.antecedentePersonalQuirurgico = registroPacienteCLS.historiaClinica.antecedentePersonalQuirurgico;
                    tblHistoriaClinica.antecedentePersonalAlergico   = registroPacienteCLS.historiaClinica.antecedentePersonalAlergico;
                    tblHistoriaClinica.antecedentePersonalVacunas    = registroPacienteCLS.historiaClinica.antecedentePersonalVacunas;
                    tblHistoriaClinica.idAntecedenteGinecoObstetrico = idAntecedenteGinecoObstetrico;
                    tblHistoriaClinica.idAntecedenteReprodMasculino  = idAntecedenteReprodMasculino;
                    tblHistoriaClinica.tabaco             = registroPacienteCLS.historiaClinica.tabaco;
                    tblHistoriaClinica.alcohol            = registroPacienteCLS.historiaClinica.alcohol;
                    tblHistoriaClinica.otrasDrogas        = registroPacienteCLS.historiaClinica.otrasDrogas;
                    tblHistoriaClinica.actividadFisica    = registroPacienteCLS.historiaClinica.actividadFisica;
                    tblHistoriaClinica.medicacionHabitual = registroPacienteCLS.historiaClinica.medicacionHabitual;
                    tblHistoriaClinica.habilitado         = 1;

                    bd.tblHistoriaClinica.Add(tblHistoriaClinica);

                    bd.SaveChanges();//Guardar los cambios realizados en la bdd

                    return(RedirectToAction("InformacionPaciente", "HistoriaClinica", new { idPaciente = tblHistoriaClinica.idPaciente }));
                }
            }
        }
        /// <summary>
        /// Accion para obtener y mostrar la información del paciente e historia clinica
        /// </summary>
        /// <param name="idPaciente">id único del paciente</param>
        /// <returns>Vista InformaciónPaciente con los datos personales y de historia clínica</returns>
        public ActionResult InformacionPaciente(int idPaciente)
        {
            llenarDropDown();
            //Creción de objetos con los datos para visualizacion
            ContactoEmergenciaCLS          contactoEmergenciaCLS          = new ContactoEmergenciaCLS();
            AntecedenteGinecoObstetricoCLS antecedenteGinecoObstetricoCLS = new AntecedenteGinecoObstetricoCLS();
            AntecedenteReprodMasculinoCLS  antecedenteReprodMasculinoCLS  = new AntecedenteReprodMasculinoCLS();
            HistoriaClinicaCLS             historiaClinicaCLS             = new HistoriaClinicaCLS();
            PacienteCLS         pacienteCLS         = new PacienteCLS();
            RegistroPacienteCLS registroPacienteCLS = new RegistroPacienteCLS();

            using (var bd = new BDD_ConsultorioDermatologicoEntities())
            {
                //Busqueda de coincidencias con el id de entrada.
                tblPaciente tblPaciente = bd.tblPaciente.Where(p => p.idPaciente.Equals(idPaciente)).First();

                pacienteCLS.idPaciente             = tblPaciente.idPaciente;
                pacienteCLS.nombres                = tblPaciente.nombres;
                pacienteCLS.apellidos              = tblPaciente.apellidos;
                pacienteCLS.cedula                 = tblPaciente.cedula;
                pacienteCLS.fechaNacimiento        = (DateTime)tblPaciente.fechaNacimiento;
                pacienteCLS.idOrientacionSexual    = tblPaciente.idOrientacionSexual;
                pacienteCLS.idIdentidadGenero      = (int)tblPaciente.idIdentidadGenero;
                pacienteCLS.ciudadNacimiento       = tblPaciente.ciudadNacimiento;
                pacienteCLS.ciudadResidencia       = tblPaciente.ciudadResidencia;
                pacienteCLS.ocupacion              = tblPaciente.ocupacion;
                pacienteCLS.profesion              = tblPaciente.profesion;
                pacienteCLS.idTipoDiscapacidad     = tblPaciente.idTipoDiscapacidad;
                pacienteCLS.porcentajeDiscapacidad = (int)tblPaciente.porcentajeDiscapacidad;
                pacienteCLS.idEstadoCivil          = tblPaciente.idEstadoCivil;
                pacienteCLS.idLateralidad          = tblPaciente.idLateralidad;
                pacienteCLS.idNivelEducacion       = tblPaciente.idNivelEducacion;
                pacienteCLS.direccion              = tblPaciente.direccion;
                pacienteCLS.telefonoPersonal       = tblPaciente.telefonoPersonal;
                pacienteCLS.telefonoResidencial    = tblPaciente.telefonoResidencial;
                pacienteCLS.correoElectronico      = tblPaciente.correoElectronico;
                pacienteCLS.idReligion             = (int)tblPaciente.idReligion;
                pacienteCLS.idContactoEmergencia   = (int)tblPaciente.idContactoEmergencia;

                tblContactoEmergencia tblContactoEmergencia = bd.tblContactoEmergencia.Where(p => p.idContactoEmergencia.Equals(pacienteCLS.idContactoEmergencia)).First();

                contactoEmergenciaCLS.nombreContactoEmergencia   = tblContactoEmergencia.nombreContactoEmergencia;
                contactoEmergenciaCLS.telefonoContactoEmergencia = tblContactoEmergencia.telefonoContactoEmergencia;

                tblHistoriaClinica tblHistoriaClinica = bd.tblHistoriaClinica.Where(p => p.idPaciente == tblPaciente.idPaciente).First();

                historiaClinicaCLS.idSeguroMedico                = (int)tblHistoriaClinica.idSeguroMedico;
                historiaClinicaCLS.idTipoSangre                  = (int)tblHistoriaClinica.idTipoSangre;
                historiaClinicaCLS.antecedenteFamiliarClinico    = tblHistoriaClinica.antecedenteFamiliarClinico;
                historiaClinicaCLS.antecedenteFamiliarQuirurgico = tblHistoriaClinica.antecedenteFamiliarQuirurgico;
                historiaClinicaCLS.antecedentePersonalClinico    = tblHistoriaClinica.antecedentePersonalClinico;
                historiaClinicaCLS.antecedentePersonalQuirurgico = tblHistoriaClinica.antecedentePersonalQuirurgico;
                historiaClinicaCLS.antecedentePersonalAlergico   = tblHistoriaClinica.antecedentePersonalAlergico;
                historiaClinicaCLS.antecedentePersonalVacunas    = tblHistoriaClinica.antecedentePersonalVacunas;
                historiaClinicaCLS.idAntecedenteGinecoObstetrico = tblHistoriaClinica.idAntecedenteGinecoObstetrico;
                historiaClinicaCLS.idAntecedenteReprodMasculino  = tblHistoriaClinica.idAntecedenteReprodMasculino;
                historiaClinicaCLS.tabaco             = tblHistoriaClinica.tabaco;
                historiaClinicaCLS.alcohol            = tblHistoriaClinica.alcohol;
                historiaClinicaCLS.otrasDrogas        = tblHistoriaClinica.otrasDrogas;
                historiaClinicaCLS.actividadFisica    = tblHistoriaClinica.actividadFisica;
                historiaClinicaCLS.medicacionHabitual = tblHistoriaClinica.medicacionHabitual;

                if (historiaClinicaCLS.idAntecedenteGinecoObstetrico != null)
                {
                    tblAntecedenteGinecoObstetrico tblAntecedenteGinecoObstetrico = bd.tblAntecedenteGinecoObstetrico.Where(p => p.idAntecedenteGinecoObstetrico.Equals((int)historiaClinicaCLS.idAntecedenteGinecoObstetrico)).First();
                    //Existencia de antecente gineco obsterico
                    antecedenteGinecoObstetricoCLS.menarquia    = tblAntecedenteGinecoObstetrico.menarquia;
                    antecedenteGinecoObstetricoCLS.gestas       = tblAntecedenteGinecoObstetrico.gestas;
                    antecedenteGinecoObstetricoCLS.partos       = tblAntecedenteGinecoObstetrico.partos;
                    antecedenteGinecoObstetricoCLS.cesarea      = tblAntecedenteGinecoObstetrico.cesarea;
                    antecedenteGinecoObstetricoCLS.abortos      = tblAntecedenteGinecoObstetrico.abortos;
                    antecedenteGinecoObstetricoCLS.hijosMuertos = tblAntecedenteGinecoObstetrico.hijosMuertos;
                    antecedenteGinecoObstetricoCLS.hijosVivos   = tblAntecedenteGinecoObstetrico.hijosVivos;
                }
                if (historiaClinicaCLS.idAntecedenteReprodMasculino != null)
                {
                    tblAntecedenteReprodMasculino tblAntecedenteReprodMasculino = bd.tblAntecedenteReprodMasculino.Where(p => p.idAntecedenteReprodMasculino.Equals((int)historiaClinicaCLS.idAntecedenteReprodMasculino)).First();
                    //Existencia de antecente reprod masculino
                    antecedenteReprodMasculinoCLS.ets          = tblAntecedenteReprodMasculino.ets;
                    antecedenteReprodMasculinoCLS.parejaSexual = tblAntecedenteReprodMasculino.parejaSexual;
                }

                registroPacienteCLS.paciente                    = pacienteCLS;
                registroPacienteCLS.contactoEmergencia          = contactoEmergenciaCLS;
                registroPacienteCLS.historiaClinica             = historiaClinicaCLS;
                registroPacienteCLS.antecedenteReprodMasculino  = antecedenteReprodMasculinoCLS;
                registroPacienteCLS.antecedenteGinecoObstetrico = antecedenteGinecoObstetricoCLS;
            }
            return(View(registroPacienteCLS));
        }
        public ActionResult Editar(RegistroPacienteCLS registroPacienteCLS)
        {
            if (!ModelState.IsValid)
            {
                llenarDropDown();
                //retorno de la vista en caso de errores al llenar un campo
                return(View(registroPacienteCLS));
            }
            else
            {
                using (var bd = new BDD_ConsultorioDermatologicoEntities())
                {
                    //Creación de un paciente
                    tblPaciente tblPaciente = bd.tblPaciente.Where(p => p.cedula.Equals(registroPacienteCLS.paciente.cedula)).First();

                    tblPaciente.nombres   = registroPacienteCLS.paciente.nombres;
                    tblPaciente.apellidos = registroPacienteCLS.paciente.apellidos;
                    //tblPaciente.cedula = registroPacienteCLS.paciente.cedula;
                    tblPaciente.fechaNacimiento        = registroPacienteCLS.paciente.fechaNacimiento;
                    tblPaciente.idOrientacionSexual    = registroPacienteCLS.paciente.idOrientacionSexual;
                    tblPaciente.idIdentidadGenero      = registroPacienteCLS.paciente.idIdentidadGenero;
                    tblPaciente.ciudadNacimiento       = registroPacienteCLS.paciente.ciudadNacimiento;
                    tblPaciente.ciudadResidencia       = registroPacienteCLS.paciente.ciudadResidencia;
                    tblPaciente.ocupacion              = registroPacienteCLS.paciente.ocupacion;
                    tblPaciente.profesion              = registroPacienteCLS.paciente.profesion;
                    tblPaciente.idTipoDiscapacidad     = registroPacienteCLS.paciente.idTipoDiscapacidad;
                    tblPaciente.porcentajeDiscapacidad = registroPacienteCLS.paciente.porcentajeDiscapacidad;
                    tblPaciente.idEstadoCivil          = registroPacienteCLS.paciente.idEstadoCivil;
                    tblPaciente.idLateralidad          = registroPacienteCLS.paciente.idLateralidad;
                    tblPaciente.idNivelEducacion       = registroPacienteCLS.paciente.idNivelEducacion;
                    tblPaciente.direccion              = registroPacienteCLS.paciente.direccion;
                    tblPaciente.telefonoPersonal       = registroPacienteCLS.paciente.telefonoPersonal;
                    tblPaciente.telefonoResidencial    = registroPacienteCLS.paciente.telefonoResidencial;
                    tblPaciente.correoElectronico      = registroPacienteCLS.paciente.correoElectronico;
                    tblPaciente.idReligion             = registroPacienteCLS.paciente.idReligion;

                    tblContactoEmergencia tblContactoEmergencia = bd.tblContactoEmergencia.Where(p => p.idContactoEmergencia.Equals((int)tblPaciente.idContactoEmergencia)).First();
                    tblContactoEmergencia.nombreContactoEmergencia   = registroPacienteCLS.contactoEmergencia.nombreContactoEmergencia;
                    tblContactoEmergencia.telefonoContactoEmergencia = registroPacienteCLS.contactoEmergencia.telefonoContactoEmergencia;

                    //Creación y guardado de la historia clinica
                    tblHistoriaClinica tblHistoriaClinica = bd.tblHistoriaClinica.Where(p => p.idPaciente == tblPaciente.idPaciente).First();
                    //tblHistoriaClinica.idPaciente = idPaciente;
                    tblHistoriaClinica.idSeguroMedico                = registroPacienteCLS.historiaClinica.idSeguroMedico;
                    tblHistoriaClinica.idTipoSangre                  = registroPacienteCLS.historiaClinica.idTipoSangre;
                    tblHistoriaClinica.antecedenteFamiliarClinico    = registroPacienteCLS.historiaClinica.antecedenteFamiliarClinico;
                    tblHistoriaClinica.antecedenteFamiliarQuirurgico = registroPacienteCLS.historiaClinica.antecedenteFamiliarQuirurgico;
                    tblHistoriaClinica.antecedentePersonalClinico    = registroPacienteCLS.historiaClinica.antecedentePersonalClinico;
                    tblHistoriaClinica.antecedentePersonalQuirurgico = registroPacienteCLS.historiaClinica.antecedentePersonalQuirurgico;
                    tblHistoriaClinica.antecedentePersonalAlergico   = registroPacienteCLS.historiaClinica.antecedentePersonalAlergico;
                    tblHistoriaClinica.antecedentePersonalVacunas    = registroPacienteCLS.historiaClinica.antecedentePersonalVacunas;
                    if (tblHistoriaClinica.idAntecedenteGinecoObstetrico != null)
                    {
                        //Creación de antecedentes gineco obstetricos de ser necesario
                        tblAntecedenteGinecoObstetrico tblAntecedenteGinecoObstetrico = bd.tblAntecedenteGinecoObstetrico.Where(p => p.idAntecedenteGinecoObstetrico.Equals((int)tblHistoriaClinica.idAntecedenteGinecoObstetrico)).First();
                        tblAntecedenteGinecoObstetrico.menarquia    = registroPacienteCLS.antecedenteGinecoObstetrico.menarquia;
                        tblAntecedenteGinecoObstetrico.gestas       = registroPacienteCLS.antecedenteGinecoObstetrico.gestas;
                        tblAntecedenteGinecoObstetrico.partos       = registroPacienteCLS.antecedenteGinecoObstetrico.partos;
                        tblAntecedenteGinecoObstetrico.cesarea      = registroPacienteCLS.antecedenteGinecoObstetrico.cesarea;
                        tblAntecedenteGinecoObstetrico.abortos      = registroPacienteCLS.antecedenteGinecoObstetrico.abortos;
                        tblAntecedenteGinecoObstetrico.hijosMuertos = registroPacienteCLS.antecedenteGinecoObstetrico.hijosMuertos;
                        tblAntecedenteGinecoObstetrico.hijosVivos   = registroPacienteCLS.antecedenteGinecoObstetrico.hijosVivos;
                    }
                    if (tblHistoriaClinica.idAntecedenteReprodMasculino != null)
                    {
                        tblAntecedenteReprodMasculino tblAntecedenteReprodMasculino = bd.tblAntecedenteReprodMasculino.Where(p => p.idAntecedenteReprodMasculino.Equals((int)tblHistoriaClinica.idAntecedenteReprodMasculino)).First();
                        tblAntecedenteReprodMasculino.ets          = registroPacienteCLS.antecedenteReprodMasculino.ets;
                        tblAntecedenteReprodMasculino.parejaSexual = registroPacienteCLS.antecedenteReprodMasculino.parejaSexual;
                    }
                    tblHistoriaClinica.tabaco             = registroPacienteCLS.historiaClinica.tabaco;
                    tblHistoriaClinica.alcohol            = registroPacienteCLS.historiaClinica.alcohol;
                    tblHistoriaClinica.otrasDrogas        = registroPacienteCLS.historiaClinica.otrasDrogas;
                    tblHistoriaClinica.actividadFisica    = registroPacienteCLS.historiaClinica.actividadFisica;
                    tblHistoriaClinica.medicacionHabitual = registroPacienteCLS.historiaClinica.medicacionHabitual;
                    tblHistoriaClinica.habilitado         = 1;

                    bd.SaveChanges();//Guardar los cambios realizados en la bdd
                    return(RedirectToAction("InformacionPaciente", "HistoriaClinica", new { idPaciente = tblHistoriaClinica.idPaciente }));
                }
            }
        }