override public void InAct() { Console.WriteLine("In " + this.Name + ", Patient number " + CurrentPatient.Index + " Type = " + CurrentPatient.PatientType.Name); SetTCurrForChannels(); if (base.State == 0) { if (CheckFreeChannels() == true) { HospitalChannel hospitalChannel = (HospitalChannel)GetFreeChannel(); hospitalChannel.CurrentPatient = CurrentPatient; hospitalChannel.InAct(); CurrentPatient = null; if (CheckFreeChannels() == false) { base.State = 1; } } base.TNext = GetTNext(); } else { Queue++; PatientsInQueue.Add(CurrentPatient); CurrentPatient = null; } }
private Patient GetPatientFromQueue() { Patient patientToRemove = PatientsInQueue.First(); PatientsInQueue.Remove(patientToRemove); return(patientToRemove); }
private Patient GetPatientFromQueue() { Patient patientToRemove; foreach (var patient in PatientsInQueue) { if (patient.PatientType.Name == "PatientType1") { patientToRemove = patient; PatientsInQueue.Remove(patientToRemove); return(patient); } } patientToRemove = PatientsInQueue.First(); PatientsInQueue.Remove(patientToRemove); return(patientToRemove); }
override public void InAct() { Console.WriteLine("In " + this.Name + ", Patient number " + CurrentPatient.Index + " Type = " + CurrentPatient.PatientType.Name); switch (CurrentPatient.PatientType.Name) { case "PatientType1": type1PatientsStartTime.Add(CurrentPatient.startTime); break; case "PatientType2": type2PatientsStartTime.Add(CurrentPatient.startTime); break; case "PatientType3": type3PatientsStartTime.Add(CurrentPatient.startTime); break; } ; SetTCurrForChannels(); if (base.State == 0) { if (CheckFreeChannels() == true) { HospitalChannel hospitalChannel = GetFreeChannel(); hospitalChannel.CurrentPatient = CurrentPatient; hospitalChannel.DelayMean = CurrentPatient.PatientType.AvRegisterTime; hospitalChannel.InAct(); CurrentPatient = null; if (CheckFreeChannels() == false) { base.State = 1; } } base.TNext = GetTNext(); } else { Queue++; PatientsInQueue.Add(CurrentPatient); CurrentPatient = null; } }
override public void OutAct() { SetTCurrForChannels(); base.OutAct(); HospitalChannel hospitalChannel = GetChannelByTNext(); Patient patient = hospitalChannel.CurrentPatient; Console.WriteLine("Out " + this.Name + ", Patient number " + patient.Index + " Type = " + patient.PatientType.Name); hospitalChannel.CurrentPatient = null; hospitalChannel.OutAct(); base.TNext = GetTNext(); if (CheckFreeChannels() == true) { base.State = 0; } if (this.Queue > 0 && CheckFreeChannels() == true) { Queue--; HospitalChannel hospitalChannel1 = GetFreeChannel(); hospitalChannel1.CurrentPatient = PatientsInQueue.First(); PatientsInQueue.Remove(hospitalChannel1.CurrentPatient); hospitalChannel1.InAct(); if (CheckFreeChannels() == false) { base.State = 1; } base.TNext = GetTNext(); } if (NextMss.Count > 0) { Random random = new Random(); int index = 0; if (NextDespose) { index = random.Next(0, NextMss.Count + 1); } else { index = random.Next(0, NextMss.Count); } if (index == NextMss.Count) { Console.WriteLine("Patient number " + patient.Index + " is in the chamber"); patient.finishTime = TCurr; patient.timeInterval = patient.finishTime - patient.startTime; Patients.Add(new Patient() { Index = patient.Index, PatientType = patient.PatientType, startTime = patient.startTime, finishTime = patient.finishTime, timeInterval = patient.timeInterval }); } else { HospitalMassServiceSystem nextProcess = NextMss[index]; nextProcess.CurrentPatient = patient; nextProcess.InAct(); } } else { Console.WriteLine("Patient number " + patient.Index + " is in the chamber"); patient.finishTime = TCurr; patient.timeInterval = patient.finishTime - patient.startTime; Patients.Add(new Patient() { Index = patient.Index, PatientType = patient.PatientType, startTime = patient.startTime, finishTime = patient.finishTime, timeInterval = patient.timeInterval }); } }