예제 #1
0
 /// <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();
         }
     }
 }
예제 #2
0
        /// <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));
 }
예제 #4
0
 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));
 }
예제 #5
0
        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();
            }
        }
예제 #6
0
        /// <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++;
                    }
                }
            }
        }