protected override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     if (filterContext.HttpContext.Session["usuario"] != null)
     {
         Debug.WriteLine("USUARIO NO ES NULL...");
         paciente = (string)filterContext.HttpContext.Session["usuario"];
         tenant = (string)filterContext.HttpContext.Session["tenant"];
         fabrica = new FabricaSAREM(tenant);
     }
     else
     {
         Debug.WriteLine("USUARIO NULL...");
         filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "GetLogOff", controller = "Account" }));
     }
 }
Exemple #2
0
        public static void InitializeClass(TestContext tc)
        {
            try
            {
                var context = new SAREMAdminContext();
                context.dropSchema(tenant);
                SARMContext.createTenant(tenant);
            }
            catch (Exception E)
            {
                Debug.WriteLine(E.Message);
            }

            db = SARMContext.getTenant(tenant);

            comunicaciones.ForEach(c => db.comunicaciones.Add(c));
            db.SaveChanges();
            Debug.WriteLine("Comunicaciones agregados...");

            eventos.ForEach(e => db.eventos.Add(e));
            eventosop.ForEach(e => db.eventos.Add(e));
            db.SaveChanges();
            Debug.WriteLine("Eventos agregados...");

            List<Pais> naciones = new List<Pais>
            {
                new Pais { PaisID = "UY", nombre = "Uruguay" },
                new Pais { PaisID = "BR", nombre = "Brasil" }
            };
            naciones.ForEach(n => db.paises.Add(n));
            db.SaveChanges();
            Debug.WriteLine("Paises agregados...");

            List<Paciente> pacientes = new List<Paciente>
            {   /*
                new Paciente{ PacienteID="50548305",
                    FN=new DateTime(1991,6,22),
                    sexo=Sexo.MASCULINO.ToString(),
                    nombre="Leonardo Clavijo",
                    PaisID = naciones.First().PaisID
                },*/
                new Paciente{ PacienteID="50548306",
                    FN=new DateTime(1991,6,22),
                    sexo=Sexo.FEMENINO.ToString(),
                    nombre="Kali la diosa",
                    PaisID = naciones.First().PaisID
                },
                  new Paciente{ PacienteID="50548307",
                    FN=new DateTime(1990,10,11),
                    sexo=Sexo.FEMENINO.ToString(),
                    nombre="Valentina Da Silva",
                    PaisID = naciones.First().PaisID
                },
                new Paciente{ PacienteID="50548308",
                    FN=new DateTime(1990,11,11),
                    sexo=Sexo.MASCULINO.ToString(),
                    nombre="Jorge Perez",
                    PaisID = naciones.First().PaisID
                },
                new Paciente{ PacienteID="51130115",
                    FN=new DateTime(1990,11,11),
                    sexo=Sexo.FEMENINO.ToString(),
                    nombre="Juana Alvarez",
                    PaisID = naciones.First().PaisID
                }
            };
            //lista
            pacientes.ForEach(p => fabrica.ipacientes.altaPaciente(p));
            db.SaveChanges();
            Debug.WriteLine("Pacientes agregados...");

            //custom agrego 20 pacientes
            List<Paciente> customs = new List<Paciente>();
            for (int i = 0; i < 20; i++)
            {
                Paciente template = new Paciente
                {
                    PacienteID = i.ToString(),
                    FN = new DateTime(1991, 6, 22),
                    sexo = Sexo.MASCULINO.ToString(),
                    nombre = "Leonardo Clavijo" + i.ToString(),
                    PaisID = naciones.First().PaisID
                };
                customs.Add(template);
            }
            customs.ForEach(x =>db.pacientes.Add(x));

            Debug.WriteLine("Pacientes agregados...");

            //especialidades
            List<Especialidad> especialidades = new List<Especialidad>
            {
                new Especialidad{ tipo="Esp1", descripcion="especialidad 1"},
                new Especialidad{ tipo="Esp2", descripcion="especialidad 2"},
                new Especialidad{ tipo="Esp3", descripcion="especialidad 3"},
                new Especialidad{ tipo="Esp4", descripcion="especialidad 4"}
            };
            especialidades.ForEach(e => db.especialidades.Add(e));
            db.SaveChanges();
            Debug.WriteLine("Especialidades agregados...");

            //funcionarios
            List<Medico> funcionarios = new List<Medico>
            {
                new Medico {FuncionarioID="17299999", nombre="Medico1", especialidades=especialidades},
                new Medico {FuncionarioID="17299998", nombre="Medico2", especialidades=especialidades},
                new Medico {FuncionarioID="17299997", nombre="Medico3", especialidades=especialidades},
                new Medico {FuncionarioID="17299996", nombre="Medico4", especialidades=especialidades},
                new Medico {FuncionarioID="17299995", nombre="Medico5", especialidades=especialidades}
            };
            funcionarios.ForEach(f => db.funcionarios.Add(f));
            db.SaveChanges();
            Debug.WriteLine("Funcionarios agregados...");

            List<Local> locales = new List<Local>
            {
                new Local {LocalID=1, nombre = "local1", calle="calle1", numero="SN", especialidades=especialidades, medicos=funcionarios},
                new Local {LocalID=2, nombre = "local2", calle="calle2", numero="SN2"},
                new Local {LocalID=3, nombre = "local3", calle="calle3", numero="SN3"}
            };
            locales.ForEach(l => db.locales.Add(l));
            db.SaveChanges();
            //Creo consultas para asignar

            List<Consulta> consultas = new List<Consulta>
            {
                new Consulta {
                    EspecialidadID = especialidades[0].EspecialidadID,
                    fecha_inicio=DateTime.UtcNow,
                    fecha_fin= DateTime.UtcNow.AddMinutes(20),
                    FuncionarioID=funcionarios[0].FuncionarioID,
                    LocalID=1,
                    numpacientes=10,
                    maxpacientesespera=10
                },
                new Consulta {
                    EspecialidadID = especialidades[1].EspecialidadID,
                    fecha_inicio=DateTime.UtcNow,
                    fecha_fin= DateTime.UtcNow.AddMinutes(300),
                    FuncionarioID=funcionarios[0].FuncionarioID,
                    LocalID=2,
                    numpacientes=10,
                    maxpacientesespera=10
                },
                new Consulta {
                    EspecialidadID = especialidades[2].EspecialidadID,
                    fecha_inicio=DateTime.UtcNow,
                    fecha_fin= DateTime.UtcNow.AddMinutes(300),
                    FuncionarioID=funcionarios[0].FuncionarioID,
                    LocalID=1,
                    numpacientes=10,
                    maxpacientesespera=10
                }
            };
            FabricaSAREM fab = new FabricaSAREM(tenant);
            consultas.ForEach(c => fab.iagenda.agregarConsulta(c));
            db.SaveChanges();
            Debug.WriteLine("Consultas agregados...");

            //al paciente 13 le asigno un medico de referencia.
            var pac = db.pacientes.Find("13");
            pac.FuncionarioID = funcionarios[0].FuncionarioID;
            pac = db.pacientes.Find("10");
            pac.FuncionarioID = funcionarios[0].FuncionarioID;
            pac = db.pacientes.Find("1");
            pac.FuncionarioID = funcionarios[0].FuncionarioID;

            pac = db.pacientes.Find("2");
            pac.FuncionarioID = funcionarios[1].FuncionarioID;
            pac = db.pacientes.Find("3");
            pac.FuncionarioID = funcionarios[1].FuncionarioID;
            pac = db.pacientes.Find("4");
            pac.FuncionarioID = funcionarios[1].FuncionarioID;
            db.SaveChanges();
        }
