示例#1
0
 static bool ChequearCompatibilidad(Sangre donante, Sangre receptor)
 {
     // Cero- puede donar a todos los tipos y factores
     if (donante.GrupoSanguineo == GrupoSangre.Cero && donante.FactorRH == false)
     {
         return(true);
     }
     // AB+ puede recibir de todos los tipos y factorRH
     if (receptor.GrupoSanguineo == GrupoSangre.AB && receptor.FactorRH == true)
     {
         return(true);
     }
     // Si el donante y el receptor tienen el mismo tipo y el factor es igual o positivo
     if (receptor.GrupoSanguineo == donante.GrupoSanguineo)
     {
         if (donante.FactorRH || donante.FactorRH == receptor.FactorRH)
         {
             return(true);
         }
     }
     // AB- puede recibir de A- y B-
     if (receptor.GrupoSanguineo == GrupoSangre.AB && !receptor.FactorRH)
     {
         if (donante.GrupoSanguineo == GrupoSangre.A && !donante.FactorRH)
         {
             return(true);
         }
         if (donante.GrupoSanguineo == GrupoSangre.B && !donante.FactorRH)
         {
             return(true);
         }
     }
     // Si no se sumple ninguna condicion
     return(false);
 }
示例#2
0
        public static void Donar(List <Donante> donantes, List <Sangre> stock)
        {
            Console.WriteLine("Ingrese el DNI (sin puntos): ");

            int dni = Convert.ToInt32(Console.ReadLine());

            Donante d = BuscarDonante(donantes, dni);

            if (d == null)
            {
                Console.WriteLine("\nNo existe el donante");
            }
            else
            {
                Console.WriteLine("\nIngrese la cantidad de litros extraidos: ");

                int litros = int.Parse(Console.ReadLine());

                Sangre s = new Sangre(litros, d.TipoSangre.GrupoSanguineo, d.TipoSangre.FactorRH);

                AgregarSangre(s, stock);

                Console.WriteLine("\nSe ha agregado la extracción al banco!");
            }
        }
示例#3
0
        //Metodo para ingresar al sistema un nuevo paciente.
        private static void IngresarPaciente(Queue <Paciente> pacientes)
        {
            Console.WriteLine("\n-Ingresar Nuevo Paciente:\n ");
            Console.WriteLine("Ingrese el DNI (sin puntos): ");
            int dni = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Ingrese el nombre: ");
            string nombre = Console.ReadLine();

            Console.WriteLine("Ingrese el apellido");
            string apellido = Console.ReadLine();

            Console.WriteLine("Ingrese el telefono (sin guiones ni paréntesis): ");
            int telefono = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Ingrese el mail: ");
            string mail = Console.ReadLine();

            Console.WriteLine("Ingrese la dirección: ");
            string direccion = Console.ReadLine();

            Sangre grupoSanguineo = IngresarTipoSangre();

            Paciente paciente = new Paciente(nombre, apellido, dni, telefono, mail, direccion, grupoSanguineo);

            Console.WriteLine("\nCuantos litros de sangre necesita: ");
            int litros = Convert.ToInt32(Console.ReadLine());

            grupoSanguineo.Litros = litros;

            pacientes.Enqueue(paciente);
            Console.WriteLine("-Paciente ingresado-");
        }
示例#4
0
 public Paciente(string nombre, string apellido, int dni, int telefono, string mail, string direccion, Sangre tipoSangre)
 {
     this.nombre     = nombre;
     this.apellido   = apellido;
     this.direccion  = direccion;
     this.dni        = dni;
     this.telefono   = telefono;
     this.mail       = mail;
     this.tipoSangre = tipoSangre;
 }
示例#5
0
 public Donante(int dni, string nombre, string apellido, string fechaNacimiento, int telefono, string mail, string direccion, Sangre tipoSangre)
 {
     this.dni             = dni;
     this.nombre          = nombre;
     this.apellido        = apellido;
     this.fechaNacimiento = fechaNacimiento;
     this.telefono        = telefono;
     this.mail            = mail;
     this.direccion       = direccion;
     this.tipoSangre      = tipoSangre;
 }
示例#6
0
        static void HacerTransfusion(Queue <Paciente> pacientes, List <Sangre> stock)
        {
            if (pacientes.Count == 0)
            {
                Console.WriteLine("-No hay pacientes en lista de espera.-");
                return;
            }
            if (stock.Count == 0)
            {
                Console.WriteLine("-Actualmente no hay reservas disponibles en el banco.-");
                return;
            }

            Paciente pacienteActual   = pacientes.Peek();
            Sangre   sangreCompatible = null;

            Console.WriteLine("\nEl paciente actual en la lista de espera es: ");
            Console.WriteLine(pacienteActual.Nombre + " " + pacienteActual.Apellido + " DNI: " + pacienteActual.Dni);
            Console.WriteLine("Sangre Grupo: " + pacienteActual.TipoSangre.GrupoSanguineo + " Factor RH: " + FactorRH(pacienteActual.TipoSangre.FactorRH));
            Console.WriteLine("El paciente necesita " + pacienteActual.TipoSangre.Litros + " litros de sangre.");

            foreach (Sangre s in stock)
            {
                if (ChequearCompatibilidad(s, pacienteActual.TipoSangre))
                {
                    if (s.Litros >= pacienteActual.TipoSangre.Litros)
                    {
                        sangreCompatible = s;
                    }
                }
            }

            if (sangreCompatible == null)
            {
                Console.WriteLine("\nNo hay stock disponible para la cantidad necesaria de litros del grupo y factor que necesita el paciente.");
            }
            else
            {
                sangreCompatible.Litros -= pacienteActual.TipoSangre.Litros;
                if (sangreCompatible.Litros <= 0)
                {
                    stock.Remove(sangreCompatible);
                }

                Console.WriteLine("\nLa transfusion fue realizada con exito.");
                pacientes.Dequeue();
                Console.WriteLine("Quedan " + pacientes.Count + " pacientes en lista de espera.");
            }

            return;
        }
