For my thesis guve an abstract

Reading File
Running Command

python3 -c " from docx import Document doc = Document('/tmp/workspace/attachments/4a3a4c21-163c-4d85-93f6-134c3b5d79f9/j publication.docx') for p in doc.paragraphs: style = p.style.name if p.style else 'None' if p.text.strip(): print(f'[{style}] {p.text}') "

Running Command

python3 -c " import zipfile, io from lxml import etree path = '/tmp/workspace/attachments/4a3a4c21-163c-4d85-93f6-134c3b5d79f9/j publication.docx' # Open zip, skipping bad CRC by reading with allowZip64 with zipfile.ZipFile(path, 'r') as z: try: xml_data = z.read('word/document.xml') except Exception as e: print('Error reading document.xml:', e) xml_data = None if xml_data: tree = etree.fromstring(xml_data) ns = {'w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'} paragraphs = tree.findall('.//w:p', ns) for p in paragraphs: texts = p.findall('.//w:t', ns) full = ''.join(t.text or '' for t in texts) if full.strip(): print(full) "

I have extracted the full content of your thesis document. Here is a well-structured abstract based on it:

Abstract

Title: Intraoperative Complications and Postoperative Recovery in Non-Descent Vaginal Hysterectomy (NDVH) and Total Laparoscopic Hysterectomy (TLH): A Retrospective Comparative Study at MMCHRI, Kanchipuram
Background: Hysterectomy is the second most common major surgery in women worldwide, with minimally invasive approaches - Non-Descent Vaginal Hysterectomy (NDVH) and Total Laparoscopic Hysterectomy (TLH) - increasingly preferred over abdominal hysterectomy due to lower morbidity and faster recovery. While global meta-analyses suggest comparable complication rates for both routes, institutional data from tertiary care hospitals in South India comparing the two approaches remain limited.
Objectives: This study aims to compare intraoperative complications and postoperative recovery parameters between NDVH and TLH in patients undergoing surgery for benign uterine conditions at Meenakshi Medical College Hospital & Research Institute (MMCHRI), Kanchipuram. Secondary objectives include comparison of operative time, estimated blood loss, conversion rates, and identification of predictors of complications in each surgical group.
Methods: This is a retrospective cohort study reviewing case records of all eligible women who underwent NDVH or TLH for benign gynaecological indications at MMCHRI between January 2022 and December 2025. Women aged 30-60 years with uterine size up to 16 weeks gestational equivalent and complete operative records are included. Cases performed for malignancy, prolapse, or with incomplete records are excluded. Data on patient demographics, intraoperative parameters (operative time, blood loss, organ injuries, conversion to laparotomy), and postoperative outcomes (hospital stay, fever, vault complications, urinary complications, analgesic requirement, return of bowel function, and 30-day readmission) will be extracted using a structured proforma. A minimum sample of 63 cases per group (approximately 70 per group accounting for record attrition) is required. Statistical analysis will be performed using SPSS v26.0, with chi-square/Fisher's exact tests for categorical variables, independent t-test/Mann-Whitney U for continuous variables, and binary logistic regression to identify independent predictors of complications.
Expected Outcomes: NDVH and TLH are expected to have comparable intraoperative complication rates. NDVH is anticipated to have shorter operative time and lower cost, while TLH may be associated with lower postoperative pain and comparable or shorter hospital stay. The study will generate the first institutional benchmarking data from MMCHRI to guide selection of hysterectomy route and inform local clinical practice guidelines.
Significance: This study will contribute South Indian institutional data on minimally invasive hysterectomy outcomes - currently under-represented in global literature - and support evidence-based surgical decision-making, preoperative counselling, and quality improvement at tertiary care centres in resource-limited settings.
Keywords: Non-descent vaginal hysterectomy, Total laparoscopic hysterectomy, Intraoperative complications, Postoperative recovery, Benign uterine conditions, Minimally invasive hysterectomy

This abstract follows the standard structured format (Background, Objectives, Methods, Expected Outcomes, Significance) appropriate for a PG dissertation submission. Let me know if you need it shortened, reformatted for a specific journal, or adjusted in tone.

Create a formatted DOCX summary of your entire thesis for easy sharing

Reading File
Running Command

ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && ls -la /tmp/workspace/

Running Command

