private void Treat(Patient p)
        {
            Category category = p.Injury.Category;

            TimeSpan[] interval = Injury.GetTimeInterval(category);     //index 0 = min     index 1 = max
            int        seconds  = rnd.Next(interval[0].Seconds, interval[1].Seconds + 1);

            p.Timer          = new TimeSpan(0, 0, seconds);
            p.TreatmentStart = DateTime.Now;

            lock (roomPatientsLock)
            {
                RoomPatients.Add(p);
                p.Room.AddPatient(p);
                p.Managed = true;
            }
        }
        public void DischargePatients()
        {
            while (Running)
            {
                List <Patient> patientsToRemove = new List <Patient>();

                lock (roomPatientsLock)
                {
                    foreach (Patient p in RoomPatients)
                    {
                        TimeSpan timeSpent = DateTime.Now - p.TreatmentStart;

                        if (timeSpent > p.Timer)
                        {
                            patientsToRemove.Add(p);
                            p.Discharged = true;
                            p.LeaveTime  = DateTime.Now;
                            //lock (patientsToExitLock)
                            //{
                            //    PatientsToExit.Add(p);
                            //}
                        }
                    }

                    foreach (Patient p in patientsToRemove)
                    {
                        p.Bed.Busy = false;
                        RoomPatients.Remove(p);
                        p.Room.CurrentPatients.Remove(p);

                        lock (allPatientsLock)
                        {
                            AllPatients.Remove(p);
                        }
                    }
                }
            }
        }