public Boolean ActualizarSeguimientoCasoSevero(Decimal ID_ACCIDENTE,
                                                       String RIESGO_GENERADOR,
                                                       String TIPO_ACCIDENTE,
                                                       String TIPO_LESION,
                                                       String PARTE_CUERPO,
                                                       String AGENTE_LESION,
                                                       String MECANISMO_LESION,
                                                       String SITIO,
                                                       String COND_INSEGURA,
                                                       String ACTO_INSEGURO,
                                                       String FACTORES_TRABAJO,
                                                       String FACTORES_PERSONALES,
                                                       Decimal ID_INCAPACIDAD,
                                                       List <DetalleSeguimientoAccidente> listaDetallesSeguimiento,
                                                       String NOMBRE_ACCIDENTE,
                                                       Programa.Areas ID_AREA,
                                                       List <FactorCausaAccidente> listaFactores)
        {
            Boolean correcto = true;

            Conexion conexion = new Conexion(Empresa);

            conexion.IniciarTransaccion();

            try
            {
                if (ActualizarRegistroProgSeguimientoAccidentes(ID_ACCIDENTE, RIESGO_GENERADOR, TIPO_ACCIDENTE, TIPO_LESION, PARTE_CUERPO, AGENTE_LESION, MECANISMO_LESION, SITIO, COND_INSEGURA, ACTO_INSEGURO, FACTORES_TRABAJO, FACTORES_PERSONALES, ID_INCAPACIDAD, conexion) == false)
                {
                    correcto = false;
                    conexion.DeshacerTransaccion();
                }
                else
                {
                    Programa _prog = new Programa(Empresa, Usuario);
                    foreach (DetalleSeguimientoAccidente detalleAccidente in listaDetallesSeguimiento)
                    {
                        if (detalleAccidente.GENERA_COMPROMISO == true)
                        {
                            detalleAccidente.ID_COMPROMISO_GENERADO = _prog.AdicionarRegistroCompromisoEnActividad(ID_ACCIDENTE, NOMBRE_ACCIDENTE, Programa.TiposGeneraCompromiso.ACCIDENTE.ToString(), detalleAccidente.SEGUIMIENTO, detalleAccidente.ENCARGADO_COMPROMISO, detalleAccidente.FECHA_COMPROMISO, detalleAccidente.OBSERVACIONES, MaestraCompromiso.EstadosCompromiso.ABIERTO.ToString(), ID_AREA.ToString(), conexion);

                            if (detalleAccidente.ID_COMPROMISO_GENERADO <= 0)
                            {
                                conexion.DeshacerTransaccion();
                                correcto     = false;
                                MensajeError = _prog.MensajeError;
                                break;
                            }
                        }
                        else
                        {
                            detalleAccidente.ID_COMPROMISO_GENERADO = 0;
                        }

                        if (correcto == true)
                        {
                            Decimal ID_DETALLE_SEGUIMIENTO = AdicionarRegistroProgDetSegAccidente(ID_ACCIDENTE, detalleAccidente.FECHA_SEGUIMIENTO, detalleAccidente.SEGUIMIENTO, detalleAccidente.GENERA_COMPROMISO, detalleAccidente.ID_COMPROMISO_GENERADO, conexion);

                            if (ID_DETALLE_SEGUIMIENTO <= 0)
                            {
                                conexion.DeshacerTransaccion();
                                correcto     = false;
                                ID_ACCIDENTE = 0;
                                break;
                            }
                        }
                    }

                    if (correcto == true)
                    {
                        String IDS_CAUSAS = "";
                        foreach (FactorCausaAccidente factor in listaFactores)
                        {
                            Decimal ID_RELACION = AdicionarFactorAUnAccidente(ID_ACCIDENTE, factor.ID_CAUSA, factor.VALOR_ITEM, conexion);

                            if (String.IsNullOrEmpty(IDS_CAUSAS) == true)
                            {
                                IDS_CAUSAS = factor.ID_CAUSA.ToString();
                            }
                            else
                            {
                                IDS_CAUSAS += "," + factor.ID_CAUSA.ToString();
                            }

                            if (ID_RELACION <= 0)
                            {
                                conexion.DeshacerTransaccion();
                                correcto     = false;
                                ID_ACCIDENTE = 0;
                                break;
                            }
                        }

                        if (correcto == true)
                        {
                            if (DesactivarFactoresRelacionadosConAccidente(ID_ACCIDENTE, IDS_CAUSAS, conexion) == false)
                            {
                                conexion.DeshacerTransaccion();
                                correcto     = false;
                                ID_ACCIDENTE = 0;
                            }
                        }
                    }
                }

                if (correcto == true)
                {
                    conexion.AceptarTransaccion();
                }
            }
            catch (Exception ex)
            {
                conexion.DeshacerTransaccion();
                MensajeError = ex.Message;
                correcto     = false;
            }
            finally
            {
                conexion.Desconectar();
            }

            return(correcto);
        }