Пример #1
0
 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
Пример #2
0
 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))
Пример #3
0
 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
Пример #4
0
 def biopsy_details(self, df_cols):
     data_list_df = pd.DataFrame(columns=df_cols)
     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 + ' report only')
             block_sr, block_location, block_id, block_number = ('block_not_available',) * 4
             block_check = ask.ask_y_n('Are the biopsy blocks available?')
             if block_check:
                 block_sr = input("Biopsy Block Serial Number: ")
                 block_location = BlockDescription.block_location()
                 block_id = input("Biopsy Block ID (include series identifiers): ")
                 block_number = input("Number of blocks: ")
             biopsy_date = ask.check_date("Date of Biopsy: ")
             biopsy_lab_id = input("Biopsy Lab ID/SID: ")
             print('Please input all data for ' + breast + ' block only')
             biopsy_type = ask.ask_option("Biopsy Type",
                                          ["Direct", "USG Guided", "VAB", "Tru-cut", "Steriotactic", 'Core',
                                           'Excision', 'FNAC', "Other"])
             category = "Tumour biopsy diagnosis"
             options = ['Benign', "Ductal carcinoma in situ(DCIS) with microinvasion",
                        "Ductal carcinoma in situ(DCIS) without microinvasion", "Lobular Carcinoma in Situ (LCS)",
                        "Invasive Ductal Carcinoma (IDC)", "Invasive Lobular Carcinoma (ILC)",
                        "Granulamatous Mastitis", "Papillary Carcinoma", "Phylloid Carcinoma",
                        "Invasive Mammary Carcinoma", "Invasive Breast Carcinoma", "Other"]
             tumour_diagnosis = ask.ask_option(category, options)
             tumour_grade = ask.ask_option("Tumour Biopsy Diagnosis", ["I", "II", "III"])
             lymph_emboli = ask.ask_y_n_na(question="Are Lymphovascular emboli seen?",
                                           yes_ans='Lymphovascular_emboli_biopsy_yes',
                                           no_ans='Lymphovascular_emboli_biopsy_no', na_ans='Data not in report')
             dcis_biopsy = ask.ask_y_n_na(question="Does the biopsy show DCIS", yes_ans="DCIS_biopsy_yes",
                                          no_ans="DCIS_biopsy_no", na_ans="Data not in report")
             df_data = [block_sr, block_location, block_id, block_number, biopsy_date, biopsy_lab_id, biopsy_type,
                        tumour_diagnosis, tumour_grade, lymph_emboli, dcis_biopsy]
             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
     return data_list_df, breast_biopsy
Пример #5
0
 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
Пример #6
0
 def biopsy_report_info(self, file_number='test'):
     module_name = "biopsy_report_info"
     df_cols = names('biopsy_report_info_df')
     data_list_df = pd.DataFrame(columns=df_cols)
     check = False
     while not check:
         biopsy_report_pccm = ask.ask_y_n_na("Is the biopsy report available?", yes_ans="Biopsy_report_PCCM_yes",
                                             no_ans="Biopsy_report_PCCM_no", na_ans="Biopsy Not Done")
         ihc_report_pccm = 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")
         breast_biopsy = biopsy_report_pccm
         data_list = [biopsy_report_pccm] * 11
         data_list_df.loc[biopsy_report_pccm] = data_list
         if biopsy_report_pccm == 'Biopsy_report_PCCM_yes':
             data_list_df, breast_biopsy = BiopsyData.biopsy_details(self, df_cols)
         data_all = BlockDescription.rb_lb_data(data_list_df, df_cols)
         data_list = [biopsy_report_pccm, ihc_report_pccm, breast_biopsy]+data_all
         columns_list = names(module_name)
         check = sql.review_input(file_number, columns_list, data_list)
     return data_list
Пример #7
0
 def path_stage(self):
     module_name = self.module_list[3]
     check = False
     while not check:
         category = "pT"
         options = ["is", "0", "1", "2", "3", "4", "Other"]
         pt = ask.ask_option(category, options)
         category = "pN"
         options = ["0", "1", "2", "3", "4", "Other"]
         pn = ask.ask_option(category, options)
         category = ("M")
         options = ["0", "1", "Other"]
         m = ask.ask_option(category, options)
         path_stage, clinical_stage = BlockDescription.stage(pt, pn, m)
         last_update = datetime.now().strftime("%Y-%b-%d %H:%M")
         data_list = [
             pt, pn, m, path_stage, clinical_stage, self.user_name,
             last_update
         ]
         columns_list = names(module_name)
         check = sql.review_input(self.file_number, columns_list, data_list)
     return (tuple(data_list))
Пример #8
0
 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