示例#7
0
        public static void EditarDonante(List <Donante> donantes)
        {
            Console.WriteLine("Ingrese el DNI (sin puntos): ");

            int dni = Convert.ToInt32(Console.ReadLine());

            Donante d = BuscarDonante(donantes, dni);

            if (d == null)
            {
                Console.WriteLine("\nNo existe el donante");
            }
            else
            {
                Console.WriteLine("Ingrese el nombre: ");
                string nombre = Console.ReadLine();

                Console.WriteLine("Ingrese el apellido");
                string apellido = Console.ReadLine();

                Console.WriteLine("Ingrese la fecha de nacimiento: ");
                string fechaNacimiento = Console.ReadLine();

                Console.WriteLine("Ingrese el telefono (sin guiones ni paréntesis): ");
                int telefono = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine("Ingrese el mail: ");
                string mail = Console.ReadLine();

                Console.WriteLine("Ingrese la dirección: ");
                string direccion = Console.ReadLine();

                Sangre grupoSanguineo = IngresarTipoSangre();

                d.Nombre          = nombre;
                d.Apellido        = apellido;
                d.FechaNacimiento = fechaNacimiento;
                d.Telefono        = telefono;
                d.Mail            = mail;
                d.Direccion       = direccion;
                d.TipoSangre      = grupoSanguineo;


                Console.WriteLine("Datos modificados");
            }
        }
示例#8
0
        static void AgregarSangre(Sangre s, List <Sangre> stock)
        {
            Sangre resultado = stock.FirstOrDefault(x => x.GrupoSanguineo == s.GrupoSanguineo);

            if (resultado != null)
            {
                stock.Remove(resultado);

                resultado.Litros = resultado.Litros + s.Litros;

                stock.Add(resultado);
            }
            else
            {
                stock.Add(s);
            };
        }
示例#9
0
        //Metodo para ingresar al sistema un nuevo donante.
        private static void IngresarDonante(List <Donante> donantes)
        {
            Console.WriteLine("\n-Ingresar Nuevo Donante:\n ");
            Console.WriteLine("Ingrese el DNI (sin puntos): ");
            int     dni = Convert.ToInt32(Console.ReadLine());
            Donante d   = BuscarDonante(donantes, dni);

            if (d != null)
            {
                Console.WriteLine("Ya existe el donante!");
            }
            else
            {
                Console.WriteLine("Ingrese el nombre: ");
                string nombre = Console.ReadLine();

                Console.WriteLine("Ingrese el apellido");
                string apellido = Console.ReadLine();

                Console.WriteLine("Ingrese la fecha de nacimiento: ");
                string fechaNacimiento = Console.ReadLine();

                Console.WriteLine("Ingrese el telefono (sin guiones ni paréntesis): ");
                int telefono = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine("Ingrese el mail: ");
                string mail = Console.ReadLine();

                Console.WriteLine("Ingrese la dirección: ");
                string direccion = Console.ReadLine();

                Sangre grupoSanguineo = IngresarTipoSangre();

                Donante donante = new Donante(dni, nombre, apellido, fechaNacimiento, telefono, mail, direccion, grupoSanguineo);

                donantes.Add(donante);
                Console.WriteLine("-Donante ingresado-");
            };
        }
示例#10
0
        //Esta funcion se usas cuando se le solicita al usuario ingresar un tipo de sangre
        static Sangre IngresarTipoSangre()
        {
            bool ingresoExitoso = false;

            //Se instancia un nuevo objeto Sangre y se usa para ir cargando los datos ingresados
            Sangre tipoIngresado = new Sangre(0, GrupoSangre.A, false);

            while (!ingresoExitoso)
            {
                Console.WriteLine("\n1- A \n2- B \n3- AB \n4- Cero");
                Console.WriteLine("Ingrese el grupo sanguíneo: ");
                int opcion = Convert.ToInt32(Console.ReadLine());

                switch (opcion)
                {
                case 1:
                    tipoIngresado.GrupoSanguineo = GrupoSangre.A;
                    ingresoExitoso = true;
                    break;

                case 2:
                    tipoIngresado.GrupoSanguineo = GrupoSangre.B;
                    ingresoExitoso = true;
                    break;

                case 3:
                    tipoIngresado.GrupoSanguineo = GrupoSangre.AB;
                    ingresoExitoso = true;
                    break;

                case 4:
                    tipoIngresado.GrupoSanguineo = GrupoSangre.Cero;
                    ingresoExitoso = true;
                    break;

                default:
                    Console.WriteLine("\n-Ingrese una opción valida-\n ");
                    break;
                }
            }

            ingresoExitoso = false;

            while (!ingresoExitoso)
            {
                Console.WriteLine("Es factor RH positivo (S/N): ");
                string factor = Console.ReadLine().ToLower();

                if (factor == "si" || factor == "s")
                {
                    tipoIngresado.FactorRH = true;
                    ingresoExitoso         = true;
                }
                if (factor == "no" || factor == "n")
                {
                    tipoIngresado.FactorRH = false;
                    ingresoExitoso         = true;
                }

                if (!ingresoExitoso)
                {
                    Console.WriteLine("\n-Ingrese una opción valida (S/N)-\n ");
                }
            }

            return(tipoIngresado);
        }