예제 #1
0
    def submit(self, ngsInfo, action='save'):
        if ngsInfo:
            if ngsInfo['test_ngs_date'] is not None:
                picker = datePicker.DatePicker(self.driver, self.rows[0])
                # self.dateDiagnosis_input.click()
                # picker.set_date(formInfo['diagnosis_date'], self.dateDiagnosis_input)
                dateSet = False
                while not dateSet:
                    try:
                        # self.dateDiagnosis_input.click()

                        picker.set_date(ngsInfo['test_ngs_date'])
                        dateSet = True
                    except (ElementNotVisibleException,
                            StaleElementReferenceException) as e:
                        print('Failed to set date. Page probably reloaded')
                        time.sleep(.4)

            if ngsInfo['ngs_comment']:
                self.comment_textarea.clear()
                self.comment_textarea.send_keys('ngs_comment')

            if ngsInfo['mutate_nras'] != self.mutate_nras_checkbox.is_selected(
            ):
                self.mutate_nras_checkbox.click()
            if ngsInfo['mutate_kras'] != self.mutate_kras_checkbox.is_selected(
            ):
                self.mutate_kras_checkbox.click()
            if ngsInfo['mutate_braf'] != self.mutate_braf_checkbox.is_selected(
            ):
                self.mutate_braf_checkbox.click()
            if ngsInfo['mutate_tp53'] != self.mutate_tp53_checkbox.is_selected(
            ):
                self.mutate_tp53_checkbox.click()
            if ngsInfo[
                    'mutate_fam46c'] != self.mutate_fam46c_checkbox.is_selected(
                    ):
                self.mutate_fam46c_checkbox.click()
            if ngsInfo['mutate_dis3'] != self.mutate_dis3_checkbox.is_selected(
            ):
                self.mutate_dis3_checkbox.click()
            if ngsInfo[
                    'mutate_traf3'] != self.mutate_traf3_checkbox.is_selected(
                    ):
                self.mutate_traf3_checkbox.click()
            if ngsInfo[
                    'mutate_fgfr3'] != self.mutate_fgfr3_checkbox.is_selected(
                    ):
                self.mutate_fgfr3_checkbox.click()
            if ngsInfo['mutate_atm'] != self.mutate_atm_checkbox.is_selected():
                self.mutate_atm_checkbox.click()

            if action == 'save':
                self.save_button.click()
            if action == 'cancel':
                self.cancel_button.click()
            if action == 'close':
                self.close_button.click()
            return True
        return False
예제 #2
0
    def submit(self, formInfo):
        if formInfo:
            # Date
            if formInfo['date'] is not None:
                picker = datePicker.DatePicker(self.driver, self.cont)
                dateSet = False
                while not dateSet:
                    try:
                        # self.dateDiagnosis_input.click()
                        picker.set_date(formInfo['date'])
                        dateSet = True
                    except (ElementNotVisibleException,
                            StaleElementReferenceException) as e:
                        print('Failed to set date. Page probably reloaded')
                        time.sleep(.4)

            # Type
            if formInfo['type'] is not None:
                self.set_first_diagnosis(formInfo['type'])

            # Bone lesions
            if formInfo['lesions'] is not None:
                bone_lesions = formInfo['lesions']
                if bone_lesions == 'no lesions':
                    self.lesions0.click()
                elif bone_lesions == '5 or less':
                    self.lesions1.click()
                elif bone_lesions == '6 or more':
                    self.lesions2.click()
                else:
                    self.lesions3.click()

            self.submit_button.click()
            return True
        return False