mkdir -p /tmp/workspace/thesis-summary && python3 << 'EOF' from docx import Document from docx.shared import Pt, Inches, RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.oxml.ns import qn from docx.oxml import OxmlElement doc = Document() # ── Page margins ────────────────────────────────────────────────────────── from docx.shared import Inches section = doc.sections[0] section.top_margin = Inches(1.0) section.bottom_margin = Inches(1.0) section.left_margin = Inches(1.25) section.right_margin = Inches(1.25) # ── Default body font ───────────────────────────────────────────────────── style = doc.styles["Normal"] style.font.name = "Calibri" style.font.size = Pt(11) # ── Heading styles ──────────────────────────────────────────────────────── h1 = doc.styles["Heading 1"] h1.font.name = "Calibri" h1.font.size = Pt(16) h1.font.bold = True h1.font.color.rgb = RGBColor(0x1F, 0x45, 0x7E) # dark navy h2 = doc.styles["Heading 2"] h2.font.name = "Calibri" h2.font.size = Pt(13) h2.font.bold = True h2.font.color.rgb = RGBColor(0x2E, 0x74, 0xB5) # medium blue h3 = doc.styles["Heading 3"] h3.font.name = "Calibri" h3.font.size = Pt(11) h3.font.bold = True h3.font.color.rgb = RGBColor(0x40, 0x40, 0x40) def add_body(doc, text, bold=False, italic=False, space_before=0, space_after=4): p = doc.add_paragraph() run = p.add_run(text) run.font.name = "Calibri" run.font.size = Pt(11) run.bold = bold run.italic = italic p.paragraph_format.space_before = Pt(space_before) p.paragraph_format.space_after = Pt(space_after) return p def add_bullet(doc, text, level=0): p = doc.add_paragraph(style="List Bullet") run = p.add_run(text) run.font.name = "Calibri" run.font.size = Pt(11) p.paragraph_format.left_indent = Inches(0.25 * (level + 1)) return p def add_divider(doc): p = doc.add_paragraph() pPr = p._p.get_or_add_pPr() pBdr = OxmlElement("w:pBdr") bottom = OxmlElement("w:bottom") bottom.set(qn("w:val"), "single") bottom.set(qn("w:sz"), "6") bottom.set(qn("w:space"), "1") bottom.set(qn("w:color"), "2E74B5") pBdr.append(bottom) pPr.append(pBdr) p.paragraph_format.space_after = Pt(6) def add_table_row(table, col1, col2, header=False): row = table.add_row() for i, text in enumerate([col1, col2]): cell = row.cells[i] cell.text = text run = cell.paragraphs[0].runs[0] run.font.name = "Calibri" run.font.size = Pt(10) run.bold = header if header: cell._tc.get_or_add_tcPr() shd = OxmlElement("w:shd") shd.set(qn("w:val"), "clear") shd.set(qn("w:color"), "auto") shd.set(qn("w:fill"), "1F457E") run.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF) cell._tc.tcPr.append(shd) # ══════════════════════════════════════════════════════════════════════════ # COVER / TITLE PAGE # ══════════════════════════════════════════════════════════════════════════ title_p = doc.add_paragraph() title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER title_run = title_p.add_run("THESIS SUMMARY") title_run.font.name = "Calibri" title_run.font.size = Pt(22) title_run.font.bold = True title_run.font.color.rgb = RGBColor(0x1F, 0x45, 0x7E) title_p.paragraph_format.space_before = Pt(12) title_p.paragraph_format.space_after = Pt(6) sub_p = doc.add_paragraph() sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER sub_run = sub_p.add_run( "Intraoperative Complications and Postoperative Recovery in\n" "Non-Descent Vaginal Hysterectomy (NDVH) and\n" "Total Laparoscopic Hysterectomy (TLH):\n" "A Retrospective Comparative Study" ) sub_run.font.name = "Calibri" sub_run.font.size = Pt(14) sub_run.font.bold = True sub_run.font.color.rgb = RGBColor(0x2E, 0x74, 0xB5) sub_p.paragraph_format.space_after = Pt(14) add_divider(doc) # Investigators table inv_table = doc.add_table(rows=1, cols=2) inv_table.style = "Table Grid" inv_table.columns[0].width = Inches(2.5) inv_table.columns[1].width = Inches(4.0) hdr = inv_table.rows[0].cells for i, txt in enumerate(["Investigator", "Details"]): hdr[i].text = txt r = hdr[i].paragraphs[0].runs[0] r.font.bold = True; r.font.size = Pt(10); r.font.name = "Calibri" r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF) shd = OxmlElement("w:shd") shd.set(qn("w:val"),"clear"); shd.set(qn("w:color"),"auto") shd.set(qn("w:fill"),"1F457E") hdr[i]._tc.get_or_add_tcPr().append(shd) def inv_row(table, role, name, desig, email): row = table.add_row() row.cells[0].text = role row.cells[1].text = f"{name}\n{desig}\n{email}" for c in row.cells: for r in c.paragraphs[0].runs: r.font.size = Pt(10); r.font.name = "Calibri" inv_row(inv_table, "Principal Investigator", "Dr. Jeya Pradha .C", "PG Resident, Dept. of OBG, MMCHRI, Kanchipuram", "jyeahchandru@gmail.com | Ph: 7558147550") inv_row(inv_table, "Guide / HOD", "Dr. R. Jayanthi", "Professor & HOD, Dept. of OBG, MMCHRI, Kanchipuram", "drjayanthianand75@gmail.com | Ph: 9629016762") inv_row(inv_table, "Co-Investigator", "Dr. Pavithra .B", "Senior Resident, Dept. of OBG, MMCHRI, Kanchipuram", "drpavithrabaskaran22@gmail.com | Ph: 7708632178") doc.add_paragraph() meta_table = doc.add_table(rows=5, cols=2) meta_table.style = "Table Grid" meta_data = [ ("Institution", "MMCHRI, Kanchipuram, Tamil Nadu"), ("Study Type", "Retrospective Comparative Cohort Study"), ("Study Period", "01 January 2022 – 31 December 2025"), ("Date of Submission", "17 July 2026"), ("Funding", "Self-funded | Budget: Rs. 10,000/-"), ] for label, value in meta_data: row = meta_table.add_row() row.cells[0].text = label row.cells[1].text = value for i,c in enumerate(row.cells): r = c.paragraphs[0].runs[0] r.font.size = Pt(10); r.font.name = "Calibri" r.bold = (i == 0) # Remove the blank first row that add_table creates meta_table._tbl.remove(meta_table.rows[0]._tr) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════ # 1. ABSTRACT # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("1. Abstract", level=1) add_divider(doc) abstract_text = ( "Hysterectomy is the second most common major surgery in women worldwide. " "Minimally invasive approaches - Non-Descent Vaginal Hysterectomy (NDVH) and " "Total Laparoscopic Hysterectomy (TLH) - are increasingly preferred over " "abdominal hysterectomy due to lower morbidity and faster recovery. While global " "meta-analyses suggest comparable complication rates for both routes, institutional " "data from tertiary care hospitals in South India comparing the two approaches remain limited.\n\n" "This retrospective cohort study at MMCHRI, Kanchipuram aims to compare intraoperative " "complications and postoperative recovery parameters between NDVH and TLH in women " "undergoing surgery for benign uterine conditions between January 2022 and December 2025. " "A minimum of 63 cases per group (~70 per group after accounting for incomplete records) " "will be analysed. Statistical analysis will be performed using SPSS v26.0, including " "chi-square/Fisher's exact tests, Mann-Whitney U, and binary logistic regression to " "identify predictors of complications.\n\n" "NDVH and TLH are expected to have comparable intraoperative complication rates. NDVH " "is anticipated to have shorter operative time and lower cost, while TLH may offer lower " "postoperative pain. The study will generate the first institutional benchmarking data " "from MMCHRI and contribute South Indian data to an under-represented area of global " "surgical literature." ) add_body(doc, abstract_text) kw_p = doc.add_paragraph() kw_run1 = kw_p.add_run("Keywords: ") kw_run1.bold = True; kw_run1.font.size = Pt(11); kw_run1.font.name = "Calibri" kw_run2 = kw_p.add_run( "Non-descent vaginal hysterectomy, Total laparoscopic hysterectomy, " "Intraoperative complications, Postoperative recovery, Benign uterine conditions, " "Minimally invasive hysterectomy" ) kw_run2.italic = True; kw_run2.font.size = Pt(11); kw_run2.font.name = "Calibri" # ══════════════════════════════════════════════════════════════════════════ # 2. BACKGROUND # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("2. Background & Introduction", level=1) add_divider(doc) add_body(doc, "Hysterectomy is performed to address a range of benign gynaecological conditions, " "including uterine fibroids (leiomyoma), dysfunctional uterine bleeding, adenomyosis, " "endometriosis, and chronic pelvic pain. Over 600,000 hysterectomies are performed in " "the USA each year, with comparable burden in India." ) add_body(doc, "Historically, total abdominal hysterectomy (TAH) was the predominant approach. " "Contemporary practice favours less invasive alternatives:" ) add_bullet(doc, "Non-Descent Vaginal Hysterectomy (NDVH): Removal of a non-prolapsed uterus through the vagina. Proven safe and effective for benign conditions.", 0) add_bullet(doc, "Total Laparoscopic Hysterectomy (TLH): All surgical steps including vault closure performed laparoscopically (AAGL Type IV). Associated with reduced pain, shorter hospital stay, and lower blood loss.", 0) add_body(doc, "A 2015 Cochrane review (Aarts et al., 47 RCTs, 4,483 women) confirmed vaginal hysterectomy " "as the route of choice for benign disease. A 2017 meta-analysis (Sandberg et al., 24 studies) " "found no significant difference in overall complication rates between TLH and VH, but noted " "key practical differences. Despite this global evidence, South Indian institutional data " "directly comparing NDVH and TLH are scarce - a gap this study addresses." ) # ══════════════════════════════════════════════════════════════════════════ # 3. OBJECTIVES # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("3. Objectives", level=1) add_divider(doc) doc.add_heading("Primary Objective", level=2) add_body(doc, "To compare intraoperative complications of NDVH and TLH in patients undergoing surgery " "for benign uterine conditions at MMCHRI, Kanchipuram." ) doc.add_heading("Secondary Objectives", level=2) secondary = [ "Compare postoperative recovery parameters (hospital stay, fever, UTI, vault complications, analgesic requirement, return to normal activity) between NDVH and TLH.", "Compare intraoperative blood loss, operative time, and conversion rates.", "Identify factors predictive of complications in each surgical approach.", "Assess overall safety and feasibility of each approach based on institutional data.", ] for s in secondary: add_bullet(doc, s) # ══════════════════════════════════════════════════════════════════════════ # 4. LITERATURE REVIEW # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("4. Key Literature Review", level=1) add_divider(doc) lit_table = doc.add_table(rows=1, cols=3) lit_table.style = "Table Grid" lit_table.columns[0].width = Inches(1.6) lit_table.columns[1].width = Inches(1.4) lit_table.columns[2].width = Inches(3.5) for i, h in enumerate(["Author (Year)", "Setting", "Key Findings"]): c = lit_table.rows[0].cells[i] c.text = h r = c.paragraphs[0].runs[0] r.font.bold = True; r.font.size = Pt(9); r.font.name = "Calibri" r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF) shd = OxmlElement("w:shd") shd.set(qn("w:val"),"clear"); shd.set(qn("w:color"),"auto") shd.set(qn("w:fill"),"1F457E") c._tc.get_or_add_tcPr().append(shd) lit_data = [ ("Aarts JWM et al. (2015)\nCochrane Review", "Multi-country", "47 RCTs, 4,483 women. VH confirmed as surgical route of choice; fewer complications vs. abdominal. Gap: NDVH vs. TLH not separately analysed; no Indian data."), ("Sandberg EM et al. (2017)\nMeta-analysis", "International\n(24 studies)", "No difference in overall complication rates (TLH vs. VH). VH: shorter operative time (42 min), lower cuff dehiscence. TLH: lower pain scores, shorter analgesic need. Gap: No Indian data."), ("Tiwari KD et al. (2022)", "Kathmandu, Nepal", "NDVH vs. TAH (n=70). NDVH: lower blood loss (p=0.033), shorter hospital stay (p=0.005), lower pain scores. Gap: compared with TAH not TLH."), ("Wasim T et al. (2024)", "Pakistan", "VH safety confirmed in South Asian tertiary setting. Bladder injury most common intraoperative complication. Gap: no laparoscopic comparator."), ("Berek & Novak's Gynecology (2020)", "Textbook", "VH preferred when feasible (>90% of hysterectomies). TLH: higher cost, lower postoperative pain. Gap: Institutional data from developing countries needed."), ] for author, setting, findings in lit_data: row = lit_table.add_row() for i, text in enumerate([author, setting, findings]): c = row.cells[i] c.text = text r = c.paragraphs[0].runs[0] r.font.size = Pt(9); r.font.name = "Calibri" doc.add_paragraph() # ══════════════════════════════════════════════════════════════════════════ # 5. METHODOLOGY # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("5. Materials & Methods", level=1) add_divider(doc) meth_table = doc.add_table(rows=1, cols=2) meth_table.style = "Table Grid" meth_table.columns[0].width = Inches(2.2) meth_table.columns[1].width = Inches(4.3) for i, h in enumerate(["Parameter", "Details"]): c = meth_table.rows[0].cells[i] c.text = h r = c.paragraphs[0].runs[0] r.font.bold = True; r.font.size = Pt(10); r.font.name = "Calibri" r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF) shd = OxmlElement("w:shd") shd.set(qn("w:val"),"clear"); shd.set(qn("w:color"),"auto") shd.set(qn("w:fill"),"1F457E") c._tc.get_or_add_tcPr().append(shd) meth_data = [ ("Study Design", "Retrospective comparative cohort (record-based)"), ("Setting", "Dept. of OBG, MMCHRI, Kanchipuram, Tamil Nadu (tertiary care teaching hospital)"), ("Study Period", "01 January 2022 – 31 December 2025 (3 years)"), ("Study Population", "All women who underwent NDVH or TLH for benign uterine indications at MMCHRI during study period"), ("Inclusion Criteria", "Age 30-60 yrs | Benign indication (fibroids, DUB, adenomyosis, endometriosis, chronic pelvic pain) | Uterine size ≤16 weeks | Complete operative & postoperative records"), ("Exclusion Criteria", "Malignant/pre-malignant conditions | Concurrent non-hysterectomy procedures | TLH converted to abdominal (noted separately) | Incomplete records | Uterine prolapse cases"), ("Sampling Method", "Total enumeration (census) — all eligible cases from OT register & MRD"), ("Sample Size", "Minimum 63 per group (~70 per group with 10% buffer for incomplete records); based on Sandberg et al. (2017) operative time difference, α=0.05, power=80%"), ("Data Collection", "Structured data extraction proforma from case records, OT registers, anaesthesia records, and discharge summaries. No patient contact."), ("Statistical Software", "SPSS v26.0 (IBM Corp., Armonk, NY)"), ] for label, value in meth_data: row = meth_table.add_row() row.cells[0].text = label row.cells[1].text = value for i,c in enumerate(row.cells): r = c.paragraphs[0].runs[0] r.font.size = Pt(10); r.font.name = "Calibri" r.bold = (i == 0) doc.add_paragraph() # ── Key Variables ────────────────────────────────────────────────────── doc.add_heading("Key Study Variables", level=2) var_table = doc.add_table(rows=1, cols=3) var_table.style = "Table Grid" var_table.columns[0].width = Inches(1.5) var_table.columns[1].width = Inches(2.5) var_table.columns[2].width = Inches(2.5) for i, h in enumerate(["Category", "Intraoperative", "Postoperative"]): c = var_table.rows[0].cells[i] c.text = h r = c.paragraphs[0].runs[0] r.font.bold = True; r.font.size = Pt(10); r.font.name = "Calibri" r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF) shd = OxmlElement("w:shd") shd.set(qn("w:val"),"clear"); shd.set(qn("w:color"),"auto") shd.set(qn("w:fill"),"2E74B5") c._tc.get_or_add_tcPr().append(shd) var_rows = [ ("Primary Outcomes", "Bladder, bowel, ureteric & vascular injuries; Conversion to laparotomy", "Vault dehiscence/haematoma/infection; Urinary complications (UTI, retention)"), ("Secondary Outcomes", "Operative time (min); Estimated blood loss (mL); Blood transfusion", "Hospital stay (days); Postoperative fever; Analgesic requirement; Return of bowel function; 30-day readmission"), ("Confounders", "Age, BMI, Parity, Uterine size, Prior abdominal surgery, Co-morbidities", "—"), ] for a,b,c_ in var_rows: row = var_table.add_row() for i, text in enumerate([a,b,c_]): cell = row.cells[i] cell.text = text r2 = cell.paragraphs[0].runs[0] r2.font.size = Pt(10); r2.font.name = "Calibri" r2.bold = (i == 0) doc.add_paragraph() # ── Statistical Methods ──────────────────────────────────────────────── doc.add_heading("Statistical Analysis Plan", level=2) stat_table = doc.add_table(rows=1, cols=3) stat_table.style = "Table Grid" stat_table.columns[0].width = Inches(2.2) stat_table.columns[1].width = Inches(1.8) stat_table.columns[2].width = Inches(2.5) for i, h in enumerate(["Variable", "Scale", "Statistical Test"]): c = stat_table.rows[0].cells[i] c.text = h r = c.paragraphs[0].runs[0] r.font.bold = True; r.font.size = Pt(10); r.font.name = "Calibri" r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF) shd = OxmlElement("w:shd") shd.set(qn("w:val"),"clear"); shd.set(qn("w:color"),"auto") shd.set(qn("w:fill"),"2E74B5") c._tc.get_or_add_tcPr().append(shd) stat_data = [ ("Operative time / Blood loss / Hospital stay", "Continuous", "Independent t-test / Mann-Whitney U"), ("Intraoperative complications", "Categorical", "Chi-square / Fisher's exact"), ("Blood transfusion / Fever / UTI / Vault complications", "Categorical", "Chi-square / Fisher's exact"), ("Analgesic requirement", "Ordinal", "Mann-Whitney U"), ("Predictors of complications", "Mixed", "Binary logistic regression (OR, 95% CI)"), ] for a,b,c_ in stat_data: row = stat_table.add_row() for i, text in enumerate([a,b,c_]): cell = row.cells[i] cell.text = text r2 = cell.paragraphs[0].runs[0] r2.font.size = Pt(10); r2.font.name = "Calibri" doc.add_paragraph() # ══════════════════════════════════════════════════════════════════════════ # 6. EXPECTED OUTCOMES # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("6. Expected Outcomes", level=1) add_divider(doc) outcomes = [ "NDVH and TLH will have comparable intraoperative complication rates (consistent with existing meta-analytic evidence).", "TLH is expected to have longer operative times but potentially lower postoperative pain and comparable or shorter length of stay.", "NDVH is expected to have lower cost and shorter operative time.", "Logistic regression will identify independent predictors of complications (e.g., BMI, prior abdominal surgery, uterine size) to inform preoperative counselling.", "The study will generate institutional benchmarking data to guide the choice of hysterectomy route at MMCHRI.", ] for o in outcomes: add_bullet(doc, o) # ══════════════════════════════════════════════════════════════════════════ # 7. STUDY IMPLICATIONS # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("7. Study Implications", level=1) add_divider(doc) implications = [ "Generates the first institutional comparative data from MMCHRI on NDVH vs. TLH, informing local clinical guidelines and surgical training priorities.", "Identifies modifiable risk factors for complications, improving patient counselling and informed consent.", "Provides evidence for surgeon credentialing and surgical quality improvement initiatives.", "Contributes South Indian / Tamil Nadu-specific data on minimally invasive hysterectomy outcomes, currently under-represented in global literature.", "May support advocacy for expanding NDVH as a cost-effective option in resource-limited settings.", ] for imp in implications: add_bullet(doc, imp) # ══════════════════════════════════════════════════════════════════════════ # 8. ETHICAL CONSIDERATIONS # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("8. Ethical Considerations", level=1) add_divider(doc) ethics_table = doc.add_table(rows=1, cols=2) ethics_table.style = "Table Grid" ethics_table.columns[0].width = Inches(2.5) ethics_table.columns[1].width = Inches(4.0) for i, h in enumerate(["Aspect", "Details"]): c = ethics_table.rows[0].cells[i] c.text = h r = c.paragraphs[0].runs[0] r.font.bold = True; r.font.size = Pt(10); r.font.name = "Calibri" r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF) shd = OxmlElement("w:shd") shd.set(qn("w:val"),"clear"); shd.set(qn("w:color"),"auto") shd.set(qn("w:fill"),"1F457E") c._tc.get_or_add_tcPr().append(shd) ethics_data = [ ("Risk Category", "Minimal risk (secondary data analysis from existing records)"), ("Participant Contact", "None — retrospective record review only"), ("Informed Consent", "Waiver requested — no patient contact"), ("Privacy", "Data anonymised using unique study IDs; no names/hospital numbers in analysis dataset"), ("Vulnerable Populations", "Not applicable"), ("Conflict of Interest", "None declared"), ("Guidelines", "ICMR National Ethical Guidelines for Biomedical & Health Research 2017"), ] for label, value in ethics_data: row = ethics_table.add_row() row.cells[0].text = label row.cells[1].text = value for i,c in enumerate(row.cells): r = c.paragraphs[0].runs[0] r.font.size = Pt(10); r.font.name = "Calibri" r.bold = (i == 0) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════════════ # 9. TIMELINE # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("9. Study Timeline", level=1) add_divider(doc) timeline_table = doc.add_table(rows=1, cols=7) timeline_table.style = "Table Grid" headers = ["Activity", "Month 1", "Month 2", "Month 3", "Month 4", "Month 5", "Month 6"] for i, h in enumerate(headers): c = timeline_table.rows[0].cells[i] c.text = h r = c.paragraphs[0].runs[0] r.font.bold = True; r.font.size = Pt(9); r.font.name = "Calibri" r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF) shd = OxmlElement("w:shd") shd.set(qn("w:val"),"clear"); shd.set(qn("w:color"),"auto") shd.set(qn("w:fill"),"1F457E") c._tc.get_or_add_tcPr().append(shd) timeline_data = [ ("IEC submission & approval", "✓", "", "", "", "", ""), ("Permission from MRD/HOD", "✓", "✓", "", "", "", ""), ("Case identification & record retrieval","", "✓", "✓", "", "", ""), ("Data extraction & entry", "", "", "✓", "✓", "", ""), ("Data analysis & interpretation", "", "", "", "✓", "✓", ""), ("Report writing & submission", "", "", "", "", "✓", "✓"), ] for row_data in timeline_data: row = timeline_table.add_row() for i, text in enumerate(row_data): cell = row.cells[i] cell.text = text r = cell.paragraphs[0].runs[0] r.font.size = Pt(9); r.font.name = "Calibri" if i > 0 and text == "✓": shd2 = OxmlElement("w:shd") shd2.set(qn("w:val"),"clear"); shd2.set(qn("w:color"),"auto") shd2.set(qn("w:fill"),"DEEAF1") cell._tc.get_or_add_tcPr().append(shd2) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════════════ # 10. BUDGET # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("10. Budget", level=1) add_divider(doc) budget_table = doc.add_table(rows=1, cols=3) budget_table.style = "Table Grid" budget_table.columns[0].width = Inches(2.0) budget_table.columns[1].width = Inches(3.0) budget_table.columns[2].width = Inches(1.5) for i, h in enumerate(["Item", "Details", "Cost (INR)"]): c = budget_table.rows[0].cells[i] c.text = h r = c.paragraphs[0].runs[0] r.font.bold = True; r.font.size = Pt(10); r.font.name = "Calibri" r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF) shd = OxmlElement("w:shd") shd.set(qn("w:val"),"clear"); shd.set(qn("w:color"),"auto") shd.set(qn("w:fill"),"1F457E") c._tc.get_or_add_tcPr().append(shd) budget_data = [ ("Stationery & Printing", "Proformas, printing of case records, registers", "1,500/-"), ("Statistical Analysis", "SPSS (institutional licence)", "Nil"), ("Photocopying", "Case records, review articles", "2,000/-"), ("Miscellaneous", "Binding, submission copies", "1,500/-"), ("TOTAL", "Self-funded by Principal Investigator", "Rs. 5,000/-"), ] for a,b,c_ in budget_data: row = budget_table.add_row() for i, text in enumerate([a,b,c_]): cell = row.cells[i] cell.text = text r2 = cell.paragraphs[0].runs[0] r2.font.size = Pt(10); r2.font.name = "Calibri" r2.bold = (a == "TOTAL") doc.add_paragraph() # ══════════════════════════════════════════════════════════════════════════ # 11. REFERENCES # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("11. References (Vancouver Style)", level=1) add_divider(doc) references = [ "Aarts JWM, Nieboer TE, Johnson N, et al. Surgical approach to hysterectomy for benign gynaecological disease. Cochrane Database Syst Rev. 2015;(8):CD003677.", "Sandberg EM, Twijnstra ARH, Driessen SRC, Jansen FW. Total laparoscopic hysterectomy versus vaginal hysterectomy: a systematic review and meta-analysis. J Minim Invasive Gynecol. 2017;24(2):206-217.", "Tiwari KD, Dangal G, Karki A, et al. Clinical outcome of non-descent vaginal hysterectomy versus abdominal hysterectomy. J Nepal Health Res Counc. 2022;20(2):357-361.", "Wasim T, Rana GE, Zunair J. A review of vaginal hysterectomies in the gynaecology department of a tertiary care hospital. J Pak Med Assoc. 2024;74(4):775-778.", "Berek JS, ed. Berek & Novak's Gynecology. 16th ed. Philadelphia: Wolters Kluwer; 2020. Chapter 27: Hysterectomy, pp. 1410-1450.", "Garry R, Fountain J, Mason S, et al. The eVALuate study: two parallel randomised trials comparing laparoscopic with abdominal and vaginal hysterectomy. BMJ. 2004;328(7432):129.", "Indian Council of Medical Research. National Ethical Guidelines for Biomedical and Health Research Involving Human Participants. New Delhi: ICMR; 2017.", ] for i, ref in enumerate(references, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Inches(0.3) r1 = p.add_run(f"{i}. ") r1.font.size = Pt(10); r1.font.name = "Calibri"; r1.bold = True r2 = p.add_run(ref) r2.font.size = Pt(10); r2.font.name = "Calibri" p.paragraph_format.space_after = Pt(3) # ══════════════════════════════════════════════════════════════════════════ # FOOTER # ══════════════════════════════════════════════════════════════════════════ from docx.oxml.ns import nsmap for section in doc.sections: footer = section.footer footer_p = footer.paragraphs[0] footer_p.clear() footer_p.alignment = WD_ALIGN_PARAGRAPH.CENTER fr = footer_p.add_run( "Thesis Summary | NDVH vs. TLH | Dr. Jeya Pradha .C | MMCHRI, Kanchipuram | 2026" ) fr.font.size = Pt(8) fr.font.name = "Calibri" fr.font.color.rgb = RGBColor(0x80, 0x80, 0x80) # ── Save ─────────────────────────────────────────────────────────────── out_path = "/tmp/workspace/thesis-summary/NDVH_TLH_Thesis_Summary.docx" doc.save(out_path) print(f"Saved: {out_path}") EOF

