public bool RegistrarAutorizacion(Paciente objPaciente, Autorizacion objAutorizacion, vw2_SolicitudAutorizacion objSolicitudAutorizacion, vw2_SolicitudAutorizacionDetalle objSolicitudAutorizacionDetalle) { bool seProcesaronTodos; using (TransactionScope transactionScope = new TransactionScope()) { #region 'Guardar Paciente' PacienteBL objPacienteBL = new PacienteBL(); objPaciente = objPacienteBL.Guardar(objPaciente); #endregion #region 'Registrar Autorizacion' objAutorizacion.PacienteId = objPaciente.PacienteId; objAutorizacion.FechaInicio = objAutorizacion.Fecha; TratamientoBL objTratamientoBL = new TratamientoBL(); Tratamiento objTratamiento2 = objTratamientoBL.GetTratamientoPorIdVersion(objAutorizacion.TratamiendoId, objSolicitudAutorizacion.Fecha_Solicitud); if (objAutorizacionDA.ExisteAutorizacion(objTratamiento2.CadenaId, objSolicitudAutorizacionDetalle.FaseId, objAutorizacion.EstablecimientoId, objAutorizacion.PacienteId)) { throw new Exception("No se registro la autorizacion, paciente ya tiene el tratamiento autorizado"); } else { objAutorizacion = objAutorizacionDA.RegistrarAutorizacion(objAutorizacion); } #endregion #region 'Aprobar Detalle Solicitud' SolicitudAutorizacionDetalleDA objSolicitudAutorizacionDetalleDA = new SolicitudAutorizacionDetalleDA(); objSolicitudAutorizacionDetalle.AutorizacionId = objAutorizacion.AutorizacionId; objSolicitudAutorizacionDetalleDA.AprobarDetalleSolicitudAutorizacion(objSolicitudAutorizacionDetalle); #endregion #region 'Actualizar Solicitud' SolicitudAutorizacionCabeceraDA objSolicitudAutorizacionCabeceraDA = new SolicitudAutorizacionCabeceraDA(); seProcesaronTodos = objSolicitudAutorizacionDetalleDA.SeProcesaronTodos(objSolicitudAutorizacion.Nro_Solicitud); if (seProcesaronTodos) { objSolicitudAutorizacion.Fecha_Procesado = DatosBL.GetDate(); objSolicitudAutorizacion.Procesado = true; } objSolicitudAutorizacionCabeceraDA.Actualizar(objSolicitudAutorizacion); #endregion #region 'Registrar DX Asociado' PaqueteBL objPaqueteBL = new PaqueteBL(); if (objPaqueteBL.ExisteIdDiagnosticoAsociado(objSolicitudAutorizacion.EstablecimientoId)) { int tratamientoId = objPaqueteBL.GetIdDiagnosticoAsociado(objSolicitudAutorizacion.EstablecimientoId); if (!objAutorizacionDA.ExisteDiagnosticoAsociado(tratamientoId, objSolicitudAutorizacion.EstablecimientoId, objPaciente.PacienteId)) { Tratamiento objTratamiento = objTratamientoBL.GetTratamientoPorIdVersion(tratamientoId, objSolicitudAutorizacion.Fecha_Solicitud); Autorizacion objAutorizacionDxAsociado = new Autorizacion(); objAutorizacionDxAsociado.Adicional = false; objAutorizacionDxAsociado.Anulado = false; objAutorizacionDxAsociado.ControlaCantidad = false; objAutorizacionDxAsociado.DiagnosticoAsociado = true; objAutorizacionDxAsociado.EstablecimientoId = objSolicitudAutorizacion.EstablecimientoId; objAutorizacionDxAsociado.Estado = "A"; objAutorizacionDxAsociado.Fecha = objAutorizacion.Fecha; objAutorizacionDxAsociado.FechaInicio = objAutorizacionDxAsociado.Fecha; objAutorizacionDxAsociado.Modalidad = "R"; objAutorizacionDxAsociado.Monto = objTratamiento.Monto; objAutorizacionDxAsociado.PacienteId = objPaciente.PacienteId; objAutorizacionDxAsociado.Tipo = "P"; objAutorizacionDxAsociado.TipoAutorizacionId = Convert.ToByte(objTratamiento.TipoAutorizacionId); objAutorizacionDxAsociado.TratamiendoId = objTratamiento.TratamientoId; objAutorizacionDxAsociado.UsuarioCreacion = objAutorizacion.UsuarioCreacion; objAutorizacionDxAsociado.Version = objTratamiento.Version; objAutorizacionDxAsociado.Nro_Solicitud = objSolicitudAutorizacion.Nro_Solicitud; objAutorizacionDxAsociado.FechaSolicitud = objSolicitudAutorizacion.Fecha_Solicitud; objAutorizacionDxAsociado.Vigencia = Convert.ToDateTime(objAutorizacionDxAsociado.FechaInicio).AddMonths(Convert.ToInt32(objTratamiento.Vigencia)); objAutorizacionDA.RegistrarAutorizacion(objAutorizacionDxAsociado); } } else { throw new Exception("No se registro la autorizacion, no existe diagnostico asociado para el establecimiento"); } #endregion transactionScope.Complete(); } return(seProcesaronTodos); }