Esempio n. 1
0
    def _anomaly_detector(self, timetuple, med_name=None):
        meds_consumed = self._inventory_manager.get_inventory_delta(timetuple)
        curr_time_slot = constants.get_slot_num(timetuple)
        meds_prescribed = self._prescription_manager.get_prescribed_medicine(
            curr_time_slot)

        if med_name == None:
            for med in meds_consumed:
                if not self._check_wrong_dose(med, meds_prescribed):
                    pills = meds_consumed[med]
                    self._check_overdose(med, -pills, meds_prescribed)
                    self._check_underdose(med, -pills, meds_prescribed)
            for med in meds_prescribed:
                if med not in meds_consumed:
                    message = "You have to consume " + str(
                        meds_prescribed[med]) + " pills of " + med
                    self._anomaly_notifier(
                        self._create_data(message, 'underdose'))

        else:
            if not self._check_wrong_dose(med_name, meds_prescribed):
                print(meds_consumed)
                pills_taken = meds_consumed[med_name]
                self._check_overdose(med_name, -pills_taken, meds_prescribed)
                self._check_underdose(med_name, -pills_taken, meds_prescribed)
 def notify(self, event):
     if event.etype == 'timeslot':
         self._current_slot += event.data['timeinc']
         next_slot = self.get_next_slot(self._current_slot)
         self.notify_user(self.get_prescribed_medicine(self._current_slot))
         self._evq.new_event(
             Event(
                 'timer', {
                     'time': self._slots[next_slot][0],
                     'etype': 'timeslot',
                     'timeinc': next_slot - self._current_slot
                 }))
     elif event.etype == 'presc_man':
         event_data = deepcopy(event.data)
         #print(event_data)
         if event.data['type'] == 'new':
             self.new_prescription(event_data['prescription'])
         elif event.data['type'] == 'update':
             self.update_prescription(event_data['prescription'])
         elif event.data['type'] == 'delete':
             self.delete_prescription(event_data['prescription_id'])
     elif event.etype == 'slot_begin':
         self._create_reminder(event.data['timetuple'])
         next_slot_index = self.get_next_slot(
             constants.get_slot_num(event.data['timetuple']))
         time = constants.get_slot_time(next_slot_index)
         new_slot = Event('timer', {
             'time': time[0],
             'etype': 'slot_begin',
             'timetuple': time
         })
         self._evq.new_event(new_slot)
 def _create_reminder(self, timetuple):
     curr_time_slot = constants.get_slot_num(timetuple)
     meds_prescribed = self.get_prescribed_medicine(curr_time_slot)
     for key, value in meds_prescribed.items():
         message = "You have to take " + str(value) + " pill of " + str(
             key) + " in this slot"
         print(message)
         self.notify_user(self._create_data(message, 'reminder'))
 def __init__(self, evq, slot_num=None):
     if slot_num is None:
         slot_num = constants.get_slot_num(get_current_time())
     self._current_slot = slot_num
     self._prescriptions = []
     self._evq = evq
     self._slots = constants.slots
     self._evq.register(self, ['presc_man', 'timeslot', 'slot_begin'])
     #print(slot_num)
     self._set_next_slot_alarm(slot_num)
 def __init__(self, evq, slot_num=None):
     if slot_num is None:
         slot_num = constants.get_slot_num(get_current_time())
     self._current_slot = slot_num
     self._prescriptions = []
     self._evq = evq
     self._slots = constants.slots
     self._evq.register(self, ['presc_man', 'timeslot', 'slot_begin'])
     #print(slot_num)
     self._set_next_slot_alarm(slot_num)
Esempio n. 6
0
 def _set_reminder(self, time):
     #set reminder at end of timeslot
     next_slot_index = self._prescription_manager.get_next_slot(
         constants.get_slot_num(time))
     time = constants.get_slot_time(next_slot_index)
     event = Event('timer', {
         'time': time[1],
         'etype': 'slot_end',
         'timetuple': time
     })
     self._event_queue.new_event(event)
 def notify(self, event):
     if event.etype == 'presc_man':
         event_data = deepcopy(event.data)
         #print(event_data)
         if event.data['type'] == 'new':
             self.new_prescription(event_data['prescription'])
             self._send_med_reminder(self._current_slot)
         elif event.data['type'] == 'update':
             self.update_prescription(event_data['prescription'])
             self._send_med_reminder(self._current_slot)
         elif event.data['type'] == 'delete':
             self.delete_prescription(event_data['prescription_id'])
     elif event.etype == 'slot_begin':
         self._current_slot = constants.get_slot_num(event.data['timetuple'])
         self._send_med_reminder(self._current_slot)
         self._set_next_slot_alarm(self._current_slot)
     else:
         print('unknown event in prescription manager', event)
         assert(False)
 def notify(self, event):
     if event.etype == 'presc_man':
         event_data = deepcopy(event.data)
         #print(event_data)
         if event.data['type'] == 'new':
             self.new_prescription(event_data['prescription'])
             self._send_med_reminder(self._current_slot)
         elif event.data['type'] == 'update':
             self.update_prescription(event_data['prescription'])
             self._send_med_reminder(self._current_slot)
         elif event.data['type'] == 'delete':
             self.delete_prescription(event_data['prescription_id'])
     elif event.etype == 'slot_begin':
         self._current_slot = constants.get_slot_num(
             event.data['timetuple'])
         self._send_med_reminder(self._current_slot)
         self._set_next_slot_alarm(self._current_slot)
     else:
         print('unknown event in prescription manager', event)
         assert (False)
	def _anomaly_detector(self, timetuple, med_name=None):
		meds_consumed = self._inventory_manager.get_inventory_delta(timetuple)
		curr_time_slot = constants.get_slot_num(timetuple)
		meds_prescribed = self._prescription_manager.get_prescribed_medicine(curr_time_slot)

		if med_name == None:
			for med in meds_consumed:
				if not self._check_wrong_dose(med, meds_prescribed):
					pills = meds_consumed[med]
					self._check_overdose(med, -pills, meds_prescribed)
					self._check_underdose(med, -pills, meds_prescribed)
			for med in meds_prescribed:
				if med not in meds_consumed:
					message = "You have to consume "+str(meds_prescribed[med])+" pills of "+ med
					self._anomaly_notifier(self._create_data(message, 'underdose' ))

		else:
			if not self._check_wrong_dose(med_name, meds_prescribed):
				print(meds_consumed)
				pills_taken = meds_consumed[med_name]
				self._check_overdose(med_name, -pills_taken, meds_prescribed)
				self._check_underdose(med_name, -pills_taken, meds_prescribed)
Esempio n. 10
0
	def _set_reminder(self, time):
		#set reminder at end of timeslot 
		next_slot_index = self._prescription_manager.get_next_slot(constants.get_slot_num(time))
		time = constants.get_slot_time(next_slot_index)
		event = Event('timer', {'time':time[1], 'etype':'slot_end', 'timetuple':time} )
		self._event_queue.new_event(event)