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 }); } }
/// <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++; } } }
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); } }); } }
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); }