Exemple #3
0
        public void testParteDiario()
        {
            string medicoID = "17299999";
            FabricaSAREM factory = new FabricaSAREM(tenant);
            var partes = factory.iagenda.obtenerParteDiario(medicoID, DateTime.UtcNow);

            //ajusto ausencia y diagnostico
            foreach (var parte in partes)
            {
                foreach (var c in parte.pacientes)
                {
                    if (c.PacienteID != null)
                    {
                        factory.iagenda.actualizarParteDiario(c.ConsultaID, c.PacienteID, "Se le complica ...", true);
                        Console.WriteLine(c.paciente.PacienteID + c.paciente.nombre);
                        Console.WriteLine("Ausencia::" + c.ausencia.ToString());
                        Console.WriteLine("Diagnostico::" + c.diagnostico);
                    }
                }
            }

            //debe fallar
            try
            {
                var pde = factory.iagenda.obtenerParteDiario(medicoID, DateTime.UtcNow.AddDays(1));
            }
            catch (Exception e)
            {
                Console.WriteLine("OK::" + e.Message);
            }
        }
Exemple #4
0
        public void TestAgregarPacienteConsulta()
        {
            FabricaSAREM f = new FabricaSAREM(tenant);
            using(var db = SARMContext.getTenant(tenant))
            {
                //Creo consulta
                Consulta c = new Consulta
                {
                    EspecialidadID = 1,
                    fecha_inicio = DateTime.UtcNow,
                    fecha_fin = DateTime.UtcNow.AddMinutes(30),
                    FuncionarioID = "17299999",
                    LocalID = 1,
                    numpacientes =10,
                    maxpacientesespera =3

                };
                f.iagenda.agregarConsulta(c);
                //db.consultas.Add(c);
                //db.SaveChanges();

                var pacientes = (from p in db.pacientes
                                 select p).Take(14).ToList();
                int i = 0;
                foreach (var p in pacientes)
                {

                    try
                    {
                        fabrica.iagenda.agregarConsultaPaciente(p.PacienteID, c.ConsultaID, (short)i);
                        i++;
                        /*
                        if (date == null)
                            Console.WriteLine(i + ")Paciente " + p.PacienteID + " agregado a lista de espera ");
                        else
                            Console.WriteLine(i + ")Paciente " + p.PacienteID + " agregado, consulta programada "+ date.ToString());
                        */
                    }
                    catch (Exception max)
                    {
                        Console.WriteLine(i + "El paciente " + p.PacienteID + "no pudo se agregado... Max cola espera");
                    }

                }

                Console.WriteLine("Segundo TEST:: Cancelar consulta [3] y agregar el [14]");
                fabrica.iagenda.cancelarConsultaPaciente(pacientes[3].PacienteID, c.ConsultaID);
                Console.WriteLine("Consulta cancelada...");
                //veo a cual asigno...
                var enespera = fabrica.iagenda.obtenerPacientesConsultaEspera(c.ConsultaID);
                Console.WriteLine("Pacientes en lista de espera");
                foreach (var p in enespera)
                    Console.WriteLine(p.PacienteID);

            }
        }
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            FabricaSAREM fadmin = new FabricaSAREM();
            if (ModelState.IsValid)
            {
                DataPaciente p = fadmin.iopenempi.obtenerPaciente(model.PaisID, model.CI);
                                
                if (p != null)
                {
                    Debug.WriteLine(p.mutualista);
                    Session["tenant"] = p.mutualista;
                    if (!fadmin.adminController.getSchemas().Contains(p.mutualista))
                    {
                        //throw new Exception("Lo sentimos... Su prestador de salud no se encuentra registrado en el sistema.");
                        IdentityResult ir = new IdentityResult("Lo sentimos... Su prestador de salud no se encuentra registrado en el sistema.");
                        AddErrors(ir);
                        ViewBag.PaisID = new SelectList(fadmin.ipaises.obtenerPaises(), "PaisID", "nombre", "UY");
                        return View(model);
                    }

                    //TODO: generar password
                    //TODO: enviar mail con password
                    //alta paciente
                    FabricaSAREM factory = new FabricaSAREM(p.mutualista);
                    try 
                    {
                        factory.ipacientes.altaPaciente(p.paciente);

                    }
                    catch (Exception e)
                    {
                        IdentityResult ir = new IdentityResult("Paciente ya registrado...");
                        AddErrors(ir);
                        ViewBag.PaisID = new SelectList(fadmin.ipaises.obtenerPaises(), "PaisID", "nombre", "UY");
                        return View(model);
                    }
                    //factory.ipacientes.altaPaciente(p.paciente);
                    var user = new ApplicationUser { UserName = model.CI, Email = p.paciente.mail, tenant=p.mutualista };
                    var result = await UserManager.CreateAsync(user, "password");
                    if (result.Succeeded)
                    {
                        //Session["usuario"] = model.CI;
                        //await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);

                        // Para obtener más información sobre cómo habilitar la confirmación de cuenta y el restablecimiento de contraseña, visite http://go.microsoft.com/fwlink/?LinkID=320771
                        // Enviar correo electrónico con este vínculo
                        // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        // await UserManager.SendEmailAsync(user.Id, "Confirmar cuenta", "Para confirmar la cuenta, haga clic <a href=\"" + callbackUrl + "\">aquí</a>");
                        
                        return RedirectToAction("Login", "Account");
                    }
                    AddErrors(result);

                }
                else
                {
                    //mensaje de falla
                    //consultar con su proveedor de salud para agregar el mail
                    IdentityResult ir = new IdentityResult("Paciente no existe comunicarse con prestadora de salud.");
                    AddErrors(ir);
                    //throw new Exception("Paciente no existe comunicarse con proveedora de salud.");
                }
                
            }

            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            ViewBag.PaisID = new SelectList(fadmin.ipaises.obtenerPaises(), "PaisID", "nombre", "UY");
            return View(model);
        }
 public ActionResult Register()
 {
     FabricaSAREM factory = new FabricaSAREM("");
     ViewBag.PaisID = new SelectList(factory.ipaises.obtenerPaises(), "PaisID", "nombre", "UY");
     return View();
 }
