Skip to content

Commit f6c0a94

Browse files
Reducing duplicate code
1 parent 25260b3 commit f6c0a94

File tree

5 files changed

+53
-80
lines changed

5 files changed

+53
-80
lines changed

pages/screening_subject_search/contact_with_patient_page.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from playwright.sync_api import Page
22
from pages.base_page import BasePage
3+
from utils.calendar_picker import CalendarPicker
4+
from datetime import datetime
35

46

57
class ContactWithPatientPage(BasePage):
@@ -84,3 +86,19 @@ def select_outcome_dropdown_option(self, outcome: str) -> None:
8486
def click_save_button(self) -> None:
8587
"""Click the 'Save' button to save the contact with patient form."""
8688
self.click(self.save_button)
89+
90+
def record_post_investigation_appointment_not_required(self) -> None:
91+
"""
92+
Record a post-investigation appointment not required contact.
93+
"""
94+
self.select_direction_dropdown_option("To patient")
95+
self.select_caller_id_dropdown_index_option(1)
96+
self.click_calendar_button()
97+
CalendarPicker(self.page).v1_calender_picker(datetime.today())
98+
self.enter_start_time("11:00")
99+
self.enter_end_time("12:00")
100+
self.enter_discussion_record_text("Test Automation")
101+
self.select_outcome_dropdown_option(
102+
"Post-investigation Appointment Not Required"
103+
)
104+
self.click_save_button()