Your formatted thesis summary document is ready:

NDVH TLH Thesis Summary

Word Document · DOCX


Here is what is included in the document:
SectionContent
Cover PageTitle, investigator details table, study meta-info (institution, type, period, funding)
1. AbstractStructured abstract with keywords
2. BackgroundContext on hysterectomy approaches, global evidence summary
3. ObjectivesPrimary and secondary objectives
4. Literature ReviewColour-coded table of 5 key references with gaps identified
5. MethodologyStudy design table, key variables table (intraoperative vs. postoperative), statistical analysis plan table
6. Expected OutcomesBulleted anticipated findings
7. Study ImplicationsClinical and academic impact
8. Ethical ConsiderationsConsent, privacy, risk category, guidelines
9. Study TimelineGantt-style month-by-month table with highlighted cells
10. BudgetItemised cost table (Rs. 5,000/- self-funded)
11. References7 key references in Vancouver style
FooterStudy identity on every page
Formatting features: Navy/blue colour scheme, styled heading hierarchy (Calibri), colour-coded table headers, page margins set for A4 printing, and a professional footer throughout.

Create a formatted DOCX summary of your entire thesis for easy sharing

The document was already created in our previous turn. You can download it directly here:

NDVH TLH Thesis Summary

Word Document · DOCX

The file contains all 11 sections:
  1. Cover Page - Title, investigators, study metadata
  2. Abstract - Structured with keywords
  3. Background & Introduction - Context and global evidence
  4. Objectives - Primary and secondary
  5. Literature Review - Colour-coded table of 5 key studies
  6. Materials & Methods - Study design, variables, and statistical plan in tables
  7. Expected Outcomes - Anticipated findings
  8. Study Implications - Clinical and academic impact
  9. Ethical Considerations - Consent, privacy, risk category
  10. Study Timeline - Gantt-style table
  11. References - 7 sources in Vancouver style
If you need any changes (different colour scheme, additional sections, journal-specific formatting, etc.), just let me know.

Create similar for this thesis

Reading File
Running Command

python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/attachments/4a3a4c21-163c-4d85-93f6-134c3b5d79f9/Anupriya publication abstract final..pptx') for i, slide in enumerate(prs.slides, 1): print(f'=== SLIDE {i} ===') for shape in slide.shapes: if shape.has_text_frame and shape.text_frame.text.strip(): print(shape.text_frame.text) print() "

Running Command

