예제 #1
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))
예제 #2
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
예제 #3
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
예제 #4
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
예제 #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 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