예제 #3
0
    def submit(self, gepInfo, action='cancel'):
        if gepInfo:
            if gepInfo['test_gep_date'] is not None:
                picker = datePicker.DatePicker(self.driver, self.rows[0])
                # self.dateDiagnosis_input.click()
                # picker.set_date(formInfo['diagnosis_date'], self.dateDiagnosis_input)
                dateSet = False
                while not dateSet:
                    try:
                        # self.dateDiagnosis_input.click()

                        picker.set_date(gepInfo['test_gep_date'])
                        dateSet = True
                    except (ElementNotVisibleException,
                            StaleElementReferenceException) as e:
                        print('Failed to set date. Page probably reloaded')
                        time.sleep(.4)

            if gepInfo['gep_comment']:
                self.comment_textarea.clear()
                self.comment_textarea.send_keys(gepInfo['gep_comment'])

            if action == 'save':
                self.save_button.click()
            if action == 'cancel':
                self.cancel_button.click()
            if action == 'close':
                self.close_button.click()
            return True
        return False
    def submit(self, formInfo, action='submit'):
        if formInfo:
            if formInfo['diagnosis_date'] is not None:
                picker = datePicker.DatePicker(self.driver, self.rows[0])
                dateSet = False
                while not dateSet:
                    try:
                        # self.dateDiagnosis_input.click()
                        picker.set_date(formInfo['diagnosis_date'])
                        dateSet = True
                        time.sleep(.6)
                    except (ElementNotVisibleException,
                            StaleElementReferenceException) as e:
                        print('Failed to set date. Page probably reloaded')
                        time.sleep(.4)

            if formInfo['type'] is not None:
                self.set_first_diagnosis(formInfo['type'])

            if formInfo['lesions'] is not None:
                bone_lesions = formInfo['lesions']
                if bone_lesions == 'no lesions':
                    self.boneLesion0_radio.click()
                elif bone_lesions == '5 or less':
                    self.boneLesion1_radio.click()
                elif bone_lesions == '6 or more':
                    self.boneLesion2_radio.click()
                else:
                    self.boneLesion3_radio.click()

            if formInfo[
                    'diagnosis_location']:  # Empty dict should evaluate to False
                self.facility_input.clear()
                self.facility_city_input.clear()
                location = formInfo['diagnosis_location']
                if location['facility']:
                    self.facility_input.send_keys(location['facility'])
                if location['city']:
                    self.facility_city_input.send_keys(location['city'])
                if location['state']:
                    self.set_facility_state(location['state'])

            if action == 'submit':
                self.submit_button.click()
            elif action == 'cancel':
                self.cancel_button.click()
            else:
                self.close_button.click()
            return True
        return False