python3 << 'EOF' from docx import Document from docx.shared import Pt, Inches, RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.oxml.ns import qn from docx.oxml import OxmlElement import os os.makedirs("/tmp/workspace/thesis-summary", exist_ok=True) doc = Document() # ── Page margins ────────────────────────────────────────────────────────── section = doc.sections[0] section.top_margin = Inches(1.0) section.bottom_margin = Inches(1.0) section.left_margin = Inches(1.25) section.right_margin = Inches(1.25) # ── Default body font ───────────────────────────────────────────────────── style = doc.styles["Normal"] style.font.name = "Calibri" style.font.size = Pt(11) # ── Heading styles ──────────────────────────────────────────────────────── h1 = doc.styles["Heading 1"] h1.font.name = "Calibri"; h1.font.size = Pt(16); h1.font.bold = True h1.font.color.rgb = RGBColor(0x7B, 0x0C, 0x0C) # deep red/maroon h2 = doc.styles["Heading 2"] h2.font.name = "Calibri"; h2.font.size = Pt(13); h2.font.bold = True h2.font.color.rgb = RGBColor(0xC0, 0x39, 0x2B) # medium red h3 = doc.styles["Heading 3"] h3.font.name = "Calibri"; h3.font.size = Pt(11); h3.font.bold = True h3.font.color.rgb = RGBColor(0x40, 0x40, 0x40) HDR_FILL = "7B0C0C" # dark maroon for table headers HDR_FILL2 = "C0392B" # medium red secondary headers def add_body(doc, text, space_after=5): p = doc.add_paragraph() run = p.add_run(text) run.font.name = "Calibri"; run.font.size = Pt(11) p.paragraph_format.space_after = Pt(space_after) return p def add_bullet(doc, text, level=0): p = doc.add_paragraph(style="List Bullet") run = p.add_run(text) run.font.name = "Calibri"; run.font.size = Pt(11) p.paragraph_format.left_indent = Inches(0.25 * (level + 1)) p.paragraph_format.space_after = Pt(3) return p def add_divider(doc): p = doc.add_paragraph() pPr = p._p.get_or_add_pPr() pBdr = OxmlElement("w:pBdr") bottom = OxmlElement("w:bottom") bottom.set(qn("w:val"), "single") bottom.set(qn("w:sz"), "6") bottom.set(qn("w:space"), "1") bottom.set(qn("w:color"), "C0392B") pBdr.append(bottom) pPr.append(pBdr) p.paragraph_format.space_after = Pt(6) def header_shade(cell, fill=HDR_FILL): shd = OxmlElement("w:shd") shd.set(qn("w:val"), "clear"); shd.set(qn("w:color"), "auto") shd.set(qn("w:fill"), fill) cell._tc.get_or_add_tcPr().append(shd) def make_header_row(table, headers, fill=HDR_FILL): row = table.rows[0] for i, h in enumerate(headers): c = row.cells[i]; c.text = h r = c.paragraphs[0].runs[0] r.font.bold = True; r.font.size = Pt(10); r.font.name = "Calibri" r.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF) header_shade(c, fill) def add_two_col_row(table, col1, col2, bold_left=True): row = table.add_row() row.cells[0].text = col1; row.cells[1].text = col2 for i, c in enumerate(row.cells): r = c.paragraphs[0].runs[0] r.font.size = Pt(10); r.font.name = "Calibri" r.bold = (i == 0 and bold_left) # ══════════════════════════════════════════════════════════════════════════ # COVER PAGE # ══════════════════════════════════════════════════════════════════════════ title_p = doc.add_paragraph() title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER tr = title_p.add_run("THESIS SUMMARY") tr.font.name = "Calibri"; tr.font.size = Pt(22); tr.font.bold = True tr.font.color.rgb = RGBColor(0x7B, 0x0C, 0x0C) title_p.paragraph_format.space_before = Pt(12) title_p.paragraph_format.space_after = Pt(8) sub_p = doc.add_paragraph() sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER sr = sub_p.add_run( "Incidentally Detected Carcinoma on\n" "Cross-Sectional Imaging (CT & MRI)" ) sr.font.name = "Calibri"; sr.font.size = Pt(15); sr.font.bold = True sr.font.color.rgb = RGBColor(0xC0, 0x39, 0x2B) sub_p.paragraph_format.space_after = Pt(14) add_divider(doc) # Investigators table inv_t = doc.add_table(rows=1, cols=2) inv_t.style = "Table Grid" inv_t.columns[0].width = Inches(2.2) inv_t.columns[1].width = Inches(4.3) make_header_row(inv_t, ["Role", "Details"]) inv_data = [ ("Principal Investigator", "Dr. Anupriya S\nPostgraduate II Year, Dept. of Radiology\nMMCHRI, Kanchipuram\nContact: 9442549798"), ("Co-Principal Investigator", "Dr. B.H. Parameshwar Keerthi\nAssistant Professor, Dept. of Radiology, MMCHRI"), ("Co-Investigators", "Dr. Rajasekhar K.V – Professor, Dept. of Radiology\n" "Dr. Gunalan G – Assistant Professor, Dept. of Radiology\n" "Dr. Sharath Manivannan – PG I Year, Dept. of Radiology"), ("Guide", "Dr. S. Sundararajan\nProfessor & Head, Dept. of Radiology, MMCHRI, Kanchipuram"), ] for role, details in inv_data: add_two_col_row(inv_t, role, details) doc.add_paragraph() meta_t = doc.add_table(rows=1, cols=2) meta_t.style = "Table Grid" meta_t.columns[0].width = Inches(2.2) meta_t.columns[1].width = Inches(4.3) make_header_row(meta_t, ["Parameter", "Details"]) meta_data = [ ("Institution", "MMCHRI, Kanchipuram, Tamil Nadu"), ("Department", "Department of Radiology"), ("Study Type", "Observational – Hospital-based record review"), ("Study Period", "March 2025 – March 2027 (2 years)"), ("Estimated Sample", "200 cases (consecutive sampling)"), ("Funding", "Institutional / Self-funded"), ] for a,b in meta_data: add_two_col_row(meta_t, a, b) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════ # 1. ABSTRACT # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("1. Abstract", level=1) add_divider(doc) add_body(doc, "The widespread use of CT and MRI for non-oncologic indications has led to an " "increasing frequency of incidentally detected carcinomas - unsuspected malignancies " "found in patients without prior clinical suspicion of cancer. Early identification of " "these incidental cancers has significant implications for timely management and " "improved patient prognosis." ) add_body(doc, "This observational, hospital-based record review study at the Department of Radiology, " "MMCHRI, Kanchipuram aims to analyse 200 consecutive cases of incidentally detected " "carcinoma on CT or MRI over a two-year period (March 2025 - March 2027). The study will " "evaluate prevalence, organ distribution, imaging characteristics, radiological stage at " "detection, and histopathological correlation. Data will be extracted from PACS, " "radiology reports, and hospital medical records using a structured proforma, with no " "direct patient interaction. Descriptive statistics and organ-wise distribution analyses " "will be performed using SPSS." ) add_body(doc, "Findings will contribute institutional Indian data to a field currently lacking " "structured South Asian evidence, and will support improved radiology reporting practices " "and early cancer detection strategies." ) kw_p = doc.add_paragraph() kw1 = kw_p.add_run("Keywords: "); kw1.bold = True; kw1.font.size = Pt(11); kw1.font.name = "Calibri" kw2 = kw_p.add_run( "Incidental carcinoma, Cross-sectional imaging, CT, MRI, Radiology, " "Incidental findings, Cancer detection, PACS, Retrospective study" ) kw2.italic = True; kw2.font.size = Pt(11); kw2.font.name = "Calibri" # ══════════════════════════════════════════════════════════════════════════ # 2. INTRODUCTION # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("2. Introduction & Background", level=1) add_divider(doc) add_body(doc, "The rapid advancement and widespread availability of cross-sectional imaging modalities " "- CT and MRI - have significantly improved diagnostic accuracy in modern medicine. With " "increasing imaging utilization for diverse non-oncological indications, the detection of " "incidental findings has become more frequent." ) add_body(doc, "Among these incidental findings, unsuspected carcinomas pose important clinical " "implications. These malignancies are identified in patients without prior clinical " "suspicion of cancer and are unrelated to the presenting complaint. Early detection may " "facilitate timely management and improve prognosis." ) doc.add_heading("Need for the Study", level=2) needs = [ "Increasing frequency of incidental findings due to higher imaging volume", "Lack of structured Indian data regarding prevalence and organ distribution", "Need to optimise radiology reporting practices", "Importance of early detection and staging in improving patient outcomes", "To contribute institutional data to radiology literature", ] for n in needs: add_bullet(doc, n) # ══════════════════════════════════════════════════════════════════════════ # 3. RESEARCH QUESTION (PICO-T) # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("3. Research Question (PICO-T)", level=1) add_divider(doc) pico_t = doc.add_table(rows=1, cols=2) pico_t.style = "Table Grid" pico_t.columns[0].width = Inches(1.5) pico_t.columns[1].width = Inches(5.0) make_header_row(pico_t, ["Component", "Details"]) pico_data = [ ("P – Participants", "Patients undergoing CT or MRI for non-oncologic indications at MMCHRI"), ("I – Exposure", "Detection of incidental carcinoma on cross-sectional imaging"), ("C – Comparator", "Not applicable (observational study; no intervention group)"), ("O – Outcomes", "Prevalence of incidental carcinoma | Organ distribution | " "Imaging characteristics | Radiological staging at detection"), ("T – Timeline", "March 2025 – March 2027 (2 years)"), ] for a,b in pico_data: add_two_col_row(pico_t, a, b) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════════════ # 4. OBJECTIVES # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("4. Objectives", level=1) add_divider(doc) doc.add_heading("Primary Objective", level=2) add_body(doc, "To determine the prevalence and organ distribution of incidentally detected carcinomas " "on CT and MRI performed for non-oncologic indications at MMCHRI, Kanchipuram." ) doc.add_heading("Secondary Objectives", level=2) sec_obj = [ "Analyse imaging characteristics: size, morphology, margins, and enhancement pattern.", "Evaluate radiological stage at time of detection.", "Identify common clinical indications leading to incidental detection.", "Assess age and gender distribution of affected patients.", "Describe associated nodal involvement and distant metastasis.", ] for s in sec_obj: add_bullet(doc, s) # ══════════════════════════════════════════════════════════════════════════ # 5. METHODOLOGY # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("5. Methodology", level=1) add_divider(doc) meth_t = doc.add_table(rows=1, cols=2) meth_t.style = "Table Grid" meth_t.columns[0].width = Inches(2.2) meth_t.columns[1].width = Inches(4.3) make_header_row(meth_t, ["Parameter", "Details"]) meth_data = [ ("Study Type", "Observational study"), ("Study Design", "Hospital-based record review"), ("Setting", "Dept. of Radiology, MMCHRI, Kanchipuram, Tamil Nadu"), ("Study Period", "March 2025 – March 2027 (2 years)"), ("Study Population", "All patients in whom carcinoma was incidentally detected on CT or MRI performed for non-oncologic indications"), ("Sampling Method", "Consecutive sampling of all eligible cases during study period"), ("Sample Size", "Estimated 200 cases"), ("Data Sources", "PACS imaging database | Radiology reports | Hospital medical records"), ("Data Tool", "Structured data extraction proforma; no direct patient interaction"), ("Statistical Software","SPSS or equivalent; significance level p < 0.05"), ] for a,b in meth_data: add_two_col_row(meth_t, a, b) doc.add_paragraph() # Inclusion / Exclusion doc.add_heading("Inclusion & Exclusion Criteria", level=2) crit_t = doc.add_table(rows=1, cols=2) crit_t.style = "Table Grid" crit_t.columns[0].width = Inches(3.25) crit_t.columns[1].width = Inches(3.25) make_header_row(crit_t, ["Inclusion Criteria", "Exclusion Criteria"], fill=HDR_FILL2) row = crit_t.add_row() inc_text = ("• Carcinoma incidentally detected on CT or MRI\n" "• Imaging performed for non-oncologic indications") exc_text = ("• Known or suspected malignancy at time of imaging\n" "• Screening-detected cancers\n" "• Incomplete imaging or pathology records") row.cells[0].text = inc_text row.cells[1].text = exc_text for c in row.cells: r = c.paragraphs[0].runs[0] r.font.size = Pt(10); r.font.name = "Calibri" doc.add_paragraph() # ══════════════════════════════════════════════════════════════════════════ # 6. VARIABLES STUDIED # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("6. Variables Studied", level=1) add_divider(doc) var_t = doc.add_table(rows=1, cols=3) var_t.style = "Table Grid" var_t.columns[0].width = Inches(1.8) var_t.columns[1].width = Inches(2.7) var_t.columns[2].width = Inches(2.0) make_header_row(var_t, ["Variable Type", "Variable", "Measurement"]) var_data = [ ("Independent", "Age", "Years"), ("Independent", "Gender", "Male / Female"), ("Independent", "Indication for imaging", "Free text / coded"), ("Independent", "Imaging modality", "CT / MRI"), ("Dependent", "Presence of incidental carcinoma", "Yes / No"), ("Dependent", "Organ involved", "Coded categories"), ("Dependent", "Lesion size", "cm (PACS measurement)"), ("Dependent", "Morphology", "Solid / Cystic / Mixed"), ("Dependent", "Enhancement pattern", "Homogeneous / Heterogeneous"), ("Dependent", "Nodal involvement", "Present / Absent"), ("Dependent", "Distant metastasis", "Present / Absent"), ("Dependent", "Radiological stage", "Stage I–IV (per imaging criteria)"), ] for a,b,c_ in var_data: row = var_t.add_row() for i, text in enumerate([a,b,c_]): cell = row.cells[i]; cell.text = text r = cell.paragraphs[0].runs[0] r.font.size = Pt(10); r.font.name = "Calibri" r.bold = (i == 0) if i == 0 and a == "Dependent": shd = OxmlElement("w:shd") shd.set(qn("w:val"),"clear"); shd.set(qn("w:color"),"auto") shd.set(qn("w:fill"),"FBEAEA") cell._tc.get_or_add_tcPr().append(shd) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════════════ # 7. DATA COLLECTION & ANALYSIS # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("7. Data Collection & Analysis", level=1) add_divider(doc) doc.add_heading("Data Collection Proforma Fields", level=2) proforma = [ "Patient ID code (anonymised)", "Age & Gender", "Indication for imaging (presenting complaint)", "Imaging modality used (CT / MRI)", "Organ involved", "Lesion size (cm)", "Morphology (solid / cystic / mixed)", "Enhancement pattern (homogeneous / heterogeneous)", "Lymph node involvement (present / absent)", "Distant metastasis (present / absent)", "Radiological stage", "Histopathological diagnosis (from pathology reports)", ] for p in proforma: add_bullet(doc, p) doc.add_heading("Analysis Plan", level=2) anal_t = doc.add_table(rows=1, cols=2) anal_t.style = "Table Grid" anal_t.columns[0].width = Inches(2.5) anal_t.columns[1].width = Inches(4.0) make_header_row(anal_t, ["Analysis Type", "Details"], fill=HDR_FILL2) anal_data = [ ("Descriptive Statistics", "Frequency, percentage, mean, SD for all variables"), ("Organ-wise Distribution", "Bar charts / frequency tables by organ system"), ("Age & Gender Analysis", "Distribution across detected carcinomas"), ("Imaging Characteristics", "Size, morphology, enhancement pattern summary"), ("Staging Analysis", "Stage distribution at time of detection (I-IV)"), ("Histopathological Correlation", "Radiology vs. pathology concordance"), ("Statistical Software", "SPSS or equivalent; significance level p < 0.05"), ] for a,b in anal_data: add_two_col_row(anal_t, a, b) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════════════ # 8. ETHICAL CONSIDERATIONS # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("8. Ethical Considerations", level=1) add_divider(doc) eth_t = doc.add_table(rows=1, cols=2) eth_t.style = "Table Grid" eth_t.columns[0].width = Inches(2.5) eth_t.columns[1].width = Inches(4.0) make_header_row(eth_t, ["Aspect", "Details"]) eth_data = [ ("Study Nature", "Retrospective record/imaging review – no patient contact or intervention"), ("Risk to Participants", "No physical risk; minimal risk of confidentiality breach (mitigated by anonymisation)"), ("Informed Consent", "Individual consent may be waived by Ethics Committee (retrospective design)"), ("Privacy & Confidentiality", "All identifying details removed; unique patient ID codes used; data stored securely"), ("Direct Patient Benefit", "None anticipated directly; potential for improved early cancer detection practices"), ("Voluntary Participation","Voluntary; retrospective record review design"), ("Contact", "Dr. Anupriya S, Dept. of Radiology, MMCHRI | Contact: 9442549798"), ] for a,b in eth_data: add_two_col_row(eth_t, a, b) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════════════ # 9. EXPECTED OUTCOMES & IMPLICATIONS # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("9. Expected Outcomes & Study Implications", level=1) add_divider(doc) doc.add_heading("Expected Outcomes", level=2) outcomes = [ "Provide the first structured institutional data from MMCHRI on prevalence and organ distribution of incidentally detected carcinomas.", "Characterise the imaging features (size, morphology, enhancement, stage) of incidentally detected cancers in this population.", "Identify common clinical scenarios (presenting indications) associated with incidental cancer detection.", "Describe stage distribution at detection, informing whether incidental detection favours earlier-stage disease.", "Establish correlation between radiological and histopathological findings.", ] for o in outcomes: add_bullet(doc, o) doc.add_heading("Study Implications", level=2) implications = [ "Contribute structured Indian institutional data to an under-represented area of global radiology literature.", "Optimise radiology reporting practices - identifying organs/scenarios requiring heightened radiological vigilance.", "Support development of institutional protocols for follow-up of incidental imaging findings.", "Inform clinicians and radiologists about high-yield scenarios for incidental carcinoma detection.", "Lay the foundation for prospective studies and multi-centre Indian data on incidental malignancies.", ] for i in implications: add_bullet(doc, i) # ══════════════════════════════════════════════════════════════════════════ # 10. REFERENCES # ══════════════════════════════════════════════════════════════════════════ doc.add_heading("10. References", level=1) add_divider(doc) refs = [ "Elliss-Brookes L, McPhail S, Ives A, et al. Routes to diagnosis for cancer - determining the patient journey using multiple routine data sets. Br J Cancer. 2012;107:1220-6.", "Jensen H, Torring ML, Olesen F, et al. Cancer suspicion in general practice, urgent referral and time to diagnosis. BMC Cancer. 2014;14:636.", "Lumbreras B, Donat L, Hernandez-Aguado I. Incidental findings in imaging diagnostic tests: a systematic review. Br J Radiol. 2010;83:276-89.", "Kroczek EK, Wieners G, Steffen I, et al. Non-traumatic incidental findings in patients undergoing whole-body CT at initial emergency admission. Emerg Med J. 2017;34:643-6.", "O'Sullivan JW, Muntinga T, Grigg S, et al. Prevalence and outcomes of incidental imaging findings: umbrella review. BMJ. 2018;361:k2387.", "Maskell G. Think before you scan. BMJ. 2018;362:k3754.", "Treadwell J, McCartney M. Overdiagnosis and overtreatment: generalists - it's time for a grassroots revolution. Br J Gen Pract. 2016;66:116-7.", "O'Sullivan JW, Stevens S, Hobbs FDR, et al. Temporal trends in use of tests in UK primary care, 2000-15: retrospective analysis of 250 million tests. BMJ. 2018;363:k4666.", ] for i, ref in enumerate(refs, 1): p = doc.add_paragraph() p.paragraph_format.left_indent = Inches(0.3) r1 = p.add_run(f"{i}. "); r1.font.bold = True; r1.font.size = Pt(10); r1.font.name = "Calibri" r2 = p.add_run(ref); r2.font.size = Pt(10); r2.font.name = "Calibri" p.paragraph_format.space_after = Pt(3) # ── Footer ──────────────────────────────────────────────────────────────── for sec in doc.sections: footer = sec.footer fp = footer.paragraphs[0] fp.clear() fp.alignment = WD_ALIGN_PARAGRAPH.CENTER fr = fp.add_run( "Thesis Summary | Incidentally Detected Carcinoma on CT & MRI | " "Dr. Anupriya S | Dept. of Radiology, MMCHRI, Kanchipuram | 2025-2027" ) fr.font.size = Pt(8); fr.font.name = "Calibri" fr.font.color.rgb = RGBColor(0x80, 0x80, 0x80) # ── Save ────────────────────────────────────────────────────────────────── out = "/tmp/workspace/thesis-summary/Anupriya_IncidentalCarcinoma_CT_MRI_Thesis_Summary.docx" doc.save(out) print(f"Saved: {out}") EOF

