def test_gcs_obs(self): """ Test that a GCS observation can be submitted """ gcs_inputs = GCS_SCORE_15_DATA patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) PatientPage(self.driver).open_form(OPEN_OBS_MENU_GCS) PatientPage(self.driver).enter_obs_data(gcs_inputs) ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(CONFIRM_SUBMIT) ) self.driver.find_element(*CONFIRM_SUBMIT).click() success = 'Successfully Submitted GCS Observation' ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(( SUCCESSFUL_SUBMIT)) ) response = self.driver.find_element(*SUCCESSFUL_SUBMIT) self.assertEqual(success, response.text, 'GCS observation unsuccessful')
def test_shows_patient_data(self): """ Test that a patient record shows data (graph/table) for the patient """ patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) ui.WebDriverWait(self.driver, 1).until( ec.visibility_of_element_located(patient_page_locators.GRAPH_CHART) ) patient_graph = self.driver.find_element(* patient_page_locators .GRAPH_CHART) self.assertEqual(patient_graph.is_displayed(), True, 'Graph not found') self.driver.find_element(*patient_page_locators .TABLE_TAB_BUTTON).click() ui.WebDriverWait(self.driver, 1).until( ec.visibility_of_element_located (patient_page_locators.TABLE_CONTAINER_TABLE)) patient_table = self.driver.find_element(* patient_page_locators .TABLE_CONTAINER_TABLE) self.assertEqual(patient_table.is_displayed(), True, 'Table not found')
def test_bristol_stool_obs(self): """ Test that a Bristol Stool Scale observation can be submitted """ bristol_stool_inputs = BRISTOL_STOOL_DATA patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) PatientPage(self.driver).open_form(OPEN_OBS_MENU_BS_SCALE) PatientPage(self.driver).enter_obs_data(bristol_stool_inputs) success = 'Successfully Submitted Bristol Stool Scale Observation' ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located((SUCCESSFUL_SUBMIT))) response = self.driver.find_element(*SUCCESSFUL_SUBMIT) self.assertEqual(success, response.text, 'Bristol Stool Scale observation unsuccessful')
def open_clinical(self, task_id, patient_list_page): """ Create a clinical notification for a patient, and then open it """ PatientPage(self.driver).add_medium_risk_observation(int(task_id)) patient_list_page.go_to_task_list() tasks = patient_list_page.get_list_items() clinical_task = tasks[0] clinical_task.click()
def test_blood_sugar_obs(self): """ Test that a blood sugar observation can be submitted """ blood_sugar_input = BLOOD_SUGAR_DATA patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) PatientPage(self.driver).open_form(OPEN_OBS_MENU_BLOOD_SUGAR) PatientPage(self.driver).enter_obs_data(blood_sugar_input) success = 'Successfully Submitted Blood Sugar Observation' ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located((SUCCESSFUL_SUBMIT))) response = self.driver.find_element(*SUCCESSFUL_SUBMIT) self.assertEqual(success, response.text, 'Blood sugar observation unsuccessful')
def test_pbp_obs(self): """ Test that a postural blood pressure observation can be submitted """ postural_pressure_inputs = POSTURAL_BLOOD_PRESSURE_DATA patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) PatientPage(self.driver).open_form(OPEN_OBS_MENU_POSTURAL_PRESSURE) PatientPage(self.driver).enter_obs_data(postural_pressure_inputs) success = 'Successfully Submitted Postural Blood Pressure Observation' ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located((SUCCESSFUL_SUBMIT))) response = self.driver.find_element(*SUCCESSFUL_SUBMIT) self.assertEqual(success, response.text, 'Postural blood pressure observation unsuccessful')
def test_height_obs(self): """ Test that a height observation can be submitted """ height_input = HEIGHT_DATA patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) PatientPage(self.driver).open_form(OPEN_OBS_MENU_HEIGHT) PatientPage(self.driver).enter_obs_data(height_input) success = 'Successfully Submitted Height Observation' ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located((SUCCESSFUL_SUBMIT))) response = self.driver.find_element(*SUCCESSFUL_SUBMIT) self.assertEqual(success, response.text, 'Height observation unsuccessful')
def setUp(self): self.driver.get(MOB_LOGIN) self.login_page = LoginPage(self.driver) self.list_page = ListPage(self.driver) self.patient_page = PatientPage(self.driver) self.login_page.login(NURSE_USERNM1, NURSE_PWD1) self.list_page.go_to_patient_list() patients = self.list_page.get_list_items() patient_to_test = patients[0] self.patient_url = patient_to_test.get_attribute('href') self.driver.get(self.patient_url)
def test_news_error(self): """ Test that entering incorrect data into a NEWS ob will cause an error """ incorrect_score = INCORRECT_EWS_DATA patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) PatientPage(self.driver).open_form(OPEN_OBS_MENU_NEWS_ITEM) PatientPage(self.driver).enter_obs_data(incorrect_score) ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(TASK_FORM_INVALID_SUBMIT) ) response = self.driver.find_element( *TASK_FORM_INVALID_SUBMIT).is_displayed() self.assertEqual(response, True, 'Incorrect error handling on NEWS form')
def test_up_trend(self): """ Test that the trend is increased after submitting a low risk ob, followed by a high risk ob """ tasks = self.patient_list_page.get_list_items() patient_to_test = tasks[0] task_id = patient_to_test.get_attribute('href').replace( PATIENT_PAGE, '' ) PatientPage(self.driver).add_low_risk_observation(int(task_id)) PatientPage(self.driver).add_high_risk_observation(int(task_id)) self.driver.refresh() patient_trend = self.driver.find_element( *list_page_locators.LIST_ITEM_PATIENT_TREND ) self.assertEqual(patient_trend.get_attribute('class'), 'icon-up-arrow', 'Incorrect trend')
def test_same_trend(self): """ Test that the trend stays the same after submitting two of the same ob """ tasks = self.patient_list_page.get_list_items() patient_to_test = tasks[0] task_id = patient_to_test.get_attribute('href').replace( PATIENT_PAGE, '' ) PatientPage(self.driver).add_medium_risk_observation(int(task_id)) PatientPage(self.driver).add_medium_risk_observation(int(task_id)) self.driver.refresh() patient_trend = self.driver.find_element( *list_page_locators.LIST_ITEM_PATIENT_TREND ) self.assertEqual(patient_trend.get_attribute('class'), 'icon-same-arrow', 'Incorrect trend')
def submit_observation(context, clinical_risk): risk_dict = { 'no': NO_RISK_EWS_DATA, 'a low': LOW_RISK_SCORE_1_EWS_DATA, 'a medium': MEDIUM_RISK_SCORE_5_EWS_DATA, 'a high': HIGH_RISK_SCORE_7_EWS_DATA } risk_score = risk_dict.get(clinical_risk) if not risk_score: raise ValueError('No risk score available') page_confirm = PageConfirm(context.browser) patient_list_page = ListPage(context.browser) patient_list_page.go_to_patient_list() assert(page_confirm.is_patient_list_page()) patients = patient_list_page.get_list_items() PatientPage(context.browser).select_patient(patients) PatientPage(context.browser).open_form(OPEN_OBS_MENU_NEWS_ITEM) ObservationFormPage(context.browser).enter_obs_data(risk_score)
def test_news_obs(self): """ Test that a NEWS observation can be submitted """ score = NO_RISK_EWS_DATA patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) PatientPage(self.driver).open_form(OPEN_OBS_MENU_NEWS_ITEM) PatientPage(self.driver).enter_obs_data(score) ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(CONFIRM_SUBMIT)) self.driver.find_element(*CONFIRM_SUBMIT).click() success = 'Successfully Submitted NEWS Observation' ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located((SUCCESSFUL_SUBMIT))) response = self.driver.find_element(*SUCCESSFUL_SUBMIT) self.assertEqual(success, response.text, 'NEWS observation unsuccessful')
def test_low_risk_obs(self): """ Test that an 'assess patient' task is triggered after a low NEWS score """ low_score = LOW_RISK_SCORE_1_EWS_DATA patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) PatientPage(self.driver).open_form(OPEN_OBS_MENU_NEWS_ITEM) PatientPage(self.driver).enter_obs_data(low_score) ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(CONFIRM_SUBMIT) ) self.driver.find_element(*CONFIRM_SUBMIT).click() ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(RELATED_TASK) ) response = self.driver.find_element(*RELATED_TASK) self.assertEqual(LOW_SCORE_RESPONSE, response.text, 'Incorrect triggered action for low risk ob')
def test_medium_risk_obs(self): """ Test that an 'urgently inform medical team' task is triggered after a medium NEWS score """ medium_score = MEDIUM_RISK_SCORE_3_THREE_IN_ONE_EWS_DATA patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) PatientPage(self.driver).open_form(OPEN_OBS_MENU_NEWS_ITEM) PatientPage(self.driver).enter_obs_data(medium_score) ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(CONFIRM_SUBMIT)) self.driver.find_element(*CONFIRM_SUBMIT).click() ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(RELATED_TASK)) response = self.driver.find_element(*RELATED_TASK) self.assertEqual(MEDIUM_SCORE_RESPONSE, response.text, 'Incorrect triggered action for medium risk ob')
def setUp(self): self.driver.get(MOB_LOGIN) self.login_page = LoginPage(self.driver) self.list_page = ListPage(self.driver) self.patient_page = PatientPage(self.driver) self.login_page.login(NURSE_USERNM1, NURSE_PWD1) self.list_page.go_to_patient_list() patients = self.list_page.get_list_items() patient_to_test = patients[0] self.patient_url = patient_to_test.get_attribute('href') patient_id = self.patient_url.replace(PATIENT_PAGE, '') self.patient_page.remove_observations_for_patient(int(patient_id)) self.driver.get(self.patient_url) ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(GRAPH_CHART))
def setUp(self): self.driver.get(MOB_LOGIN) self.login_page = LoginPage(self.driver) self.list_page = ListPage(self.driver) self.patient_page = PatientPage(self.driver) self.patient_page_graph = PatientPageGraphs(self.driver) risk_mapping = { 'none': self.patient_page.add_no_risk_observation, 'low': self.patient_page.add_low_risk_observation, 'medium': self.patient_page.add_medium_risk_observation, 'high': self.patient_page.add_high_risk_observation, '3in1': self.patient_page.add_three_in_one_observation } self.login_page.login(NURSE_USERNM1, NURSE_PWD1) self.list_page.go_to_patient_list() patients = self.list_page.get_list_items() patient_to_test = patients[0] patient_id = patient_to_test.get_attribute('href').replace( PATIENT_PAGE, '') self.patient_page.remove_observations_for_patient(int(patient_id)) risk_mapping[self.risk](int(patient_id)) self.driver.get(patient_to_test.get_attribute('href')) ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located((By.CSS_SELECTOR, '#chart svg'))) self.patient_page.change_to_table() obs_table = self.patient_page.get_obs_table() rows = self.patient_page.get_table_rows(obs_table)[1:] self.row_data = [] for row in rows: self.row_data.append(self.patient_page.get_table_data(row)) self.patient_page_graph.change_to_chart() # Focus Graphs focus_graphs = self.patient_page_graph.get_focus_graphs() self.assertEqual(len(focus_graphs), 5, 'Incorrect number of graphs') self.graph_list = [] for graph in focus_graphs: self.graph_list.append(graph) self.graph_data = self.get_graph_data()
def test_take_task_news_obs(self): """ Submit adhoc observation which creates News observation task and Take task NEWS Observation from task list, submit news score """ # Enter high risk observation to create News Observation task in task # list self.patient_list_page.go_to_patient_list() high_score = HIGH_RISK_SCORE_9_EWS_DATA no_risk = NO_RISK_EWS_DATA news_task = [] success = 'Successfully Submitted NEWS Observation' patients = self.patient_list_page.get_list_items() PatientPage(self.driver).select_patient(patients) PatientPage(self.driver).open_form(OPEN_OBS_MENU_NEWS_ITEM) PatientPage(self.driver).enter_obs_data(high_score) ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(CONFIRM_SUBMIT) ) self.driver.find_element(*CONFIRM_SUBMIT).click() ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(( SUCCESSFUL_SUBMIT)) ) response = self.driver.find_element(*SUCCESSFUL_SUBMIT) self.assertEqual(success, response.text, 'NEWS observation unsuccessful') self.driver.find_element(*GO_TO_MY_TASK).click() # Click on the first news score task from Task list self.task_list_page.go_to_task_list() self.driver.refresh() for task in self.task_list_page.get_list_task(): # print(task.text) if task.text == 'NEWS Observation': news_task.append(task) news_task[0].click() # enter low risk observation PatientPage(self.driver).enter_obs_data(no_risk) ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(CONFIRM_SUBMIT) ) self.driver.find_element(*CONFIRM_SUBMIT).click() ui.WebDriverWait(self.driver, 5).until( ec.visibility_of_element_located(( SUCCESSFUL_SUBMIT)) ) response = self.driver.find_element(*SUCCESSFUL_SUBMIT) self.assertEqual(success, response.text, 'NEWS observation unsuccessful')