예제 #5
0
    def submit(self, fishInfo, action='save'):
        if fishInfo:
            if fishInfo['test_fish_date'] is not None:
                picker = datePicker.DatePicker(self.driver, self.rows[0])
                # self.dateDiagnosis_input.click()
                # picker.set_date(formInfo['diagnosis_date'], self.dateDiagnosis_input)
                dateSet = False
                while not dateSet:
                    try:
                        # self.dateDiagnosis_input.click()

                        picker.set_date(fishInfo['test_fish_date'])
                        dateSet = True
                    except (ElementNotVisibleException,
                            StaleElementReferenceException) as e:
                        print('Failed to set date. Page probably reloaded')
                        time.sleep(.4)

            if fishInfo['gene_additions'][
                    '1q21'] != self.add_1q21_checkbox.is_selected():
                self.add_1q21_checkbox.click()

            if fishInfo['gene_deletions'][
                    'deletion_1p'] != self.deletion_1p_checkbox.is_selected():
                self.deletion_1p_checkbox.click()
            if fishInfo['gene_deletions'][
                    'deletion_17p'] != self.deletion_17p_checkbox.is_selected(
                    ):
                self.deletion_17p_checkbox.click()
            if fishInfo['gene_deletions'][
                    'deletion_13q'] != self.deletion_13q_checkbox.is_selected(
                    ):
                self.deletion_13q_checkbox.click()
            if fishInfo['gene_deletions'][
                    'deletion_16q'] != self.deletion_16q_checkbox.is_selected(
                    ):
                self.deletion_16q_checkbox.click()

            if fishInfo['gene_translocations'][
                    'trans_FGFR3'] != self.trans_FGFR3_checkbox.is_selected():
                self.trans_FGFR3_checkbox.click()
            if fishInfo['gene_translocations'][
                    'trans_CCND3'] != self.trans_CCND3_checkbox.is_selected():
                self.trans_CCND3_checkbox.click()
            if fishInfo['gene_translocations'][
                    'trans_CCND1'] != self.trans_CCND1_checkbox.is_selected():
                self.trans_CCND1_checkbox.click()
            if fishInfo['gene_translocations'][
                    'trans_cMAF'] != self.trans_cMAF_checkbox.is_selected():
                self.trans_cMAF_checkbox.click()
            if fishInfo['gene_translocations'][
                    'trans_MAFB'] != self.trans_MAFB_checkbox.is_selected():
                self.trans_MAFB_checkbox.click()
            if fishInfo['gene_translocations'][
                    'trans_ETV6'] != self.trans_ETV6_checkbox.is_selected():
                self.trans_ETV6_checkbox.click()

            if fishInfo['trisomies'][
                    'tri_3'] != self.tri_3_checkbox.is_selected():
                self.tri_3_checkbox.click()
            if fishInfo['trisomies'][
                    'tri_5'] != self.tri_5_checkbox.is_selected():
                self.tri_5_checkbox.click()
            if fishInfo['trisomies'][
                    'tri_7'] != self.tri_7_checkbox.is_selected():
                self.tri_7_checkbox.click()
            if fishInfo['trisomies'][
                    'tri_9'] != self.tri_9_checkbox.is_selected():
                self.tri_9_checkbox.click()
            if fishInfo['trisomies'][
                    'tri_11'] != self.tri_11_checkbox.is_selected():
                self.tri_11_checkbox.click()
            if fishInfo['trisomies'][
                    'tri_15'] != self.tri_15_checkbox.is_selected():
                self.tri_15_checkbox.click()
            if fishInfo['trisomies'][
                    'tri_17'] != self.tri_17_checkbox.is_selected():
                self.tri_17_checkbox.click()
            if fishInfo['trisomies'][
                    'tri_17'] != self.tri_17_checkbox.is_selected():
                self.tri_17_checkbox.click()

            if fishInfo['tetrasomies'][
                    'tetra_3'] != self.tetra_3_checkbox.is_selected():
                self.tetra_3_checkbox.click()
            if fishInfo['tetrasomies'][
                    'tetra_5'] != self.tetra_5_checkbox.is_selected():
                self.tetra_5_checkbox.click()
            if fishInfo['tetrasomies'][
                    'tetra_7'] != self.tetra_7_checkbox.is_selected():
                self.tetra_7_checkbox.click()
            if fishInfo['tetrasomies'][
                    'tetra_9'] != self.tetra_9_checkbox.is_selected():
                self.tetra_9_checkbox.click()
            if fishInfo['tetrasomies'][
                    'tetra_11'] != self.tetra_11_checkbox.is_selected():
                self.tetra_11_checkbox.click()
            if fishInfo['tetrasomies'][
                    'tetra_15'] != self.tetra_15_checkbox.is_selected():
                self.tetra_15_checkbox.click()
            if fishInfo['tetrasomies'][
                    'tetra_17'] != self.tetra_17_checkbox.is_selected():
                self.tetra_17_checkbox.click()
            if fishInfo['tetrasomies'][
                    'tetra_17'] != self.tetra_17_checkbox.is_selected():
                self.tetra_17_checkbox.click()

            if action == 'save':
                self.save_button.click()
            if action == 'cancel':
                self.cancel_button.click()
            if action == 'close':
                self.close_button.click()
            return True
        return False
    def add_diagnoses(self, additional_diagnoses):
        # Calculate row of 1st additional diagnosis diagnosis date (used as container for datePicker)
        # Depends on if 3 'old' questions are showing
        rowIndex = 7
        if self.state == 'extra_questions':
            rowIndex = 10

        # For each diagnosis, (1) set date, (2) set type, (3) set lesions, (4) click add button (if adding more)
        for i, diagnosis in enumerate(additional_diagnoses):
            conts = self.driver.find_elements_by_class_name(
                'diagnose-thrd-sec')
            cont = conts[i]

            # set date
            # dateInput = cont.find_element_by_id('diagnosisDate_' + str(i + 1))
            picker = datePicker.DatePicker(self.driver, self.rows[rowIndex])
            dateSet = False
            while not dateSet:
                try:
                    # dateInput.click()
                    picker.set_date(diagnosis['date'])
                    dateSet = True
                except ElementNotVisibleException:
                    print('notVisible')
                except StaleElementReferenceException:
                    print('stale')
                except ValueError:
                    print('value')
                except KeyError:
                    print('key')
                except (AttributeError):
                    print('attribute')
                except WebDriverException:
                    print('Failed to set date. Page probably reloaded')
                time.sleep(.4)

            # set diagnosis type
            if diagnosis['type']:
                # Row right after date row index
                self.set_dropdown(self.rows[rowIndex + 1], diagnosis['type'])

            # set lesions
            if diagnosis['lesions']:
                # get index of radio button given value
                options = [
                    'no lesions', '5 or more lesions', '6 or more lesions',
                    'i dont know'
                ]
                try:
                    optionIndex = options.index(diagnosis['lesions'].lower())
                except KeyError:
                    raw_input(
                        'Setting additional diagnosis lesions: bad key! ' +
                        str(diagnosis['lesions'].lower()))

                # Get radio input
                try:
                    radioId = str(i + 1) + 'add_bone' + str(optionIndex)
                    radioInput = cont.find_element_by_id(radioId)
                    radioInput.click()
                except NoSuchElementException:
                    raw_input(
                        'Setting additional diagnosis lesions: bad radio id! '
                        + str(radioId))

            # update row index
            rowIndex += 4  # 3 rows for date, type and bone lesions. 1 for add button (even if it doesn't have add button)

            # Click add diagnosis button (if necessary)
            if i + 1 < len(additional_diagnoses):
                self.add_diagnosis_button.click()
                # Wait until first additional diagnosis has loaded (make sure right # of rows is added)
                expectedRows = self.expectedNumRows(
                ) + 4  # expected + 4 for new diagnosis
                expectedValues = {
                    'meta': {
                        'numAddDiagnoses': 1,
                        'numRows': expectedRows,
                    }
                }
                WDW(self.driver, 5).until(lambda x: self.load(expectedValues))
    def submit(self, formInfo, submit=True):
        if formInfo:
            if formInfo['diagnosis_date'] is not None:
                picker = datePicker.DatePicker(self.driver, self.rows[0])
                dateSet = False
                while not dateSet:
                    try:
                        # self.dateDiagnosis_input.click()
                        picker.set_date(formInfo['diagnosis_date'])
                        dateSet = True
                    except (ElementNotVisibleException,
                            StaleElementReferenceException, ValueError,
                            KeyError, AttributeError, WebDriverException) as e:
                        print('Failed to set date. Page probably reloaded')
                        time.sleep(.4)
                self.load()

            if formInfo['type'] is not None:
                self.set_dropdown(self.rows[1], formInfo['type'])

            # Update state (might have 3 new questions)
            self.load_state()
            if self.state == 'extra_questions':
                self.load()

            if formInfo[
                    'stable'] is not None and self.state == 'extra_questions':
                stable_myeloma = formInfo['stable']
                if stable_myeloma == 'no':
                    self.stable_no_input.click()
                elif stable_myeloma == 'yes':
                    self.stable_yes_input.click()
                else:
                    self.stable_idk_input.click()

            if formInfo[
                    'm_protein'] is not None and self.state == 'extra_questions':
                stable_myeloma = formInfo['m_protein']
                if stable_myeloma == 'no':
                    self.mprotein_no_input.click()
                elif stable_myeloma == 'yes':
                    self.mprotein_yes_input.click()
                else:
                    self.mprotein__idk_input.click()

            if formInfo[
                    'recent_pain'] is not None and self.state == 'extra_questions':
                stable_myeloma = formInfo['recent_pain']
                if stable_myeloma == 'no':
                    self.recent_pain_no_input.click()
                elif stable_myeloma == 'yes':
                    self.recent_pain_yes_input.click()
                else:
                    self.recent_pain__idk_input.click()

            if formInfo['lesions'] is not None:
                bone_lesions = formInfo['lesions']
                if bone_lesions == 'no lesions':
                    self.boneLesion0_radio.click()
                elif bone_lesions == '5 or less':
                    self.boneLesion1_radio.click()
                elif bone_lesions == '6 or more':
                    self.boneLesion2_radio.click()
                else:
                    self.boneLesion3_radio.click()

            if formInfo['high_risk'] is not None:
                high_risk = formInfo['high_risk']
                if high_risk == 'no':
                    self.highRisk1_radio.click()
                elif high_risk == 'yes':
                    self.highRisk2_radio.click()
                else:
                    self.highRisk3_radio.click()

            if formInfo['transplant_eligible'] is not None:
                eligible = formInfo['transplant_eligible']
                if eligible == 'no':
                    self.stemCell1_radio.click()
                elif eligible == 'yes':
                    self.stemCell2_radio.click()
                else:
                    self.stemCell3_radio.click()

            if formInfo[
                    'diagnosis_location']:  # Empty dict should evaluate to False
                location = formInfo['diagnosis_location']
                if location['facility']:
                    self.facility_input.clear()
                    self.facility_input.send_keys(location['facility'])
                if location['city']:
                    self.facility_city_input.clear()
                    self.facility_city_input.send_keys(location['city'])
                if location['state']:
                    self.set_facility_state(location['state'])

            if formInfo['additional_diagnosis'] is not None:
                add_diag = formInfo['additional_diagnosis']
                if not add_diag:
                    self.add_diagNo_radio.click()
                else:
                    self.add_diagYes_radio.click()
                    expectedRows = self.expectedNumRows(
                    ) + 4  # expected + 4 for new diagnosis
                    expectedValues = {
                        'meta': {
                            'numAddDiagnoses': 1,
                            'numRows': expectedRows,
                        }
                    }
                    WDW(self.driver,
                        5).until(lambda x: self.load(expectedValues))
                    self.add_diagnoses(formInfo['additional_diagnoses'])

            if formInfo['physicians']:
                # todo: handle multiple physician inputs. load into list
                # todo: handle adding multiple physicians
                for i, physician in enumerate(formInfo['physicians']):
                    # print('i: ' + str(i))
                    # print('# physician inputs: ' + str(len(self.physicians)))
                    if i >= len(self.physicians):
                        # Form doesn't have enough rows. Add physician row and reload page
                        self.add_physician_button.click()
                        WDW(self.driver, 5).until(lambda x: self.load())
                    # enter formInfo into last row of physician inputs
                    self.set_physician(physician, i)

            if submit:
                self.continue_button.click()

            return True
        return False