public void ManagePatients()
        {
            while (Running)
            {
                List <Patient> patients = new List <Patient>();
                patients.AddRange(TakeNextQueue());

                foreach (Patient p in patients)
                {
                    Bed bed = FindBed(p);

                    if (bed != null)
                    {
                        bed.Busy = true;
                        p.Bed    = bed;
                        p.Room   = bed.Room;
                        GivePatientAPath(p);

                        lock (patientsToNavigateLock)
                        {
                            PatientsToNavigate.Add(p);
                        }

                        RemoveWaitingPatient(p);
                    }
                }

                Thread.Sleep(5000);         //sleep 5 seconds
            }
        }
        public void NavigatePatients()
        {
            List <Patient> patientsToRemove = new List <Patient>();

            lock (patientsToNavigateLock)
            {
                foreach (Patient p in PatientsToNavigate)
                {
                    if (p.GoToRoom())
                    {
                        Treat(p);
                        patientsToRemove.Add(p);
                        p.StartNavigate = DateTime.Now;
                    }
                }

                foreach (Patient p in patientsToRemove)
                {
                    PatientsToNavigate.Remove(p);
                }
            }
        }