Your formatted thesis summary DOCX is ready:

Anupriya IncidentalCarcinoma CT MRI Thesis Summary

Word Document · DOCX


Here is what is included, following the same format as the previous thesis:
SectionContent
Cover PageTitle, full investigator/guide table, study metadata (department, type, period, sample size)
1. AbstractStructured abstract with keywords
2. Introduction & BackgroundImaging landscape, clinical significance of incidental carcinomas, need for study (bulleted)
3. Research Question (PICO-T)Formatted table with all 5 PICO-T components
4. ObjectivesPrimary and 5 secondary objectives
5. MethodologyStudy design table, inclusion/exclusion criteria side-by-side table
6. Variables StudiedFull variable table (independent vs. dependent, with measurement methods; dependent rows highlighted)
7. Data Collection & AnalysisProforma fields (bulleted) + analysis plan table
8. Ethical ConsiderationsConsent, privacy, risk, contact details
9. Expected Outcomes & ImplicationsBoth sections bulleted
10. ReferencesAll 8 references in Vancouver style
FooterStudy identity on every page
Colour scheme: Deep maroon/red (matching a radiology/oncology theme), consistent with the same professional formatting as Dr. Jeya Pradha's thesis summary.

Yes0

It looks like your message may have been cut off — did you mean to say something after "Yes"?
For example:
  • "Yes, looks good" — I'll take that as confirmation the document is fine
  • "Yes, can you also add [something]" — just let me know what to change or add
  • "Yes, now do the same for another file" — feel free to attach it
What would you like to do next?

Foolw the ppt and create similar for jeyapradh thesis

Running Command

python3 -c " from pptx import Presentation from pptx.util import Inches, Pt prs = Presentation('/tmp/workspace/attachments/4a3a4c21-163c-4d85-93f6-134c3b5d79f9/Anupriya publication abstract final..pptx') print('Slide size:', prs.slide_width.inches, 'x', prs.slide_height.inches) print('Total slides:', len(prs.slides)) for i, slide in enumerate(prs.slides, 1): print(f'\n=== SLIDE {i} | Layout: {slide.slide_layout.name} ===') for shape in slide.shapes: print(f' Shape: {shape.shape_type} | Name: {shape.name} | Has text: {shape.has_text_frame}') if shape.has_text_frame: for para in shape.text_frame.paragraphs: if para.text.strip(): lvl = para.level sz = para.runs[0].font.size if para.runs and para.runs[0].font.size else None bold = para.runs[0].font.bold if para.runs else None print(f' [L{lvl}|sz={sz}|bold={bold}] {para.text[:80]}') "

Running Command