Пример #9
0
 def surgery_block_information_2(self):
     module_name = self.module_list[1]
     check = False
     while not check:
         no_blocks = sql.get_value(
             col_name='Number_Blocks_Surgery_Block',
             table=self.table,
             file_number=self.file_number,
             cursor=self.cursor,
             error_statement=
             "Please input number of blocks (if block information is not available "
             "please enter 0: ")
         block_id = sql.get_value(col_name='Block_ID_Surgery_Block',
                                  table=self.table,
                                  file_number=self.file_number,
                                  cursor=self.cursor,
                                  error_statement="Please input block id: ")
         blocks = BlockDescription(self.file_number, block_id, no_blocks)
         block_desc_df, block_data_all = blocks.block_description()
         breast_cancer_yes_no = sql.get_value(
             col_name='Breast_Cancer_Yes_No_Surgery_Block',
             table=self.table,
             file_number=self.file_number,
             cursor=self.cursor,
             error_statement=
             'Is this a case of breast cancer if yes answer if yes '
             'answer breast cancer_yes and if no answer '
             'breast cancer_no')
         tumour_size, tumour_unit, tumour_grade, surg_diag, dcis_yes_no, dcis_type, dcis_percent, tumour_invasion, \
         per_inv, necrosis, percent_vasc_invasion, percent_lymph_invasion, percent_stroma, margin, margin_id, \
         margin_type = (breast_cancer_yes_no, )*16
         if breast_cancer_yes_no == 'breast cancer_yes':
             tumour_size = input(
                 "Tumour size (please input dimension only, e.g, 1 x 3 x 4): "
             )
             tumour_unit = ask.ask_option("Tumour size unit", ['mm', 'cm'])
             tumour_grade = ask.ask_option("Tumour Grade",
                                           ["I", "II", "III"])
             surg_diag = ask.ask_option("Surgery Diagnosis",
                                        names('diagnosis'))
             dcis_yes_no = ask.ask_y_n_na('Is DCIS present',
                                          yes_ans='dcis_yes',
                                          no_ans='dcis_no',
                                          na_ans='Data not in Report')
             dcis_type, dcis_percent = (dcis_yes_no, ) * 2
             if dcis_yes_no == 'dcis_yes':
                 dcis_type = input(
                     'Enter type of DCIS if textual description given (else enter NA): '
                 )
                 dcis_percent = input("Percent DCIS (number only): ")
             tumour_invasion = ask.ask_option(
                 "Type of Tumour Invasion",
                 ['Microinvasion', 'Macroinvasion'])
             per_inv = ask.ask_y_n_na(question="Perineural Invasion",
                                      yes_ans='perineural_invasion_yes',
                                      no_ans='perineural_invasion_no',
                                      na_ans='Data not in Report')
             necrosis = ask.ask_y_n_na("Necrosis",
                                       yes_ans='necrosis_yes',
                                       no_ans='necrosis_no',
                                       na_ans='Data not in Report')
             percent_vasc_invasion = input(
                 "Percent Vascular Invasion "
                 "Enter number only; Enter 'Data not in report' if not available: "
             )
             percent_lymph_invasion = input(
                 "Percent Lymphocyte Invasion "
                 "Enter number only; Enter 'Data not in report' if not available: "
             )
             percent_stroma = input(
                 "Percent Stroma "
                 "Enter number only; Enter 'Data not in report' if not available: "
             )
             margin = ask.ask_option("Margins", [
                 "Surgery_Block_Margins_involved",
                 "Surgery_Block_Margins_free"
             ])
             margin_id, margin_type = ('NA', ) * 2
             if margin == 'Surgery_Block_Margins_involved':
                 margin_id = input('Margin that is involved: ')
                 margin_type = input('Margin type: ')
         tumour_block_ref, node_block_ref, ad_normal_block_ref, red_tissue_block_ref \
             = ask.join_lists(block_data_all, sep="; ")
         data_list = [
             tumour_block_ref, node_block_ref, ad_normal_block_ref,
             red_tissue_block_ref, tumour_size, tumour_unit, tumour_grade,
             surg_diag, dcis_yes_no, dcis_type, dcis_percent,
             tumour_invasion, per_inv, necrosis, percent_vasc_invasion,
             percent_lymph_invasion, percent_stroma, margin, margin_id,
             margin_type
         ]
         columns_list = names(module_name)
         check = sql.review_input(self.file_number, columns_list, data_list)
     return (tuple(data_list), block_desc_df)
Пример #10
0
 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
