Example #1
0
 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
Example #3
0
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)}
Example #5
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)