tests/regression/subject/episodes/datasets/investigation/endoscopy/polypcategories/test_advanced_colorectal_polyp.py

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
import logging
22
import pytest
3-
import pandas as pd
43
from pytest import FixtureRequest
54
from datetime import datetime
65
from playwright.sync_api import Page
7-
from classes.subject import Subject
8-
from classes.user import User
96
from pages.base_page import BasePage
107
from pages.datasets.investigation_dataset_page import (
118
InvestigationDatasetsPage,
@@ -49,19 +46,17 @@
4946
from pages.screening_subject_search.advance_fobt_screening_episode_page import (
5047
AdvanceFOBTScreeningEpisodePage,
5148
)
52-
from utils.batch_processing import batch_processing
5349
from utils.calendar_picker import CalendarPicker
5450
from utils.investigation_dataset import (
5551
InvestigationDatasetCompletion,
5652
)
57-
from utils.oracle.oracle import OracleDB
58-
from utils.oracle.subject_selection_query_builder import SubjectSelectionQueryBuilder
5953
from utils.screening_subject_page_searcher import (
6054
search_subject_episode_by_nhs_number,
6155
)
6256
from utils.datasets.investigation_datasets import (
6357
get_subject_with_investigation_dataset_ready,
6458
go_from_investigation_dataset_complete_to_a259_status,
59+
get_subject_with_a99_status,
6560
)
6661
from utils.user_tools import UserTools
6762

@@ -928,26 +923,7 @@ def test_identify_advanced_colorectal_polyp_from_histology_r(page: Page) -> None
928923
"""
929924
This test identifies an advanced colorectal polyp from histology results (BCSS-5567 - R).
930925
"""
931-
criteria = {
932-
"latest episode has colonoscopy assessment dataset": "yes_complete",
933-
"latest episode has diagnostic test": "no",
934-
"latest event status": "A99",
935-
"latest episode type": "FOBT",
936-
"latest episode started": "less than 4 years ago",
937-
}
938-
user = User()
939-
subject = Subject()
940-
941-
builder = SubjectSelectionQueryBuilder()
942-
943-
query, bind_vars = builder.build_subject_selection_query(
944-
criteria=criteria,
945-
user=user,
946-
subject=subject,
947-
subjects_to_retrieve=1,
948-
)
949-
950-
df = OracleDB().execute_query(query, bind_vars)
926+
df = get_subject_with_a99_status()
951927

952928
nhs_no = df.iloc[0]["subject_nhs_number"]
953929
logging.info(f"NHS Number: {nhs_no}")

tests/regression/subject/episodes/datasets/investigation/endoscopy/polypcategories/test_diminutive_rectal_hyperplastic_polyp.py

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
import pytest
33
from datetime import datetime
44
from playwright.sync_api import Page
5-
from classes.subject import Subject
6-
from classes.user import User
75
from pages.base_page import BasePage
86
from pages.datasets.investigation_dataset_page import (
97
InvestigationDatasetsPage,
@@ -30,33 +28,24 @@
3028
from pages.screening_subject_search.attend_diagnostic_test_page import (
3129
AttendDiagnosticTestPage,
3230
)
33-
from pages.screening_subject_search.contact_with_patient_page import (
34-
ContactWithPatientPage,
35-
)
36-
from pages.screening_subject_search.diagnostic_test_outcome_page import (
37-
DiagnosticTestOutcomePage,
38-
OutcomeOfDiagnosticTest,
39-
)
4031
from pages.screening_subject_search.subject_screening_summary_page import (
4132
SubjectScreeningSummaryPage,
4233
)
4334
from pages.screening_subject_search.advance_fobt_screening_episode_page import (
4435
AdvanceFOBTScreeningEpisodePage,
4536
)
46-
from utils.batch_processing import batch_processing
4737
from utils.calendar_picker import CalendarPicker
4838
from utils.investigation_dataset import (
4939
InvestigationDatasetCompletion,
5040
)
51-
from utils.oracle.oracle import OracleDB
52-
from utils.oracle.subject_selection_query_builder import SubjectSelectionQueryBuilder
5341
from utils.screening_subject_page_searcher import (
5442
search_subject_episode_by_nhs_number,
5543
)
5644
from utils.user_tools import UserTools
5745
from utils.datasets.investigation_datasets import (
5846
get_subject_with_investigation_dataset_ready,
5947
go_from_investigation_dataset_complete_to_a259_status,
48+
get_subject_with_a99_status,
6049
)
6150

6251
general_information = {
@@ -281,26 +270,7 @@ def test_identify_diminutive_rectal_hyperplastic_polyp_from_histology_b(
281270
"""
282271
This test identifies a diminutive rectal hyperplastic polyp from histology results. (BCSS-4659 - B)
283272
"""
284-
criteria = {
285-
"latest episode has colonoscopy assessment dataset": "yes_complete",
286-
"latest episode has diagnostic test": "no",
287-
"latest event status": "A99",
288-
"latest episode type": "FOBT",
289-
"latest episode started": "less than 4 years ago",
290-
}
291-
user = User()
292-
subject = Subject()
293-
294-
builder = SubjectSelectionQueryBuilder()
295-
296-
query, bind_vars = builder.build_subject_selection_query(
297-
criteria=criteria,
298-
user=user,
299-
subject=subject,
300-
subjects_to_retrieve=1,
301-
)
302-
303-
df = OracleDB().execute_query(query, bind_vars)
273+
df = get_subject_with_a99_status()
304274
nhs_no = df.iloc[0]["subject_nhs_number"]
305275
logging.info(f"NHS Number: {nhs_no}")
306276

tests/smokescreen/test_compartment_5.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -190,17 +190,9 @@ def test_compartment_5(page: Page, smokescreen_properties: dict) -> None:
190190
page
191191
).click_record_other_post_investigation_contact_button()
192192

193-
ContactWithPatientPage(page).select_direction_dropdown_option("To patient")
194-
ContactWithPatientPage(page).select_caller_id_dropdown_index_option(1)
195-
ContactWithPatientPage(page).click_calendar_button()
196-
CalendarPicker(page).v1_calender_picker(datetime.today())
197-
ContactWithPatientPage(page).enter_start_time("11:00")
198-
ContactWithPatientPage(page).enter_end_time("12:00")
199-
ContactWithPatientPage(page).enter_discussion_record_text("Test Automation")
200-
ContactWithPatientPage(page).select_outcome_dropdown_option(
201-
"Post-investigation Appointment Not Required"
202-
)
203-
ContactWithPatientPage(page).click_save_button()
193+
ContactWithPatientPage(
194+
page
195+
).record_post_investigation_appointment_not_required()
204196

205197
verify_subject_event_status_by_nhs_no(
206198
page, nhs_no, "A323 - Post-investigation Appointment NOT Required"

utils/datasets/investigation_datasets.py

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,33 @@ def get_subject_with_investigation_dataset_ready() -> pd.DataFrame:
5151
return df
5252

5353

54+
def get_subject_with_a99_status() -> pd.DataFrame:
55+
"""
56+
This functions obtains 1 subject who has the latest episode status A99 - Suitable for Endoscopic Test
57+
"""
58+
criteria = {
59+
"latest episode has colonoscopy assessment dataset": "yes_complete",
60+
"latest episode has diagnostic test": "no",
61+
"latest event status": "A99",
62+
"latest episode type": "FOBT",
63+
"latest episode started": "less than 4 years ago",
64+
}
65+
user = User()
66+
subject = Subject()
67+
68+
builder = SubjectSelectionQueryBuilder()
69+
70+
query, bind_vars = builder.build_subject_selection_query(
71+
criteria=criteria,
72+
user=user,
73+
subject=subject,
74+
subjects_to_retrieve=1,
75+
)
76+
77+
df = OracleDB().execute_query(query, bind_vars)
78+
return df
79+
80+
5481
def go_from_investigation_dataset_complete_to_a259_status(page: Page) -> None:
5582
"""
5683
Takes a subject who has just had thier investigation dataset compelted to having the event status A259 - Attended Diagnostic Test.
@@ -77,17 +104,7 @@ def go_from_investigation_dataset_complete_to_a259_status(page: Page) -> None:
77104
AdvanceFOBTScreeningEpisodePage(
78105
page
79106
).click_record_other_post_investigation_contact_button()
80-
ContactWithPatientPage(page).select_direction_dropdown_option("To patient")
81-
ContactWithPatientPage(page).select_caller_id_dropdown_index_option(1)
82-
ContactWithPatientPage(page).click_calendar_button()
83-
CalendarPicker(page).v1_calender_picker(datetime.today())
84-
ContactWithPatientPage(page).enter_start_time("11:00")
85-
ContactWithPatientPage(page).enter_end_time("12:00")
86-
ContactWithPatientPage(page).enter_discussion_record_text("Test Automation")
87-
ContactWithPatientPage(page).select_outcome_dropdown_option(
88-
"Post-investigation Appointment Not Required"
89-
)
90-
ContactWithPatientPage(page).click_save_button()
107+
ContactWithPatientPage(page).record_post_investigation_appointment_not_required()
91108
BasePage(page).click_back_button()
92109
SubjectScreeningSummaryPage(page).verify_latest_event_status_value(
93110
"A318 - Post-investigation Appointment NOT Required - Result Letter Created"

0 commit comments

Comments
 (0)