示例#1
0
        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);
        }