def surgery_block_information_3(self): module_name = self.module_list[2] check = False while not check: surgery_er, surgery_er_percent, surgery_pr, surgery_pr_percent, surgery_her2, surgery_her2_grade, \ surgery_fish, surgery_ki67, = BlockDescription.ihc_report() sentinel, sent_number_rem, sent_number_pos = SurgeryBlockData.node_details( "Sentinel") ax, ax_number_rem, ax_number_pos = SurgeryBlockData.node_details( "Axillary") ap, ap_number_rem, ap_number_pos = SurgeryBlockData.node_details( "Apical") per_spread = ask.ask_y_n_na("Perinodal Spread", yes_ans='Yes', no_ans='No', na_ans='Data not in Report') supra_inv = ask.ask_y_n_na("Supraclavicular Node Involvment", yes_ans='Yes', no_ans='No', na_ans='Data not in Report') data_list = [ surgery_er, surgery_er_percent, surgery_pr, surgery_pr_percent, surgery_her2, surgery_her2_grade, surgery_fish, surgery_ki67, sentinel, sent_number_rem, sent_number_pos, ax, ax_number_rem, ax_number_pos, ap, ap_number_rem, ap_number_pos, per_spread, supra_inv ] columns_list = names(module_name) check = sql.review_input(self.file_number, columns_list, data_list) return (tuple(data_list))
def surgery_block_information_3(self): module_name = self.module_list[3] review_surgery_date, review_surgery_source, review_surgery_diagnosis, review_surgery_diagnosis_comment, \ review_surgery_block_id, review_surgery_er, review_surgery_er_percent, review_surgery_pr, review_surgery_pr_percent, \ review_surgery_her2, review_surgery_her2_grade, review_surgery_fish, review_surgery_ki67 = ['NA', ] * 13 data_list = ['NA', ] * 13 check = False while not check: review = ask.ask_y_n('Has a review (of diagnosis or IHC details) been done of this surgery block?') if review: review_surgery_date = ask.check_date('Date of review (if multiple dates?): ') review_surgery_source = input( 'Name of Review Laboratory (Enter multiple if required Lab_test): ') review_surgery_diagnosis = input('Enter diagnosis of review: ') review_surgery_diagnosis_comment = input('Additional comments for review diagnosis: ') review_surgery_block_id = self.surgery_block_id block_id = ask.ask_y_n('Has the block been relabelled in the review?') if block_id: old_block_id = input('Please enter old block id: ') new_block_id = input('Please enter new block id: ') review_surgery_block_id = old_block_id + ' relabelled to ' + new_block_id review_ihc = ask.ask_y_n('Has the IHC result for any marker been reviewed by another lab?') if review_ihc: review_surgery_er, review_surgery_er_percent, review_surgery_pr, review_surgery_pr_percent, \ review_surgery_her2, review_surgery_her2_grade, review_surgery_fish, review_surgery_ki67 = \ BlockDescription.ihc_report('review_surgery') data_list = [review_surgery_date, review_surgery_source, review_surgery_diagnosis, review_surgery_diagnosis_comment, review_surgery_block_id, review_surgery_er, review_surgery_er_percent, review_surgery_pr, review_surgery_pr_percent, review_surgery_her2, review_surgery_her2_grade, review_surgery_fish, review_surgery_ki67] col_list = names(module_name) check = sql.review_input(self.file_number, col_list[:-2], data_list) data = data_list + [self.user_name, sql.last_update()] return data
def tumour_biopsy_data(self): module_name = "tumour_biopsy_data" columns_list = names(module_name) df_cols = columns_list[:-2] data_list_df = pd.DataFrame(columns=df_cols) try: ihc_biopsy = sql.get_value(col_name='IHC_report_PCCM_yes_no', table=self.table, file_number=self.file_number, cursor=self.cursor) except sqlite3.Error: ihc_biopsy = ask.ask_y_n_na("Is the IHC report available?", yes_ans="IHC_report_PCCM_yes", no_ans="IHC_report_PCCM_no", na_ans="IHC Not Done") check = False while not check: try: breast_biopsy = sql.get_value(col_name='Breast_Biopsy', table=self.table, file_number=self.file_number, cursor=self.cursor) except sqlite3.Error: breast_biopsy = ask.ask_option('Breast that biopsy has been done for', ['Right Breast', 'Left Breast', 'Unilateral', "Bilateral"]) breasts = BlockDescription.breast_list(breast_biopsy) for breast in breasts: check_breast = False while not check_breast: print('Please input all data for ' + breast + ' block only') tumour_er, tumour_er_percent, tumour_pr, tumour_pr_percent, tumour_her2, tumour_her2_grade, \ tumour_fish, tumour_ki67 = (ihc_biopsy, )* 8 if ihc_biopsy == 'IHC_report_PCCM_yes': ihc_data = BlockDescription.ihc_report() tumour_er, tumour_er_percent, tumour_pr, tumour_pr_percent, tumour_her2, tumour_her2_grade, \ tumour_fish, tumour_ki67 = ihc_data fnac = ask.ask_y_n_na(question=("Lymph Node biopsy FNAC for " + breast), yes_ans="Lymph_Node_biopsy_FNAC_yes", no_ans="Lymph_Node_biopsy_FNAC_no", na_ans="Data not in report") fnac_location, fnac_diagnosis = (fnac,) * 2 if fnac == "Lymph_Node_biopsy_FNAC_yes": fnac_location = input("Please enter lymph node biopsy location: ") fnac_diagnosis = ask.ask_option("Lymph Node biopsy diagnosis", ["Lymph_Node_biopsy_malignant", "Lymph_Node_biopsy_non_malignant", "Data not in report"]) df_data = [tumour_er, tumour_er_percent, tumour_pr, tumour_pr_percent, tumour_her2, tumour_her2_grade, tumour_fish, tumour_ki67, fnac, fnac_location, fnac_diagnosis] print('Data entered for ' + breast + 'is as follows:\n') check_breast = sql.review_input(self.file_number, df_cols, df_data) data_list_df.loc[breast] = df_data data_list = BlockDescription.rb_lb_data(data_list_df, df_cols) check = sql.review_input(self.file_number, columns_list, data_list) last_update = datetime.now().strftime("%Y-%b-%d %H:%M") data_list = data_list+[last_update]+[self.user_name] return data_list
def ihc_data(self, block_id): module_name = "ihc_data" columns_list = names.names_biopsy_x(module_name) check = False while not check: print('Please input all data for ' + block_id + ' block only') tumour_er, tumour_er_percent, tumour_pr, tumour_pr_percent, tumour_her2, tumour_her2_grade, \ tumour_fish, tumour_ki67 = BlockDescription.ihc_report('Tumour_biopsy') fnac = ask.ask_y_n_na(question="Lymph Node biopsy FNAC", yes_ans="Lymph_Node_biopsy_FNAC_yes", no_ans="Lymph_Node_biopsy_FNAC_no", na_ans="Data not in report") fnac_location, fnac_diagnosis = (fnac,) * 2 if fnac == "Lymph_Node_biopsy_FNAC_yes": fnac_location = input("Please enter lymph node biopsy location: ") fnac_diagnosis = ask.ask_option("Lymph Node biopsy diagnosis", ["Lymph_Node_biopsy_malignant", "Lymph_Node_biopsy_non_malignant", "Data not in report"]) data_list = [tumour_er, tumour_er_percent, tumour_pr, tumour_pr_percent, tumour_her2, tumour_her2_grade, tumour_fish, tumour_ki67, fnac, fnac_location, fnac_diagnosis] check = sql.review_input(self.file_number, columns_list, data_list) return data_list
def surgery_block_information_2(self): module_name = self.module_list[2] data_list = ['NA', ] * 18 check = False while not check: ihc_report = BlockDescription.ihc_report(ihc_type='Tumour_surgery_block') surgery_er, surgery_er_percent, surgery_pr, surgery_pr_percent, surgery_her2, surgery_her2_grade, \ surgery_fish, surgery_ki67 = ihc_report surgery_subtype = breast_cancer_subtype('surgery', surgery_er, surgery_pr, surgery_her2, surgery_her2_grade, surgery_fish) node_details = self.node_details() sentinel_node_number_removed, sentinel_node_number_positive, axillary_node_number_removed, \ axillary_node_number_positive, apical_node_number_removed, apical_node_number_positive = node_details surgery_perinodal_spread = ask.ask_list('Perinodal Spread', ask.create_yes_no_options ('Perinodal Spread', not_cancer='requires_follow_up')) pathological_pt = input('Pathological T Status (Enter T0/T1/T2 etc as given in report): ') pathological_pn = input('Pathological N Status (Enter N0/N1/N2 etc as given in report): ') metastasis = ask.ask_y_n('Did the patient have metastasis at diagnosis?') nat = sql.get_value(col_name='neoadjuvant_therapy', table=self.table_name, pk=self.fk, cursor=self.cursor, pk_name='fk', error_statement='what is the nact status?') if nat != 'nact_no': prefix = 'yp' else: prefix = 'p' pathological_stage, clinical_stage = BlockDescription.stage(pathological_pt, pathological_pn, metastasis, prefix) data_list = [surgery_er, surgery_er_percent, surgery_pr, surgery_pr_percent, surgery_her2, surgery_her2_grade, surgery_fish, surgery_ki67, surgery_subtype, sentinel_node_number_removed, sentinel_node_number_positive, axillary_node_number_removed, axillary_node_number_positive, apical_node_number_removed, apical_node_number_positive, surgery_perinodal_spread, pathological_pt, pathological_pn, str(metastasis).lower(), pathological_stage, clinical_stage, self.user_name, sql.last_update()] columns_list = names(module_name) check = sql.review_input(self.file_number, columns_list[:-2], data_list[:-2]) return data_list
def ihc_biopsy_data(self): col_list = names.names_biopsy('ihc_biopsy_data') try: columns = names.names_biopsy('biopsy_report_info') biopsy_ihc_report_pccm = sql.extract_select_column_key( conn=self.conn, columns=columns, table=self.table_name, key_name='pk', key_value=self.pk, col_select='biopsy_ihc_report_pccm') except ValueError: biopsy_ihc_report_pccm = ask.ask_list( "Is the biopsy IHC report available?", [ "biopsy_ihc_report_pccm_yes", "biopsy_ihc_report_pccm_no", 'doctors_notes_available', 'path_history_notes_' 'available', 'requires_specialist_input' ]) data_list = ['NAv'] * 11 try: columns = names.names_biopsy('biopsy_details') benign = sql.extract_select_column_key(conn=self.conn, columns=columns, table=self.table_name, key_name='pk', key_value=self.pk, col_select='benign') # print('Diagnosis is :', benign) if benign.lower() == 'false': benign = False elif benign.lower() == 'true': benign = True else: benign = ask.ask_y_n("Is the diagnosis for this block benign?") except ValueError: benign = ask.ask_y_n("Is the diagnosis for this block benign?") check = False while not check: if benign: # print(str(benign)) print('Diagnosis is benign so IHC has not been considered') biopsy_er, biopsy_er_percent, biopsy_pr, biopsy_pr_percent, biopsy_her2, biopsy_her2_grade, biopsy_fish,\ biopsy_ki67, biopsy_subtype = ['NA'] * 9 else: print('biopsy_ihc_report_pccm: ' + biopsy_ihc_report_pccm) if biopsy_ihc_report_pccm[0] != 'biopsy_ihc_report_pccm_no': print('Please input all data for ' + self.biopsy_block_id + ' block only') biopsy_er, biopsy_er_percent, biopsy_pr, biopsy_pr_percent, biopsy_her2, biopsy_her2_grade, \ biopsy_fish, biopsy_ki67 = BlockDescription.ihc_report('biopsy') else: biopsy_er, biopsy_er_percent, biopsy_pr, biopsy_pr_percent, biopsy_her2, biopsy_her2_grade, \ biopsy_fish, biopsy_ki67 = ['NAv'] * 8 biopsy_subtype = breast_cancer_subtype('biopsy', biopsy_er, biopsy_pr, biopsy_her2, biopsy_her2_grade, biopsy_fish) fnac_lymph_node = ask.ask_list( "Lymph Node FNAC", ask.create_yes_no_options('Lymph Node FNAC')) fnac_lymph_node_location, fnac_lymph_node_diagnosis = ( fnac_lymph_node, ) * 2 if fnac_lymph_node == "lymph_node_fnac_yes": fnac_lymph_node_location = input( "Please enter lymph node biopsy location: ") fnac_lymph_node_diagnosis = ask.ask_list( "Lymph Node FNAC diagnosis", ask.create_yes_no_options('Lymph Node FNAC ' 'diagnosis', yes='malignant', no='non_malignant')) data_list = [ biopsy_er, biopsy_er_percent, biopsy_pr, biopsy_pr_percent, biopsy_her2, biopsy_her2_grade, biopsy_fish, biopsy_ki67, biopsy_subtype, fnac_lymph_node, fnac_lymph_node_location, fnac_lymph_node_diagnosis ] check = sql.review_input(self.file_number, col_list[:-2], data_list) data = data_list + [self.user_name, sql.last_update()] return data