public DTO_RESULTADO_ACTUALIZACION_FICHA ActualizarCargaPrestacionHumana(int IdCargaPrestacionHumanaDetalle,
            string Ficha, string Nombre, string FechaRecepcion, string Telefono, string Medico,
            string Procedencia, string Prevision, string Garantia, string Pendiente, string Pagado,
            string Total, string Recepcion, string Edad, string Rut,
            int IdCargaPrestacionesDetalleEstado, string MensajeError,
            List<DTOExamen> Examenes)
        {
            Init();
            try
            {
                //ISException.RegisterExcepcion("FechaRecepcion " + FechaRecepcion);
                //ISException.RegisterExcepcion("FechaResultados " + FechaResultados);

                using (LQCEEntities context = new LQCEEntities())
                {
                    RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE _RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE = new RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE(context);
                    RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO _RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO = new RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO(context);

                    var objEstadoDetalle = _RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO.GetById(IdCargaPrestacionesDetalleEstado);
                    if (objEstadoDetalle == null)
                        throw new Exception("No se encuentra estado de detalle");

                    var objDetalle = _RepositorioCARGA_PRESTACIONES_HUMANAS_DETALLE.GetByIdWithReferencesFull(IdCargaPrestacionHumanaDetalle);
                    if (objDetalle.CARGA_PRESTACIONES_ENCABEZADO.CARGA_PRESTACIONES_ESTADO.ID != (int)ENUM_CARGA_PRESTACIONES_ESTADO.Pendiente)
                        throw new Exception("La carga seleccionada no se encuentra en proceso de Revisión Pendiente");

                    objDetalle.FICHA = Ficha;
                    objDetalle.NOMBRE = Nombre;
                    objDetalle.FECHA_RECEPCION = FechaRecepcion;
                    objDetalle.TELEFONO = Telefono;
                    objDetalle.MEDICO = Medico;
                    objDetalle.PROCEDENCIA = Procedencia;
                    objDetalle.PREVISION = Prevision;
                    objDetalle.GARANTIA = Garantia;
                    objDetalle.PENDIENTE = Pendiente;
                    objDetalle.PAGADO = Pagado;
                    objDetalle.TOTAL = Total;
                    objDetalle.RECEPCION = Recepcion;
                    objDetalle.EDAD = Edad;
                    objDetalle.RUT = Rut;
                    objDetalle.CARGA_PRESTACIONES_DETALLE_ESTADO = objEstadoDetalle;
                    objDetalle.MENSAJE_ERROR = MensajeError;
                    context.ApplyPropertyChanges("CARGA_PRESTACIONES_HUMANAS_DETALLE", objDetalle);

                    // Eliminar filas de examenes
                    foreach (var objExamen in objDetalle.CARGA_PRESTACIONES_HUMANAS_EXAMEN.Where(obj => obj.ACTIVO && !Examenes.Any(dtoExamen => dtoExamen.ID == obj.ID)).ToList())
                    {
                        objExamen.ACTIVO = false;
                        context.ApplyPropertyChanges("CARGA_PRESTACIONES_HUMANAS_EXAMEN", objExamen);
                    }

                    // Actualizar filas de examenes
                    foreach (var objExamen in objDetalle.CARGA_PRESTACIONES_HUMANAS_EXAMEN.Where(obj => obj.ACTIVO && Examenes.Any(dtoExamen => dtoExamen.ID == obj.ID)).ToList())
                    {
                        var dtoExamen = Examenes.First(d => d.ID == objExamen.ID);
                        objExamen.NOMBRE_EXAMEN = dtoExamen.NOMBRE_EXAMEN;
                        objExamen.VALOR_EXAMEN = dtoExamen.VALOR_EXAMEN;
                        objExamen.ACTIVO = true;
                        context.ApplyPropertyChanges("CARGA_PRESTACIONES_HUMANAS_EXAMEN", objExamen);
                    }

                    // Nuevas filas de examenes
                    foreach (var dtoExamen in Examenes.Where(dto => !objDetalle.CARGA_PRESTACIONES_HUMANAS_EXAMEN.Any(obj => obj.ID == dto.ID)).ToList())
                    {
                        CARGA_PRESTACIONES_HUMANAS_EXAMEN objExamen = new CARGA_PRESTACIONES_HUMANAS_EXAMEN();
                        objExamen.CARGA_PRESTACIONES_HUMANAS_DETALLE = objDetalle;
                        objExamen.NOMBRE_EXAMEN = dtoExamen.NOMBRE_EXAMEN;
                        objExamen.VALOR_EXAMEN = dtoExamen.VALOR_EXAMEN;
                        objExamen.ACTIVO = true;
                        objExamen.FECHA_ACTUALIZACION = DateTime.Now;
                        context.AddToCARGA_PRESTACIONES_HUMANAS_EXAMEN(objExamen);
                    }

                    DTO_RESULTADO_ACTUALIZACION_FICHA dtoResultado = new DTO_RESULTADO_ACTUALIZACION_FICHA();
                    dtoResultado.ERRORES_VALIDACION = ValidarPrestacionHumana(context, objDetalle);
                    dtoResultado.RESULTADO = !dtoResultado.ERRORES_VALIDACION.Any();

                    context.SaveChanges();

                    return dtoResultado;
                }
            }
            catch (Exception ex)
            {
                ISException.RegisterExcepcion(ex);
                Error = ex.Message;
                throw ex;
            }
        }
 private void AgregarExamenHumano(LQCEEntities context, CARGA_PRESTACIONES_HUMANAS_DETALLE objDetalle, DataRow item, string ColumnaExamen, string ColumnaValor)
 {
     if (!string.IsNullOrEmpty(item[ColumnaExamen].ToString()) || !string.IsNullOrEmpty(item[ColumnaValor].ToString()))
     {
         CARGA_PRESTACIONES_HUMANAS_EXAMEN objExamen = new CARGA_PRESTACIONES_HUMANAS_EXAMEN();
         objExamen.CARGA_PRESTACIONES_HUMANAS_DETALLE = objDetalle;
         objExamen.NOMBRE_EXAMEN = item[ColumnaExamen].ToString();
         objExamen.VALOR_EXAMEN = item[ColumnaValor].ToString();
         objExamen.ACTIVO = true;
         objExamen.FECHA_ACTUALIZACION = DateTime.Now;
         objExamen.EXAMEN = null;
         context.AddToCARGA_PRESTACIONES_HUMANAS_EXAMEN(objExamen);
     }
 }