override public SensorMeting GenerateRandomReading()
        {
            int leeftijd;

            using (b2d4ziekenhuisContext context = new b2d4ziekenhuisContext())
            {
                leeftijd = context.Patient.Find(this.Sensor.PatientId).Leeftijd;
            }

            //Get healthy heart rate range for patient age
            Tuple <int, int> range = hartslagen.Find(hartslag => leeftijd > hartslag["age"].Item1 && leeftijd <= hartslag["age"].Item2)["range"];
            Random           rnd   = new Random();

            //5% chance to be alarming value
            if (rnd.Next(0, 100) > 5)
            {
                //normal value
                double hartslag = range.Item1;
                //Random number in range weighted to middle
                for (int i = 0; i < 4; i++)
                {
                    hartslag += rnd.NextDouble() * ((range.Item2 - range.Item1) / 4);
                }

                return(new SensorMeting()
                {
                    SensorId = this.Sensor.SensorId,
                    MetingWaarde = hartslag
                });
            }
            else
            {
                //Alarm reading
                double hartslag = range.Item2 + 100 * this.randomFactor;
                return(new SensorMeting()
                {
                    SensorId = this.Sensor.SensorId,
                    MetingWaarde = hartslag,
                    Alarm = true
                });
            }
        }
Beispiel #2
0
        /// <summary>
        /// Adds reading to database.
        /// </summary>
        private void AddReading(SensorMeting meting)
        {
            using (b2d4ziekenhuisContext context = new b2d4ziekenhuisContext())
            {
                //Check if sensor has not been deleted
                if (context.Sensor.Find(this.Sensor.SensorId) == null)
                {
                    //Sensor with this ID no longer exists, stop sensor
                    // TODO: Delete sensor in this case
                    Stop();
                }
                else if (meting != null)
                {
                    //Sensor still exists, add data
                    context.SensorMeting.Add(meting);
                    context.SaveChanges();

                    Readings++;
                }
            }
        }
Beispiel #3
0
 private async void DataRefresh()
 {
     using (b2d4ziekenhuisContext context = new b2d4ziekenhuisContext())
     {
         await context.Sensor.ForEachAsync(sensor =>
         {
             //Check if the sensor already exists
             VirtualSensor virtualSensor = ActiveSensors.Find(virtualSensor => virtualSensor.Sensor.SensorId == sensor.SensorId);
             if (virtualSensor == null)
             {
                 //Sensor does not yet exist, so make a new one
                 if (sensor.SensorType == 1)
                 {
                     ActiveSensors.Add(new Stappenteller(sensor));
                 }
                 else if (sensor.SensorType == 2)
                 {
                     ActiveSensors.Add(new Hartslagmeter(sensor));
                 }
                 else if (sensor.SensorType == 3)
                 {
                     ActiveSensors.Add(new Temperatuurmeter(sensor));
                 }
                 else if (sensor.SensorType == 4)
                 {
                     ActiveSensors.Add(new DeurAlarm(sensor));
                 }
                 else if (sensor.SensorType == 5)
                 {
                     ActiveSensors.Add(new MedicijnDispenser(sensor));
                 }
             }
             else
             {
                 virtualSensor.UpdateSensor(sensor);
             }
         });
     }
 }
Beispiel #4
0
        override public SensorMeting GenerateRandomReading()
        {
            Random rnd = new Random();

            //max 5% chance that patient tries to leave the room, slightly randomized by sensor random value
            if (rnd.Next(0, 100) < (1 + 4 * this.randomFactor))
            {
                //Check if person is allowed to leave the room
                using (b2d4ziekenhuisContext context = new b2d4ziekenhuisContext())
                {
                    if ((bool)context.Patient.Find(this.Sensor.PatientId).GeslotenKamer)
                    {
                        return(new SensorMeting()
                        {
                            SensorId = this.Sensor.SensorId,
                            MetingWaarde = 1,
                            Alarm = true
                        });
                    }
                }
            }

            return(null);
        }