public string ProcesarReglasDeCantidad(Autorizacion autorizacion, IEnumerable<Regla> reglas) { foreach (var r in reglas) { switch (r.EntidadAfectada) { case TipoEntidadAfectada.Cobertura: { //Verificar si alguna de las coberturas de la autorizacion esta en regla antes de validarla break; } case TipoEntidadAfectada.Prestacion: { //Verificar si alguna de las prestaciones de la autorizacion esta en regla antes de validarla break; } case TipoEntidadAfectada.SubGrupo: { break; } case TipoEntidadAfectada.Grupo: { break; } case TipoEntidadAfectada.Sexo: { break; } case TipoEntidadAfectada.Edad: { break; } case TipoEntidadAfectada.Afiliado: { break; } case TipoEntidadAfectada.Prestadora: { break; } } } return ""; }
public JustificacionResult CubreUnaParte(Autorizacion a) { JustificacionResult r = new JustificacionResult(); r.resumen = string.Format("ARS IA, cubre ({0}RD$) de ({1}RD$) Solicitado por {2} {3}, Hoy {4} por concepto servicios de tipo {5} prestados en fecha {6}", a.MontoAprobado, a.MontoSolicitado, adjetivo(a.Afiliado), a.Afiliado.NombreCompleto, DateTime.Now.ToShortDateString(), a.TipoAutorizacion.Nombre, a.FechaServicio.ToShortDateString()); if (!string.IsNullOrEmpty(a.RulesAppliances)) { r.detalle.Add(a.RulesAppliances); } var fd = FormatPrestaciones(a.Prestaciones); r.detalle.AddRange(fd); r.Autorizacion = ProjectarAutorizacionForInsert(a); r.Procede = true; return r; }
public AutorizacionValidator(ArsDataContext db, Autorizacion autorizacion) { this.db = db; this.afiliadoService = new AfiliadoService(db); this.afiliado = db.Afiliados.Single(p => p.Id == autorizacion.AfiliadoId); this.autorizacion = autorizacion; }
public void InitializeAutorizacionMedicamentos(Autorizacion autorizacion) { InitializeAutorizacion(autorizacion); autorizacion.FechaAutorizacion = DateTime.Now; autorizacion.FechaServicio = DateTime.Now; autorizacion.TipoAutorizacionId = 12; }
private void InitializeAutorizacion(Autorizacion autorizacion) { autorizacion.PrestadoraId = this.Usuario.UsuariosPrestadoras.First().PrestadoraId; autorizacion.UsuarioId = Usuario.Id; foreach (var p in autorizacion.Prestaciones) { p.UsuarioId = Usuario.Id; p.FechaCreacion = DateTime.Now; } }
void Init(Autorizacion a) { a.FechaCreacion = DateTime.Now; a.FechaAutorizacion = DateTime.Now; a.UsuarioId = this.Usuario.Id; foreach (var p in a.Prestaciones) { p.FechaCreacion = DateTime.Now; p.UsuarioId = this.Usuario.Id; } }
public JustificacionResult CubreTodo(Autorizacion a) { JustificacionResult r = new JustificacionResult(); r.resumen = string.Format("Ars IA, cubre por completo a {0} {1} por los servicios médicos prestados. Solicitud Por un monto de {2}", adjetivo(a.Afiliado), a.Afiliado.NombreCompleto, a.MontoAprobado); r.Autorizacion = ProjectarAutorizacionForInsert(a); r.Procede = true; return r; }
public ActionResult Solicitar(Autorizacion autorizacion) { Fill(autorizacion); MotorInferencia engine = new MotorInferencia(); Justificador jf = new Justificador(); var a = engine.Procesar(autorizacion); var result = jf.ExtraerResultado(a); return Json(result, JsonRequestBehavior.AllowGet); }
void Fill(Autorizacion a) { ArsDataContext db = new ArsDataContext(); a.Afiliado = db.Afiliados.Single(p => p.Id == a.AfiliadoId); a.TipoAutorizacion = db.TiposAutorizaciones.Single(p => p.Id == a.TipoAutorizacionId); //a.Diagnostico = db.Diagnosticos.Single(p => p.Id == a.DiagnosticoId); a.Prestadora = db.Prestadoras.Single(p => p.Id == a.PrestadoraId); foreach (var pr in a.Prestaciones) { pr.Prestacion = db.Prestaciones.Single(p => p.Id == pr.PrestacionId); pr.Autorizacion = a; } }
public string Procesar(Autorizacion autorizacion) { var prestadora = autorizacion.Prestadora; var grupos = autorizacion.Prestaciones.Select(p => p.Prestacion.SubGrupo.Grupo); var subGrupos = autorizacion.Prestaciones.Select(p => p.Prestacion.SubGrupo); var prestaciones = autorizacion.Prestaciones; var coberturas = autorizacion.Prestaciones.Select(p => p.Prestacion.Cobertura); var afiliado = autorizacion.Afiliado; var reglas = reglasRepository.ReglasVigentes.OrderBy(p => p.TipoRegla); return ""; }
public ActionResult Guardar(Autorizacion autorizacion) { AutorizacionService service = new AutorizacionService(new ArsDataContext()); Init(autorizacion); service.Crear(autorizacion); if (autorizacion.Id > 0) { Justificador jf = new Justificador(); return Json(jf.MostrarAutorizacion(autorizacion), JsonRequestBehavior.AllowGet); } else { throw new InvalidOperationException("No se pudo crear la autorizacion"); } }
public decimal Balance(int tipoAutorizacionId, string subGrupoId, Autorizacion a, decimal limite) { var fechas = StaticHelpers.GetRangoAnual(a.Afiliado.FechaAfiliacion, a.FechaServicio); AfiliadoService service = new AfiliadoService(new ArsDataContext()); var fechaInicial = fechas[0]; var fechaFinal = fechas[1]; var consumido = a.Afiliado .Autorizaciones .Where(p => (p.TipoAutorizacionId == tipoAutorizacionId) && p.Disponible && p.FechaServicio >= fechaInicial && p.FechaServicio <= fechaFinal) .SelectMany(p => p.Prestaciones.Where(q => (subGrupoId == null) || (q.Prestacion.SubGrupoId == subGrupoId) && q.Disponible)) .Sum(p => p.Aprobado); consumido += a.Prestaciones.Where(p => p.Aprobado > 0).Sum(p => p.Aprobado); return limite - consumido < 0 ? 0 : limite - consumido; }
dynamic Project(Autorizacion a) { return new { Numero = a.Id, Carne = a.Afiliado.Id, Cantidad = a.Prestaciones.Count, TipoAutorizacion = a.TipoAutorizacion.Nombre, Solicitado = a.MontoSolicitado, Aprobado = a.MontoAprobado, CoPago = a.MontoSolicitado - a.MontoAprobado, a.Afiliado.NombreCompleto, FechaAutorizacion = a.FechaAutorizacion.ToShortDateString(), FechaServicio = a.FechaServicio.ToShortDateString(), a.MontoAprobado, a.MontoSolicitado, a.Prestadora.Nombre, a.Disponible, Prestaciones = a.Prestaciones.Select(p => Project(p)) }; }
public dynamic ProyectarAutorizacion(Autorizacion autorizacion) { //Fill(autorizacion); return autorizacion == null ? null : new { autorizacion.Id, FechaServicio = autorizacion.FechaServicio.ToString("dd/MM/yyyy"), Afiliado = ProyectarAfiliado(autorizacion.Afiliado), autorizacion.TipoAutorizacionId, TipoAutorizacion = autorizacion.TipoAutorizacion.Nombre, autorizacion.DiagnosticoId, Diagnostico = autorizacion.Diagnostico == null ? null : autorizacion.Diagnostico.Descripcion, autorizacion.Contacto, autorizacion.MontoAprobado, autorizacion.Comentario, Prestaciones = autorizacion.Prestaciones.Where(p => p.Disponible).Select(p => ProyectarPrestacionAutorizacion(p)).ToList(), Estado = autorizacion.Disponible ? "Disponible" : "Cancelada", autorizacion.Usuario.Login, autorizacion.AccidenteTransito, autorizacion.AccidenteLaboral }; }
public void Crear(Autorizacion autorizacion) { db.Autorizaciones.Add(autorizacion); db.SaveChanges(); }
public dynamic ExtraerResultado(Autorizacion a) { string resumen = string.Empty; List<string> detalle = new List<string>(); if (a.MontoAprobado == 0) { return NoCubreNada(a); } else { if (a.MontoAprobado == a.MontoSolicitado) { return CubreTodo(a); } else { return CubreUnaParte(a); } } }
public dynamic MostrarAutorizacion(Autorizacion a) { return new { a.Id, a.MontoAprobado, a.MontoSolicitado, Prestaciones = a.Prestaciones.Count(), }; }
public string ProjectMensajeCreacion(Autorizacion autorizacion) { return string.Format("Autorización creada satisfactoriamente. \n número ({0}) por un monto de ({1} RD$), \n Prestadora (\"{2}\").", autorizacion.Id, autorizacion.MontoAprobado, autorizacion.Prestadora.Nombre == null ? "foo" : autorizacion.Prestadora.Nombre); }
public JustificacionResult NoCubreNada(Autorizacion a) { JustificacionResult r = new JustificacionResult(); r.resumen = string.Format("Lo sentimos, no podemos cubrir {0} {1} en ninguno de los servicios solicitados. A continuación mas detalle", adjetivo(a.Afiliado), a.Afiliado.NombreCompleto); if (!string.IsNullOrEmpty(a.RulesAppliances)) r.detalle.Add(a.RulesAppliances); var fd = FormatPrestaciones(a.Prestaciones); r.detalle.AddRange(fd); r.Procede = false; return r; }
public dynamic ProjectarAutorizacionForInsert(Autorizacion a) { return new { a.PrestadoraId, a.AfiliadoId, a.FechaAutorizacion, a.FechaServicio, a.TipoAutorizacionId, a.UsuarioId, a.DiagnosticoId, a.Contacto, a.Comentario, a.AccidenteTransito, a.AccidenteLaboral, a.RulesAppliances, Prestaciones = a.Prestaciones.Select(p => new { p.PrestacionId, p.Cantidad, p.Tarifa, p.Aprobado, Simon = p.Prestacion.Cobertura.SIMON, Nombre = p.Prestacion.Cobertura.Nombre, CoPago = p.Tarifa - p.Aprobado, p.RulesAppliances, p.UsuarioId }) }; }