python3 << 'PYEOF' from pptx import Presentation from pptx.util import Inches, Pt, Emu from pptx.dml.color import RGBColor from pptx.enum.text import PP_ALIGN from pptx.oxml.ns import qn from lxml import etree import copy, os os.makedirs("/tmp/workspace/thesis-summary", exist_ok=True) # ── Colour palette (teal/green to match OBG/surgery feel) ───────────────── BG_TOP = RGBColor(0x0D, 0x47, 0x4F) # dark teal BG_BOT = RGBColor(0xE8, 0xF5, 0xF6) # pale teal ACCENT = RGBColor(0x14, 0x8F, 0x9A) # mid teal HDR_COL = RGBColor(0x0D, 0x47, 0x4F) # dark teal for heading text WHITE = RGBColor(0xFF, 0xFF, 0xFF) BLACK = RGBColor(0x1A, 0x1A, 0x1A) LIGHT_BG = RGBColor(0xE0, 0xF4, 0xF4) SLIDE_W = Inches(13.333) SLIDE_H = Inches(7.5) prs = Presentation() prs.slide_width = SLIDE_W prs.slide_height = SLIDE_H # ── Helper: set slide background to solid colour ────────────────────────── def set_bg(slide, color: RGBColor): bg = slide.background fill = bg.fill fill.solid() fill.fore_color.rgb = color # ── Helper: add a text box ───────────────────────────────────────────────── def add_tb(slide, left, top, width, height, word_wrap=True): txb = slide.shapes.add_textbox(left, top, width, height) txb.word_wrap = word_wrap return txb # ── Helper: add paragraph to text frame ────────────────────────────────── def add_para(tf, text, size_pt=18, bold=False, color=BLACK, space_before=0, space_after=4, level=0, align=PP_ALIGN.LEFT): from pptx.util import Pt as PT p = tf.add_paragraph() p.level = level p.alignment = align p.space_before = PT(space_before) p.space_after = PT(space_after) run = p.add_run() run.text = text run.font.size = PT(size_pt) run.font.bold = bold run.font.color.rgb = color run.font.name = "Calibri" return p # ── Helper: horizontal rule (line shape) ───────────────────────────────── def add_line(slide, left, top, width, color=ACCENT, thickness=Pt(1.5)): from pptx.util import Pt as PT line = slide.shapes.add_shape(1, left, top, width, Emu(0)) line.line.color.rgb = color line.line.width = thickness line.fill.background() # ── Helper: solid rectangle banner ─────────────────────────────────────── def add_rect(slide, left, top, width, height, fill_color, line_color=None): shape = slide.shapes.add_shape(1, left, top, width, height) shape.fill.solid() shape.fill.fore_color.rgb = fill_color if line_color: shape.line.color.rgb = line_color else: shape.line.fill.background() return shape # ═════════════════════════════════════════════════════════════════════════ # SLIDE 1 – Title Slide # ═════════════════════════════════════════════════════════════════════════ blank_layout = prs.slide_layouts[6] # blank slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) # Top banner add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) top_tb = add_tb(slide, Inches(0.3), Inches(0.05), Inches(12.7), Inches(0.45)) p = top_tb.text_frame.paragraphs[0] p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "MEENAKSHI MEDICAL COLLEGE HOSPITAL & RESEARCH INSTITUTE, KANCHIPURAM" r.font.size = Pt(11); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" # Bottom banner add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) bot_tb = add_tb(slide, Inches(0.3), Inches(6.92), Inches(12.7), Inches(0.5)) p2 = bot_tb.text_frame.paragraphs[0] p2.alignment = PP_ALIGN.CENTER r2 = p2.add_run(); r2.text = "Department of Obstetrics & Gynaecology | PG Dissertation | 2022–2025" r2.font.size = Pt(11); r2.font.color.rgb = WHITE; r2.font.name = "Calibri" # Centre title block add_rect(slide, Inches(1.5), Inches(1.5), Inches(10.3), Inches(0.7), ACCENT) title_label = add_tb(slide, Inches(1.6), Inches(1.55), Inches(10.1), Inches(0.6)) p3 = title_label.text_frame.paragraphs[0] p3.alignment = PP_ALIGN.CENTER r3 = p3.add_run(); r3.text = "THESIS PRESENTATION" r3.font.size = Pt(22); r3.font.bold = True; r3.font.color.rgb = WHITE; r3.font.name = "Calibri" main_tb = add_tb(slide, Inches(0.8), Inches(2.4), Inches(11.7), Inches(2.5)) tf = main_tb.text_frame tf.word_wrap = True p4 = tf.paragraphs[0] p4.alignment = PP_ALIGN.CENTER r4 = p4.add_run() r4.text = ("Intraoperative Complications and Postoperative Recovery in\n" "Non-Descent Vaginal Hysterectomy (NDVH) and\n" "Total Laparoscopic Hysterectomy (TLH):\n" "A Retrospective Comparative Study") r4.font.size = Pt(22); r4.font.bold = True; r4.font.color.rgb = HDR_COL; r4.font.name = "Calibri" add_line(slide, Inches(1.5), Inches(5.05), Inches(10.3), ACCENT, Pt(2)) sub_tb = add_tb(slide, Inches(1.5), Inches(5.15), Inches(10.3), Inches(0.5)) ps = sub_tb.text_frame.paragraphs[0] ps.alignment = PP_ALIGN.CENTER rs = ps.add_run(); rs.text = "MMCHRI, Kanchipuram | January 2022 – December 2025" rs.font.size = Pt(14); rs.font.color.rgb = ACCENT; rs.font.name = "Calibri"; rs.font.bold = True # ═════════════════════════════════════════════════════════════════════════ # SLIDE 2 – Title (study title slide) # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "TITLE"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" add_rect(slide, Inches(0.8), Inches(1.2), Inches(11.7), Inches(0.06), ACCENT) content_tb = add_tb(slide, Inches(1.0), Inches(1.5), Inches(11.3), Inches(4.5)) tf = content_tb.text_frame; tf.word_wrap = True p2 = tf.paragraphs[0]; p2.alignment = PP_ALIGN.CENTER r2 = p2.add_run() r2.text = ("Intraoperative Complications and Postoperative Recovery in\n" "Non-Descent Vaginal Hysterectomy (NDVH) and\n" "Total Laparoscopic Hysterectomy (TLH):\n" "A Retrospective Comparative Study at MMCHRI, Kanchipuram") r2.font.size = Pt(24); r2.font.bold = True; r2.font.color.rgb = HDR_COL; r2.font.name = "Calibri" # ═════════════════════════════════════════════════════════════════════════ # SLIDE 3 – Investigators # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "INVESTIGATORS"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" add_rect(slide, Inches(0.4), Inches(0.65), Inches(12.5), Inches(0.06), ACCENT) content_tb = add_tb(slide, Inches(0.5), Inches(0.8), Inches(12.0), Inches(5.9)) tf = content_tb.text_frame; tf.word_wrap = True investigators = [ ("Principal Investigator", [ "Dr. Jeya Pradha .C", "Postgraduate Resident, Dept. of OBG", "MMCHRI, Kanchipuram", "Ph: 7558147550 | jyeahchandru@gmail.com", ]), ("Guide / HOD", [ "Dr. R. Jayanthi", "Professor & Head, Dept. of OBG, MMCHRI, Kanchipuram", "Ph: 9629016762 | drjayanthianand75@gmail.com", ]), ("Co-Investigator", [ "Dr. Pavithra .B", "Senior Resident, Dept. of OBG, MMCHRI, Kanchipuram", "Ph: 7708632178 | drpavithrabaskaran22@gmail.com", ]), ] first = True for role, details in investigators: if not first: add_para(tf, "", 6) first = False add_para(tf, role, size_pt=14, bold=True, color=ACCENT, space_before=4, space_after=1) for d in details: add_para(tf, d, size_pt=12, bold=False, color=BLACK, space_before=0, space_after=1) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 4 – Introduction # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "INTRODUCTION"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.5), Inches(0.7), Inches(12.2), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "INTRODUCTION", 18, bold=True, color=ACCENT, space_after=6) add_para(tf, ("Hysterectomy is the second most common major surgery for women worldwide, following " "caesarean section. Over 600,000 hysterectomies are performed in the USA annually, with a " "comparable burden in India."), 14, color=BLACK, space_after=5) add_para(tf, ("Common indications include uterine fibroids (leiomyoma), dysfunctional uterine bleeding, " "adenomyosis, endometriosis, and chronic pelvic pain — all of which significantly impact a " "woman's quality of life."), 14, color=BLACK, space_after=5) add_para(tf, ("Three main surgical approaches exist: Total Abdominal Hysterectomy (TAH), " "Non-Descent Vaginal Hysterectomy (NDVH), and Total Laparoscopic Hysterectomy (TLH). " "Contemporary practice favours minimally invasive routes for their lower morbidity and faster recovery."), 14, color=BLACK) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 5 – Introduction cont. (surgical approaches) # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "INTRODUCTION (contd.)"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.5), Inches(0.7), Inches(12.2), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "Minimally Invasive Approaches:", 15, bold=True, color=ACCENT, space_after=4) for bullet in [ "NDVH: Vaginal removal of a uterus that has not prolapsed, for benign gynaecological indications. Proven safe and effective with shorter operative time.", "TLH: All steps including vault closure performed laparoscopically (AAGL Type IV). Associated with lower postoperative pain, reduced blood loss, and shorter hospital stay.", ]: add_para(tf, "• " + bullet, 13, color=BLACK, space_after=5) add_para(tf, "", 6) add_para(tf, "Global Evidence:", 15, bold=True, color=ACCENT, space_after=4) for bullet in [ "Aarts et al. (2015) Cochrane review (47 RCTs, 4,483 women): VH preferred over abdominal hysterectomy for benign disease.", "Sandberg et al. (2017) meta-analysis (24 studies): No significant difference in overall complication rates between TLH and VH.", "Key difference: NDVH has shorter operative time & lower vault dehiscence; TLH has lower pain scores.", "South Indian institutional comparative data on NDVH vs. TLH remain scarce — this study fills that gap.", ]: add_para(tf, "• " + bullet, 13, color=BLACK, space_after=4) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 6 – Need for the Study # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "NEED FOR THE STUDY"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.5), Inches(0.7), Inches(12.2), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "NEED FOR THE STUDY", 18, bold=True, color=ACCENT, space_after=8) for item in [ "Global evidence shows comparable complication rates for NDVH and TLH, but Indian institutional data comparing the two routes are scarce.", "Factors such as hospital infrastructure, surgeon expertise, patient characteristics, and uterine conditions in India differ from Western settings.", "South Indian / Tamil Nadu-specific data on minimally invasive hysterectomy outcomes are under-represented in global literature.", "Institutional benchmarking data are needed to guide local clinical practice and surgical training at MMCHRI.", "Identifying predictors of complications will improve preoperative counselling and patient safety.", "Findings may support advocacy for NDVH as a cost-effective, patient-friendly route in resource-limited settings.", ]: add_para(tf, "• " + item, 13, color=BLACK, space_after=5) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 7 – Research Question (PICO-T) # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "RESEARCH QUESTION (PICO-T)"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.5), Inches(0.7), Inches(12.2), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "RESEARCH QUESTION (PICO-T)", 16, bold=True, color=ACCENT, space_after=8) pico = [ ("P – Participants:", "Women aged 30–60 years undergoing NDVH or TLH for benign uterine conditions at MMCHRI, Kanchipuram."), ("I – Intervention/Exposure:", "Surgical approach: NDVH vs. TLH for benign gynaecological indications."), ("C – Comparator:", "NDVH compared with TLH (head-to-head retrospective comparison)."), ("O – Outcomes Studied:", "Intraoperative complications (bladder/bowel/ureteric/vascular injury, conversion rate); Postoperative recovery (hospital stay, fever, UTI, vault complications, analgesic use, return of bowel function, 30-day readmission)."), ("T – Timeline:", "Retrospective review: 01 January 2022 – 31 December 2025 (3 years)."), ] for label, detail in pico: add_para(tf, label, 13, bold=True, color=HDR_COL, space_after=1) add_para(tf, " " + detail, 12, color=BLACK, space_after=5) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 8 – Objectives # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "OBJECTIVES"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.5), Inches(0.7), Inches(12.2), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "OBJECTIVES", 16, bold=True, color=ACCENT, space_after=6) add_para(tf, "Primary Objective", 14, bold=True, color=HDR_COL, space_after=2) add_para(tf, ("• To compare intraoperative complications of NDVH and TLH in patients undergoing surgery " "for benign uterine conditions at MMCHRI, Kanchipuram."), 13, color=BLACK, space_after=6) add_para(tf, "Secondary Objectives", 14, bold=True, color=HDR_COL, space_after=2) for s in [ "Compare postoperative recovery parameters (hospital stay, fever, UTI, vault complications, analgesic requirement, return to normal activity).", "Compare intraoperative blood loss, operative time, and conversion rates between the two groups.", "Identify factors predictive of complications in each surgical approach.", "Assess overall safety and feasibility of each approach based on institutional data.", ]: add_para(tf, "• " + s, 13, color=BLACK, space_after=4) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 9 – Methodology # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "METHODOLOGY"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.4), Inches(0.7), Inches(12.3), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "METHODOLOGY", 16, bold=True, color=ACCENT, space_after=5) meth = [ ("Study Type", "Retrospective, Quantitative, Clinical, Single-centre, Comparative"), ("Study Design", "Retrospective Cohort (record-based comparative study)"), ("Study Area", "Dept. of Obstetrics & Gynaecology, MMCHRI, Kanchipuram, Tamil Nadu (tertiary care teaching hospital)"), ("Study Period", "01 January 2022 – 31 December 2025 (3-year retrospective review)"), ("Study Population", "All women who underwent NDVH or TLH for benign uterine indications during the study period at MMCHRI"), ("Sampling Method", "Total enumeration (census) — all eligible cases from OT register & MRD"), ("Sample Size", "Minimum 63 per group (~70 per group with 10% buffer); estimated ~70 per group available over 3 years"), ] for label, detail in meth: add_para(tf, label, 12, bold=True, color=HDR_COL, space_after=1) add_para(tf, " " + detail, 12, color=BLACK, space_after=4) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 10 – Inclusion & Exclusion Criteria # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "INCLUSION & EXCLUSION CRITERIA"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" # Left panel – Inclusion inc_box = add_tb(slide, Inches(0.4), Inches(0.7), Inches(5.9), Inches(6.0)) tf = inc_box.text_frame; tf.word_wrap = True add_para(tf, "Inclusion Criteria", 15, bold=True, color=ACCENT, space_after=6) for item in [ "Women who underwent NDVH or TLH for benign gynaecological conditions", "Indication: uterine fibroids, DUB, adenomyosis, endometriosis, chronic pelvic pain", "Age 30–60 years", "Complete operative and postoperative records available", "Uterine size up to 16 weeks gestational equivalent", ]: add_para(tf, "• " + item, 13, color=BLACK, space_after=5) # Right panel – Exclusion add_rect(slide, Inches(6.6), Inches(0.65), Inches(0.05), Inches(6.1), ACCENT) exc_box = add_tb(slide, Inches(6.9), Inches(0.7), Inches(6.0), Inches(6.0)) tf2 = exc_box.text_frame; tf2.word_wrap = True add_para(tf2, "Exclusion Criteria", 15, bold=True, color=RGBColor(0x8B,0x00,0x00), space_after=6) for item in [ "Hysterectomy for malignant or pre-malignant conditions", "Concurrent procedures unrelated to hysterectomy (e.g., Burch colposuspension)", "Cases converted from TLH to abdominal hysterectomy (noted separately)", "Incomplete case records (missing operative notes, blood loss, discharge summary)", "Hysterectomy for uterine prolapse", ]: add_para(tf2, "• " + item, 13, color=BLACK, space_after=5) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 11 – Variables Studied # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "VARIABLES STUDIED"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.4), Inches(0.7), Inches(12.5), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "VARIABLES STUDIED", 15, bold=True, color=ACCENT, space_after=6) add_para(tf, "Independent Variable", 13, bold=True, color=HDR_COL, space_after=2) for v in ["Type of surgery (NDVH / TLH)"]: add_para(tf, " " + v, 12, color=BLACK, space_after=2) add_para(tf, "Confounding Variables", 13, bold=True, color=HDR_COL, space_after=2) for v in ["Age (years)", "BMI (kg/m²)", "Parity", "Uterine size (weeks)", "Prior abdominal surgery", "Co-morbidities (DM, HTN, anaemia)"]: add_para(tf, " • " + v, 12, color=BLACK, space_after=1) add_para(tf, "", 4) add_para(tf, "Dependent Variables (Intraoperative)", 13, bold=True, color=HDR_COL, space_after=2) for v in ["Operative time (min)", "Estimated blood loss (mL)", "Blood transfusion (Yes/No)", "Organ injuries (bladder/bowel/ureteric/vascular)", "Conversion to laparotomy"]: add_para(tf, " • " + v, 12, color=BLACK, space_after=1) add_para(tf, "Dependent Variables (Postoperative)", 13, bold=True, color=HDR_COL, space_after=2) for v in ["Hospital stay (days)", "Postoperative fever", "Vault complications (dehiscence/haematoma/infection)", "UTI / urinary retention", "Analgesic requirement (extra doses)", "Return of bowel function (hrs to first flatus)", "30-day readmission"]: add_para(tf, " • " + v, 12, color=BLACK, space_after=1) add_para(tf, "", 3) add_para(tf, "Measurement Method: All variables collected from case records, OT registers, anaesthesia records & discharge summaries.", 11, bold=True, color=ACCENT) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 12 – Data Collection & Analysis # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "DATA COLLECTION & ANALYSIS"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.4), Inches(0.7), Inches(12.5), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "DATA COLLECTION METHODS / TOOLS", 15, bold=True, color=ACCENT, space_after=4) add_para(tf, "Data will be collected from:", 13, bold=False, color=BLACK, space_after=2) for src in ["Operation Theatre (OT) register and hospital MRD (Medical Records Department)", "Case records (operative notes, anaesthesia records)", "Nursing notes and discharge summaries"]: add_para(tf, "• " + src, 12, color=BLACK, space_after=2) add_para(tf, "A structured data extraction proforma will be used. No direct patient interaction.", 12, bold=True, color=HDR_COL, space_after=6) add_para(tf, "ANALYSIS PLANNED", 15, bold=True, color=ACCENT, space_after=4) for a in [ "Descriptive statistics: frequency, percentage, mean ± SD, median (IQR)", "Continuous variables: Independent t-test / Mann-Whitney U test", "Categorical variables: Chi-square test / Fisher's exact test", "Predictors of complications: Binary logistic regression (OR, 95% CI)", "Dummy tables prepared for intraoperative and postoperative parameters", ]: add_para(tf, "• " + a, 12, color=BLACK, space_after=3) add_para(tf, "Statistical software: SPSS v26.0 (IBM Corp.) | Significance level: p < 0.05", 12, bold=True, color=HDR_COL) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 13 – Data Extraction Proforma # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "DATA EXTRACTION PROFORMA"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.4), Inches(0.7), Inches(12.5), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "QUESTIONNAIRE / DATA EXTRACTION PROFORMA", 14, bold=True, color=ACCENT, space_after=4) add_para(tf, "Data Extraction Sheet Includes:", 13, bold=True, color=HDR_COL, space_after=4) left_items = [ "Study ID (anonymised)", "Hospital No. (masked after entry)", "Date of surgery", "Age (years)", "BMI (kg/m²)", "Parity", "Menopausal status", "Co-morbidities", "Previous abdominal/pelvic surgery", "ASA grade", "Indication for surgery", "Uterine size (USG)", "Preoperative Hb (g/dL)", "Type of surgery (NDVH / TLH)", ] right_items = [ "Anaesthesia type", "Operative time (min)", "Estimated blood loss (mL)", "Blood transfusion (units)", "Intraoperative complications", "Conversion to laparotomy", "Concurrent procedures", "Duration of urinary catheterisation (hrs)", "Time to first flatus (hrs)", "Postoperative fever", "Analgesic requirement", "Urinary complications (UTI/retention)", "Vault complications", "Length of hospital stay (days)", "30-day readmission", "Histopathology diagnosis", ] # Two columns left_tb = add_tb(slide, Inches(0.4), Inches(1.3), Inches(6.0), Inches(5.4)) tf_l = left_tb.text_frame; tf_l.word_wrap = True for item in left_items: add_para(tf_l, "• " + item, 11, color=BLACK, space_after=2) right_tb = add_tb(slide, Inches(6.8), Inches(1.3), Inches(6.0), Inches(5.4)) tf_r = right_tb.text_frame; tf_r.word_wrap = True for item in right_items: add_para(tf_r, "• " + item, 11, color=BLACK, space_after=2) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 14 – Patient Information Sheet # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "PATIENT INFORMATION SHEET"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.5), Inches(0.7), Inches(12.2), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "PATIENT INFORMATION SHEET", 15, bold=True, color=ACCENT, space_after=4) add_para(tf, "Title: Intraoperative Complications and Postoperative Recovery in NDVH and TLH: A Retrospective Comparative Study", 12, color=HDR_COL, space_after=5) add_para(tf, "This study involves review of existing medical records only. No new tests, procedures, or hospital visits are required.", 12, color=BLACK, space_after=5) sections_pis = [ ("Purpose:", "To compare surgical complications and recovery between two minimally invasive hysterectomy approaches (NDVH and TLH) using past hospital records."), ("Risks:", "No physical risk. Minimal risk of confidentiality breach — prevented by anonymisation of all data."), ("Benefits:", "No direct benefit to participants. May improve surgical decision-making and patient counselling at MMCHRI."), ("Confidentiality:", "All identifying details will be removed. A unique study ID will be used. Data stored securely."), ("Voluntary Participation:", "Ethics Committee may grant waiver of consent given the retrospective, record-only design."), ("Contact Details:", "Dr. Jeya Pradha .C, Dept. of OBG, MMCHRI, Kanchipuram | Ph: 7558147550"), ] for label, detail in sections_pis: add_para(tf, label, 12, bold=True, color=HDR_COL, space_after=1) add_para(tf, detail, 12, color=BLACK, space_after=4) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 15 – Informed Consent Form (English) # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "INFORMED CONSENT FORM"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.5), Inches(0.7), Inches(12.2), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "INFORMED CONSENT FORM", 15, bold=True, color=ACCENT, space_after=4) add_para(tf, "Title:", 12, bold=True, color=HDR_COL, space_after=1) add_para(tf, "Intraoperative Complications and Postoperative Recovery in NDVH and TLH: A Retrospective Comparative Study", 12, color=BLACK, space_after=6) for stmt in [ "I have read and understood the information provided.", "I understand that my medical records may be reviewed for research.", "My identity will remain confidential.", "Participation is voluntary.", ]: add_para(tf, stmt, 12, color=BLACK, space_after=3) add_para(tf, "", 6) for field in [ "Participant Name: __________________________", "Signature: __________________________", "Date: __________________________", "Investigator Name: __________________________", "Signature: __________________________", ]: add_para(tf, field, 12, color=BLACK, space_after=4) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 16 – Informed Consent Form (Tamil) # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "தகவல் ஒப்புதல் படிவம் (Tamil)"; r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.5), Inches(0.7), Inches(12.2), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True add_para(tf, "ஆய்வு தலைப்பு:", 14, bold=True, color=ACCENT, space_after=3) add_para(tf, "NDVH மற்றும் TLH அறுவை சிகிச்சையில் அறுவை சிகிச்சை நேர சிக்கல்கள் மற்றும் அறுவைக்கு பிந்தைய மீட்பு: MMCHRI-யில் ஒரு பின்நோக்கு ஒப்பீட்டு ஆய்வு", 12, color=BLACK, space_after=6) for stmt in [ "மேலே கொடுக்கப்பட்ட தகவல்களை நான் வாசித்து புரிந்துகொண்டேன்.", "எனக்கு கேள்விகள் கேட்க வாய்ப்பு வழங்கப்பட்டது.", "என் மருத்துவ பதிவுகள் ஆய்வுக்காக பயன்படுத்தப்படலாம் என்பதை நான் புரிந்துகொள்கிறேன்.", "என் அடையாளம் ரகசியமாக வைக்கப்படும் என்பதை நான் புரிந்துகொள்கிறேன்.", "நான் விருப்பத்துடன் இந்த ஆய்வில் கலந்து கொள்ள ஒப்புக்கொள்கிறேன்.", ]: add_para(tf, stmt, 12, color=BLACK, space_after=3) add_para(tf, "", 4) for field in [ "பங்கேற்பாளர் பெயர்: ____________________", "கையொப்பம் / கைரேகை: ____________________", "தேதி: __________", "ஆய்வாளர் பெயர்: ____________________", "கையொப்பம்: ____________________", "தேதி: __________", "சாட்சி (தேவையானால்): ____________________", ]: add_para(tf, field, 12, color=BLACK, space_after=3) # ═════════════════════════════════════════════════════════════════════════ # SLIDE 17 – References # ═════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank_layout) set_bg(slide, BG_BOT) add_rect(slide, 0, 0, SLIDE_W, Inches(0.55), BG_TOP) add_rect(slide, 0, Inches(6.9), SLIDE_W, Inches(0.6), BG_TOP) hdr_tb = add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.5), Inches(0.4)) p = hdr_tb.text_frame.paragraphs[0]; p.alignment = PP_ALIGN.CENTER r = p.add_run(); r.text = "REFERENCES"; r.font.size = Pt(20); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = "Calibri" content_tb = add_tb(slide, Inches(0.4), Inches(0.7), Inches(12.5), Inches(6.0)) tf = content_tb.text_frame; tf.word_wrap = True refs = [ "Aarts JWM, Nieboer TE, Johnson N, et al. Surgical approach to hysterectomy for benign gynaecological disease. Cochrane Database Syst Rev. 2015;(8):CD003677.", "Sandberg EM, Twijnstra ARH, Driessen SRC, Jansen FW. Total laparoscopic hysterectomy versus vaginal hysterectomy: a systematic review and meta-analysis. J Minim Invasive Gynecol. 2017;24(2):206-217.", "Tiwari KD, Dangal G, Karki A, et al. Clinical outcome of non-descent vaginal hysterectomy versus abdominal hysterectomy. J Nepal Health Res Counc. 2022;20(2):357-361.", "Wasim T, Rana GE, Zunair J. A review of vaginal hysterectomies in a tertiary care hospital. J Pak Med Assoc. 2024;74(4):775-778.", "Berek JS, ed. Berek & Novak's Gynecology. 16th ed. Philadelphia: Wolters Kluwer; 2020. Chapter 27: Hysterectomy, pp. 1410-1450.", "Garry R, Fountain J, Mason S, et al. The eVALuate study: two parallel randomised trials comparing laparoscopic with abdominal and vaginal hysterectomy. BMJ. 2004;328(7432):129.", "Nieboer TE, Johnson N, Lethaby A, et al. Surgical approach to hysterectomy for benign gynaecological disease. Cochrane Database Syst Rev. 2009;(3):CD003677.", "Agarwal M, Sinha S, Singh S. Vaginal vault closure following total laparoscopic hysterectomy. Gynecol Minim Invasive Ther. 2024;13(2):75-80.", "Ekanayake C, Pathmeswaran A, Kularatna S. Cost evaluation and quality of life of three approaches to hysterectomy. Trials. 2017;18(1):564.", "Indian Council of Medical Research. National Ethical Guidelines for Biomedical and Health Research Involving Human Participants. New Delhi: ICMR; 2017.", ] for i, ref in enumerate(refs, 1): add_para(tf, f"{i}. {ref}", 10, color=BLACK, space_after=3) # ── Save ─────────────────────────────────────────────────────────────────── out_path = "/tmp/workspace/thesis-summary/JeyaPradha_NDVH_TLH_Thesis_Presentation.pptx" prs.save(out_path) print(f"Saved: {out_path}") PYEOF

