/// <summary> /// Uppdaterar patienternas symptomLevelel. /// </summary> public void UpdateSymptomLevelsForPatient() { using (var db = new HospitalDB()) { //Laddar in listan för varje avdelning. och för varje patient i denna lista kör vi metoden SymptomUpdater += patient.SymptomLevel. var queue = db.Queue.Find(CurrentQueue.Id); db.Entry(queue).Collection(x => x.PatientsInQueue).Load(); foreach (var patient in queue.PatientsInQueue) { patient.SymptomLevel += SymptomUpdater(1); //1 för kö db.SaveChanges(); } var iva = db.IVA.Find(CurrrentIva.Id); db.Entry(iva).Collection(x => x.Patients).Load(); foreach (var patient in iva.Patients) { patient.SymptomLevel += SymptomUpdater(2); //1 för kö db.SaveChanges(); } var sana = db.Sanatorium.Find(CurrentSanatorium.Id); db.Entry(sana).Collection(x => x.Patients).Load(); foreach (var patient in sana.Patients) { patient.SymptomLevel += SymptomUpdater(3); //1 för kö db.SaveChanges(); } } }
/// <summary> /// Hittar den sjukaste patienten från kö eller sanatorium /// </summary> /// <returns>1 eller 0 som representation av vilken avdeling vi ska ta bort ifrån</returns> private static int FindSickestPatient() { using (var db = new HospitalDB()) { var sanatorium = db.Sanatorium.Find(CurrentSanatorium.Id); var queue = db.Queue.Find(CurrentQueue.Id); Patient patient1 = null; Patient patient2 = null; //Försöker ladda in kölista och sanatoriumlista if (sanatorium.Patients.Count > 0) { db.Entry(sanatorium).Collection(p => p.Patients).Load(); sanatorium.Patients = sanatorium.Patients.OrderByDescending(x => x.SymptomLevel).ThenBy(x => x.BirthDate).ToList(); patient1 = sanatorium.Patients[0]; } if (queue.PatientsInQueue.Count > 0) { db.Entry(queue).Collection(p => p.PatientsInQueue).Load(); queue.PatientsInQueue = queue.PatientsInQueue.OrderByDescending(x => x.SymptomLevel).ThenBy(x => x.BirthDate).ToList(); patient2 = queue.PatientsInQueue[0]; } //Returnerar 0 för sanatorium och 1 för kön. //Hittade vi sjuk patient från båda avdelningarna jämför vi först //Symptomlevel och sedan Birthdate. if (patient1 != null && patient2 != null) { if (patient1.SymptomLevel.CompareTo(patient2.SymptomLevel) == 0) { return(patient1.BirthDate < patient2.BirthDate ? 0 : 1); } return(patient1.SymptomLevel > patient2.SymptomLevel ? 0 : 1); } //Om sanatorium inte laddade är patient2 null och därför gör vi ingen jämföring ovan och returnerar direkt 0 för kö. else if (patient1 != null) { return(0); } else { return(1); } } }
public ActionResult Edit([Bind(Include = "cid,cname,psychologist,Phone")] Consultant consultant) { try { if (ModelState.IsValid) { db.Entry(consultant).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } } catch (Exception e1) { ViewBag.err1 = "User Already Exists"; ViewBag.err2 = e1.Message.ToString(); } return(View(consultant)); }
public ActionResult Edit([Bind(Include = "nid,nname,grade,Phone,cid")] Nurse nurse) { try { if (ModelState.IsValid) { db.Entry(nurse).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.cid = new SelectList(db.Consultants, "cid", "cname", nurse.cid); } catch (Exception e1) { ViewBag.err1 = "User Already Exists"; ViewBag.err2 = e1.Message.ToString(); } return(View(nurse)); }
public void MoveAroundPatients() { using (var db = new HospitalDB()) { //Laddar in rätt avdelningar från databasen. var queue = db.Queue.Find(CurrentQueue.Id); var sanatorium = db.Sanatorium.Find(CurrentSanatorium.Id); var iva = db.IVA.Find(CurrrentIva.Id); //Laddar in avdelningarnas patienter om dom har patienter i sig. //Behöver inte load IVA för vi ska inte ta bort ifrån iva i detta läget. if (sanatorium.Patients.Count > 0) { db.Entry(sanatorium).Collection(p => p.Patients).Load(); sanatorium.Patients = sanatorium.Patients.OrderByDescending(x => x.SymptomLevel).ThenBy(x => x.BirthDate).ToList(); } if (queue.PatientsInQueue.Count > 0) { db.Entry(queue).Collection(p => p.PatientsInQueue).Load(); queue.PatientsInQueue = queue.PatientsInQueue.OrderByDescending(x => x.SymptomLevel).ThenBy(x => x.BirthDate).ToList(); } db.SaveChanges(); //Fylller på 5 patienter i IVA första varvet, sedan fyller vi på när plats finns. while (iva.Patients.Count < 5) { int result = FindSickestPatient(); Patient patient; //Om patient kom från sanatorium if (result == 0) { patient = sanatorium.Patients.FirstOrDefault(); iva.Patients.Add(patient); db.SaveChanges(); OnPatientMoved(new HospitalEventArgs(patient)); //Raisar Event att flytt skett sanatorium.Patients.Remove(patient); } //Om patient kom från kön else { patient = queue.PatientsInQueue.FirstOrDefault(); iva.Patients.Add(patient); db.SaveChanges(); OnPatientMoved(new HospitalEventArgs(patient)); //Raisar event att flytt skett queue.PatientsInQueue.Remove(patient); } } db.SaveChanges(); //Första gången lägger vi till 10 patienter i sanatorium, annars fyller vi på efterhand. while (sanatorium.Patients.Count < 10) { var patient = queue.PatientsInQueue.FirstOrDefault(); sanatorium.Patients.Add(patient); db.SaveChanges(); OnPatientMoved(new HospitalEventArgs(patient)); queue.PatientsInQueue.Remove(patient); } db.SaveChanges(); } }
/// <summary> /// Flyttar patienter till Healthy eller Afterlive om deras symptomlevel är under 0 eller 10 och uppåt. /// </summary> public void DismissHealthyOrDeadPatients() { using (var db = new HospitalDB()) { //Samma här. Laddar in ALLA listor denna gången för en patient kan bli frisk eller dör VARSOMHELST i sjukhuset. var queue = db.Queue.Find(CurrentQueue.Id); var afterLife = db.AfterLife.Find(CurrentAfterLife.Id); var healthy = db.Healthy.Find(CurrentHealthy.Id); var sanatorium = db.Sanatorium.Find(CurrentSanatorium.Id); var iva = db.IVA.Find(CurrrentIva.Id); db.Entry(queue).Collection(x => x.PatientsInQueue).Load(); db.Entry(afterLife).Collection(x => x.Patients).Load(); db.Entry(healthy).Collection(x => x.Patients).Load(); db.Entry(sanatorium).Collection(x => x.Patients).Load(); db.Entry(iva).Collection(x => x.Patients).Load(); //Gör samma foreach för VARJE avdelning för att se vilka patienter som skall flyttas till healthy eller afterlife. foreach (Patient patient in queue.PatientsInQueue.ToList()) { if (patient.SymptomLevel <= 0) { healthy.Patients.Add(patient); // vi lägger till i healthy eller afterlife beroende på IF. sedan tar bort från queue.PatientsInQueue.Remove(patient); // deras nuvarande plats, sen raisar event att det skett. alla loopar ser lika ut. db.SaveChanges(); // bara vilka avdelningar vi arbetar med som skiljer sig. OnPatientMoved(new HospitalEventArgs(patient)); //raisar event att flytt skett. DismissedPatients++; //++ på dismissedpatients, denna variabel styr hela programmet. Dvs när alla patienter flyttats ut // ur sjukhuset. (dom ligger i afterlife eller Healthy) kommer det sluta. } if (patient.SymptomLevel >= 10) { afterLife.Patients.Add(patient); queue.PatientsInQueue.Remove(patient); db.SaveChanges(); OnPatientMoved(new HospitalEventArgs(patient)); //raisar event att flytt skett. DismissedPatients++; } } foreach (Patient patient in iva.Patients.ToList()) { if (patient.SymptomLevel <= 0) { healthy.Patients.Add(patient); iva.Patients.Remove(patient); db.SaveChanges(); OnPatientMoved(new HospitalEventArgs(patient)); //raisar event att flytt skett. DismissedPatients++; } if (patient.SymptomLevel >= 10) { afterLife.Patients.Add(patient); iva.Patients.Remove(patient); db.SaveChanges(); OnPatientMoved(new HospitalEventArgs(patient)); //raisar event att flytt skett. DismissedPatients++; } } foreach (Patient patient in sanatorium.Patients.ToList()) { if (patient.SymptomLevel <= 0) { healthy.Patients.Add(patient); sanatorium.Patients.Remove(patient); db.SaveChanges(); OnPatientMoved(new HospitalEventArgs(patient)); //raisar event att flytt skett. DismissedPatients++; } if (patient.SymptomLevel >= 10) { afterLife.Patients.Add(patient); sanatorium.Patients.Remove(patient); db.SaveChanges(); OnPatientMoved(new HospitalEventArgs(patient)); //raisar event att flytt skett. DismissedPatients++; } } } }