public int GetCritical() { List <Patient> patientsToRemove = new List <Patient>(); lock (allPatientsLock) { foreach (Patient p in AllPatients) { if (DateTime.Now - p.ArrivedTime > Details.CriticalWaitingTimeA && p.Injury.Category == Category.A) { patientsToRemove.Add(p); p.Critical = true; } else if (DateTime.Now - p.ArrivedTime > Details.CriticalWaitingTimeB && p.Injury.Category == Category.B) { patientsToRemove.Add(p); p.Critical = true; } else if (DateTime.Now - p.ArrivedTime > Details.CriticalWaitingTimeB && p.Injury.Category == Category.C) { patientsToRemove.Add(p); p.Critical = true; } else if (DateTime.Now - p.ArrivedTime > Details.CriticalWaitingTimeB && p.Injury.Category == Category.D) { patientsToRemove.Add(p); p.Critical = true; } } } foreach (Patient p in patientsToRemove) { lock (allPatientsLock) { AllPatients.Remove(p); } PatientsA.Remove(p); PatientsB.Remove(p); PatientsC.Remove(p); PatientsD.Remove(p); } return(patientsToRemove.Count); }
private void RemoveWaitingPatient(Patient patient) { Category category = patient.Injury.Category; switch (category) { case Category.A: PatientsA.Remove(patient); break; case Category.B: PatientsB.Remove(patient); break; case Category.C: PatientsC.Remove(patient); break; case Category.D: PatientsD.Remove(patient); break; } }