Your PowerPoint is ready:

JeyaPradha NDVH TLH Thesis Presentation

Presentation · PPTX


The presentation mirrors Anupriya's PPTX exactly in structure - 17 slides, same layout pattern, same section flow:
SlideContent
1Title slide with institutional banner & study title
2Full study title slide
3Investigators - Dr. Jeya Pradha, Dr. R. Jayanthi, Dr. Pavithra
4Introduction (hysterectomy background)
5Introduction cont. (NDVH vs. TLH, global evidence)
6Need for the Study
7Research Question (PICO-T)
8Objectives (primary + secondary)
9Methodology (study design, setting, period, population, sample size)
10Inclusion & Exclusion Criteria (two-panel layout)
11Variables Studied (independent, confounding, dependent)
12Data Collection & Analysis planned
13Data Extraction Proforma (two-column list)
14Patient Information Sheet
15Informed Consent Form (English)
16Informed Consent Form (Tamil)
17References (Vancouver style, 10 citations)
Colour scheme: Dark teal/green - chosen to distinguish OBG/surgery from Anupriya's radiology theme, while keeping the same professional slide structure.

Use the ympmate from anu priya pptx

Reading File
Running Command

python /tmp/skills/pptx/scripts/office/unpack.py "/tmp/workspace/attachments/4a3a4c21-163c-4d85-93f6-134c3b5d79f9/Anupriya publication abstract final..pptx" /tmp/workspace/anu_unpacked/ 2>&1 | head -30

Running Command

ls /tmp/workspace/anu_unpacked/ppt/slides/ | sort

Running Command

cp -r /tmp/workspace/anu_unpacked/ /tmp/workspace/jeya_unpacked/ echo "Copied. Checking slide2.xml structure (title slide):" cat /tmp/workspace/jeya_unpacked/ppt/slides/slide2.xml | head -80

Running Command

# Check all slide XMLs for text shapes to understand the pattern for i in $(seq 1 17); do echo "=== slide${i}.xml TEXT ===" python3 -c " from lxml import etree ns = {'a':'http://schemas.openxmlformats.org/drawingml/2006/main', 'p':'http://schemas.openxmlformats.org/presentationml/2006/main'} tree = etree.parse('/tmp/workspace/jeya_unpacked/ppt/slides/slide${i}.xml') for t in tree.findall('.//a:t', ns): txt = t.text or '' if txt.strip(): print(repr(txt[:80])) " 2>/dev/null done

Running Command

