internal void MovePatients() //flyttar från kön till iva framtills iva är fullt (5)
        {
            bool movePatients = true;

            while (movePatients)
            {
                Thread.Sleep(500);

                //håller räkningen på antalet som flyttat till iva och/eller sanotorium
                int movedToIva        = 0;
                int movedToSanotorium = 0;

                using (var context = new KrankenhausSjukhusetDbContext())
                {
                    var mostILL = (from m in context.Patients
                                   where m.StatusID.Equals(1) || m.StatusID.Equals(2)
                                   orderby m.IllnessLevel descending, m.Age descending
                                   select m).ToList();                                       //most ill = sjukast i kön och sanotorium

                    int ivaCount     = context.Patients.Where(p => p.StatusID == 3).Count(); //antal personer i iva
                    int ivaSpotsLeft = 5 - ivaCount;

                    //flyttar till iva om det finns platser kvar i iva och patienter i kön eller sanotorium
                    for (int i = 0; i < ivaSpotsLeft && i < mostILL.Count(); i++)
                    {
                        mostILL[i].StatusID = 3;
                        movedToIva++;
                    }

                    var queue = (from p in context.Patients
                                 where p.StatusID.Equals(1)
                                 orderby p.IllnessLevel descending, p.Age
                                 select p).ToList();

                    int sanCount = context.Patients.Where(p => p.StatusID == 2).Count();

                    //10 är maximalkapaciteten för sanotoriumet
                    int sanSpotsLeft = 10 - sanCount;



                    for (int i = 0; i < sanSpotsLeft && queue.Count > i; i++)
                    {
                        queue[i].StatusID = 2;
                        movedToSanotorium++;
                    }


                    //skickar ut statistik till eventinvokermetoden
                    var stats = new MoveStatisticsEventargs(movedToIva, movedToSanotorium);
                    MovedEventSender(stats);

                    //kollar hur många patienter som finns kvar i sanotoriumet och kön
                    int queueAndSanCount = context.Patients.Where(p => p.StatusID == 1 || p.StatusID == 2).Count();
                    if (queueAndSanCount == 0)
                    {
                        movePatients = false;   //kör inte loopen igen om det inte finns några kvar att flytta
                    }
                    context.SaveChanges();
                }
            }
        }
 internal virtual void MovedEventSender(MoveStatisticsEventargs args)
 {
     MovedEvent?.Invoke(this, args);
 }