Exemple #7
0
        async Task<DataPaciente> parallelRequestPaciente(string pacienteID, List<identifierDomain> dominios)
        {
            if (OPENEMPI_SESSION_KEY == null)
                getAuth();
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(OPENEMPI_URL);
                client.DefaultRequestHeaders.TryAddWithoutValidation("OPENEMPI_SESSION_KEY", OPENEMPI_SESSION_KEY);

                List<StringContent> content = new List<StringContent>();
                //serialize request
                FabricaSAREM f = new FabricaSAREM();
                var schemas = f.adminController.getSchemas();
                dominios = dominios.Where(x => schemas.Contains(x.namespaceIdentifier)).ToList();
                foreach (var dominio in dominios)
                {
                    Debug.WriteLine(dominio);
                    if (schemas.Contains(dominio.namespaceIdentifier))
                    {
                        personIdentifier person = new personIdentifier
                        {
                            identifier = pacienteID,
                            identifierDomain = new identifierDomain
                            {
                                namespaceIdentifier = dominio.namespaceIdentifier,
                                universalIdentifier = dominio.universalIdentifier,
                                universalIdentifierTypeCode = dominio.universalIdentifierTypeCode
                            }
                        };

                        string xml;

                        XmlSerializer serializer = new XmlSerializer(typeof(personIdentifier));
                        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                        ns.Add("", "");

                        using (StringWriter sww = new StringWriter())
                        using (XmlWriter writer = XmlWriter.Create(sww, settings))
                        {
                            serializer.Serialize(writer, person, ns);
                            xml = sww.ToString();
                        }

                        var httpContent = new StringContent(xml, Encoding.UTF8, "application/xml");
                        content.Add(httpContent);
                    }

                }

                //parallel!
                Debug.WriteLine("parallel!!!");
                //var count = content.Count;
                List<Task<HttpResponseMessage>> tasklist = new List<Task<HttpResponseMessage>>();
                foreach (var c in content)
                {
                    tasklist.Add(client.PostAsync("openempi-ws-rest/person-query-resource/findPersonById", c));
                }
              
                //finish all
                Debug.WriteLine("await2?");
                Task.WhenAll(tasklist.ToArray());

                int count = tasklist.Count;
                for (int i=0;i<count; i++)
                {
                    Debug
                        .WriteLine(tasklist[i].Result.Content.ReadAsStringAsync().Result);
                    TextReader reader = new StringReader(tasklist[i].Result.Content.ReadAsStringAsync().Result);
                    try
                    {
                        Debug.WriteLine(tasklist[i].Result.Content.ReadAsStringAsync().Result);
                        XmlSerializer personserializer = new XmlSerializer(typeof(person));
                        person p = (person)personserializer.Deserialize(reader);

                        string s = Sexo.UNKNOWN.ToString();
                        if (p.gender != null)
                        {
                            switch (p.gender.genderCode)
                            {
                                case "M":
                                    s = Sexo.MASCULINO.ToString();
                                    break;
                                case "F":
                                    s = Sexo.FEMENINO.ToString();
                                    break;
                                default:
                                    s = Sexo.UNKNOWN.ToString();
                                    break;
                            }
                        }

                        Paciente paciente = new Paciente {
                            PacienteID= pacienteID,
                            celular = p.cell,
                            direccion = p.address1,
                            FN = p.dateOfBirth,
                            PaisID = p.countryCode,
                            //nacion= new Pais{PaisID=p.countryCode, nombre= p.country},
                            nombre = p.middleName,
                            mail = p.email,
                            apellido = p.motherName,                    
                            sexo = s,
                            telefono = p.phoneNumber                        
                        };
                        DataPaciente dp = new DataPaciente { paciente = paciente, mutualista = dominios[i].identifierDomainName };

                        return dp;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Person not found at domain "+ e.Message);//+ dominio.identifierDomainId);
                    }
                }
                
                return null;
            }
        }