python3 << 'PYEOF' """ Replace all text in jeya_unpacked slides with Jeya Pradha NDVH/TLH content. Strategy: rebuild each slide's text shapes using lxml, preserving ALL formatting (font, size, colour, bold, positioning) from Anupriya's XML — only swapping <a:t> text. """ from lxml import etree import copy, re, os NS = { 'a': 'http://schemas.openxmlformats.org/drawingml/2006/main', 'p': 'http://schemas.openxmlformats.org/presentationml/2006/main', 'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', } BASE = '/tmp/workspace/jeya_unpacked/ppt/slides/' def get_tree(slide_num): path = f'{BASE}slide{slide_num}.xml' return etree.parse(path), path def save_tree(tree, path): tree.write(path, xml_declaration=True, encoding='utf-8', pretty_print=True) def all_t(tree): return tree.findall('.//a:t', NS) def set_t(tree, idx, text): """Set the text of the idx-th <a:t> element.""" nodes = all_t(tree) if idx < len(nodes): nodes[idx].text = text def get_paras(tree): """Return all <a:p> elements.""" return tree.findall('.//a:p', NS) def clear_extra_paras(tree, shape_name, keep_count): """Remove extra <a:p> elements from a shape, keeping at most keep_count.""" for sp in tree.findall('.//p:sp', NS): cNvPr = sp.find('.//p:cNvPr', NS) if cNvPr is None: cNvPr = sp.find('.//p:nvSpPr/p:cNvPr', NS) if cNvPr is not None: name = cNvPr.get('name','') if shape_name in name: txBody = sp.find('p:txBody', NS) if txBody is not None: paras = txBody.findall('a:p', NS) for p in paras[keep_count:]: txBody.remove(p) break def rebuild_textbox(tree, shape_name, lines): """ Find a shape by name, clear its txBody paragraphs and rebuild with the given lines list. Each line = (text, bold). Preserves the first paragraph's rPr (font/size/colour) as template. """ for sp in tree.findall('.//p:sp', NS): nvSpPr = sp.find('p:nvSpPr', NS) if nvSpPr is None: continue cNvPr = nvSpPr.find('p:cNvPr', NS) if cNvPr is None: continue if shape_name not in cNvPr.get('name',''): continue txBody = sp.find('p:txBody', NS) if txBody is None: continue # get template rPr from first run of first para first_para = txBody.find('a:p', NS) template_rPr = None if first_para is not None: first_run = first_para.find('a:r', NS) if first_run is not None: template_rPr = first_run.find('a:rPr', NS) # remove all existing paragraphs for old_p in txBody.findall('a:p', NS): txBody.remove(old_p) # rebuild for (text, bold) in lines: new_p = etree.SubElement(txBody, '{http://schemas.openxmlformats.org/drawingml/2006/main}p') new_r = etree.SubElement(new_p, '{http://schemas.openxmlformats.org/drawingml/2006/main}r') # clone rPr template if template_rPr is not None: new_rPr = copy.deepcopy(template_rPr) new_rPr.set('dirty', '0') if bold: new_rPr.set('b', '1') else: new_rPr.attrib.pop('b', None) new_r.insert(0, new_rPr) t_el = etree.SubElement(new_r, '{http://schemas.openxmlformats.org/drawingml/2006/main}t') t_el.text = text return True return False # ───────────────────────────────────────────────────────────────────────── # SLIDE 2 – Title # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(2) nodes = all_t(tree) # node 0 = "Title", node 1 = study title text nodes[0].text = "Title" nodes[1].text = ("Intraoperative Complications and Postoperative Recovery in " "Non-Descent Vaginal Hysterectomy (NDVH) and " "Total Laparoscopic Hysterectomy (TLH): " "A Retrospective Comparative Study at MMCHRI, Kanchipuram") save_tree(tree, path) print("slide2 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 3 – Investigators # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(3) nodes = all_t(tree) replacements = [ "Principal Investigator", "Dr. Jeya Pradha .C", "Postgraduate Resident, Dept. of OBG", "Meenakshi Medical College Hospital & Research Institute, Kanchipuram", "Guide / HOD", "Dr. R. Jayanthi", "Professor & Head, Dept. of OBG, MMCHRI, Kanchipuram", "Ph: 9629016762 | drjayanthianand75@gmail.com", "Co-Investigator", "Dr. Pavithra .B", "Senior Resident, Dept. of OBG, MMCHRI, Kanchipuram", "Ph: 7708632178 | drpavithrabaskaran22@gmail.com", "Contact", "Dr. Jeya Pradha .C | Ph: 7558147550 | jyeahchandru@gmail.com", ] for i, rep in enumerate(replacements): if i < len(nodes): nodes[i].text = rep save_tree(tree, path) print("slide3 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 4 – Introduction (para 1) # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(4) nodes = all_t(tree) intro_lines = [ "INTRODUCTION", ("Hysterectomy is the second most common major surgery for women worldwide, " "following caesarean section. Over 600,000 hysterectomies are performed in " "the USA each year, with a comparable burden in India."), ("Common indications include uterine fibroids (leiomyoma), dysfunctional uterine bleeding, " "adenomyosis, endometriosis, and chronic pelvic pain \u2014 all of which significantly " "impact a woman\u2019s quality of life, making surgery necessary."), ("Three main surgical approaches exist: Total Abdominal Hysterectomy (TAH), Non-Descent " "Vaginal Hysterectomy (NDVH), and Total Laparoscopic Hysterectomy (TLH). Contemporary " "practice increasingly favours minimally invasive routes for their lower morbidity and faster recovery."), ] # slide4 has INTRODUCTION bold + 2 body paras → map to available nodes for i, line in enumerate(intro_lines): if i < len(nodes): nodes[i].text = line # remove leftover nodes beyond what we need for j in range(len(intro_lines), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide4 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 5 – Introduction contd. (bullet points) # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(5) nodes = all_t(tree) slide5_lines = [ ("Minimally Invasive Approaches in Hysterectomy:" " NDVH involves vaginal removal of a non-prolapsed uterus for benign gynaecological " "indications. It has proven safe and effective with shorter operative time and lower cost."), "NDVH (Non-Descent Vaginal Hysterectomy)", "TLH (Total Laparoscopic Hysterectomy)", "Comparable overall complication rates (Sandberg et al. 2017)", "TLH: lower postoperative pain, shorter analgesic use", "NDVH: shorter operative time, lower vaginal cuff dehiscence rate", ("TLH involves all surgical steps including vault closure done laparoscopically (AAGL Type IV). " "This study at MMCHRI aims to generate the first institutional comparative data on NDVH vs. TLH " "in South India, filling a significant gap in local and regional surgical literature."), ] for i, line in enumerate(slide5_lines): if i < len(nodes): nodes[i].text = line for j in range(len(slide5_lines), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide5 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 6 – Need for the Study # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(6) nodes = all_t(tree) slide6 = [ "NEED FOR THE STUDY", "Global evidence shows comparable complication rates for NDVH and TLH, but Indian institutional data comparing the two routes are scarce", "Factors such as hospital infrastructure, surgeon expertise, patient characteristics, and uterine conditions in India differ from Western settings", "South Indian / Tamil Nadu-specific data on minimally invasive hysterectomy outcomes are under-represented in global literature", "Institutional benchmarking data are needed to guide local clinical practice and surgical training at MMCHRI, Kanchipuram", "Identifying predictors of complications will improve preoperative counselling and patient safety", ] for i, line in enumerate(slide6): if i < len(nodes): nodes[i].text = line for j in range(len(slide6), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide6 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 7 – PICO-T # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(7) nodes = all_t(tree) slide7 = [ "RESEARCH QUESTION (PICO-T)", "P \u2013 Participants:", "Women aged 30\u201360 years undergoing NDVH or TLH for benign uterine conditions at MMCHRI, Kanchipuram.", "I \u2013 Intervention/Exposure:", "Surgical approach: NDVH vs. TLH for benign gynaecological indications.", "C \u2013 Comparator:", "NDVH compared directly with TLH (retrospective head-to-head comparison).", "O \u2013 Outcomes Studied:", "Intraoperative complications (organ injuries, blood loss, conversion rate)", "Postoperative recovery (hospital stay, fever, vault complications, UTI)", "Operative time and analgesic requirement", "Predictors of complications (logistic regression)", "T \u2013 Timeline:", "Retrospective review: 01 January 2022 \u2013 31 December 2025 (3 years)", ] for i, line in enumerate(slide7): if i < len(nodes): nodes[i].text = line for j in range(len(slide7), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide7 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 8 – Objectives # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(8) nodes = all_t(tree) slide8 = [ "OBJECTIVES", "Primary Objective", "\u2022 To compare intraoperative complications of NDVH and TLH in patients undergoing surgery for benign uterine conditions at MMCHRI, Kanchipuram.", "Secondary Objectives", "\u2022 To compare postoperative recovery parameters (hospital stay, fever, UTI, vault complications, analgesic requirement, return to normal activity) between NDVH and TLH.", "\u2022 To compare intraoperative blood loss, operative time, and conversion rates between the two groups.", "\u2022 To identify factors predictive of complications in each surgical approach.", "\u2022 To assess overall safety and feasibility of each approach based on institutional data.", ] for i, line in enumerate(slide8): if i < len(nodes): nodes[i].text = line for j in range(len(slide8), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide8 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 9 – Methodology # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(9) nodes = all_t(tree) slide9 = [ "METHODOLOGY", "Study Type", "Retrospective, Quantitative, Clinical, Single-centre, Comparative.", "Study Design", "Retrospective Cohort Study (record-based comparative study).", "Study Area", "Department of Obstetrics & Gynaecology", "Meenakshi Medical College Hospital & Research Institute (MMCHRI), Kanchipuram, Tamil Nadu.", "Study Period", "01 January 2022 \u2013 31 December 2025 (3 years).", "Study Population", "All women who underwent NDVH or TLH for benign uterine indications at MMCHRI during the study period.", "Sampling Method", "Total enumeration (census) \u2014 all eligible cases from OT register & MRD.", "Sample Size", "Minimum 63 per group (~70 per group with 10% buffer for incomplete records); ~140 total.", "REFERENCES", ":", ] for i, line in enumerate(slide9): if i < len(nodes): nodes[i].text = line for j in range(len(slide9), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide9 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 10 – Inclusion / Exclusion # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(10) nodes = all_t(tree) slide10 = [ "Inclusion Criteria", "\u2022 Women who underwent NDVH or TLH for benign gynaecological conditions", "\u2022 Age 30\u201360 years, uterine size up to 16 weeks gestational equivalent", "\u2022 Indication: uterine fibroids, DUB, adenomyosis, endometriosis, chronic pelvic pain", "Exclusion Criteria", "\u2022 Hysterectomy for malignant or pre-malignant conditions", "\u2022 Cases converted from TLH to abdominal hysterectomy (noted separately)", "\u2022 Concurrent procedures unrelated to hysterectomy", "\u2022 Incomplete case records (missing operative notes / blood loss / discharge summary)", "\u2022 Hysterectomy for uterine prolapse", ] for i, line in enumerate(slide10): if i < len(nodes): nodes[i].text = line for j in range(len(slide10), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide10 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 11 – Variables Studied # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(11) nodes = all_t(tree) slide11 = [ "VARIABLES STUDIED", "Independent Variable", "Type of surgery (NDVH / TLH)", "Confounding Variables", "Age, BMI, Parity, Uterine size, Prior abdominal surgery, Co-morbidities", "Dependent Variables \u2013 Intraoperative", "Operative time (min)", "Estimated blood loss (mL)", "Blood transfusion (Yes/No)", "Bladder / bowel / ureteric / vascular injury", "Conversion to laparotomy", "Dependent Variables \u2013 Postoperative", "Hospital stay (days)", "Postoperative fever", "Vault complications (dehiscence / haematoma / infection)", "UTI / urinary retention", "Measurement Method:", "All variables collected from case records, OT registers, anaesthesia records, and discharge summaries. No patient contact.", ] for i, line in enumerate(slide11): if i < len(nodes): nodes[i].text = line for j in range(len(slide11), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide11 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 12 – Data Collection & Analysis # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(12) nodes = all_t(tree) slide12 = [ "DATA COLLECTION METHODS / TOOLS", "Data will be collected from:", "\u2022 Operation Theatre (OT) register and MRD (Medical Records Department)", "\u2022 Case records (operative notes, anaesthesia records)", "\u2022 Nursing notes and discharge summaries", "A structured data extraction ", "proforma", " will be used.", "No direct patient interaction.", "ANALYSIS PLANNED", "\u2022 Descriptive statistics (frequency, percentage, mean \u00b1 SD, median IQR)", "\u2022 Continuous variables: Independent t-test / Mann-Whitney U test", "\u2022 Categorical variables: Chi-square test / Fisher\u2019s exact test", "\u2022 Predictors of complications: Binary logistic regression (OR, 95% CI)", "\u2022 Dummy tables for intraoperative and postoperative parameters", "Statistical software: SPSS v26.0 (IBM Corp., Armonk, NY).", "Significance level: p < 0.05.", ] for i, line in enumerate(slide12): if i < len(nodes): nodes[i].text = line for j in range(len(slide12), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide12 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 13 – Data Extraction Proforma # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(13) nodes = all_t(tree) slide13 = [ "QUESTIONNAIRE / DATA EXTRACTION ", "PROFORMA", "Data Extraction Sheet Includes:", "Study ID (anonymised code)", "Age (years)", "BMI (kg/m\u00b2)", "Parity (G P L A)", "Indication for surgery", "Uterine size (USG, weeks)", "Preoperative Hb (g/dL)", "Type of surgery (NDVH / TLH)", "Anaesthesia type", "Operative time (min)", "Estimated blood loss (mL)", "Blood transfusion (units)", "Intraoperative complications", "Conversion to laparotomy", "Duration of catheterisation (hrs)", "Time to first flatus (hrs)", "Postoperative fever", "Analgesic doses beyond protocol", "Vault complications", "UTI / urinary retention", "Length of hospital stay (days)", "30-day readmission", "Histopathological diagnosis", ] for i, line in enumerate(slide13): if i < len(nodes): nodes[i].text = line for j in range(len(slide13), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide13 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 14 – Patient Information Sheet # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(14) nodes = all_t(tree) slide14 = [ "PATIENT INFORMATION SHEET", "Title: Intraoperative Complications and Postoperative Recovery in NDVH and TLH: A Retrospective Comparative Study at MMCHRI, Kanchipuram", "This study involves review of existing medical records only. No new tests, procedures, or hospital visits are required.", "Purpose:", "To compare surgical complications and recovery between two minimally invasive hysterectomy approaches (NDVH vs. TLH) using past hospital records.", "Risks:", "No physical risk. Minimal risk of confidentiality breach \u2014 prevented by anonymisation of all data.", "Benefits:", "No direct benefit to participants. May improve surgical decision-making and patient counselling at MMCHRI.", "Confidentiality:", "All identifying details will be removed. A unique study ID will be used. Data stored securely.", "Voluntary Participation:", "Ethics Committee may grant waiver of consent given the retrospective, record-only design.", "Contact Details:", "Dr. Jeya Pradha .C", "Department of Obstetrics & Gynaecology, MMCHRI, Kanchipuram", "Contact: 7558147550", ] for i, line in enumerate(slide14): if i < len(nodes): nodes[i].text = line for j in range(len(slide14), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide14 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 15 – Informed Consent Form (English) # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(15) nodes = all_t(tree) slide15 = [ "INFORMED CONSENT FORM", "Title:", "Intraoperative Complications and Postoperative Recovery in NDVH and TLH: A Retrospective Comparative Study", "I have read and understood the information provided.", "I understand that my medical records may be reviewed for research.", "My identity will remain confidential.", "Participation is voluntary.", "Participant Name: __________________________", "Signature: __________________________", "Date: __________________________", "Investigator Name: __________________________", "Signature: __________________________", ] for i, line in enumerate(slide15): if i < len(nodes): nodes[i].text = line for j in range(len(slide15), len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide15 done") # ───────────────────────────────────────────────────────────────────────── # SLIDE 16 – Tamil Consent (keep structure, update study title references) # Tamil text kept, only study title-related text updated # ───────────────────────────────────────────────────────────────────────── # slide16 Tamil — keep as-is (structure fine, just update study title nodes) tree, path = get_tree(16) nodes = all_t(tree) # The Tamil title runs are fragmented; we just update the first few non-Tamil nodes if any # Leave Tamil text intact — just ensure study title description is OBG related # First node is Tamil heading — leave all Tamil intact, it's consent form save_tree(tree, path) print("slide16 done (Tamil kept)") # ───────────────────────────────────────────────────────────────────────── # SLIDE 17 – References # ───────────────────────────────────────────────────────────────────────── tree, path = get_tree(17) nodes = all_t(tree) refs = [ "1. Aarts JWM, Nieboer TE, Johnson N, et al. Surgical approach to hysterectomy for benign gynaecological disease. Cochrane Database Syst Rev. 2015;(8):CD003677.", "2. Sandberg EM, Twijnstra ARH, Driessen SRC, Jansen FW. Total laparoscopic hysterectomy versus vaginal hysterectomy: a systematic review and meta-analysis. J Minim Invasive Gynecol. 2017;24(2):206-217.", "3. Tiwari KD, Dangal G, Karki A, et al. Clinical outcome of non-descent vaginal hysterectomy versus abdominal hysterectomy. J Nepal Health Res Counc. 2022;20(2):357-361.", "4. Wasim T, Rana GE, Zunair J. A review of vaginal hysterectomies in a tertiary care hospital. J Pak Med Assoc. 2024;74(4):775-778.", "5. Berek JS, ed. Berek & Novak's Gynecology. 16th ed. Philadelphia: Wolters Kluwer; 2020. Chapter 27: Hysterectomy, pp. 1410-1450.", "6. Garry R, Fountain J, Mason S, et al. The eVALuate study: two parallel randomised trials comparing laparoscopic with abdominal and vaginal hysterectomy. BMJ. 2004;328(7432):129.", "7. Nieboer TE, Johnson N, Lethaby A, et al. Surgical approach to hysterectomy for benign gynaecological disease. Cochrane Database Syst Rev. 2009;(3):CD003677.", "8. Agarwal M, Sinha S, Singh S. Vaginal vault closure following total laparoscopic hysterectomy. Gynecol Minim Invasive Ther. 2024;13(2):75-80.", "9. Ekanayake C, Pathmeswaran A, Kularatna S. Cost evaluation, quality of life and pelvic organ function of three approaches to hysterectomy. Trials. 2017;18(1):564.", "10. Indian Council of Medical Research. National Ethical Guidelines for Biomedical and Health Research Involving Human Participants. New Delhi: ICMR; 2017.", ] # Find the title nodes (REFERENCES :) and then replace reference text nodes # The REFERENCES slide has 2 title nodes + many ref fragment nodes # Strategy: set first 2 nodes to REFERENCES + : then replace subsequent nodes if len(nodes) >= 2: nodes[0].text = "REFERENCES" nodes[1].text = ":" # remaining nodes: set them to the refs (one per node, clearing extras) for i, ref in enumerate(refs): idx = i + 2 if idx < len(nodes): nodes[idx].text = ref # clear remaining fragmented nodes for j in range(len(refs) + 2, len(nodes)): nodes[j].text = "" save_tree(tree, path) print("slide17 done") print("\nAll slides updated!") PYEOF

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.