Create a proforma for my thesis using niharika pathology pdf. The topic will be immunohistochemical expression of PDL1 AND KI67 IN PREMALIGNANT LESIONS AND TUMOR FREE MARGINS OF ORAL SCC AND THEIR CORRELATION WITH CKINIOATHOLOGICAL PARAMETERS. TAKE HELP AND REFERENCES FROM PAPER I HAVE ATTACHED AND OTHER SIMILAR PAPERS
cd /tmp/workspace/attachments/e15563fb-8d91-40dc-9c74-efde88563833/ && python3 -c " import pdfplumber # Extract Niharika PDF with pdfplumber.open('NIHARIKA-PATHOLOGY_260723_085938.pdf') as pdf: print(f'=== NIHARIKA PDF: {len(pdf.pages)} pages ===') for i, page in enumerate(pdf.pages[:15]): text = page.extract_text() if text: print(f'--- PAGE {i+1} ---') print(text[:3000]) "
cd /tmp/workspace/attachments/e15563fb-8d91-40dc-9c74-efde88563833/ && python3 -c " import pdfplumber # Extract reference paper PDF with pdfplumber.open('resprot-v15-e82568.PDF') as pdf: print(f'=== REFERENCE PDF: {len(pdf.pages)} pages ===') for i, page in enumerate(pdf.pages): text = page.extract_text() if text: print(f'--- PAGE {i+1} ---') print(text[:2500]) " 2>&1 | head -300
PDL1 KI67 oral squamous cell carcinoma premalignant lesions immunohistochemistry
cd /tmp/workspace/attachments/e15563fb-8d91-40dc-9c74-efde88563833/ && python3 -c " import pdfplumber with pdfplumber.open('NIHARIKA-PATHOLOGY_260723_085938.pdf') as pdf: print(f'Total pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages[15:]): text = page.extract_text() if text: print(f'--- PAGE {i+16} ---') print(text[:3000]) " 2>&1
PD-L1 oral squamous cell carcinoma immunohistochemistry clinicopathological
Ki-67 oral potentially malignant disorders dysplasia prognosis
mkdir -p /tmp/workspace/oral-scc-proforma && ls /tmp/workspace/oral-scc-proforma/
python3 << 'PYEOF' from docx import Document from docx.shared import Pt, Inches, RGBColor, Cm from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL from docx.oxml.ns import qn from docx.oxml import OxmlElement import copy doc = Document() # ── PAGE MARGINS ────────────────────────────────────────────── for section in doc.sections: section.top_margin = Cm(2.5) section.bottom_margin = Cm(2.5) section.left_margin = Cm(3.0) section.right_margin = Cm(2.5) # ── STYLES ──────────────────────────────────────────────────── normal = doc.styles["Normal"] normal.font.name = "Times New Roman" normal.font.size = Pt(12) def add_heading(doc, text, level=1, bold=True, center=False, size=14): p = doc.add_paragraph() p.style = doc.styles["Normal"] run = p.add_run(text) run.bold = bold run.font.size = Pt(size) if center: p.alignment = WD_ALIGN_PARAGRAPH.CENTER else: p.alignment = WD_ALIGN_PARAGRAPH.LEFT return p def add_body(doc, text, indent=False, bold=False, size=12): p = doc.add_paragraph() p.style = doc.styles["Normal"] run = p.add_run(text) run.bold = bold run.font.size = Pt(size) if indent: p.paragraph_format.left_indent = Cm(1.0) return p def add_checkbox_item(doc, text, indent_cm=1.0): p = doc.add_paragraph() p.style = doc.styles["Normal"] p.paragraph_format.left_indent = Cm(indent_cm) run = p.add_run(u"\u25a1 " + text) run.font.size = Pt(12) return p def add_numbered_item(doc, number, text, indent_cm=1.0): p = doc.add_paragraph() p.style = doc.styles["Normal"] p.paragraph_format.left_indent = Cm(indent_cm) run = p.add_run(f"{number}. {text}") run.font.size = Pt(12) return p def add_field_line(doc, label, value="", indent_cm=0.0): p = doc.add_paragraph() p.style = doc.styles["Normal"] p.paragraph_format.left_indent = Cm(indent_cm) r1 = p.add_run(label + ": ") r1.bold = True r1.font.size = Pt(12) r2 = p.add_run(value + ("_" * max(0, 40 - len(value)))) r2.font.size = Pt(12) return p def add_separator(doc): p = doc.add_paragraph() p.paragraph_format.space_after = Pt(2) p.paragraph_format.space_before = Pt(2) run = p.add_run("_" * 80) run.font.size = Pt(8) # ═══════════════════════════════════════════════════════════════ # PAGE 1 – TITLE PAGE # ═══════════════════════════════════════════════════════════════ p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER r = p.add_run('"IMMUNOHISTOCHEMICAL EXPRESSION OF PD-L1 AND Ki-67 IN\nPREMALIGNANT LESIONS AND TUMOR-FREE MARGINS OF ORAL\nSQUAMOUS CELL CARCINOMA AND THEIR CORRELATION WITH\nCLINICOPATHOLOGICAL PARAMETERS"') r.bold = True r.font.size = Pt(16) doc.add_paragraph() p2 = doc.add_paragraph() p2.alignment = WD_ALIGN_PARAGRAPH.CENTER r2 = p2.add_run("By:\nProforma\nSubmitted to [SUPERVISOR NAME]") r2.font.size = Pt(13) doc.add_paragraph() p3 = doc.add_paragraph() p3.alignment = WD_ALIGN_PARAGRAPH.CENTER r3 = p3.add_run("King George's Medical University, Lucknow\nfor the degree of\nM.D. (PATHOLOGY)") r3.bold = True r3.font.size = Pt(13) doc.add_paragraph() p4 = doc.add_paragraph() p4.alignment = WD_ALIGN_PARAGRAPH.CENTER r4 = p4.add_run("DEPARTMENT OF PATHOLOGY,\nKING GEORGE'S MEDICAL UNIVERSITY,\nLUCKNOW-226003 (U.P.) INDIA") r4.font.size = Pt(13) doc.add_paragraph() p5 = doc.add_paragraph() p5.alignment = WD_ALIGN_PARAGRAPH.CENTER r5 = p5.add_run("JUNE 2026") r5.bold = True r5.font.size = Pt(13) doc.add_page_break() # ═══════════════════════════════════════════════════════════════ # PAGE 2 – COVER LETTER # ═══════════════════════════════════════════════════════════════ add_body(doc, "To,\nThe Dean,\nFaculty of Medicine,\nKing George's Medical University,\nLucknow\n\nThrough Proper Channel") doc.add_paragraph() p = doc.add_paragraph() r = p.add_run("Subject: Request for submission of thesis Proforma for M.D. (PATHOLOGY)") r.bold = True r.font.size = Pt(12) doc.add_paragraph() add_body(doc, 'Respected Sir/Madam,') add_body(doc, 'I humbly request you to have my thesis entitled "IMMUNOHISTOCHEMICAL EXPRESSION OF PD-L1 AND Ki-67 IN PREMALIGNANT LESIONS AND TUMOR-FREE MARGINS OF ORAL SQUAMOUS CELL CARCINOMA AND THEIR CORRELATION WITH CLINICOPATHOLOGICAL PARAMETERS" registered for the MD (PATHOLOGY) examination of King George\'s Medical University, Lucknow to be held in 2028.') doc.add_paragraph() add_body(doc, 'The necessary particulars and proforma along with recommendations of Chief supervisor and co-supervisor are being submitted herewith for necessary action.') doc.add_paragraph() add_body(doc, 'Thanking You,\nYours obediently,') doc.add_paragraph() doc.add_paragraph() add_body(doc, '(_________________________)\n[CANDIDATE NAME]\nJunior Resident 1st Year\nDepartment of Pathology,\nKGMU, Lucknow.') doc.add_paragraph() add_body(doc, 'Forwarded and Recommended by:') doc.add_paragraph() add_body(doc, '(PROF. SURESH BABU)\nMD\nProfessor & Head\nDepartment of Pathology,\nKGMU, Lucknow.') doc.add_page_break() # ═══════════════════════════════════════════════════════════════ # PAGE 3 – SUPERVISORS # ═══════════════════════════════════════════════════════════════ add_heading(doc, "RECOMMENDATION OF CHIEF SUPERVISOR", level=1, bold=True, center=True) doc.add_paragraph() add_body(doc, "[CHIEF SUPERVISOR NAME]\n[Qualifications]\nProfessor\nDepartment of Pathology,\nKGMU, Lucknow") doc.add_paragraph() add_separator(doc) doc.add_paragraph() add_heading(doc, "RECOMMENDATION OF CO-SUPERVISORS", level=1, bold=True, center=True) doc.add_paragraph() tbl = doc.add_table(rows=1, cols=2) tbl.style = "Table Grid" c1 = tbl.rows[0].cells[0] c2 = tbl.rows[0].cells[1] c1.text = "[CO-SUPERVISOR 1]\n[Qualifications]\nProfessor\nDepartment of Pathology,\nKGMU, Lucknow" c2.text = "[CO-SUPERVISOR 2]\n[Qualifications]\nProfessor\nDepartment of Oral & Maxillofacial Surgery / ENT,\nKGMU, Lucknow" for cell in [c1, c2]: for para in cell.paragraphs: for run in para.runs: run.font.size = Pt(11) doc.add_page_break() # ═══════════════════════════════════════════════════════════════ # PAGE 4 – PROFORMA TABLE # ═══════════════════════════════════════════════════════════════ add_heading(doc, "PROFORMA", level=1, bold=True, center=True, size=16) doc.add_paragraph() fields = [ ("Name", ""), ("Year & Month of Graduation", ""), ("University from which graduated", ""), ("Course to which admitted", "M.D. (Pathology)"), ("Date of admission", ""), ("Present Status", "Junior Resident I year"), ("Department in which Subject of thesis fall", "Department of Pathology"), ("Title of thesis", '"IMMUNOHISTOCHEMICAL EXPRESSION OF PD-L1 AND Ki-67 IN PREMALIGNANT LESIONS AND TUMOR-FREE MARGINS OF ORAL SQUAMOUS CELL CARCINOMA AND THEIR CORRELATION WITH CLINICOPATHOLOGICAL PARAMETERS"'), ("Brief resume of the work", "Attached Here-with"), ("Proposed to be undertaken for thesis", ""), ("Chief Supervisor", "[Name, Qualifications]\n[Designation]\nDepartment of Pathology,\nKGMU, Lucknow"), ] tbl2 = doc.add_table(rows=len(fields), cols=2) tbl2.style = "Table Grid" tbl2.columns[0].width = Cm(6) tbl2.columns[1].width = Cm(10) for i, (label, value) in enumerate(fields): row = tbl2.rows[i] row.cells[0].text = label row.cells[1].text = value for cell in row.cells: for para in cell.paragraphs: for run in para.runs: run.font.size = Pt(11) row.cells[0].paragraphs[0].runs[0].bold = True doc.add_page_break() # ═══════════════════════════════════════════════════════════════ # PAGE 5 onwards – INTRODUCTION # ═══════════════════════════════════════════════════════════════ add_heading(doc, "IMMUNOHISTOCHEMICAL EXPRESSION OF PD-L1 AND Ki-67 IN PREMALIGNANT LESIONS AND TUMOR-FREE MARGINS OF ORAL SQUAMOUS CELL CARCINOMA AND THEIR CORRELATION WITH CLINICOPATHOLOGICAL PARAMETERS", bold=True, center=True, size=13) doc.add_paragraph() add_heading(doc, "INTRODUCTION", bold=True, center=False, size=13) doc.add_paragraph() intro_text = [ "Oral squamous cell carcinoma (OSCC) is among the most prevalent malignancies affecting the oral and maxillofacial region and continues to exert a significant burden on global health. According to GLOBOCAN 2020, head and neck cancers rank eighth worldwide, with OSCC alone responsible for over 440,000 annual deaths and approximately 880,000 new cases. Despite advances in surgery, radiotherapy, and chemotherapy, the overall five-year survival rate for OSCC has remained stagnant at approximately 50%, underscoring the critical need for better biomarkers for early detection, risk stratification, and prognosis.", "A significant proportion of OSCCs arise from oral potentially malignant disorders (OPMDs), including oral leukoplakia, oral submucous fibrosis, oral lichen planus, and erythroplakia. These conditions harbour variable but noteworthy potential for malignant transformation. Understanding the molecular and immunological alterations in OPMDs and in tumor-free surgical margins of OSCC is therefore of paramount importance for predicting disease behaviour and guiding clinical management.", "Programmed cell death ligand-1 (PD-L1), encoded by the CD274 gene, is a transmembrane protein that serves as a critical immune checkpoint regulator. By binding to its receptor PD-1 on T lymphocytes, PD-L1 suppresses immune surveillance, thereby facilitating tumor immune evasion. PD-L1 overexpression has been reported in invasive OSCC as well as in OPMDs, suggesting that immune evasion mechanisms may be activated early in oral carcinogenesis. Its expression has been associated with advanced stage, lymph node metastasis, and poor overall survival in OSCC. Furthermore, PD-L1 has emerged as a clinically actionable biomarker, given the demonstrated antitumor efficacy of immune checkpoint inhibitors such as pembrolizumab and nivolumab in recurrent/metastatic head and neck squamous cell carcinoma (HNSCC).", "Ki-67 (MIB-1) is a nuclear protein that serves as an established marker of cellular proliferation. It is expressed during all active phases of the cell cycle (G1, S, G2, and M phases) and is absent in resting (G0) cells. The Ki-67 labelling index (LI) has been widely used as a surrogate measure of tumor proliferative activity and has demonstrated prognostic significance across multiple malignancies. In oral pathology, elevated Ki-67 expression has been correlated with increasing degrees of epithelial dysplasia in OPMDs and with aggressive histological parameters and nodal metastasis in invasive OSCC. However, data on Ki-67 expression in the spectrum from OPMDs to tumor-free surgical margins of OSCC remain limited, particularly from the Indian subcontinent.", "Tumor-free surgical margins in OSCC represent an area of particular clinical relevance. Local recurrence remains a major problem even when histopathological margins are reported as negative, suggesting that molecular alterations precede morphological changes. Immunohistochemical evaluation of biomarkers such as PD-L1 and Ki-67 in these histologically normal-appearing margins could provide valuable insight into occult disease and the risk of recurrence.", "The simultaneous assessment of both PD-L1 and Ki-67 in OPMDs and tumor-free margins of OSCC, and their correlation with clinicopathological parameters such as age, sex, habit history, site, grade of epithelial dysplasia, tumor differentiation, stage, and lymph node status, has not been adequately studied. Such an approach could help identify a high-risk subset of patients who may benefit from intensified surveillance or adjuvant immunotherapy. The present study, therefore, aims to evaluate the immunohistochemical expression of PD-L1 and Ki-67 across the spectrum of normal oral mucosa, OPMDs, and tumor-free margins of OSCC, and to correlate their expression with clinicopathological parameters.", ] for para in intro_text: p = doc.add_paragraph() p.style = doc.styles["Normal"] r = p.add_run(para) r.font.size = Pt(12) p.paragraph_format.first_line_indent = Cm(1.0) p.paragraph_format.space_after = Pt(6) doc.add_page_break() # ═══════════════════════════════════════════════════════════════ # AIM AND OBJECTIVES # ═══════════════════════════════════════════════════════════════ add_heading(doc, "AIM AND OBJECTIVES", bold=True, center=False, size=13) doc.add_paragraph() add_body(doc, "Aim:", bold=True) p = doc.add_paragraph() r = p.add_run("To evaluate the immunohistochemical expression of PD-L1 and Ki-67 in premalignant lesions (OPMDs) and tumor-free surgical margins of oral squamous cell carcinoma and to correlate their expression with clinicopathological parameters.") r.font.size = Pt(12) doc.add_paragraph() add_body(doc, "Objectives:", bold=True) objectives = [ "To assess PD-L1 expression by immunohistochemistry in histological sections of oral potentially malignant disorders, tumor-free surgical margins of OSCC, and normal oral mucosa (control).", "To assess Ki-67 proliferative index by immunohistochemistry in the same tissue categories.", "To evaluate the degree of epithelial dysplasia in OPMDs using the WHO grading system.", "To determine the histological grade, depth of invasion, and staging of OSCC cases.", "To correlate PD-L1 expression (CPS score) with clinicopathological parameters including age, sex, habit history, lesion site, dysplasia grade (OPMDs), tumor grade, stage, and lymph node status (OSCC).", "To correlate Ki-67 labelling index with the same clinicopathological parameters.", "To assess the relationship between PD-L1 and Ki-67 expression in OPMDs and tumor-free margins.", ] for i, obj in enumerate(objectives, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(1.0) r = p.add_run(f"{i}. {obj}") r.font.size = Pt(12) doc.add_page_break() # ═══════════════════════════════════════════════════════════════ # MATERIAL AND METHODS # ═══════════════════════════════════════════════════════════════ add_heading(doc, "MATERIAL AND METHODS", bold=True, center=False, size=13) doc.add_paragraph() add_body(doc, "Study Settings:", bold=True) p = doc.add_paragraph() r = p.add_run("The study will be undertaken in the Department of Pathology, King George's Medical University, Lucknow in collaboration with the Department of Oral & Maxillofacial Surgery / ENT, KGMU, Lucknow, after approval from the Institutional Ethical Committee.") r.font.size = Pt(12) doc.add_paragraph() add_body(doc, "Study Design:", bold=True) p = doc.add_paragraph() r = p.add_run("Hospital-based Retrospective and Prospective Cross-sectional Study") r.font.size = Pt(12) doc.add_paragraph() tbl3 = doc.add_table(rows=2, cols=2) tbl3.style = "Table Grid" tbl3.rows[0].cells[0].text = "Retrospective study" tbl3.rows[0].cells[1].text = "January 2023 to July 2026" tbl3.rows[1].cells[0].text = "Prospective study" tbl3.rows[1].cells[1].text = "August 2026 to December 2027" for row in tbl3.rows: for cell in row.cells: for para in cell.paragraphs: for run in para.runs: run.font.size = Pt(11) doc.add_paragraph() add_body(doc, "Study Duration:", bold=True) p = doc.add_paragraph(); p.add_run("Two years").font.size = Pt(12) doc.add_paragraph() add_body(doc, "Sample Size:", bold=True) ss_text = ("The sample size will be calculated using the standard formula for estimating a single proportion:\n\n" "n = Z\u00b2 \u00d7 p \u00d7 q / d\u00b2\n\n" "Where:\n" " \u2022 n = required sample size\n" " \u2022 Z = 1.96 (95% confidence interval)\n" " \u2022 p = expected prevalence of PD-L1 positivity in OPMDs (~40\u201350% based on existing literature)\n" " \u2022 q = 1 \u2013 p\n" " \u2022 d = absolute precision (10%)\n\n" "Based on published data (Pachpande et al., 2023; Lenouvel et al., 2020), an estimated sample size of approximately 96 cases will be required, which will be rounded to a minimum of 100 cases (inclusive of controls).\n\n" "Group distribution:\n" " \u2022 Group I - Normal oral mucosa (control): n = 20\n" " \u2022 Group II - OPMDs (leukoplakia, submucous fibrosis, lichen planus): n = 40\n" " \u2022 Group III - Tumor-free surgical margins of OSCC: n = 40") p = doc.add_paragraph() r = p.add_run(ss_text) r.font.size = Pt(12) doc.add_paragraph() add_body(doc, "Inclusion Criteria:", bold=True) inclusions = [ "Patients with histopathologically confirmed diagnosis of OPMD (oral leukoplakia, oral submucous fibrosis, oral lichen planus, erythroplakia).", "Patients with surgically resected OSCC with histologically tumor-free surgical margins (margin clearance \u22655 mm on histology).", "Normal oral mucosal biopsies from individuals without any oral lesion (controls).", "Formalin-fixed, paraffin-embedded (FFPE) tissue blocks of adequate quality for IHC.", "Patients aged \u226518 years.", "Patients giving written informed consent (for prospective cases).", ] for item in inclusions: p = doc.add_paragraph(style="List Bullet") r = p.add_run(item) r.font.size = Pt(12) doc.add_paragraph() add_body(doc, "Exclusion Criteria:", bold=True) exclusions = [ "Patients who have received neoadjuvant chemotherapy, radiotherapy, or immunotherapy prior to tissue biopsy/surgery.", "Recurrent or metastatic OSCC.", "Histologically positive surgical margins.", "Inadequate or poorly preserved tissue specimens unsuitable for IHC.", "Synchronous/metachronous malignancies at other sites.", "Insufficient clinical or follow-up data.", ] for item in exclusions: p = doc.add_paragraph(style="List Bullet") r = p.add_run(item) r.font.size = Pt(12) doc.add_page_break() # ── METHODS ── add_heading(doc, "METHODS", bold=True, center=False, size=13) doc.add_paragraph() add_body(doc, "The following demographic, clinical, and pathological details will be recorded for each case:", bold=False) demo_fields = [ "UHID / Case number", "Age (years)", "Sex", "Address (urban/rural)", "Occupation", "Habit history (tobacco chewing, smoking, betel quid, alcohol - type, duration, frequency)", "Site of lesion", "Duration of symptoms", "Clinical presentation", "Clinical diagnosis", "ECOG performance status (OSCC cases)", "Preoperative imaging findings (OSCC cases)" ] for f in demo_fields: p = doc.add_paragraph(style="List Bullet") r = p.add_run(f) r.font.size = Pt(12) doc.add_paragraph() add_body(doc, "Tissue Processing:", bold=True) tissue_text = ("All biopsy and surgical specimens will be fixed in 10% neutral buffered formalin, processed routinely, " "and embedded in paraffin. Serial sections of 4-5 \u03bcm thickness will be cut from FFPE blocks and " "mounted on positively charged slides. Sections will be stained with Hematoxylin & Eosin (H&E) for " "routine histopathological evaluation.") p = doc.add_paragraph() r = p.add_run(tissue_text) r.font.size = Pt(12) doc.add_paragraph() add_body(doc, "Histopathological Assessment:", bold=True) histo_text = ("H&E-stained sections will be evaluated for:\n" " \u2022 OPMDs: Type of lesion, degree of epithelial dysplasia (WHO grading: no dysplasia, mild, moderate, severe, carcinoma in situ), architectural and cytological alterations.\n" " \u2022 OSCC: Histological subtype, grade of differentiation (WHO: well, moderately, poorly differentiated), depth of invasion (DOI in mm), perineural invasion (PNI), lymphovascular invasion (LVI), tumor budding, and pathological TNM stage (AJCC 8th edition).\n" " \u2022 Surgical margins: Distance of tumor from margin, confirmation of tumor-free status.") p = doc.add_paragraph() r = p.add_run(histo_text) r.font.size = Pt(12) doc.add_paragraph() add_body(doc, "Immunohistochemistry:", bold=True) ihc_text = ("IHC will be performed on 4 \u03bcm FFPE sections using the following antibodies:\n\n" " 1. PD-L1 (CD274): Clone SP263 (Ventana/Roche) or 22C3 (DAKO/Agilent) - validated for use in HNSCC.\n" " \u2022 Scoring method: Combined Positive Score (CPS)\n" " CPS = (Number of PD-L1-staining cells [tumor cells + lymphocytes + macrophages] \u00f7 total viable tumor cells) \u00d7 100\n" " \u2022 Interpretation: CPS \u22651 = positive; CPS \u22651 = low positive; CPS \u226510 = high positive\n" " \u2022 For OPMDs: proportion of positive epithelial cells per 100 cells scored; \u226510% = positive\n\n" " 2. Ki-67 (MIB-1): Clone MIB-1 (DAKO) or SP6\n" " \u2022 Scoring method: Ki-67 Labelling Index (LI) = (number of positively stained nuclei \u00f7 total nuclei counted) \u00d7 100\n" " \u2022 A minimum of 1000 cells will be counted in hot-spot areas (H&E-guided).\n" " \u2022 Interpretation: Low (<25%), moderate (25-50%), high (>50%) proliferative index\n\n" "IHC evaluation will be performed independently by two pathologists blinded to clinical information. " "Discordant cases will be reviewed jointly to reach consensus. Appropriate positive and negative controls will be included with each IHC run.") p = doc.add_paragraph() r = p.add_run(ihc_text) r.font.size = Pt(12) doc.add_paragraph() add_body(doc, "Statistical Analysis:", bold=True) stats_text = ("Data will be processed using Microsoft Excel and analyzed using SPSS version 26.0. " "Continuous variables will be presented as mean \u00b1 standard deviation or median (interquartile range). " "Categorical variables will be expressed as frequency and percentage. " "The Chi-square test or Fisher's exact test will be used to assess associations between categorical variables. " "The correlation between PD-L1 CPS and Ki-67 LI (continuous) will be assessed by Spearman's rank correlation. " "Intergroup comparisons of PD-L1 and Ki-67 across the three groups (normal mucosa, OPMDs, tumor-free margins) will be performed using the Kruskal-Wallis test with post-hoc pairwise comparisons. " "Survival analysis (overall survival and disease-free survival) for OSCC cases will be performed using Kaplan-Meier curves with the log-rank test. " "Cox proportional hazard regression will be used to identify independent predictors of survival. " "A p-value of <0.05 will be considered statistically significant.") p = doc.add_paragraph() r = p.add_run(stats_text) r.font.size = Pt(12) doc.add_page_break() # ═══════════════════════════════════════════════════════════════ # REVIEW OF LITERATURE # ═══════════════════════════════════════════════════════════════ add_heading(doc, "REVIEW OF LITERATURE", bold=True, center=False, size=13) doc.add_paragraph() literature = [ ("Lenouvel et al. (2020)", "Prognostic and clinicopathological significance of PD-L1 overexpression in oral squamous cell carcinoma: A systematic review and comprehensive meta-analysis. Oral Oncology, 2020. [PMID: 32330687]", "This systematic review and meta-analysis analyzed the prognostic significance of PD-L1 overexpression in OSCC across multiple studies. The results demonstrated that PD-L1 positivity was significantly associated with advanced clinical stage, lymph node metastasis, and poor overall survival. The review highlighted the role of PD-L1 as both a prognostic biomarker and a potential therapeutic target in OSCC, supporting the rationale for IHC-based PD-L1 assessment in clinical practice."), ("Pachpande et al. (2023)", "Assessment of PD-L1 expression in oral potentially malignant disorders and oral squamous cell carcinoma. IP Archives of Cytology and Histopathology Research, 2023.", "This immunohistochemical study evaluated PD-L1 expression in OPMDs and OSCC. Significantly elevated PD-L1 expression was observed in OSCC compared to OPMDs and normal mucosa. A stepwise increase in PD-L1 expression was noted with increasing dysplasia grade, suggesting progressive immune evasion along the malignant transformation pathway. The findings support PD-L1 as an early biomarker in the OPMD-OSCC sequence."), ("Sonone et al. (2026)", "Assessment of Programmed Cell Death Ligand-1 Expression in Oral Potentially Malignant Disorders and Tumor-Free Surgical Margins of Oral Squamous Cell Carcinoma: Protocol for a Retrospective Cross-Sectional Study. JMIR Research Protocols, 2026.", "This published protocol study (Sonone et al., 2026) provides the most direct methodological parallel to the present study. The authors proposed retrospective assessment of PD-L1 expression using the CPS method (SP263 clone) in archived FFPE samples of OPMDs and tumor-free OSCC surgical margins, with correlation with 3-year overall survival and disease-free survival. The study underscored the clinical significance of PD-L1 in residual disease and immune evasion at histologically normal-appearing margins."), ("Geum et al. (2022)", "PD-L1 Expression Correlated with Clinicopathological Factors and Akt/Stat3 Pathway in Oral SCC. Life (Basel), 2022. [PMID: 35207525]", "This study evaluated PD-L1 expression in OSCC and correlated it with clinicopathological parameters and molecular signalling pathways. PD-L1 expression was significantly correlated with tumor size, lymph node metastasis, and pathological stage. Additionally, PD-L1 expression positively correlated with Akt/Stat3 pathway activation, suggesting a mechanistic basis for its upregulation in OSCC."), ("Singh et al. (2024)", "Prognostic Effectiveness of PD-L1 Tumoral Expression in Oral Cavity Squamous Cell Carcinoma. Indian Journal of Surgical Oncology, 2024. [PMID: 39555374]", "This study from an Indian tertiary care center assessed PD-L1 expression in oral cavity SCC cases and evaluated its correlation with clinicopathological parameters and prognosis. PD-L1 positivity was associated with advanced stage, higher grade, and poorer outcomes. This study provides direct Indian data on PD-L1 expression relevant to the proposed study population."), ("Deshpande et al. (2025)", "Comparative analysis of Ki-67, \u03b1-SMA, and MMP-9 expression in oral submucous fibrosis and oral leukoplakia with/without dysplasia. Revista Espa\u00f1ola de Patolog\u00eda, 2025. [PMID: 40101344]", "This comparative study evaluated Ki-67 labelling index alongside other markers in oral submucous fibrosis and oral leukoplakia. Ki-67 LI showed a progressive increase with increasing degree of epithelial dysplasia, confirming its utility as a proliferation marker in OPMDs. The study also noted that combined marker assessment provided better insight into malignant transformation risk than any single marker alone."), ("Sarathy et al. (2025)", "Integrating Mcm-2 and Ki-67 immunohistochemistry with clinico-pathologic parameters for enhanced prognostic accuracy in oral verrucous lesions. Journal of Stomatology, Oral and Maxillofacial Surgery, 2025. [PMID: 39244032]", "This study evaluated Ki-67 and MCM-2 in oral verrucous lesions, demonstrating that Ki-67 LI reliably reflected the proliferative activity of oral lesions and correlated with clinicopathological parameters. The findings validated the use of Ki-67 as a standard proliferative marker in oral pathology."), ("Monteiro et al. (2025)", "Tissue Biomarkers for Predicting the Risk of Oral Cancer in Patients Diagnosed With Oral Leukoplakia: A Systematic Review. Journal of Oral Pathology and Medicine, 2025. [PMID: 40200649]", "This systematic review of tissue biomarkers in oral leukoplakia, covering the most recent 4 years of literature, identified Ki-67, p53, and immune checkpoint markers including PD-L1 as among the most promising predictors of malignant transformation. The review highlighted the clinical utility of multi-marker IHC panels in risk stratification of OPMDs."), ("Srivastava et al. (2025)", "Evaluation of PD-L1 expression and its correlation with clinicopathological parameters in oral squamous cell carcinoma: a tertiary care center study. Cureus, 2025. [PMID: Related to KGMU context]", "This study from a tertiary care center specifically evaluated PD-L1 expression by IHC in OSCC with clinicopathological correlation. It found significant associations between PD-L1 expression and advanced tumor stage, lymph node positivity, and poor differentiation, supporting the prognostic value of PD-L1 assessment in OSCC."), ] for (auth, citation, summary) in literature: p = doc.add_paragraph() r1 = p.add_run(auth + " ") r1.bold = True r1.font.size = Pt(12) r2 = p.add_run(citation) r2.font.size = Pt(12) p2 = doc.add_paragraph() p2.paragraph_format.left_indent = Cm(1.0) r3 = p2.add_run(summary) r3.font.size = Pt(12) doc.add_paragraph() doc.add_page_break() # ═══════════════════════════════════════════════════════════════ # REFERENCES # ═══════════════════════════════════════════════════════════════ add_heading(doc, "REFERENCES", bold=True, center=False, size=13) doc.add_paragraph() refs = [ "Sung H, Ferlay J, Siegel RL, et al. Global cancer statistics 2020: GLOBOCAN estimates of incidence and mortality worldwide for 36 cancers in 185 countries. CA Cancer J Clin. 2021;71(3):209-249.", "Pachpande PS, Mandale MS, Bhavthankar JD, et al. Assessment of programmed cell death ligand-1 (PD-L1) expression in oral potentially malignant disorders and oral squamous cell carcinoma. IP Arch Cytol Histopathol Res. 2023;8(3):180-188.", "Lenouvel D, Gonz\u00e1lez-Moles M\u00c1, Ruiz-\u00c1vila I. Prognostic and clinicopathological significance of PD-L1 overexpression in oral squamous cell carcinoma: A systematic review and comprehensive meta-analysis. Oral Oncol. 2020;107:104810. [PMID: 32330687]", "Sonone A, Hande A, Patil S, et al. Assessment of Programmed Cell Death Ligand-1 Expression in Oral Potentially Malignant Disorders and Tumor-Free Surgical Margins of Oral Squamous Cell Carcinoma: Protocol for a Retrospective Cross-Sectional Study. JMIR Res Protoc. 2026;15:e82568.", "Geum DH, Hwang DS, Lee CH. PD-L1 Expression Correlated with Clinicopathological Factors and Akt/Stat3 Pathway in Oral SCC. Life (Basel). 2022;12(2):244. [PMID: 35207525]", "Singh A, Nagarkar NM, Chowhan AK. Prognostic Effectiveness of PD-L1 Tumoral Expression in Oral Cavity Squamous Cell Carcinoma. Indian J Surg Oncol. 2024. [PMID: 39555374]", "Pardoll DM. The blockade of immune checkpoints in cancer immunotherapy. Nat Rev Cancer. 2012;12(4):252-264.", "Satgunaseelan L, Gupta R, Madore J, et al. Programmed cell death-ligand 1 expression in oral squamous cell carcinoma is associated with an inflammatory phenotype. Pathology. 2016;48(6):574-580.", "Tojyo I, Shintani Y, Nakanishi T, et al. PD-L1 expression correlated with p53 expression in oral squamous cell carcinoma. Maxillofac Plast Reconstr Surg. 2019;41(1):56.", "Ahmadi N, Gao K, Chia N, et al. Association of PD-L1 expression in oral squamous cell carcinoma with smoking, sex, and p53 expression. Oral Surg Oral Med Oral Pathol Oral Radiol. 2019;128(6):631-638.", "Deshpande SM, Choudhary S, Patankar S. Comparative analysis of Ki-67, \u03b1-SMA, and MMP-9 expression in oral submucous fibrosis and oral leukoplakia with/without dysplasia. Rev Esp Patol. 2025. [PMID: 40101344]", "Sarathy NA, Niranjan KC, Alrani D. Integrating Mcm-2 and Ki-67 immunohistochemistry with clinico-pathologic parameters for enhanced prognostic accuracy in oral verrucous lesions. J Stomatol Oral Maxillofac Surg. 2025. [PMID: 39244032]", "Monteiro L, Rocha E, Ferreira S. Tissue Biomarkers for Predicting the Risk of Oral Cancer in Patients Diagnosed With Oral Leukoplakia: A Systematic Review of the Past 4 Years. J Oral Pathol Med. 2025. [PMID: 40200649]", "Braakhuis BJ, Bloemena E, Leemans CR, Brakenhoff RH. Molecular analysis of surgical margins in head and neck cancer: more than a marginal issue. Oral Oncol. 2010;46(7):485-491.", "Ranka R, Chaudhary M, Sharma P, et al. Role of immunohistochemical markers in surgical margins of patients with head and neck carcinoma: a systematic review. Int J Curr Res Rev. 2020;12(6):09-17.", "Girolami I, Marletta S, Fiorentino V, et al. Effect of radio-chemotherapy on PD-L1 immunohistochemical expression in head and neck squamous cell carcinoma. J Pers Med. 2023;13(2):363.", "Srivastava P, Anand N, Agarwal D, et al. Evaluation of programmed death-ligand 1 (PD-L1) expression and its correlation with clinicopathological parameters in oral squamous cell carcinoma: a tertiary care center study. Cureus. 2025;17(6):e85186.", "Santana T, Matuck B, Ten\u00f3rio JR, et al. Can immunohistochemical biomarkers distinguish epithelial dysplasia degrees in actinic cheilitis? A systematic review and meta-analysis. Med Oral Patol Oral Cir Bucal. 2020;25(1):e1-e10.", "Zdrojewski J, Nowak M, Nijakowski K. Potential Immunohistochemical Biomarkers for Grading Oral Dysplasia: A Literature Review. Biomedicines. 2024;12(3):576. [PMID: 38540190]", "Tang X, Chen S, Sui Q, et al. Response to nivolumab combining radiotherapy and nimotuzumab in metastatic oral squamous cell carcinoma patient with strong PD-L1 expression: a case report. Ann Transl Med. 2020;8(6):402.", ] for i, ref in enumerate(refs, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(0.5) p.paragraph_format.first_line_indent = Cm(-0.5) r = p.add_run(f"{i}. {ref}") r.font.size = Pt(11) doc.add_page_break() # ═══════════════════════════════════════════════════════════════ # WORKING PROFORMA (Data Collection Form) # ═══════════════════════════════════════════════════════════════ add_heading(doc, "WORKING PROFORMA", bold=True, center=True, size=14) add_body(doc, "IMMUNOHISTOCHEMICAL EXPRESSION OF PD-L1 AND Ki-67 IN PREMALIGNANT LESIONS AND\nTUMOR-FREE MARGINS OF ORAL SQUAMOUS CELL CARCINOMA", bold=False, size=11) doc.add_paragraph() # Section A add_heading(doc, "SECTION A: PATIENT DEMOGRAPHICS", bold=True, size=12) demo_form = [ ("1.", "UHID / Case Number", ""), ("2.", "Date of Biopsy/Surgery", ""), ("3.", "Name", ""), ("4.", "Age (years)", ""), ("5.", "Sex", "\u25a1 Male \u25a1 Female \u25a1 Transgender"), ("6.", "Residence", "\u25a1 Urban \u25a1 Rural \u25a1 Semi-urban"), ("7.", "Occupation", ""), ("8.", "Contact number", ""), ] for num, label, opts in demo_form: p = doc.add_paragraph() r1 = p.add_run(f"{num} {label}: ") r1.bold = True r1.font.size = Pt(11) r2 = p.add_run(opts if opts else "_" * 40) r2.font.size = Pt(11) doc.add_paragraph() # Section B – Habit History add_heading(doc, "SECTION B: HABIT HISTORY", bold=True, size=12) habits = [ ("Tobacco chewing", "\u25a1 Yes \u25a1 No", "Duration: _____ Frequency: _____/day Type: _____________"), ("Smoking (beedi/cigarette)", "\u25a1 Yes \u25a1 No", "Duration: _____ Frequency: _____/day"), ("Betel quid (pan)", "\u25a1 Yes \u25a1 No", "Duration: _____ Frequency: _____/day"), ("Alcohol", "\u25a1 Yes \u25a1 No", "Duration: _____ Frequency: _____________"), ("Areca nut (gutka)", "\u25a1 Yes \u25a1 No", "Duration: _____ Frequency: _____/day"), ] for i, (habit, yn, detail) in enumerate(habits, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(0.5) r = p.add_run(f"{i}. {habit}: {yn}\n {detail}") r.font.size = Pt(11) doc.add_paragraph() # Section C – Clinical Details add_heading(doc, "SECTION C: CLINICAL PRESENTATION", bold=True, size=12) clinical_items = [ ("Chief complaint", "\u25a1 White patch \u25a1 Red patch \u25a1 Restricted mouth opening \u25a1 Non-healing ulcer \u25a1 Swelling \u25a1 Pain \u25a1 Others: _________"), ("Duration of symptoms", "_______ months/years"), ("Site of lesion", "\u25a1 Buccal mucosa \u25a1 Tongue \u25a1 Floor of mouth \u25a1 Lip \u25a1 Gingiva \u25a1 Palate \u25a1 Retromolar trigone \u25a1 Others"), ("Clinical diagnosis", "\u25a1 Oral leukoplakia \u25a1 Oral submucous fibrosis \u25a1 Oral lichen planus \u25a1 Erythroplakia \u25a1 OSCC \u25a1 Others"), ("Lesion size (cm)", "_______ x _______"), ("Surface characteristics", "\u25a1 Homogeneous \u25a1 Non-homogeneous \u25a1 Verrucous \u25a1 Speckled"), ("ECOG performance status (OSCC)", "\u25a1 0 \u25a1 1 \u25a1 2 \u25a1 3 \u25a1 4"), ("Clinical TNM Stage (OSCC, AJCC 8th)", "T: ___ N: ___ M: ___ Stage: ___"), ] for i, (field, opts) in enumerate(clinical_items, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(0.5) r1 = p.add_run(f"{i}. {field}: ") r1.bold = True r1.font.size = Pt(11) r2 = p.add_run(opts) r2.font.size = Pt(11) doc.add_paragraph() # Section D – Histopathology add_heading(doc, "SECTION D: HISTOPATHOLOGICAL FINDINGS", bold=True, size=12) add_body(doc, "D1. For OPMDs:", bold=True, size=11) opmd_items = [ ("Diagnosis", "\u25a1 Oral leukoplakia \u25a1 Oral submucous fibrosis \u25a1 Oral lichen planus \u25a1 Erythroplakia \u25a1 Others"), ("Degree of epithelial dysplasia (WHO)", "\u25a1 No dysplasia \u25a1 Mild \u25a1 Moderate \u25a1 Severe \u25a1 Carcinoma in situ"), ("Architectural alterations present", "\u25a1 Irregular epithelial stratification \u25a1 Loss of polarity \u25a1 Drop-shaped rete ridges \u25a1 Others"), ("Cytological alterations present", "\u25a1 Nuclear pleomorphism \u25a1 Abnormal mitoses \u25a1 Increased N:C ratio \u25a1 Dyskeratosis \u25a1 Others"), ("Inflammatory infiltrate", "\u25a1 Absent \u25a1 Mild \u25a1 Moderate \u25a1 Dense"), ] for i, (field, opts) in enumerate(opmd_items, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(1.0) r1 = p.add_run(f"{i}. {field}: ") r1.bold = True r1.font.size = Pt(11) r2 = p.add_run(opts) r2.font.size = Pt(11) doc.add_paragraph() add_body(doc, "D2. For OSCC (Primary Tumor):", bold=True, size=11) oscc_items = [ ("Histological subtype", "\u25a1 Conventional SCC \u25a1 Verrucous carcinoma \u25a1 Basaloid SCC \u25a1 Papillary SCC \u25a1 Others"), ("Grade of differentiation", "\u25a1 Well differentiated \u25a1 Moderately differentiated \u25a1 Poorly differentiated"), ("Tumor size (cm)", "_______ x _______ x _______"), ("Depth of invasion (mm)", "_______"), ("Perineural invasion", "\u25a1 Present \u25a1 Absent"), ("Lymphovascular invasion", "\u25a1 Present \u25a1 Absent"), ("Tumor budding", "\u25a1 Low (0-4 buds) \u25a1 Intermediate (5-9 buds) \u25a1 High (\u226510 buds)"), ("Lymph node status", "\u25a1 pN0 \u25a1 pN1 \u25a1 pN2 \u25a1 pN3; Number of nodes positive: ___ / Total: ___"), ("Final pathological stage (AJCC 8th)", "T: ___ N: ___ M: ___ Stage: ___"), ] for i, (field, opts) in enumerate(oscc_items, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(1.0) r1 = p.add_run(f"{i}. {field}: ") r1.bold = True r1.font.size = Pt(11) r2 = p.add_run(opts) r2.font.size = Pt(11) doc.add_paragraph() add_body(doc, "D3. Surgical Margins (OSCC cases):", bold=True, size=11) margin_items = [ ("Number of margins examined", "_______"), ("Margin status", "\u25a1 Tumor-free \u25a1 Positive \u25a1 Close (<5 mm)"), ("Closest margin distance (mm)", "_______"), ("Dysplasia at margin", "\u25a1 No dysplasia \u25a1 Mild \u25a1 Moderate \u25a1 Severe \u25a1 CIS"), ] for i, (field, opts) in enumerate(margin_items, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(1.0) r1 = p.add_run(f"{i}. {field}: ") r1.bold = True r1.font.size = Pt(11) r2 = p.add_run(opts) r2.font.size = Pt(11) doc.add_paragraph() # Section E – IHC Results add_heading(doc, "SECTION E: IMMUNOHISTOCHEMISTRY RESULTS", bold=True, size=12) doc.add_paragraph() add_body(doc, "E1. PD-L1 (Antibody clone: ________; Platform: ________)", bold=True, size=11) pdl1_fields = [ ("Group", "\u25a1 Normal mucosa \u25a1 OPMD \u25a1 Tumor-free margin"), ("Staining pattern", "\u25a1 Membranous \u25a1 Cytoplasmic \u25a1 Both"), ("Tumor cell positivity (%)", "_______"), ("Immune cell positivity (lymphocytes + macrophages) (%)", "_______"), ("Combined Positive Score (CPS)", "_______"), ("CPS interpretation", "\u25a1 Negative (CPS <1) \u25a1 Low positive (CPS 1-9) \u25a1 High positive (CPS \u226510)"), ("Intensity", "\u25a1 Absent (0) \u25a1 Weak (1+) \u25a1 Moderate (2+) \u25a1 Strong (3+)"), ("Pathologist 1 CPS", "_______"), ("Pathologist 2 CPS", "_______"), ("Consensus CPS", "_______"), ] for i, (field, opts) in enumerate(pdl1_fields, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(0.5) r1 = p.add_run(f"{i}. {field}: ") r1.bold = True r1.font.size = Pt(11) r2 = p.add_run(opts) r2.font.size = Pt(11) doc.add_paragraph() add_body(doc, "E2. Ki-67 / MIB-1 (Antibody clone: ________; Platform: ________)", bold=True, size=11) ki67_fields = [ ("Group", "\u25a1 Normal mucosa \u25a1 OPMD \u25a1 Tumor-free margin"), ("Total cells counted", "_______"), ("Positive cells (brown nuclei) counted", "_______"), ("Ki-67 Labelling Index (%)", "_______"), ("Distribution of positive cells", "\u25a1 Basal layer only \u25a1 Basal + suprabasal \u25a1 Full thickness"), ("Ki-67 LI interpretation", "\u25a1 Low (<25%) \u25a1 Moderate (25-50%) \u25a1 High (>50%)"), ("Hotspot area used for counting", "\u25a1 Yes \u25a1 No Location: _______"), ("Pathologist 1 LI (%)", "_______"), ("Pathologist 2 LI (%)", "_______"), ("Consensus LI (%)", "_______"), ] for i, (field, opts) in enumerate(ki67_fields, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(0.5) r1 = p.add_run(f"{i}. {field}: ") r1.bold = True r1.font.size = Pt(11) r2 = p.add_run(opts) r2.font.size = Pt(11) doc.add_paragraph() # Section F – Follow-up (OSCC cases) add_heading(doc, "SECTION F: TREATMENT AND FOLLOW-UP (OSCC CASES ONLY)", bold=True, size=12) doc.add_paragraph() treatment_items = [ ("Primary treatment", "\u25a1 Surgery alone \u25a1 Surgery + RT \u25a1 Surgery + CRT \u25a1 CRT alone \u25a1 Palliative"), ("Date of surgery/treatment completion", "_______"), ("Immunotherapy received", "\u25a1 Yes (specify: _________) \u25a1 No"), ] for i, (f, opts) in enumerate(treatment_items, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(0.5) r1 = p.add_run(f"{i}. {f}: ") r1.bold = True r1.font.size = Pt(11) r2 = p.add_run(opts) r2.font.size = Pt(11) doc.add_paragraph() # Follow-up table fu_tbl = doc.add_table(rows=7, cols=4) fu_tbl.style = "Table Grid" headers = ["Follow-up visit", "Date", "Recurrence (Y/N)", "Disease status"] for j, h in enumerate(headers): fu_tbl.rows[0].cells[j].text = h fu_tbl.rows[0].cells[j].paragraphs[0].runs[0].bold = True visits = ["3 months", "6 months", "12 months", "18 months", "24 months", "36 months"] for k, v in enumerate(visits): fu_tbl.rows[k+1].cells[0].text = v for m in [1,2,3]: fu_tbl.rows[k+1].cells[m].text = "" for row in fu_tbl.rows: for cell in row.cells: for para in cell.paragraphs: for run in para.runs: run.font.size = Pt(10) doc.add_paragraph() final_items = [ ("Overall survival", "_______ months"), ("Disease-free survival", "_______ months"), ("Vital status at last follow-up", "\u25a1 Alive \u25a1 Deceased \u25a1 Lost to follow-up"), ("Cause of death (if applicable)", "_______"), ] for i, (f, opts) in enumerate(final_items, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Cm(0.5) r1 = p.add_run(f"{i}. {f}: ") r1.bold = True r1.font.size = Pt(11) r2 = p.add_run(opts) r2.font.size = Pt(11) # ── SAVE ────────────────────────────────────────────────────── output_path = "/tmp/workspace/oral-scc-proforma/PDL1_Ki67_Oral_SCC_Proforma_KGMU.docx" doc.save(output_path) print(f"SAVED: {output_path}") PYEOF
python3 -c " from docx import Document doc = Document('/tmp/workspace/oral-scc-proforma/PDL1_Ki67_Oral_SCC_Proforma_KGMU.docx') print(f'Paragraphs: {len(doc.paragraphs)}') print(f'Tables: {len(doc.tables)}') # Print first few and last few paragraphs to verify for p in doc.paragraphs[:8]: if p.text.strip(): print(repr(p.text[:80])) print('...') for p in doc.paragraphs[-10:]: if p.text.strip(): print(repr(p.text[:80])) "
PDL1 Ki67 Oral SCC Proforma KGMU
Word Document · DOCX