@@ -112,71 +112,3 @@ def get_subject_for_pre_invitation(criteria: dict) -> str:
112112 nhs_number = result_df ["subject_nhs_number" ].iloc [0 ]
113113 logging .info (f"[SUBJECT SELECTOR] Found subject NHS number: { nhs_number } " )
114114 return nhs_number
115-
116- @staticmethod
117- def get_or_create_subject_for_lynch_self_referral (
118- screening_centre : str = "BCS01" , base_age : int = 75
119- ) -> str :
120- """
121- Retrieves a subject NHS number suitable for Lynch self-referral scenarios.
122- If no subject is found, creates one and returns its NHS number.
123-
124- Internally uses the following selection criteria:
125- {
126- "subject age": "75",
127- "subject has lynch diagnosis": "Yes",
128- "screening status": "Lynch Self-referral",
129- "subject hub code": "BCS01"
130- }
131-
132- Args:
133- screening_centre (str): Screening centre code for subject association.
134- base_age (int): Minimum age to filter subject candidates.
135-
136- Returns:
137- str: The NHS number of the selected or created subject.
138- """
139- from utils .oracle .oracle import OracleSubjectTools # avoid circular import
140-
141- criteria = {
142- "subject age" : str (base_age ),
143- "subject has lynch diagnosis" : "Yes" ,
144- "screening status" : "Lynch Self-referral" ,
145- "subject hub code" : screening_centre ,
146- }
147-
148- logging .info (
149- "[SUBJECT SELECTOR] Attempting to find or create Lynch self-referral subject"
150- )
151- user_details = UserTools .retrieve_user (f"Hub Manager at { screening_centre } " )
152- user = UserTools .get_user_object (user_details )
153- subject = Subject ()
154- query_builder = SubjectSelectionQueryBuilder ()
155-
156- query , bind_vars = query_builder .build_subject_selection_query (
157- criteria = criteria ,
158- user = user ,
159- subject = subject ,
160- )
161- result_df = OracleDB ().execute_query (query , bind_vars )
162-
163- if not result_df .empty :
164- nhs_number = result_df ["subject_nhs_number" ].iloc [0 ]
165- logging .info (
166- f"[SUBJECT SELECTOR] Found existing subject NHS number: { nhs_number } "
167- )
168- return nhs_number
169-
170- logging .warning ("[SUBJECT SELECTOR] No existing subject found — creating one" )
171- nhs_number = OracleSubjectTools ().create_self_referral_ready_subject (
172- screening_centre = screening_centre ,
173- base_age = base_age ,
174- )
175- logging .info (
176- f"[SUBJECT CREATED - LYNCH SELF-REFERRAL] NHS number: { nhs_number } "
177- )
178-
179- nhs_df = pd .DataFrame ({"subject_nhs_number" : [nhs_number ]})
180- OracleDB ().exec_bcss_timed_events (nhs_df )
181-
182- return nhs_number
0 commit comments