public IActionResult Registro(int id, [Bind("Nombre,Apellido,DPI,Departamento,Municipio,Edad,Areadetrabajo,Salud,Est,Asilo")] Paciente DatosP)
        {
            var TempNombre   = new LlaveArbolNombre();
            var TempDR       = new LlaveArbolNumeroDR();
            var TempApellido = new LlaveArbolApellido();

            TempDR.NumeroDR       = DatosP.DPI;
            TempDR                = F.Arbol_NumeroDR.Find(TempDR);
            TempNombre.Nombre     = DatosP.Nombre;
            TempNombre            = F.Arbol_Nombre.Find(TempNombre);
            TempApellido.Apellido = DatosP.Apellido;
            TempApellido          = F.Arbol_Apellido.Find(TempApellido);
            if (TempDR == null)
            {
                TempDR            = new LlaveArbolNumeroDR();
                TempDR.CodigoHash = DatosP.DPI;
                TempDR.NumeroDR   = DatosP.DPI;
                F.Arbol_NumeroDR.Add(TempDR);
            }
            else
            {
                return(RedirectToAction("ErrorDPI"));
            }
            if (TempNombre == null)
            {
                TempNombre            = new LlaveArbolNombre();
                TempNombre.CodigoHash = DatosP.DPI;
                TempNombre.Nombre     = DatosP.Nombre;
                F.Arbol_Nombre.Add(TempNombre);
            }
            if (TempApellido == null)
            {
                TempApellido            = new LlaveArbolApellido();
                TempApellido.CodigoHash = DatosP.DPI;
                TempApellido.Apellido   = DatosP.Apellido;
                F.Arbol_Apellido.Add(TempApellido);
            }
            bool Comprobacion        = false;
            LlaveArbolPrioridad Temp = new LlaveArbolPrioridad();

            Temp.CodigoHash = DatosP.DPI;
            if (DatosP.Areadetrabajo > 2)
            {
                if (DatosP.Est == 1)
                {
                    Temp.Prioridad = 1.2;
                    Comprobacion   = true;
                }
                if (DatosP.Areadetrabajo > 5)
                {
                    if (DatosP.Asilo == 1)
                    {
                        Temp.Prioridad = 1.4;
                        Comprobacion   = true;
                    }
                    if (DatosP.Areadetrabajo > 6)
                    {
                        if (DatosP.Salud != 10)
                        {
                            Temp.Prioridad = 2.0;
                            Comprobacion   = true;
                        }
                    }
                }
            }
            if (Comprobacion != true)
            {
                switch (DatosP.Areadetrabajo)
                {
                case 1:
                    Temp.Prioridad = 1.0; break;

                case 2:
                    Temp.Prioridad = 1.1; break;

                case 3:
                    Temp.Prioridad = 1.3; break;

                case 4:
                    Temp.Prioridad = 1.3; break;

                case 5:
                    Temp.Prioridad = 1.3; break;

                case 6:
                    Temp.Prioridad = 1.5; break;

                case 7:
                    Temp.Prioridad = 3.0; break;

                case 8:
                    Temp.Prioridad = 3.1; break;

                case 9:
                    Temp.Prioridad = 3.2; break;

                case 10:
                    Temp.Prioridad = 3.3; break;

                case 11:
                    if (DatosP.Edad >= 70)
                    {
                        Temp.Prioridad = 2.0;
                    }
                    else if (DatosP.Edad >= 50)
                    {
                        Temp.Prioridad = 2.1;
                    }
                    else if (DatosP.Edad >= 40)
                    {
                        Temp.Prioridad = 4.0;
                    }
                    else
                    {
                        Temp.Prioridad = 4.1;
                    }
                    break;
                }
            }
            PacienteComp Comparador = Hospitales.Compare_Municipio;
            Hospitales   hospital   = new Hospitales();

            hospital = F.hospitales.Find(m => Comparador(m, DatosP.Municipio) == 0);
            if (hospital == null)
            {
                Hospitales Nuevohospital = new Hospitales();
                Nuevohospital.Municipio = DatosP.Municipio;
                F.hospitales.Add(Nuevohospital);
                hospital = F.hospitales.Find(m => Comparador(m, DatosP.Municipio) == 0);
            }
            var arbolP = hospital.Registrar;
            var tablah = hospital.Pacientes;

            F.total++;
            arbolP.add(Temp);
            DatosP.Prioridad = Temp.Prioridad;
            tablah.Add(Convert.ToString(DatosP.DPI), DatosP);
            F.Tabla_Hash.Add(Convert.ToString(DatosP.DPI), DatosP);
            HttpContext.Session.SetString("municipio", DatosP.Municipio);
            string mydocs = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string folder = "ProyectoF";
            string R      = mydocs + '\\' + folder;

            Escribir(R + "\\Tabla.txt", EscribirDatos());
            return(RedirectToAction("Index", "Pacientes"));
        }
        public void Cargardatos()
        {
            string mydocs = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string folder = "ProyectoF";
            string R      = mydocs + '\\' + folder;

            using (TextFieldParser Datos = new TextFieldParser(R + "\\Tabla.txt"))
            {
                Datos.TextFieldType = FieldType.Delimited;
                Datos.SetDelimiters(",");
                while (!Datos.EndOfData)
                {
                    int          espacio    = 0;
                    PacienteComp Comparador = Hospitales.Compare_Municipio;

                    Paciente Temp    = new Paciente();
                    string[] Escrito = Datos.ReadFields();
                    if (Escrito[0] == "L")
                    {
                        Hospitales Hosp = new Hospitales();
                        Hosp.Municipio     = Escrito[1];
                        Hosp.TempFecha     = Convert.ToDateTime(Escrito[2]);
                        Hosp.CantidadPasar = Convert.ToInt32(Escrito[3]);
                        F.hospitales.Add(Hosp);

                        espacio = 4;
                    }
                    if (Escrito[0 + espacio] == "T")
                    {
                        Temp.Id             = Convert.ToInt32(Escrito[1 + espacio]);
                        Temp.Nombre         = Escrito[2 + espacio]; Temp.Apellido = Escrito[3 + espacio]; Temp.DPI = Convert.ToInt64(Escrito[4 + espacio]);
                        Temp.Departamento   = Escrito[5 + espacio]; Temp.Municipio = Escrito[6 + espacio];
                        Temp.Edad           = Convert.ToInt32(Escrito[7 + espacio]); Temp.Areadetrabajo = Convert.ToInt32(Escrito[8 + espacio]);
                        Temp.Salud          = Convert.ToInt32(Escrito[9 + espacio]); Temp.Est = Convert.ToInt32(Escrito[10 + espacio]);
                        Temp.Asilo          = Convert.ToInt32(Escrito[11 + espacio]); Temp.Fecha = Convert.ToDateTime(Escrito[12 + espacio]);
                        Temp.Paciente_Llego = Convert.ToBoolean(Escrito[13 + espacio]); Temp.Prioridad = Convert.ToDouble(Escrito[14 + espacio]);
                        var Temphospital = F.hospitales.Find(m => Comparador(m, Temp.Municipio) == 0);
                        var TempTabla    = Temphospital.PacientesVacunados;
                        TempTabla.Add(Convert.ToString(Temp.DPI), Temp);
                        var Temparbol = Temphospital.vacunados;
                        LlaveArbolPrioridad Templlave = new LlaveArbolPrioridad();
                        Templlave.CodigoHash = Convert.ToInt64(Temp.DPI);
                        Templlave.Prioridad  = Convert.ToDouble(Temp.Prioridad);
                        Temparbol.add(Templlave);
                        F.Tabla_Hash.Add(Convert.ToString(Temp.DPI), Temp);
                        //Arboles de busqueda
                        var TempNombre   = new LlaveArbolNombre();
                        var TempDR       = new LlaveArbolNumeroDR();
                        var TempApellido = new LlaveArbolApellido();
                        TempDR.CodigoHash = Temp.DPI;
                        TempDR.NumeroDR   = Temp.DPI;
                        F.Arbol_NumeroDR.Add(TempDR);

                        TempNombre.Nombre     = Temp.Nombre;
                        TempNombre            = F.Arbol_Nombre.Find(TempNombre);
                        TempApellido.Apellido = Temp.Apellido;
                        TempApellido          = F.Arbol_Apellido.Find(TempApellido);
                        if (TempNombre == null)
                        {
                            TempNombre            = new LlaveArbolNombre();
                            TempNombre.CodigoHash = Temp.DPI;
                            TempNombre.Nombre     = Temp.Nombre;
                            F.Arbol_Nombre.Add(TempNombre);
                        }
                        if (TempApellido == null)
                        {
                            TempApellido            = new LlaveArbolApellido();
                            TempApellido.CodigoHash = Temp.DPI;
                            TempApellido.Apellido   = Temp.Apellido;
                            F.Arbol_Apellido.Add(TempApellido);
                        }
                    }
                    else if (Escrito[0 + espacio] == "U")
                    {
                        F.vacunados = Convert.ToInt32(Escrito[1 + espacio]);
                        F.total     = Convert.ToInt32(Escrito[2 + espacio]);
                    }
                    else
                    {
                        Temp.Id             = Convert.ToInt32(Escrito[0 + espacio]);
                        Temp.Nombre         = Escrito[1 + espacio]; Temp.Apellido = Escrito[2 + espacio]; Temp.DPI = Convert.ToInt64(Escrito[3 + espacio]);
                        Temp.Departamento   = Escrito[4 + espacio]; Temp.Municipio = Escrito[5 + espacio];
                        Temp.Edad           = Convert.ToInt32(Escrito[6 + espacio]); Temp.Areadetrabajo = Convert.ToInt32(Escrito[7 + espacio]);
                        Temp.Salud          = Convert.ToInt32(Escrito[8 + espacio]); Temp.Est = Convert.ToInt32(Escrito[9 + espacio]);
                        Temp.Asilo          = Convert.ToInt32(Escrito[10 + espacio]); Temp.Fecha = Convert.ToDateTime(Escrito[11 + espacio]);
                        Temp.Paciente_Llego = Convert.ToBoolean(Escrito[12 + espacio]); Temp.Prioridad = Convert.ToDouble(Escrito[13 + espacio]);
                        var Temphospital = F.hospitales.Find(m => Comparador(m, Temp.Municipio) == 0);
                        var TempTabla    = Temphospital.Pacientes;
                        TempTabla.Add(Convert.ToString(Temp.DPI), Temp);
                        LlaveArbolPrioridad Templlave = new LlaveArbolPrioridad();
                        Templlave.CodigoHash = Convert.ToInt64(Temp.DPI);
                        Templlave.Prioridad  = Convert.ToDouble(Temp.Prioridad);
                        if (Temp.Fecha.Year == 1)
                        {
                            var temparbol = Temphospital.Registrar;
                            temparbol.add(Templlave);
                        }
                        else
                        {
                            var temparbol = Temphospital.Espera;
                            temparbol.add(Templlave);
                        }
                        F.Tabla_Hash.Add(Convert.ToString(Temp.DPI), Temp);
                        //Arboles de busqueda
                        var TempNombre   = new LlaveArbolNombre();
                        var TempDR       = new LlaveArbolNumeroDR();
                        var TempApellido = new LlaveArbolApellido();
                        TempDR.CodigoHash = Temp.DPI;
                        TempDR.NumeroDR   = Temp.DPI;
                        F.Arbol_NumeroDR.Add(TempDR);

                        TempNombre.Nombre     = Temp.Nombre;
                        TempNombre            = F.Arbol_Nombre.Find(TempNombre);
                        TempApellido.Apellido = Temp.Apellido;
                        TempApellido          = F.Arbol_Apellido.Find(TempApellido);
                        if (TempNombre == null)
                        {
                            TempNombre            = new LlaveArbolNombre();
                            TempNombre.CodigoHash = Temp.DPI;
                            TempNombre.Nombre     = Temp.Nombre;
                            F.Arbol_Nombre.Add(TempNombre);
                        }
                        if (TempApellido == null)
                        {
                            TempApellido            = new LlaveArbolApellido();
                            TempApellido.CodigoHash = Temp.DPI;
                            TempApellido.Apellido   = Temp.Apellido;
                            F.Arbol_Apellido.Add(TempApellido);
                        }
                    }
                }
                Datos.Close();
            }
        }
        public ActionResult Search(string Filter, string Param)
        {
            if (F.Arbol_Nombre.isempty())
            {
                return(RedirectToAction("ErrorBuscar"));
            }
            if (Param == null)
            {
                return(RedirectToAction("ErrorBuscar"));
            }
            LlaveArbolNombre            ANombre;
            LlaveArbolApellido          AApellido;
            LlaveArbolNumeroDR          ANumero;
            DoubleLinkedList <Paciente> TempVista = new DoubleLinkedList <Paciente>();

            switch (Filter)
            {
            case "Nombre":
                try
                {
                    Int64 pureba1 = Convert.ToInt64(Param);
                    return(RedirectToAction("ErrorBuscar"));
                }
                catch
                { }
                AVL <LlaveArbolNombre> Temparbol3 = new AVL <LlaveArbolNombre>(LlaveArbolNombre.Compare_Llave_Arbol2);
                Temparbol3 = F.Arbol_Nombre.Clone();
                try
                {
                    ANombre = new LlaveArbolNombre {
                        Nombre = Param
                    };
                    ANombre = Temparbol3.Find(ANombre);
                    if (ANombre != null)
                    {
                        Temparbol3.RemoveAt(ANombre);
                        Paciente TempPaciente = new Paciente();
                        TempPaciente = F.Tabla_Hash.Find(Convert.ToString(ANombre.CodigoHash));
                        TempVista.Add(TempPaciente);
                    }
                    return(View(TempVista));
                }
                catch
                {
                    return(RedirectToAction("ErrorBuscar"));
                }

            case "Apellido":
                try
                {
                    Int64 pureba1 = Convert.ToInt64(Param);
                    return(RedirectToAction("ErrorBuscar"));
                }
                catch
                { }
                AVL <LlaveArbolApellido> Temparbol2 = new AVL <LlaveArbolApellido>(LlaveArbolApellido.Compare_Llave_Arbol2);
                Temparbol2 = F.Arbol_Apellido.Clone();
                try
                {
                    AApellido = new LlaveArbolApellido {
                        Apellido = Param
                    };
                    AApellido = Temparbol2.Find(AApellido);
                    if (AApellido != null)
                    {
                        Temparbol2.RemoveAt(AApellido);
                        Paciente TempPaciente = new Paciente();
                        TempPaciente = F.Tabla_Hash.Find(Convert.ToString(AApellido.CodigoHash));
                        TempVista.Add(TempPaciente);
                    }
                    return(View(TempVista));
                }
                catch
                {
                    return(RedirectToAction("ErrorBuscar"));
                }

            case "DPI":
                AVL <LlaveArbolNumeroDR> Temparbol = new AVL <LlaveArbolNumeroDR>(LlaveArbolNumeroDR.Compare_Llave_Arbol2);
                Temparbol = F.Arbol_NumeroDR.Clone();
                try
                {
                    Int64 Param2 = Convert.ToInt64(Param);
                    ANumero = new LlaveArbolNumeroDR {
                        NumeroDR = Param2
                    };
                    ANumero = Temparbol.Find(ANumero);
                    if (ANumero != null)
                    {
                        Temparbol.RemoveAt(ANumero);
                        Paciente TempPaciente = new Paciente();
                        TempPaciente = F.Tabla_Hash.Find(Convert.ToString(ANumero.CodigoHash));
                        TempVista.Add(TempPaciente);
                    }
                    return(View(TempVista));
                }
                catch
                {
                    return(RedirectToAction("ErrorBuscar"));
                }

            default:
                return(RedirectToAction("Busqueda"));
            }
        }