diff --git a/.gitignore b/.gitignore index 7c5f526..1834aff 100644 --- a/.gitignore +++ b/.gitignore @@ -212,10 +212,10 @@ log/* example/* !example/readme.md -xlsx/* +/xlsx/ !xlsx/readme.md -result/*docx +/result/ !result/readme.md /.report/ \ No newline at end of file diff --git a/result/2023WSSW000709-T.docx b/result/2023WSSW000709-T.docx index 581e43d..aa64dab 100644 Binary files a/result/2023WSSW000709-T.docx and b/result/2023WSSW000709-T.docx differ diff --git a/tools/parsexlsx.py b/tools/parsexlsx.py index b3d9680..c612951 100644 --- a/tools/parsexlsx.py +++ b/tools/parsexlsx.py @@ -172,109 +172,6 @@ class Parse(BaseAssignment): def msi(self): self._to_dicts('MSI') - # def chemo(self): - # data = pd.DataFrame(self.sampledata['chemo']) - # - # project = data['project'].to_list()[0] - # - # # 分类汇总 同位点,药物合并 drug.infos.txt - # drugrsid = data[['drugname', 'genename', 'rsid', 'result', 'level', 'tips', 'drugsort']] - # drugrsid = drugrsid.drop_duplicates() - # resdrugrsid = drugrsid.groupby(['drugname', 'genename', 'rsid', 'result', 'level', 'drugsort'])['tips'].agg( - # ','.join).reset_index() - # resdrugrsid.rename(columns= - # {'drugname': '药物', 'genename': '检测基因', 'rsid': '检测位点', 'result': '基因型', - # 'level': '证据等级', 'tips': '用药提示'}, - # inplace=True) - # resdrugrsid = resdrugrsid.sort_values(by=['drugsort', '药物', '检测基因']) - # self.result['chemo']['druginfo'] = resdrugrsid.to_dict('records') - # - # # 药物 药物疗效 推荐程度合并 drug.res.txt - # drugtypesum = data[['drugname', 'drugtype', 'rsid', 'weights']] - # drugtypesum = drugtypesum.drop_duplicates() - # drugtyperes = list() - # drugsum = dict() - # for drug, drugdata in drugtypesum.groupby('drugname'): - # tipsnum = drugdata.groupby(['drugtype']).agg({'weights': 'sum'}).to_dict('index') - # sumlist = list() - # if 'LX' in tipsnum: - # LX = tipsnum['LX']['weights'] - # if LX > 0: - # lxdes = '疗效较好' - # lxnum = 1 - # elif LX == 0: - # lxdes = '疗效一般' - # lxnum = 0 - # else: - # lxdes = '疗效较差' - # lxnum = -1 - # sumlist.append(lxdes) - # else: - # LX = 0 - # lxnum = 0 - # if 'DF' in tipsnum: - # DF = tipsnum['DF']['weights'] - # if DF > 0: - # dfdes = '毒副较低' - # dfnum = 1 - # elif DF == 0: - # dfdes = '毒副一般' - # dfnum = 0 - # else: - # dfdes = '毒副较高' - # dfnum = -1 - # sumlist.append(dfdes) - # else: - # DF = 0 - # dfnum = 0 - # - # # 评价方式 疗效 1 0 -1, 毒副 1 0 -1 ,可形成9宫格 - # sumnum = lxnum + dfnum - # if sumnum > 0: - # sumdes = '推荐' - # elif sumnum == 0: - # sumdes = '常规' - # else: - # sumdes = '谨慎' - # - # # 特别药物处理 - # if (drug == "氟尿嘧啶" or drug == "卡培他滨") and DF < 0: - # sumdes = '谨慎' - # - # drugtyperes.append(dict( - # 药物名称=drug, - # 疗效=LX, - # 毒副=DF, - # 推荐程度=sumdes, - # 疗效和毒副总结=','.join(sumlist) - # )) - # drugsum[drug] = sumdes - # - # # 报告中展示药物有顺序 - # drugsort = data[['drugname', 'drugsort']].drop_duplicates() - # drugsort_dict = drugsort.set_index('drugname')['drugsort'].to_dict() - # drugtyperes_sort = sorted(drugtyperes, key=lambda x: ( - # drugsort_dict[x['药物名称']] if x['药物名称'] in drugsort_dict else 100, x['药物名称'])) - # - # drugtyperes_sort_df = pd.DataFrame(drugtyperes_sort) - # self.result['chemo']['sum'] = drugtyperes_sort_df.groupby('推荐程度')['药物名称'].apply(','.join).to_dict() - # self.result['chemo']['drugres'] = drugtyperes_sort_df.to_dict('records') - # - # # 联合用药 - # drug_combine_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'database', - # 'chemo_drug_combine.csv') - # drug_combine = pd.read_csv(drug_combine_path, sep='\t') - # drug_combine.fillna('.', inplace=True) - # drug_combine_data = drug_combine[drug_combine['source'].str.contains(project)] - # drug_combine_data = drug_combine_data.reset_index() - # if not drug_combine_data.empty: - # drug_combine_data['临床提示'] = drug_combine_data['用药方案'].apply(self._get_drug_plan, args=(drugsum,)) - # self.result['chemo']['combine'] = drug_combine_data.groupby('癌种').apply( - # lambda group: group.set_index('癌种').to_dict('records')).to_dict() - # else: - # self.result['chemo']['combine'] = dict() - # self.result['sum']['chemo_drug_num'] = len(drugsum.keys()) - def chemo(self): chemo_res = self._to_records('chemo_res', need=True) @@ -354,7 +251,7 @@ class Parse(BaseAssignment): if not data.empty: data = data.dropna() data = data[data['drug_detail'] != '.'] - data = data.applymap(lambda x: str(x).replace('\\\\', '\n') if ' \\\\' in str(x) else x) + data = data.applymap(lambda x: str(x).replace('||', '\n') if '||' in str(x) else x) res = data.set_index('drug_name')['drug_detail'].to_dict() self.result['drugs']['drugs_detail'] = res @@ -449,24 +346,6 @@ class Parse(BaseAssignment): # self.drugs_record['drugs'].update({match.group(1).strip(): match.group(2).strip()}) return drug_category_res - @staticmethod - def _get_drug_plan(x, drugsum): - tlist = x.split('+') - tdeslist = list() - for tdes in tlist: - if tdes.strip() in drugsum: - t1_des = drugsum[tdes.strip()] - tdeslist.append(t1_des) - - if '慎用' in tdeslist or '谨慎' in tdeslist: - return '慎用' - elif '推荐' in tdeslist: - return '推荐' - elif '常规' in tdeslist: - return '可选' - else: - return '可选' - def collect(self): self.cms() self.target()