Пример #11
0
    def surgery_block_information_1(self):
        module_name = self.module_list[1]
        data_list = ['NA', ] * 21
        block_desc_df = pd.DataFrame()
        check = False
        while not check:
            blocks = BlockDescription(fk=self.fk, file_number=self.file_number, block_id=self.surgery_block_id,
                                      block_no=self.surgery_number_of_blocks, user_name=self.user_name)
            block_desc_df, block_descriptions_all = blocks.block_description()
            breast_cancer_yes_no = sql.get_value_no_error(col_name='breast_cancer_yes_no', table=self.table_name,
                                                 pk=self.fk, cursor=self.cursor, pk_name='fk')
            if not breast_cancer_yes_no:
                breast_cancer_yes_no = ask.ask_y_n('Is this a case of breast cancer (Unilateral OR Bilateral)',
                                               yes_ans="breast_cancer_yes", no_ans="breast_cancer_no")
            surgery_lesion_site = sql.get_value_no_error(col_name='surgery_lesion_site', table=self.table_name,
                                                pk=self.file_number, cursor=self.cursor, pk_name='file_number')
            if not surgery_lesion_site:
                surgery_lesion_site = ask.ask_list("Lesion on", ["right_breast", "left_breast", "bilateral"])
            block_info = BlockInformation(self.conn, self.cursor, self.file_number)
            specimen_resection_size, margin_size, cut_margin_size, margin_report = block_info.margin_info()
            tumour_size, tumour_size_unit, tumour_grade, surgery_diagnosis, surgery_diagnosis_comments, dcis_yes_no, \
            dcis_percent, surgery_perineural_invasion, surgery_necrosis, surgery_lymphovascular_invasion, \
            percent_lymph_invasion, stromal_tils_percent, tumour_desmoplastic_response = [breast_cancer_yes_no, ] * 13
            print('breast_cancer_yes_no: ' + breast_cancer_yes_no)
            check_answer = ask.ask_y_n('Is this correct?')
            while not check_answer:
                breast_cancer_yes_no = ask.ask_y_n('Is this a case of breast cancer (Unilateral OR Bilateral)',
                                                   yes_ans="breast_cancer_yes", no_ans="breast_cancer_no")
                check_answer = ask.ask_y_n('Is this correct?')
            if breast_cancer_yes_no == 'breast_cancer_yes':
                tumour_size = input("Tumour size (please input dimension only, e.g, 1 x 3 x 4): ")
                tumour_size_unit = ask.ask_list("Tumour size unit", ['mm', 'cm'])
                tumour_grade = ask.ask_option("Tumour Grade", ["I", "II", "III"])
                surgery_diagnosis = self.bilateral_treatment(surgery_lesion_site, "Surgery Diagnosis: ",
                                                             PathReports.diagnosis)
                surgery_diagnosis_comments = self.bilateral_treatment(surgery_lesion_site, 'Descriptive or indicative '
                                                                                           'notes for surgery '
                                                                                           'diagnosis: ', 'input')
                dcis_yes_no = self.bilateral_treatment(surgery_lesion_site, 'DCIS', ask.create_yes_no_options('DCIS'))
                dcis_percent = dcis_yes_no
                if 'dcis_yes' in dcis_yes_no:
                    dcis_percent = self.bilateral_treatment(surgery_lesion_site, "Percent DCIS (number only if given "
                                                                                 "else NA): ", 'input')
                surgery_perineural_invasion = self.bilateral_treatment(surgery_lesion_site, "Perineural Invasion: ",
                                                                       ask.create_yes_no_options('Perineural Invasion',
                                                                                                  yes='yes', no='no'))
                surgery_necrosis = self.bilateral_treatment(surgery_lesion_site, "Necrosis", ask.create_yes_no_options(
                    'Necrosis'))
                surgery_lymphovascular_invasion = self.bilateral_treatment(surgery_lesion_site,
                                                                           "Lymphovascular Invasion: ",
                                                                           ask.create_yes_no_options
                                                                           ('Lymphovascular Invasion'))
                percent_lymph_invasion = self.bilateral_treatment(surgery_lesion_site, "Percent Lymphocyte Invasion "
                                                                                       "Enter number only; Enter "
                                                                                       "'data_not_in_report' "
                                                                                       "if not available: ", 'input')
                stromal_tils_percent = self.bilateral_treatment(surgery_lesion_site, 'Stromal Tumor infiltrating '
                                                                                     'lymphocytes: ', 'input')
                tumour_desmoplastic_response = self.bilateral_treatment(surgery_lesion_site,
                                                                        "Tumor desmoplastic response: ",
                                                                        ask.create_yes_no_options
                                                                        ('Tumor desmoplastic response'))

            tumour_block_ref, node_block_ref, ad_normal_block_ref, red_tissue_block_ref \
                = ask.join_lists(block_descriptions_all, sep="; ")
            data_list = [specimen_resection_size, tumour_block_ref, margin_size, cut_margin_size, margin_report,
                        node_block_ref, ad_normal_block_ref, red_tissue_block_ref, tumour_size, tumour_size_unit,
                        tumour_grade, surgery_diagnosis, surgery_diagnosis_comments, dcis_yes_no, dcis_percent,
                        surgery_perineural_invasion, surgery_necrosis, surgery_lymphovascular_invasion,
                         percent_lymph_invasion, stromal_tils_percent, tumour_desmoplastic_response]
            columns_list = names(module_name)
            check = sql.review_input(self.file_number, columns_list, data_list)
        return tuple(data_list), block_desc_df