def make_observation(self): observation = Observation() observation.add_feature(self.feature_names['x'], NumericFeatureValue(self.robot_location.x)) observation.add_feature(self.feature_names['y'], NumericFeatureValue(self.robot_location.y)) for dir in self.directions.keys(): observation.add_feature(self.feature_names[dir], NumericFeatureValue(self.distance_in_direction(self.directions[dir]))) return observation
def populate_observation_dict(self, obs_type, encounter, obs_dict, visit_uuid): # create datetime object based on encounter time so we can easily compare them date_time_temp = encounter.get('encounterDatetime').split('.')[0] date_time = datetime.strptime(date_time_temp, '%Y-%m-%dT%H:%M:%S') observations = encounter.get('obs') # if the dictionary is empty just place the encounter info into it # empty dictionaries evaluate to false if not obs_dict: for obs in observations: obs_string, obs_value = obs.get('display').split(':') # Creatinine readings require a baseline reading so the have to be handled seperately from everything else if obs_string == 'Creatinine in Blood (mg/dL)': obs_object = Creatinine('Labs', obs_string.strip(), obs_value, obs_value, date_time, visit_uuid) else: obs_object = Observation(obs_type, obs_string.strip(), obs_value.strip(), date_time) obs_dict[obs_string.strip()] = obs_object return obs_dict else: for obs in observations: obs_string, obs_value = obs.get('display').split(':') obs_string = obs_string.strip() obs_value = obs_value.strip() obs_object = Observation(obs_type, obs_string, obs_value, date_time) if obs_string in obs_dict: # if a second creatinine value is found under the same visit update the baseline if obs_string == 'Creatinine in Blood (mg/dL)': creat = obs_dict.get('Creatinine in Blood (mg/dL)') if creat.visit_id == 0: obs_dict[obs_string] = Creatinine('Labs', obs_string, obs_value, obs_value, date_time, visit_uuid) if creat.visit_id == visit_uuid: creat.update_baseline(obs_value) obs_dict[obs_string] = creat continue # if its a blank entry set the object if obs_dict.get(obs_string).obs_datetime == 0: obs_dict[obs_string] = obs_object # if data entry is older than what is currently in the dictionary continue if obs_dict.get(obs_string).obs_datetime >= date_time: continue # if the data entry is newer update the dictionary elif obs_dict.get(obs_string).obs_datetime < date_time: obs_dict[obs_string] = obs_object continue # if observation is not found in the dict add it else: obs_dict[obs_string] = obs_object return obs_dict
def canvas_left_click(event_data): """canvas_left_click event handler action - the left click imposes a red line in the canvas which should scale up to the actual resolution. """ global canvas, observations size = 10 x = event_data._tk_event.x y = event_data._tk_event.y # attempt to remove the mark is NEAR to an existing mark if attempt_remove_mark(x, y): # just exit if this returns True return None # make a temporary mark mark_id = canvas.oval(x - size, y, x + size, y + size, color="red") canvas.show() # ask user what species they saw species = askstring("Species", "Species name") if (species is None) or (species == ''): # they hit cancel or blank species canvas.delete(mark_id) else: # record as an observation! observation = Observation(current_image, species, x, y) observations.append(observation)
def reset_dicts(self): self.vitals_observations = {'Temperature (C)': Observation('Vitals', 'Temperature (C)', 0, 0), 'Pulse': Observation('Vitals', 'Pulse', 0, 0), 'Respiratory rate': Observation('Vitals', 'Respiratory rate', 0, 0), 'Systolic blood pressure': Observation('Vitals', 'Systolic blood pressure', 0, 0), 'Diastolic blood pressure': Observation('Vitals', 'Diastolic blood pressure', 0, 0)} self.lab_observations = {'Leukocytes (#/mL)': Observation('Labs', 'Leukocytes (#/mL)', 0, 0), 'Blasts per 100 Leukocytes (%)': Observation('Labs', 'Blasts per 100 Leukocytes (%)', 0, 0), 'Glucose in Blood (mg/dL)': Observation('Labs', 'Glucose in Blood (mg/dL)', 0, 0), 'Lactate in Blood (mmol/L)': Observation('Labs', 'Lactate in Blood (mmol/L)', 0, 0), 'Creatinine in Blood (mg/dL)': Creatinine('Labs', 'Creatinine in Blood (mg/dL)', 0, 0, 0, 0), 'Bilirubin Total (mg/dL)': Observation('Labs', 'Bilirubin Total (mg/dL)', 0, 0), 'Platelets (#/mL)': Observation('Labs', 'Platelets (#/mL)', 0, 0), 'Partial Thromboplastin Time (s)': Observation('Labs', 'Partial Thromboplastin Time (s)', 0, 0), 'Blood Cultures, Viruses': Observation('Labs', 'Blood Cultures, Viruses', 0, 0), 'Blood Cultures, Bacteria': Observation('Labs', 'Blood Cultures, Bacteria', 0, 0), 'Blood Cultures, Fungus': Observation('Labs', 'Blood Cultures, Fungus', 0, 0), 'Urinalysis': Observation('Labs', 'Urinalysis', 0, 0)}
def test_indeterminate_1(self): app = RestApp() app.load_config() app.load_kv(filename=app.kv_file) patient_id_and_name = '10000X - Brooke Lampe' current_timestamp = datetime(2017, 8, 6, 15, 14, 52, 608206) obs_timestamp = datetime(2017, 8, 6, 13, 14, 52, 608206) diabetes_i = False diabetes_ii = False ESRD = False temperature = Observation('Vitals', 'Temperature (C)', 37.5, obs_timestamp) pulse = Observation('Vitals', 'Pulse', 90, obs_timestamp) respiratory_rate = Observation('Vitals', 'Respiratory rate', 20, obs_timestamp) systolic_blood_pressure = Observation('Vitals', 'Systolic blood pressure', 120, obs_timestamp) diastolic_blood_pressure = Observation('Vitals', 'Diastolic blood pressure', 80, obs_timestamp) leukocytes = Observation('Labs', 'Leukocytes (#/mL)', 10000, obs_timestamp) blasts_per_100_leukocytes = Observation( 'Labs', 'Blasts per 100 Leukocytes (%)', 8, obs_timestamp) glucose = Observation('Labs', 'Glucose in Blood (mg/dL)', 120, obs_timestamp) lactate = Observation('Labs', 'Lactate in Blood (mmol/L)', 1, obs_timestamp) creatinine = Creatinine('Labs', 'Creatinine in Blood (mg/dL)', 0.75, 0.5, obs_timestamp, 0) bilirubin_total = Observation('Labs', 'Bilirubin Total (mg/dL)', 12, obs_timestamp) platelets_timestamp = 0 partial_thromboplastin_time_timestamp = 0 bacteria_culture_timestamp = 0 fungus_culture_timestamp = 0 virus_culture_timestamp = 0 urinalysis_timestamp = 0 colony_stimulating_factors = False heparin = False recombinant_human_erythropoientins = False app.determination( patient_id_and_name, current_timestamp, diabetes_i, diabetes_ii, ESRD, temperature, pulse, respiratory_rate, systolic_blood_pressure, diastolic_blood_pressure, leukocytes, blasts_per_100_leukocytes, glucose, lactate, creatinine, bilirubin_total, platelets_timestamp, partial_thromboplastin_time_timestamp, bacteria_culture_timestamp, fungus_culture_timestamp, virus_culture_timestamp, urinalysis_timestamp, colony_stimulating_factors, heparin, recombinant_human_erythropoientins) self.assertEqual(app.root.ids.determination_summary.text, 'Indeterminate') self.assertEqual(app.SIRS_criteria[0], 0) self.assertEqual(app.SIRS_criteria[1], 0) self.assertEqual(app.SIRS_criteria[2], 0) self.assertEqual(app.SIRS_criteria[3], 0) self.assertEqual(app.SIRS_criteria[4], 0) self.assertEqual(app.organ_criteria[0], 0) self.assertEqual(app.organ_criteria[1], 0) self.assertEqual(app.organ_criteria[2], 0) self.assertEqual(app.organ_criteria[3], 0)