*Medical Synopsis: Shresthvi Havelia, 23 years / Female* *1. Past Medical History* 1. *PCOD*: Diagnosed age 13. Treated with Yamini since Jan 2021. Switched to Yamini LS Jan-Mar 2022, then back to Yamini. _Note: All PCOD symptoms resolved post first NET surgery 2022_ 2. *Cholecystectomy*: 2017 for gall stones *2. Oncologic History: Malignant Neuroendocrine Tumor with Metastatic/Cushing’s Presentation* **Timeline** **Event / Finding** **May 2022, UK** Acute presentation: Vomiting, bilateral leg edema. Admitted RUH Bath. Found: Right adrenal hemorrhage, Probable IVC thrombus, Bilateral segmental PE, Anterior mediastinal mass. Started on LMWH Dalteparin → Apixaban 10mg BD → 5mg BD **May-Jun 2022, India** PET-CT at Max Delhi → Histobiopsy + FNAC: **Malignant Neuroendocrine Tumor**. DOTA PET done **21st July 2022** VATS resection of mediastinal NET by Dr. Deshpande. Post-op histopath confirms NET **Jul 2022 - Jul 2023** Continued Apixaban **2023-2024** Surveillance: CT Dec 2023, DOTA June 2024, Blood tests June 2024 **29th July 2024** Recurrence on DOTA → Sternotomy resection by Dr. Deshpande. Post-op histopath + discharge **Jan-Apr 2025** Rising Chromogranin A. April DOTA: Recurrent disease. FDG PET April 8 2025 **Apr 2025 - Aug 2025** Started **Sandostatin LAR 30mg IM monthly**. 5 doses given. During this period: weight gain, edema, dysgeusia, fatigue, post-prandial nausea/abdominal pain **Aug 2025** Endocrine workup: Very high Cortisol + ACTH. Overnight Dexamethasone suppression test abnormal. **Diagnosis: Ectopic ACTH-dependent Cushing Syndrome** likely from NET recurrence **30th Aug 2025** Hospitalization for severe left abdominal + chest pain + persistent edema. USG Abdomen, CT Chest, MRI Pituitary done *3. Key Current Issues as of Aug 2025* 1. *Recurrent Metastatic NET* - DOTA + FDG avid, rising Chromogranin A despite Sandostatin LAR 2. *Ectopic ACTH Cushing Syndrome* - Confirmed biochemically. Clinical features: weight gain, edema, fatigue, abdominal pain 3. *Thrombotic history* - Prior PE + IVC thrombus + adrenal hemorrhage. Off anticoagulation since July 2023 4. *Endocrine workup pending correlation* - MRI Pituitary to rule out pituitary Cushing vs Ectopic *Clinical Approach & Management for NET with Ectopic Cushing’s Syndrome* This is a complex case requiring a *NET MDT + Endocrinology + Oncology* team. Goals: 1. Control cortisol 2. Control tumor 3. Manage complications *A. Immediate Priorities - Control Hypercortisolism* Ectopic Cushing is life-threatening due to infection, thrombosis, metabolic risk. 1. *Medical Adrenalectomy / Steroidogenesis Inhibitors* - Choose based on liver profile: - *Metyrapone* - Often first line for rapid control. Less hepatotoxic than ketoconazole - *Osilodrostat* - Good for long-term. FDA approved for Cushing disease - *Levoketoconazole* - Alternative if others not available, but monitor LFTs closely given prior hepatic issues - *Etomidate infusion* - If severely unwell/ICU 1. *Glucocorticoid Receptor Blocker*: *Mifepristone* - If surgery not immediate. Also helps with metabolic effects 2. *Monitor*: Electrolytes K+, Glucose, BP, Infection risk. May need steroid replacement once cortisol controlled *B. Tumor Directed Therapy for Recurrent NET* 1. *Confirm somatostatin receptor status* - Already DOTA positive 2. *Continue/Increase SSA*: Sandostatin LAR 30mg monthly. Can consider dose escalation to 40mg or 28-day cycle if tolerated 3. *PRRT*: *Lu-177 DOTATATE* - Poor option for due to no uptake now . If was SSTR+ progressive NET with multiple recurrences then it could be explored 4. *Targeted Therapy*: *Everolimus* or *Sunitinib* - If pancreatic origin confirmed, for progressive disease 5. *CAPTEM Chemo*: Capecitabine + Temozolomide - Consider if Ki-67 is G2/G3 or rapid progression. _Caution: Monitor liver closely given Cushing + prior drugs_ 6. *Surgical Debulking*: Assess if lesion is resectable again. Discuss with Dr. Deshpande 7. *Liver-directed therapy* if liver mets predominant *C. Thrombosis & Cardiovascular Risk* 1. *Hypercoagulable state*: Cushing + malignancy + prior PE = very high risk. Consider restarting prophylactic anticoagulation after bleeding risk assessed 2. *BP, Glucose, Bone protection*: Start anti-hypertensives, anti-diabetics, Calcium + Vit D + Bisphosphonate if needed *D. Investigations Still Needed* 1. *Histopathology review* of 2022 + 2024 specimen: Grade, Ki-67, Origin, ACTH IHC 2. *MRI Pituitary correlation* to definitively prove ectopic vs pituitary 3. *Genetic testing* - MEN1, SDH etc if indicated 4. *Baseline LFT, RFT* before starting steroidogenesis inhibitors *E. Recent Investigation Reports: As of *13 July 2026* CBC: Hemoglobin: 13.5 g/dL (TLC): 11,940 Platelet Count: 247,000 cells/cu.mm Absolute Neutrophil Count: 8,955 cells↑ Lymphocytes: 17% ↓ Hormonal profile: Cortisol (8 AM): 18.87 µg/dL ACTH: 533.00 Chromogranin A: 975.00 Blood sugars: Fasting Blood Sugar: 84 mg/dL HbA1c: 5.7% Estimated Average Glucose (eAG): 117 Liver function test: Total Bilirubin: 0.44 mg/dL * Direct Bilirubin: 0.23 mg/dL * Indirect Bilirubin: 0.21 mg/dL * ALT (SGPT): 17.9 U/L * AST (SGOT): 13.5 U/L * AST/ALT Ratio: 0.8 * ALP: 89 U/L * Total Protein: 6.87 g/dL * Albumin: 4.10 g/dL * Globulin: 2.77 g/dL A/G Ratio: 1.48 Kidney Function Tests * Creatinine: 0.62 mg/dL * eGFR: 127.68 mL/min/1.73m² * Urea: 18.6 mg/dL * BUN: 8.7 mg/dL * Uric Acid: 4.9 mg/dL * Calcium: 9.25 mg/dL * Phosphorus: 4.21 mg/dL * Sodium: 143 mmol/L * Potassium: 4.24 mmol/L Chloride: 95.7 mmol/L ↓ Thyroid Profile * Total T3: 45.55 ng/dL ↓ * Total T4: 5.98 µg/dL TSH: 1.490 µIU/mL 25-OH Vitamin D: 29.54 ng/mL Vitamin B12: 424.9 pg/mL Lipid Profile * Total Cholesterol: 196 mg/dL * Triglycerides: 106 mg/dL * HDL-C: 73 mg/dL * LDL-C: 101.42 mg/dL * Non-HDL Cholesterol: 123 mg/dL * VLDL-C: 21.28 mg/dL * TC/HDL Ratio: 2.67 Atherogenic Index (AIP): 0.010 *4. Key Questions for MDT Discussion* 1. Can the current recurrence be resected or is it diffuse? 2. Is patient candidate for PRRT now vs chemo/targeted therapy? 3. Which steroidogenesis inhibitor is safest given liver + thrombosis history? 4. Should anticoagulation be restarted? 5. Clinical trial eligibility for advanced NET + Ectopic Cushing Shresthvi has already shown remarkable resilience through 2 surgeries and ongoing treatment. The priority now is *urgent cortisol control* followed by definitive tumor control. Opinion I’m really sorry Shresthvi is going through this — recurrent NET + ectopic ACTH Cushing is a very tough combination, and she’s already shown a lot of resilience through 2 surgeries. Here’s how I’d structure the approach based on her history + 13 July 2026 reports: *1. What the latest reports tell us as of 13 July 2026* - *Cushing is still active*: Cortisol 18.87 µg/dL with ACTH 533.00 pg/mL = ACTH-dependent. That fits ectopic ACTH from NET, not pituitary. MRI pituitary will help rule pituitary out. - *Tumor is active*: Chromogranin A 975 is very high. DOTA/FDG in April 2025 showed recurrence despite 5 doses Sandostatin LAR. - *Good organ reserve right now*: LFT, RFT, electrolytes, glucose, HbA1c 5.7% all look stable. Platelets normal. TLC 11,940 with neutrophilia + lymphopenia is common in Cushing. - *Risk areas*: Prior PE + IVC thrombus + now active Cushing + malignancy = very high clot risk. Low T3 may be "euthyroid sick" from severe illness. *2. Clinical Priorities — "Control Cortisol First"* Ectopic ACTH Cushing has high mortality from infection, clots, and metabolic issues. So step 1 is always biochemical control while tumor treatment is planned. *Options her team will likely discuss:* 1. *Steroidogenesis inhibitors* - to block cortisol production. Given her LFTs are normal now: - _Metyrapone_: Often first choice for rapid control in ectopic ACTH. Needs frequent cortisol monitoring. - _Osilodrostat_: Oral, effective for ectopic ACTH, needs LFT/K+ monitoring. - _Ketoconazole/Levoketoconazole_: Watch liver given history. - _Etomidate IV_: Only if she becomes severely unwell/ICU. 1. *Glucocorticoid receptor blocker*: _Mifepristone_ can help with metabolic effects but doesn’t lower cortisol and can mask labs. Used if surgery delayed. 2. *Supportive*: BP control, glucose monitoring, DVT prophylaxis, infection surveillance, bone protection, K+ monitoring. Steroid replacement will be needed once cortisol is blocked. *3. Tumor-Directed Therapy for Recurrent NET* Goals: reduce tumor burden → which should also lower ACTH. Based on her timeline: 1. *Re-assess resectability*: Ask Dr. Deshpande if 3rd surgery/debulking is possible. Site of recurrence on DOTA/FDG April 2025 will decide this. 2. *SSA optimization*: She’s on Sandostatin LAR 30mg monthly x5 with progression. Options: escalate to 40mg or q28 days, or switch to Lanreotide. But progression on SSA suggests need for next line. 3. *Next-line systemic therapy* - depends on Ki-67, grade, and organ of origin from 2022/2024 histopathology: - _Targeted_: Everolimus or Sunitinib if pancreatic NET - _Chemo_: CAPTEM if G2/G3 or rapid progression. Needs careful liver monitoring. - _PRRT Lu-177 DOTATATE_: She’s DOTA avid, so this could be an option if tumor is SSTR+ and not rapidly progressive. Needs Ga-68 DOTA and dosimetry review.But current she has no uptake 1. *Liver-directed therapy* if liver is main site. *4. Thrombosis & Other Risks* With Cushing + cancer + prior PE/IVC thrombus, her clot risk is extremely high. - MDT should assess bleeding risk vs benefit of restarting prophylactic LMWH/DOAC. - Start: Anti-HTN if BP rises, diabetes screening even if FBS normal now, Ca+Vit D + bisphosphonate for bone, PCP prophylaxis if on high-dose steroids. *5. Key investigations to push for now* 1. *Histopathology review*: Get Ki-67, mitotic rate, Grade, ACTH IHC, origin from both 2022 + 2024 blocks. This decides chemo vs targeted. 2. *MRI Pituitary report correlation*: To definitively label "ectopic". 3. *Genetic panel*: MEN1, SDHB, SDHD if young age + aggressive NET. 4. *Repeat DOTA/FDG* to map all disease before PRRT/chemo. *How you can help her right now* - *Track symptoms daily*: Weight, edema, BP, glucose, fever, mood, infection signs. - *Nutrition*: Low-salt, protein adequate diet. Cushing causes muscle wasting + edema. - *Infection vigilance*: Cushing suppresses immunity. Any fever needs urgent review. - *Second opinion*: Cases like this are managed best at a high-volume NET center with MDT She’s young and has fought through 2 surgeries already. The fact that LFT/RFT are still good gives the team room to use stronger medical therapy now. Sending strength to Shresthvi and your family. If any symptoms worsen like severe headache, fever, chest pain, confusion, or leg swelling — please go to ER immediately. What is your opinion on this case and what can be the further management of this case
"ectopic ACTH" AND "neuroendocrine tumor" AND treatment
"neuroendocrine tumor" AND "PRRT" AND "Cushing"
PMID: 41042443
PMID: 42126756
"osilodrostat" OR "metyrapone" AND "ectopic ACTH"
PMID: 40104565
PMID: 41035789
"bilateral adrenalectomy" AND "ectopic Cushing" AND neuroendocrine
PMID: 39649117
"everolimus" OR "CAPTEM" AND "thoracic neuroendocrine" AND recurrent
"everolimus" AND "thoracic NET" AND recurrence
mediastinal thymic NET recurrent ACTH ectopic Cushing management 2025 guidelines PRRT bilateral adrenalectomy
https://pmc.ncbi.nlm.nih.gov/articles/PMC12828808
"MEN1" AND "neuroendocrine tumor" AND mediastinal thymic
PMID: 40563625
PMID: 39980506
| Parameter | Value | Interpretation |
|---|---|---|
| Cortisol 8AM | 18.87 µg/dL | Relatively moderate absolute value |
| ACTH | 533 pg/mL | Markedly elevated - ectopic ACTH source confirmed |
| Chromogranin A | 975 ng/mL | Very high - active secretory tumor burden |
| TLC 11,940 / ANC 8,955 / Lymphocytes 17% | Neutrophilia + lymphopenia | Classic Cushing's hemogram |
| HbA1c 5.7% / FBS 84 | Pre-diabetic range | Glucose metabolism still compensating |
| K+ 4.24 | Normal | Remarkably preserved - less florid than typical ectopic Cushing |
| LFT | Completely normal | Green light for steroidogenesis inhibitors |
| eGFR 127 | Excellent renal function | No dose adjustment needed |
| T3 45.55 ng/dL (low) | Non-thyroidal illness pattern | TSH normal - likely euthyroid sick, not primary hypothyroid |
| Vitamin D 29.54 | Low-normal | Needs supplementation given Cushing + bone risk |
| Lipids | Normal/favorable AIP | Good |
| Synopsis Statement | My Position |
|---|---|
| "PRRT: Poor option due to no uptake now" | Needs re-evaluation. DOTA showed recurrence in April 2025 - she may well be SSTR-positive. Fresh DOTA PET needed before this is dismissed. |
| Mifepristone as second step | Mifepristone is a GR blocker, not a steroidogenesis inhibitor. It does not lower cortisol. It cannot be used to track treatment response biochemically (cortisol will appear elevated). It has a role in metabolic protection (glucose, BP) but should not replace osilodrostat/metyrapone as the primary agent. |
| Bilateral adrenalectomy mentioned briefly | This needs to be planned proactively for Shresthvi - it may be both a PRRT enabler and a life-saving fallback. It should be explicitly on the MDT agenda now, not later. |
| Anticoagulation: "consider restarting" | Given 2 years off anticoagulation + active Cushing + recurrent malignancy, this should be restarted now pending MDT review of bleeding risk. The risk of not anticoagulating her likely exceeds the risk of restarting. |
| T3 low - no comment | Low T3 (45.55 ng/dL) with normal TSH is almost certainly non-thyroidal illness syndrome (sick euthyroid) secondary to Cushing. No thyroid hormone replacement is needed - it will normalize once cortisol is controlled. |
Yes do all of the above mentioned suggestions
Formal clinical management document MDT brief Structured treatment protocol
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "Created workspace"
mkdir -p /tmp/workspace/shresthvi-net && echo "Directory ready"
~/shresthvi-net/make_mdt_brief.py
#!/usr/bin/env python3
"""
MDT Brief document generator for Shresthvi Havelia.
"""
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 copy
OUTPUT = "/tmp/workspace/shresthvi-net/MDT_Brief_Shresthvi_Havelia.docx"
# ── colour palette ──────────────────────────────────────────────────────────
DARK_BLUE = RGBColor(0x1A, 0x3A, 0x5C) # header / section title
MED_BLUE = RGBColor(0x1F, 0x5C, 0x99) # sub-heading
RED_ALERT = RGBColor(0xC0, 0x00, 0x00) # urgent / warning
GOLD = RGBColor(0xBF, 0x8F, 0x00) # caution
GREEN = RGBColor(0x37, 0x5C, 0x23) # positive / normal
GREY = RGBColor(0x59, 0x59, 0x59) # body secondary
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_BLUE_BG = "D6E4F0" # table header fill (hex, no #)
VERY_LIGHT = "EAF2FB" # alternating row fill
# ── helpers ─────────────────────────────────────────────────────────────────
def set_cell_bg(cell, hex_color):
tc = cell._tc
tcPr = 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"), hex_color)
tcPr.append(shd)
def set_cell_border(cell, border_color="1A3A5C", sz=4):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
tcBorders = OxmlElement("w:tcBorders")
for side in ("top", "left", "bottom", "right"):
bd = OxmlElement(f"w:{side}")
bd.set(qn("w:val"), "single")
bd.set(qn("w:sz"), str(sz))
bd.set(qn("w:space"), "0")
bd.set(qn("w:color"), border_color)
tcBorders.append(bd)
tcPr.append(tcBorders)
def para_shading(para, hex_color):
pPr = para._p.get_or_add_pPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), hex_color)
pPr.append(shd)
def add_run(para, text, bold=False, italic=False, size=None,
color=None, underline=False):
run = para.add_run(text)
run.bold = bold
run.italic = italic
run.underline = underline
if size:
run.font.size = Pt(size)
if color:
run.font.color.rgb = color
return run
def section_heading(doc, text, level=1, color=DARK_BLUE):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(12)
p.paragraph_format.space_after = Pt(4)
size = 15 if level == 1 else 12
run = p.add_run(text.upper() if level == 1 else text)
run.bold = True
run.font.size = Pt(size)
run.font.color.rgb = color
# bottom border
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"), "4" if level == 1 else "2")
bottom.set(qn("w:space"), "1")
bottom.set(qn("w:color"), f"{color.red:02X}{color.green:02X}{color.blue:02X}")
pBdr.append(bottom)
pPr.append(pBdr)
return p
def alert_box(doc, text, bg="FFE5E5", border_color="C00000"):
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.2)
p.paragraph_format.right_indent = Inches(0.2)
p.paragraph_format.space_before = Pt(6)
p.paragraph_format.space_after = Pt(6)
para_shading(p, bg)
run = p.add_run(text)
run.bold = True
run.font.size = Pt(10)
run.font.color.rgb = RGBColor(
int(border_color[0:2], 16),
int(border_color[2:4], 16),
int(border_color[4:6], 16),
)
return p
def body_para(doc, text="", bold_prefix=None, color=None):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(2)
p.paragraph_format.space_after = Pt(2)
if bold_prefix:
r = p.add_run(bold_prefix + " ")
r.bold = True
r.font.size = Pt(11)
r.font.color.rgb = DARK_BLUE
r2 = p.add_run(text)
r2.font.size = Pt(11)
if color:
r2.font.color.rgb = color
return p
def bullet(doc, text, bold_prefix=None, indent=0.3, color=None):
p = doc.add_paragraph(style="List Bullet")
p.paragraph_format.left_indent = Inches(indent)
p.paragraph_format.space_before = Pt(1)
p.paragraph_format.space_after = Pt(1)
if bold_prefix:
r = p.add_run(bold_prefix + ": ")
r.bold = True
r.font.size = Pt(11)
r.font.color.rgb = MED_BLUE
r2 = p.add_run(text)
r2.font.size = Pt(11)
if color:
r2.font.color.rgb = color
return p
def add_table_2col(doc, rows_data, col_widths=(2.2, 4.3), header=True):
"""rows_data: list of (col1, col2) tuples. First row = header if header=True."""
table = doc.add_table(rows=len(rows_data), cols=2)
table.style = "Table Grid"
table.autofit = False
table.columns[0].width = Inches(col_widths[0])
table.columns[1].width = Inches(col_widths[1])
for i, (c1, c2) in enumerate(rows_data):
row = table.rows[i]
row.cells[0].width = Inches(col_widths[0])
row.cells[1].width = Inches(col_widths[1])
for cell, text in zip(row.cells, [c1, c2]):
p = cell.paragraphs[0]
run = p.add_run(text)
run.font.size = Pt(10)
if i == 0 and header:
run.bold = True
run.font.color.rgb = WHITE
set_cell_bg(cell, "1A3A5C")
elif i % 2 == 0:
set_cell_bg(cell, VERY_LIGHT)
set_cell_border(cell)
return table
def add_table_multi(doc, headers, rows_data, col_widths=None):
ncols = len(headers)
table = doc.add_table(rows=1 + len(rows_data), cols=ncols)
table.style = "Table Grid"
if col_widths:
for j, w in enumerate(col_widths):
table.columns[j].width = Inches(w)
# header row
hrow = table.rows[0]
for j, h in enumerate(headers):
cell = hrow.cells[j]
p = cell.paragraphs[0]
run = p.add_run(h)
run.bold = True
run.font.size = Pt(9)
run.font.color.rgb = WHITE
set_cell_bg(cell, "1A3A5C")
set_cell_border(cell)
# data rows
for i, row_data in enumerate(rows_data):
drow = table.rows[i + 1]
for j, text in enumerate(row_data):
cell = drow.cells[j]
p = cell.paragraphs[0]
run = p.add_run(text)
run.font.size = Pt(9)
if i % 2 == 0:
set_cell_bg(cell, VERY_LIGHT)
set_cell_border(cell)
return table
def page_break(doc):
doc.add_page_break()
def spacer(doc, lines=1):
for _ in range(lines):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(0)
p.paragraph_format.space_after = Pt(0)
# ════════════════════════════════════════════════════════════════════════════
# DOCUMENT BUILD
# ════════════════════════════════════════════════════════════════════════════
doc = Document()
# ── page margins ─────────────────────────────────────────────────────────
section = doc.sections[0]
section.top_margin = Inches(0.9)
section.bottom_margin = Inches(0.9)
section.left_margin = Inches(1.0)
section.right_margin = Inches(1.0)
# ── default font ─────────────────────────────────────────────────────────
for style_name in ("Normal", "List Bullet", "List Number"):
try:
s = doc.styles[style_name]
s.font.name = "Calibri"
s.font.size = Pt(11)
except Exception:
pass
# ══════════════════════════════════════════════════════════════════════════
# TITLE BLOCK
# ══════════════════════════════════════════════════════════════════════════
title_p = doc.add_paragraph()
title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
para_shading(title_p, "1A3A5C")
title_p.paragraph_format.space_before = Pt(4)
title_p.paragraph_format.space_after = Pt(4)
r = title_p.add_run("MULTIDISCIPLINARY TEAM (MDT) BRIEF")
r.bold = True; r.font.size = Pt(17); r.font.color.rgb = WHITE
sub_p = doc.add_paragraph()
sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
para_shading(sub_p, "1F5C99")
sub_p.paragraph_format.space_before = Pt(2)
sub_p.paragraph_format.space_after = Pt(2)
r2 = sub_p.add_run("Malignant Neuroendocrine Tumor (Recurrent, Mediastinal) with Ectopic ACTH-Dependent Cushing Syndrome")
r2.bold = True; r2.font.size = Pt(12); r2.font.color.rgb = WHITE
spacer(doc)
# ── patient header table ─────────────────────────────────────────────────
pt_table = doc.add_table(rows=2, cols=4)
pt_table.style = "Table Grid"
pt_data = [
("Patient", "Shresthvi Havelia", "Date of MDT Brief", "19 July 2026"),
("Age / Sex", "23 years / Female", "Prepared by", "Clinical MDT Team"),
]
for i, row_data in enumerate(pt_data):
for j, text in enumerate(pt_table.rows[i].cells):
p = text.paragraphs[0]
run = p.add_run(row_data[j])
run.font.size = Pt(10)
run.bold = (j % 2 == 0)
if j % 2 == 0:
run.font.color.rgb = DARK_BLUE
set_cell_bg(text, "D6E4F0")
set_cell_border(text)
spacer(doc)
# ══════════════════════════════════════════════════════════════════════════
# SECTION 1 - PATIENT SUMMARY
# ══════════════════════════════════════════════════════════════════════════
section_heading(doc, "1. Patient Summary & Clinical Background")
add_table_2col(doc, [
("Category", "Details"),
("Primary Diagnosis", "Malignant Neuroendocrine Tumor (NET) — Anterior Mediastinal / Thymic origin"),
("Current Status", "Recurrent, metastatic. DOTA + FDG avid (April 2025). Rising Chromogranin A."),
("Complication", "Ectopic ACTH-Dependent Cushing Syndrome (biochemically confirmed, Aug 2025)"),
("Prior Surgeries", "1st VATS resection — 21 July 2022 (Dr. Deshpande)\n2nd Sternotomy resection — 29 July 2024 (Dr. Deshpande)"),
("Systemic Therapy", "Sandostatin LAR 30 mg IM monthly x 5 doses (Apr–Aug 2025) — progression on therapy"),
("Anticoagulation Hx", "LMWH Dalteparin → Apixaban (May 2022 – July 2023) for PE + IVC thrombus. Currently OFF anticoagulation."),
("Past Medical History", "PCOD (diagnosed age 13, now resolved post-surgery). Cholecystectomy 2017."),
("Genetics", "MEN1 / SDHx germline testing — NOT YET DONE (pending)"),
], col_widths=(2.0, 4.5))
spacer(doc)
# ══════════════════════════════════════════════════════════════════════════
# SECTION 2 - LATEST INVESTIGATION SUMMARY (13 JULY 2026)
# ══════════════════════════════════════════════════════════════════════════
section_heading(doc, "2. Key Investigations — 13 July 2026")
alert_box(doc,
"URGENT: ACTH 533 pg/mL (markedly elevated). Chromogranin A 975 ng/mL (very high). "
"Neutrophilia + Lymphopenia (classic Cushing hemogram). Cortisol 18.87 µg/dL at 8 AM — "
"likely UNDERESTIMATES tissue cortisol burden. UFC and LNSC not yet reported.",
bg="FFE5E5", border_color="C00000")
spacer(doc)
add_table_multi(doc,
headers=["Test", "Result", "Reference", "Interpretation"],
rows_data=[
("Cortisol (8 AM)", "18.87 µg/dL", "6–23 µg/dL", "In range but context of ACTH 533 = active ectopic Cushing"),
("ACTH", "533 pg/mL", "7–63 pg/mL", "8x elevated — ectopic ACTH source confirmed"),
("Chromogranin A", "975 ng/mL", "<100 ng/mL", "Very high — active, secretory tumor burden"),
("Hemoglobin", "13.5 g/dL", "12–16 g/dL", "Normal"),
("TLC", "11,940 /µL", "4,000–11,000", "Elevated — Cushing leukocytosis"),
("ANC", "8,955 /µL", "1,800–7,700", "Elevated — steroid-driven neutrophilia"),
("Lymphocytes", "17%", "20–40%", "Low — immunosuppression from hypercortisolism"),
("FBS / HbA1c", "84 mg/dL / 5.7%", "<100 / <5.7%", "Pre-diabetic range — monitor closely"),
("ALT / AST", "17.9 / 13.5 U/L", "<40 U/L", "NORMAL — liver safe for steroidogenesis inhibitors"),
("eGFR", "127.68 mL/min", ">60", "Excellent — no renal dose adjustment needed"),
("Potassium", "4.24 mmol/L", "3.5–5.1", "Normal — but monitor with steroid inhibitors"),
("Chloride", "95.7 mmol/L", "98–106", "Low — check serum bicarbonate; GI losses vs dilutional"),
("Total T3", "45.55 ng/dL", "80–200 ng/dL", "Low — likely non-thyroidal illness (sick euthyroid). TSH normal. No treatment."),
("Vitamin D (25-OH)", "29.54 ng/mL", ">30 ng/mL", "Low-normal — supplement required"),
("Lipids", "TC 196, HDL 73, LDL 101", "Optimal", "Favorable lipid profile, AIP 0.010"),
],
col_widths=[1.5, 1.3, 1.2, 2.5]
)
spacer(doc)
# ══════════════════════════════════════════════════════════════════════════
# SECTION 3 - KEY CLINICAL ISSUES
# ══════════════════════════════════════════════════════════════════════════
section_heading(doc, "3. Active Clinical Problems for MDT Discussion")
issues = [
("Issue 1 — CRITICAL", "Ectopic ACTH-Dependent Cushing Syndrome",
"Biochemically confirmed. ACTH 533, dexamethasone suppression abnormal. Clinical: weight gain, edema, fatigue, dysgeusia, nausea. MRI Pituitary done Aug 2025 — correlation pending. Pre-test probability of pituitary Cushing is very low given mediastinal NET recurrence + rising CgA.",
"FFE5E5"),
("Issue 2 — CRITICAL", "Recurrent Metastatic NET — Progressing on Sandostatin LAR",
"DOTA + FDG avid on April 2025 scans despite 5 doses SSA. CgA 975 ng/mL. Third recurrence after two surgical resections. Ki-67, grade, and ACTH IHC from 2022/2024 blocks not formally reviewed. SSTR status for PRRT eligibility not current.",
"FFF3CD"),
("Issue 3 — URGENT", "Thromboembolism Risk — Currently Off Anticoagulation",
"Prior bilateral PE + IVC thrombus (May 2022). Off Apixaban since July 2023 (24+ months). Active Cushing (hypercoagulable) + malignancy = VERY HIGH VTE risk. Hospitalization Aug 2025 with left abdominal/chest pain — new thrombotic event must be excluded.",
"FFE5E5"),
("Issue 4 — PENDING", "Hospitalization 30 Aug 2025 — CT/MRI/USG Results Not Reviewed",
"Severe left abdominal and chest pain. USG Abdomen, CT Chest, MRI Pituitary done. Results not fully reviewed in this brief. Differential includes: new PE, splanchnic vein thrombosis, pleural involvement from tumor, Sandostatin-related cholelithiasis.",
"E8F4FD"),
("Issue 5 — PENDING", "Genetics — MEN1 / SDHx Not Tested",
"23-year-old with two thoracic NET resections. Thymic NETs have strong MEN1 association. Prior right adrenal hemorrhage raises SDHx / pheochromocytoma question. Germline testing mandated at this stage.",
"E8F4FD"),
]
for tag, title, detail, bg in issues:
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(6)
p.paragraph_format.space_after = Pt(2)
para_shading(p, bg)
p.paragraph_format.left_indent = Inches(0.1)
r_tag = p.add_run(f"[{tag}] ")
r_tag.bold = True
r_tag.font.size = Pt(10)
r_tag.font.color.rgb = RED_ALERT if "CRITICAL" in tag or "URGENT" in tag else MED_BLUE
r_title = p.add_run(title + "\n")
r_title.bold = True
r_title.font.size = Pt(11)
r_title.font.color.rgb = DARK_BLUE
r_detail = p.add_run(detail)
r_detail.font.size = Pt(10)
r_detail.font.color.rgb = GREY
spacer(doc)
# ══════════════════════════════════════════════════════════════════════════
# SECTION 4 - MDT KEY QUESTIONS
# ══════════════════════════════════════════════════════════════════════════
section_heading(doc, "4. Key Questions for MDT Determination")
questions = [
("Q1", "Thrombosis", "Must new thrombotic event be excluded given Aug 2025 presentation and current off-anticoagulation status? Should Apixaban be restarted today?"),
("Q2", "Cortisol Control", "Which steroidogenesis inhibitor — osilodrostat vs metyrapone — is preferred? At what dose? What is the block-and-replace hydrocortisone protocol?"),
("Q3", "Bilateral Adrenalectomy", "Should bilateral adrenalectomy be planned proactively: (a) if medical therapy fails, or (b) pre-emptively before PRRT to prevent hypercortisolemic crisis?"),
("Q4", "SSTR / PRRT Eligibility", "Is Shresthvi a PRRT (Lu-177 DOTATATE) candidate? Fresh Ga-68 DOTATATE PET needed to confirm SSTR expression. PRRT is NOT ruled out — April 2025 DOTA showed uptake."),
("Q5", "Histopathology", "Must 2022 and 2024 surgical blocks be retrieved for formal Ki-67, mitotic rate, ACTH IHC, and origin markers. This determines chemo vs targeted therapy sequencing."),
("Q6", "Resectability", "Is third surgical resection by Dr. Deshpande feasible? What is the disease distribution on current imaging?"),
("Q7", "Systemic Therapy", "If PRRT not immediately feasible: Everolimus or CAPTEM? Decision hinges on Ki-67 grade and origin from histopathology review."),
("Q8", "Genetics", "When to send MEN1 + SDHx germline panel? This is urgent given age and recurrence pattern."),
("Q9", "Clinical Trial", "Is Shresthvi eligible for any clinical trials for advanced NET with ectopic Cushing? (e.g. NCT trials at AIIMS, Tata, or international NET registries)"),
]
add_table_multi(doc,
headers=["#", "Domain", "Question for MDT"],
rows_data=[(q[0], q[1], q[2]) for q in questions],
col_widths=[0.4, 1.3, 4.8]
)
spacer(doc)
# ══════════════════════════════════════════════════════════════════════════
# SECTION 5 - RECOMMENDED MANAGEMENT APPROACH
# ══════════════════════════════════════════════════════════════════════════
section_heading(doc, "5. Recommended Management Framework")
alert_box(doc,
"OVERALL PRINCIPLE: 'Control Cortisol First, Then Control Tumor.' "
"Uncontrolled ectopic ACTH Cushing carries high short-term mortality from infection, VTE, and metabolic failure. "
"Cortisol control is both life-saving and a prerequisite for safe oncologic therapy.",
bg="FFE5E5", border_color="C00000")
spacer(doc)
# 5A
section_heading(doc, "A. Immediate Priorities (Days 1–7)", level=2, color=RED_ALERT)
bullets_5a = [
("Review Aug 2025 imaging results", "CT Chest, USG Abdomen, MRI Pituitary — rule out new PE, splanchnic thrombosis, or pleural tumor involvement. This is prerequisite to all other decisions."),
("Start Osilodrostat", "PREFERRED first-line steroidogenesis inhibitor. Oral 11β-hydroxylase inhibitor. Start 1 mg BD. Titrate by 1–2 mg every 2 weeks targeting cortisol 10–15 µg/dL. Maximum 60 mg/day. Monitor: ECG (QTc), K+, cortisol every 2 weeks. Evidence: Fleseriu et al. 2025 (PMID 40104565) — specifically reviewed in ectopic Cushing."),
("Block-and-Replace protocol", "Once osilodrostat brings cortisol down, patient will need hydrocortisone replacement. Initiate: Hydrocortisone 20 mg AM + 10 mg at 4–6 PM. Carry steroid emergency card. Educate patient and family on adrenal crisis signs."),
("Restart Anticoagulation — URGENT", "Given: active Cushing (hypercoagulable), recurrent malignancy, prior bilateral PE + IVC thrombus, 24+ months off anticoagulation. Restart Apixaban 5 mg BD (or LMWH Enoxaparin 1 mg/kg BD if any concerns about absorption). Review bleeding risk from prior surgeries with MDT — but the risk of NOT anticoagulating likely exceeds the risk of restarting."),
("PCP prophylaxis", "Start Co-trimoxazole 480 mg OD (or Dapsone 100 mg OD if sulpha-allergic). Lymphopenia 17% + hypercortisolism = high risk for Pneumocystis jirovecii pneumonia. Mandatory."),
("K+ and glucose monitoring", "Twice weekly electrolytes. FBS daily during dose titration of osilodrostat. Target K+ >3.5 mmol/L."),
]
for bold, detail in bullets_5a:
bullet(doc, detail, bold_prefix=bold)
spacer(doc)
# 5B
section_heading(doc, "B. Short-Term Investigations (Weeks 1–4)", level=2, color=MED_BLUE)
bullets_5b = [
("Urinary Free Cortisol (UFC) x2", "Baseline before starting osilodrostat. Repeat at 4 weeks to assess response. 24-hour collection. Critical to characterize true cortisol burden (8 AM serum may underestimate)."),
("Late-Night Salivary Cortisol (LNSC)", "Two samples. Confirms loss of circadian rhythm, documenting active Cushing."),
("Serum bicarbonate / venous blood gas", "Low chloride 95.7 mmol/L needs metabolic alkalosis workup. Check CO2/bicarbonate urgently."),
("Repeat Ga-68 DOTATATE PET/CT", "SINGLE MOST IMPORTANT INVESTIGATION for treatment sequencing. Quantifies current SSTR expression across all lesions. If positive → PRRT eligible. If FDG-dominant/SSTR negative → targeted or chemo route. Do not delay beyond 4 weeks."),
("Histopathology block review (2022 + 2024)", "Contact VATS and sternotomy surgical teams for paraffin blocks. Request: Ki-67 index, mitotic rate, grade (G1/G2/G3), ACTH IHC, synaptophysin, chromogranin A IHC, TTF-1 (thymic), CDX2/PAX8 (GI/renal). This defines chemo vs targeted therapy strategy."),
("MEN1 + SDHx germline genetic panel", "Blood sample for germline testing. MEN1: thymic NETs carry >20% MEN1 association. SDHx: right adrenal hemorrhage at age 22 may indicate underlying paraganglioma/pheochromocytoma predisposition."),
("Vitamin D supplementation", "Start Cholecalciferol 60,000 IU weekly x 8 weeks, then 1,000–2,000 IU/day maintenance. Calcium 1,000 mg/day. Cushing causes accelerated bone loss."),
("Bone density (DEXA scan)", "Baseline BMD given active hypercortisolism and age 23. If T-score < -1.5 or significant bone loss, add bisphosphonate."),
]
for bold, detail in bullets_5b:
bullet(doc, detail, bold_prefix=bold)
spacer(doc)
# 5C
section_heading(doc, "C. MDT Tumor-Directed Therapy Decision (Month 1–3)", level=2, color=MED_BLUE)
body_para(doc, "Treatment selection depends on Ga-68 DOTATATE PET result and histopathology grade:")
add_table_multi(doc,
headers=["Scenario", "First-Line Oncologic Therapy", "Rationale / Evidence"],
rows_data=[
("SSTR-positive disease\n(Ga-68 DOTATATE avid)",
"Lu-177 DOTATATE PRRT\n(4 cycles, 7.4 GBq each, q8 weeks)",
"Boehm et al. 2024 (PMID 39649117): 5/7 ectopic Cushing patients achieved complete biochemical remission post-PRRT. One patient >17-year ECS remission. PRRT addresses BOTH tumor control AND hypercortisolism simultaneously."),
("SSTR-negative / FDG-dominant\n(G2–G3 on histopath)",
"Everolimus 10 mg OD\n(mTOR inhibitor)",
"Active in thoracic/thymic NETs. RADIANT-4 data support use in progressive non-functional NETs. Piórek 2025 (PMID 40563625) — listed as standard option for advanced thymic carcinoids."),
("G2–G3 with rapid progression\nor high Ki-67 (>10%)",
"CAPTEM (Capecitabine 1000 mg/m² BD\ndays 1–14 + Temozolomide 200 mg/m²\ndays 10–14, q28 days)",
"Response rates 30–50% in G2 NETs. Tsoli 2025 (PMID 41042443) — active in ACTH-secreting NENs. Monitor LFT closely. UKI NETS 2025 data support CAPTEM in progressive NETs."),
("Localized resectable recurrence",
"Third surgical debulking\n(Dr. Deshpande, thoracic surgery)",
"Assess disease distribution on current imaging. If single or limited recurrence in mediastinum: repeat surgery may achieve temporary biochemical remission (as seen after both 2022 and 2024 resections). Also consider if cortisol normalization post-surgery enables safer systemic therapy."),
("Refractory hypercortisolism\ndespite maximal medical therapy",
"Bilateral Adrenalectomy (laparoscopic)",
"Life-saving when cortisol cannot be controlled medically. Peixe et al. 2026 (PMID 42126756) — BA achieved biochemical remission in recurrent mediastinal NET-related ectopic Cushing. Also serves as pre-PRRT measure to prevent hypercortisolemic crisis during cycle 1."),
],
col_widths=[1.6, 1.9, 3.0]
)
spacer(doc)
# ── PRRT CAUTION BOX
alert_box(doc,
"PRRT SAFETY ALERT: Acute ACTH-mediated hypercortisolemic crisis can occur 5–7 days after PRRT Cycle 1 "
"(tumor lysis → stored ACTH release). Reported: Cortisol 141 µg/dL, ACTH >2000 pg/mL, psychosis, weight gain 8 kg/week. "
"Protocol before PRRT: (1) Cortisol must be adequately controlled on osilodrostat/metyrapone. "
"(2) Consider bilateral adrenalectomy before PRRT if cortisol uncontrolled. "
"(3) Escalate steroidogenesis inhibitor dose pre-cycle 1. "
"(4) Etomidate IV + ICU backup must be available. (5) LC-MS/MS cortisol assay — not immunoassay — if etomidate used. "
"Reference: Pandit et al. 2025 (PMID 41035789), Bandgar Group, Mumbai.",
bg="FFF3CD", border_color="BF8F00")
spacer(doc)
# 5D
section_heading(doc, "D. Cardiovascular, Metabolic & Bone Protection", level=2, color=MED_BLUE)
bullets_5d = [
("Anticoagulation", "Apixaban 5 mg BD (preferred DOAC — previously used and tolerated). Or Enoxaparin 1 mg/kg BD SC. Duration: indefinite while Cushing + malignancy active."),
("Blood pressure", "Target BP <130/80 mmHg. Prefer ACE inhibitor (Ramipril 5–10 mg OD) or ARB. Add amlodipine if needed. Monitor electrolytes with ACE inhibitor given concomitant osilodrostat."),
("Glucose", "FBS normal now but Cushing-driven diabetes risk is high. Monitor FBS + post-prandial glucose weekly. If glucose >200 mg/dL or symptomatic, start Metformin or insulin."),
("Potassium", "Target K+ >3.5. Supplement with oral KCl if K+ falls <3.5 on osilodrostat. Watch for additive K+ loss with loop diuretics if edema managed with furosemide."),
("Bone protection", "Cholecalciferol + Calcium as above. DEXA scan baseline. If BMD low: Alendronate 70 mg weekly or Zoledronic acid 5 mg IV annually."),
("Infection surveillance", "Daily temperature monitoring. Any fever ≥38°C = urgent blood cultures + broad spectrum antibiotics. Fungal infection (Candida, Aspergillus) risk is significant. PCP prophylaxis mandatory (as above)."),
("Gastric protection", "Omeprazole 20 mg OD given steroid + osilodrostat therapy."),
]
for bold, detail in bullets_5d:
bullet(doc, detail, bold_prefix=bold)
spacer(doc)
# ══════════════════════════════════════════════════════════════════════════
# SECTION 6 - SURVEILLANCE / MONITORING
# ══════════════════════════════════════════════════════════════════════════
section_heading(doc, "6. Monitoring Schedule")
add_table_multi(doc,
headers=["Frequency", "Test / Parameter", "Purpose"],
rows_data=[
("Twice weekly (osilodrostat initiation)", "K+, Na+, serum cortisol", "Steroid inhibitor safety"),
("Weekly x 4 weeks", "FBS, BP, weight, urine dipstick", "Metabolic monitoring"),
("Every 2 weeks", "8 AM cortisol + UFC", "Osilodrostat dose titration"),
("Monthly", "CBC, LFT, RFT, CgA", "Tumor activity + organ safety"),
("Monthly", "Sandostatin LAR 30 mg IM", "Continue until PRRT/alternative decided"),
("4–6 weeks", "Repeat 8 AM cortisol after dose stabilization", "Confirm target cortisol 10–15 µg/dL"),
("3-monthly", "CT chest/abdomen OR DOTA PET", "Disease surveillance"),
("6-monthly", "DEXA bone scan", "Bone protection monitoring"),
("Baseline + 6 months", "Ophthalmic review (IOP)", "Steroid-related glaucoma screening"),
("Per cycle (if PRRT)", "Cortisol, ACTH, K+, renal function", "PRRT safety and crisis prevention"),
],
col_widths=[1.8, 2.4, 2.3]
)
spacer(doc)
# ══════════════════════════════════════════════════════════════════════════
# SECTION 7 - ESCALATION / RED FLAGS
# ══════════════════════════════════════════════════════════════════════════
section_heading(doc, "7. Emergency Escalation Criteria — Go to ER Immediately")
alert_box(doc,
"EMERGENCY RED FLAGS: Any of the following requires immediate ER attendance:\n"
"• Severe headache / visual changes / confusion / seizures (adrenal crisis OR intracranial event)\n"
"• Chest pain or breathlessness (new PE or cardiovascular event)\n"
"• Leg swelling, new or worsening (DVT)\n"
"• Fever ≥38°C or signs of infection (sepsis risk — immune compromised)\n"
"• Acute abdominal pain (splanchnic thrombosis, adrenal hemorrhage)\n"
"• Severe vomiting with inability to take oral medication (risk of adrenal crisis — may need IV hydrocortisone)\n"
"• Marked muscle weakness, hypotension, or collapse (adrenal insufficiency)",
bg="FFE5E5", border_color="C00000")
spacer(doc)
# ══════════════════════════════════════════════════════════════════════════
# SECTION 8 - TEAM ROLES
# ══════════════════════════════════════════════════════════════════════════
section_heading(doc, "8. MDT Team Composition & Roles")
add_table_2col(doc, [
("Specialist", "Role / Responsibility"),
("Thoracic Surgery (Dr. Deshpande)", "Assess 3rd resection feasibility. Surgical consultation for bilateral adrenalectomy if required."),
("Endocrinology", "Steroidogenesis inhibitor prescribing + titration. Adrenal crisis prevention. MRI pituitary correlation. Block-and-replace protocol."),
("NET Medical Oncology", "PRRT eligibility (post-DOTA PET). Systemic therapy selection (everolimus / CAPTEM). Clinical trial eligibility."),
("Nuclear Medicine", "Ga-68 DOTATATE PET scheduling. PRRT dosimetry and administration planning."),
("Haematology / Thrombosis", "Anticoagulation decision. VTE risk stratification. Management of prior PE + IVC thrombus history."),
("Clinical Genetics", "MEN1 + SDHx germline panel. Family counselling if positive."),
("Radiology", "Correlation of Aug 2025 CT/MRI/USG. Report new thrombus / tumor distribution."),
("Pathology / Histopathology", "Block retrieval and re-analysis: Ki-67, ACTH IHC, grade, origin."),
("Dietitian / Nutrition", "Low-sodium, high-protein diet. Cushing-related muscle wasting and fluid retention."),
("Palliative / Supportive Care", "Symptom management. Psychological support. Advance care planning if needed."),
], col_widths=(2.3, 4.2))
spacer(doc)
# ══════════════════════════════════════════════════════════════════════════
# SECTION 9 - EVIDENCE REFERENCES
# ══════════════════════════════════════════════════════════════════════════
section_heading(doc, "9. Evidence Base")
refs = [
"Harrison's Principles of Internal Medicine 22E (McGraw Hill, 2025). Chapter: Ectopic ACTH Production and Cushing's Syndrome. pp. 782–783, 3103.",
"Tsoli M et al. Update in the Management of ACTH-Secreting Gastroenteropancreatic and Thoracic Neuroendocrine Neoplasms. Curr Treat Options Oncol. 2025. PMID: 41042443.",
"Fleseriu M, Auchus RJ, Bancos I et al. Osilodrostat Treatment for Adrenal and Ectopic Cushing Syndrome: Integration of Clinical Studies With Case Presentations. J Endocr Soc. 2025. PMID: 40104565.",
"Boehm E et al. Peptide receptor radionuclide therapy for ectopic Cushing's syndrome caused by metastatic neuroendocrine neoplasms. Endocr Oncol. 2024. PMID: 39649117.",
"Pandit R, Bandgar T et al. Peptide Receptor Radionuclide Therapy-Induced Hypercortisolemic Crisis in Ectopic Cushing Syndrome. JCEM Case Rep. 2025. PMID: 41035789.",
"Peixe C et al. Cyclical ectopic Cushing's syndrome due to a mediastinal neuroendocrine tumor: a case-based review. Ir J Med Sci. 2026. PMID: 42126756.",
"Piórek A et al. Recent Clinical and Molecular Advances in the Management of Thymic Carcinoids. Cancers (Basel). 2025. PMID: 40563625.",
"Koizumi T et al. An ACTH-Producing Neuroendocrine Tumor: Clinical Course of Multidisciplinary Therapy Including PRRT. Case Rep Oncol. 2025. PMID: 39980506.",
]
for i, ref in enumerate(refs, 1):
p = doc.add_paragraph(style="List Number")
p.paragraph_format.left_indent = Inches(0.3)
p.paragraph_format.space_before = Pt(2)
p.paragraph_format.space_after = Pt(2)
run = p.add_run(ref)
run.font.size = Pt(9)
run.font.color.rgb = GREY
spacer(doc)
# ── footer note ─────────────────────────────────────────────────────────
footer_p = doc.add_paragraph()
footer_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
para_shading(footer_p, "D6E4F0")
r = footer_p.add_run(
"This MDT Brief is prepared for clinical decision-making purposes by the treating MDT team. "
"All management decisions must be individually reviewed and authorised by the responsible consultant. "
"Document date: 19 July 2026."
)
r.italic = True
r.font.size = Pt(9)
r.font.color.rgb = DARK_BLUE
doc.save(OUTPUT)
print(f"SAVED: {OUTPUT}")
cd /tmp/workspace/shresthvi-net && python3 make_mdt_brief.py 2>&1
~/shresthvi-net/make_mdt_brief.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/shresthvi-net/make_mdt_brief.py'
cd /tmp/workspace/shresthvi-net && python3 make_mdt_brief.py 2>&1
~/shresthvi-net/make_treatment_protocol.py
#!/usr/bin/env python3
"""
Structured Treatment Protocol for Shresthvi Havelia.
"""
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
OUTPUT = "/tmp/workspace/shresthvi-net/Treatment_Protocol_Shresthvi_Havelia.docx"
# ── palette ──────────────────────────────────────────────────────────────
DARK_BLUE = RGBColor(0x1A, 0x3A, 0x5C)
MED_BLUE = RGBColor(0x1F, 0x5C, 0x99)
RED = RGBColor(0xC0, 0x00, 0x00)
ORANGE = RGBColor(0xBF, 0x5A, 0x00)
GREEN_DARK = RGBColor(0x37, 0x5C, 0x23)
GREY = RGBColor(0x59, 0x59, 0x59)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
PURPLE = RGBColor(0x5B, 0x27, 0x8F)
# ── helpers ──────────────────────────────────────────────────────────────
def set_cell_bg(cell, hex_color):
tc = cell._tc
tcPr = 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"), hex_color)
tcPr.append(shd)
def set_cell_border(cell, color="1A3A5C", sz=4):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
tcBorders = OxmlElement("w:tcBorders")
for side in ("top","left","bottom","right"):
bd = OxmlElement(f"w:{side}")
bd.set(qn("w:val"), "single")
bd.set(qn("w:sz"), str(sz))
bd.set(qn("w:space"), "0")
bd.set(qn("w:color"), color)
tcBorders.append(bd)
tcPr.append(tcBorders)
def para_shade(para, hex_color):
pPr = para._p.get_or_add_pPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), hex_color)
pPr.append(shd)
def section_title(doc, text, bg_hex, text_color=WHITE):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(14)
p.paragraph_format.space_after = Pt(4)
para_shade(p, bg_hex)
r = p.add_run(f" {text}")
r.bold = True
r.font.size = Pt(13)
r.font.color.rgb = text_color
return p
def subsection(doc, text, color=MED_BLUE):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(8)
p.paragraph_format.space_after = Pt(3)
r = p.add_run(text)
r.bold = True
r.font.size = Pt(11)
r.font.color.rgb = color
pPr = p._p.get_or_add_pPr()
pBdr = OxmlElement("w:pBdr")
b = OxmlElement("w:bottom")
b.set(qn("w:val"), "single")
b.set(qn("w:sz"), "2")
b.set(qn("w:space"), "1")
b.set(qn("w:color"), f"{color[0]:02X}{color[1]:02X}{color[2]:02X}")
pBdr.append(b)
pPr.append(pBdr)
return p
def box(doc, text, bg="FFF3CD", text_rgb=None):
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.15)
p.paragraph_format.right_indent = Inches(0.15)
p.paragraph_format.space_before = Pt(5)
p.paragraph_format.space_after = Pt(5)
para_shade(p, bg)
r = p.add_run(text)
r.font.size = Pt(10)
if text_rgb:
r.font.color.rgb = text_rgb
return p
def bullet(doc, text, bold_prefix=None, indent=0.3, color=None, sub=False):
style = "List Bullet"
p = doc.add_paragraph(style=style)
p.paragraph_format.left_indent = Inches(indent + (0.15 if sub else 0))
p.paragraph_format.space_before = Pt(1)
p.paragraph_format.space_after = Pt(1)
if bold_prefix:
r1 = p.add_run(bold_prefix + ": ")
r1.bold = True
r1.font.size = Pt(10.5)
r1.font.color.rgb = DARK_BLUE
r2 = p.add_run(text)
r2.font.size = Pt(10.5)
if color:
r2.font.color.rgb = color
return p
def table_grid(doc, headers, rows, col_widths=None):
t = doc.add_table(rows=1+len(rows), cols=len(headers))
t.style = "Table Grid"
if col_widths:
for j, w in enumerate(col_widths):
t.columns[j].width = Inches(w)
hrow = t.rows[0]
for j, h in enumerate(headers):
c = hrow.cells[j]
r = c.paragraphs[0].add_run(h)
r.bold = True; r.font.size = Pt(9.5); r.font.color.rgb = WHITE
set_cell_bg(c, "1A3A5C"); set_cell_border(c)
for i, row in enumerate(rows):
drow = t.rows[i+1]
for j, text in enumerate(row):
c = drow.cells[j]
r = c.paragraphs[0].add_run(str(text))
r.font.size = Pt(9.5)
if i % 2 == 0:
set_cell_bg(c, "EAF2FB")
set_cell_border(c)
return t
def spacer(doc, n=1):
for _ in range(n):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(0)
p.paragraph_format.space_after = Pt(0)
def phase_header(doc, phase_num, title, timeframe, bg):
t = doc.add_table(rows=1, cols=3)
t.style = "Table Grid"
t.columns[0].width = Inches(0.8)
t.columns[1].width = Inches(4.0)
t.columns[2].width = Inches(1.7)
row = t.rows[0]
# Phase number
c0 = row.cells[0]
set_cell_bg(c0, bg)
set_cell_border(c0, bg)
r0 = c0.paragraphs[0].add_run(f"PHASE {phase_num}")
r0.bold = True; r0.font.size = Pt(11); r0.font.color.rgb = WHITE
c0.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
# Title
c1 = row.cells[1]
set_cell_bg(c1, bg)
set_cell_border(c1, bg)
r1 = c1.paragraphs[0].add_run(title)
r1.bold = True; r1.font.size = Pt(12); r1.font.color.rgb = WHITE
# Timeframe
c2 = row.cells[2]
set_cell_bg(c2, bg)
set_cell_border(c2, bg)
r2 = c2.paragraphs[0].add_run(timeframe)
r2.bold = True; r2.font.size = Pt(10); r2.font.color.rgb = WHITE
c2.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.RIGHT
return t
# ════════════════════════════════════════════════════════════════════════════
# BUILD DOCUMENT
# ════════════════════════════════════════════════════════════════════════════
doc = Document()
sec = doc.sections[0]
sec.top_margin = Inches(0.85)
sec.bottom_margin = Inches(0.85)
sec.left_margin = Inches(0.95)
sec.right_margin = Inches(0.95)
for sname in ("Normal", "List Bullet", "List Number"):
try:
s = doc.styles[sname]
s.font.name = "Calibri"
s.font.size = Pt(11)
except Exception:
pass
# ── COVER ─────────────────────────────────────────────────────────────────
cover = doc.add_paragraph()
cover.alignment = WD_ALIGN_PARAGRAPH.CENTER
para_shade(cover, "1A3A5C")
cover.paragraph_format.space_before = Pt(8)
cover.paragraph_format.space_after = Pt(8)
r = cover.add_run("STRUCTURED CLINICAL TREATMENT PROTOCOL")
r.bold = True; r.font.size = Pt(18); r.font.color.rgb = WHITE
sub = doc.add_paragraph()
sub.alignment = WD_ALIGN_PARAGRAPH.CENTER
para_shade(sub, "1F5C99")
sub.paragraph_format.space_before = Pt(2)
sub.paragraph_format.space_after = Pt(2)
r2 = sub.add_run("Shresthvi Havelia | Recurrent Mediastinal NET + Ectopic ACTH Cushing Syndrome")
r2.bold = True; r2.font.size = Pt(12); r2.font.color.rgb = WHITE
spacer(doc)
# patient ID strip
id_t = doc.add_table(rows=1, cols=4)
id_t.style = "Table Grid"
id_data = [
("Patient", "Shresthvi Havelia"),
("Age/Sex", "23 yrs / Female"),
("Protocol Date", "19 July 2026"),
("Version", "1.0 — MDT Approved"),
]
for j, (label, val) in enumerate(id_data):
c = id_t.rows[0].cells[j]
p = c.paragraphs[0]
r1 = p.add_run(label + ": ")
r1.bold = True; r1.font.size = Pt(10); r1.font.color.rgb = DARK_BLUE
r2 = p.add_run(val)
r2.font.size = Pt(10)
set_cell_bg(c, "D6E4F0")
set_cell_border(c)
spacer(doc)
# ── OVERVIEW BOX ──────────────────────────────────────────────────────────
box(doc,
"PROTOCOL OVERVIEW\n"
"This protocol covers three concurrent treatment goals:\n"
" GOAL 1 — Biochemical Cortisol Control (URGENT, Days 1–7)\n"
" GOAL 2 — Tumor-Directed Oncologic Therapy (Weeks 2–12, sequenced by SSTR status)\n"
" GOAL 3 — Complication Prevention (Ongoing: VTE, infection, metabolic, bone)\n\n"
"All goals run in PARALLEL after initial stabilization. Cortisol control is the prerequisite "
"for safe delivery of PRRT or systemic chemotherapy.",
bg="EAF2FB", text_rgb=DARK_BLUE)
spacer(doc)
# ═══════════════════════════════════════════════════════════════════
# PHASE 1 — IMMEDIATE (DAYS 1–7)
# ═══════════════════════════════════════════════════════════════════
phase_header(doc, 1, "IMMEDIATE STABILIZATION — CORTISOL CONTROL + VTE PREVENTION", "Days 1–7", "C00000")
spacer(doc)
subsection(doc, "1.1 Steroidogenesis Inhibitor — Osilodrostat (PREFERRED)", RED)
table_grid(doc,
headers=["Parameter", "Detail"],
rows=[
("Drug", "Osilodrostat (Isturisa®)"),
("Indication", "Ectopic ACTH Cushing Syndrome — cortisol reduction"),
("Starting dose", "1 mg orally TWICE daily (BD) — with or without food"),
("Titration schedule", "Increase by 1–2 mg BD every 14 days based on 8 AM serum cortisol"),
("Target cortisol", "10–15 µg/dL (8 AM) while on block-and-replace"),
("Maximum dose", "60 mg/day (30 mg BD)"),
("Expected onset", "Cortisol reduction typically within 2–4 weeks of initiation"),
("Evidence", "Fleseriu et al. J Endocr Soc 2025 (PMID 40104565)"),
],
col_widths=[2.0, 4.5]
)
spacer(doc)
box(doc,
"OSILODROSTAT SAFETY MONITORING:\n"
"• Baseline ECG (QTc interval) before starting — repeat with each dose escalation. Hold dose if QTc >500 ms.\n"
"• K+ levels: check twice weekly during titration. Target K+ ≥3.5 mmol/L. Supplement if low.\n"
"• Watch for hypocortisolism signs: nausea, fatigue, hypotension, hypoglycaemia → reduce dose.\n"
"• Do NOT abruptly stop osilodrostat — taper with hydrocortisone cover (risk of prolonged adrenal insufficiency).\n"
" Reference: Kaniuka-Jakubowska et al. Endocr J 2026 (PMID 41139506); Ferriere et al. Eur J Endocrinol 2024 (PMID 38123490).",
bg="FFF3CD", text_rgb=ORANGE)
spacer(doc)
subsection(doc, "1.2 Block-and-Replace Protocol", MED_BLUE)
table_grid(doc,
headers=["Component", "Drug", "Dose", "Timing", "Indication"],
rows=[
("Adrenal blocker", "Osilodrostat", "1 mg BD → titrate", "BD with meals", "Active"),
("Glucocorticoid replacement", "Hydrocortisone", "20 mg AM + 10 mg at 4–6 PM", "Oral", "Start when cortisol <15 µg/dL"),
("Emergency steroid", "Hydrocortisone 100 mg IV/IM", "100 mg stat", "Any emergency / vomiting / procedure", "Always carry"),
],
col_widths=[1.5, 1.5, 1.5, 1.5, 1.5]
)
bullet(doc, "Issue Steroid Emergency Card. Patient and carers must understand adrenal crisis symptoms.", bold_prefix="ACTION")
bullet(doc, "Medical Alert bracelet: 'On adrenal blocker therapy — needs hydrocortisone in emergency'", bold_prefix="ACTION")
spacer(doc)
subsection(doc, "1.3 Anticoagulation Restart — URGENT", RED)
table_grid(doc,
headers=["Drug", "Dose", "Route", "Duration", "Rationale"],
rows=[
("Apixaban (preferred)", "5 mg BD", "Oral", "Indefinite while Cushing + malignancy active",
"Previously used and tolerated. DOAC preferred in cancer-associated VTE."),
("OR Enoxaparin LMWH", "1 mg/kg BD", "SC injection", "Bridge if oral absorption concern",
"Use if hospitalised, poor oral intake, or GI issues."),
],
col_widths=[1.4, 1.0, 0.9, 1.8, 2.4]
)
box(doc,
"RATIONALE FOR URGENT RESTART: Active Cushing syndrome causes hypercoagulability (↑fibrinogen, ↑PAI-1, ↑Factor VIII). "
"Combined with recurrent malignancy and prior bilateral PE + IVC thrombus, VTE risk is extremely high. "
"Patient has been off anticoagulation for 24+ months. The benefit of restarting almost certainly outweighs the "
"bleeding risk — final decision at MDT with haematology input. (Harrison's, 22E, p.782-783)",
bg="FFE5E5", text_rgb=RED)
spacer(doc)
subsection(doc, "1.4 Infection Prophylaxis", MED_BLUE)
table_grid(doc,
headers=["Drug", "Dose", "Indication", "Duration"],
rows=[
("Co-trimoxazole (Septrin/Bactrim)", "480 mg OD", "PCP prophylaxis — lymphopenia 17% + hypercortisolism",
"Throughout Cushing syndrome treatment"),
("OR Dapsone (if sulpha-allergic)", "100 mg OD", "PCP prophylaxis — sulpha allergy alternative", "Same"),
("Omeprazole", "20 mg OD", "Gastric protection — steroid + osilodrostat combination", "Ongoing"),
],
col_widths=[2.0, 1.2, 2.8, 1.5]
)
spacer(doc)
subsection(doc, "1.5 Metyrapone — Alternative / Combination if Osilodrostat Insufficient", MED_BLUE)
table_grid(doc,
headers=["Parameter", "Detail"],
rows=[
("Drug", "Metyrapone"),
("Dose", "250–500 mg every 6 hours orally (max 6 g/day)"),
("Use case", "If osilodrostat unavailable, not tolerated, or if combination needed for refractory cortisol"),
("Combination use", "Osilodrostat + metyrapone: additive 11β-hydroxylase blockade — used in refractory cases"),
("Caution", "Can worsen hirsutism (↑androgen precursors). Monitor electrolytes. Less QTc risk than osilodrostat."),
("Reference", "Harrison's Principles of Internal Medicine 22E, p.3103"),
],
col_widths=[2.0, 4.5]
)
spacer(doc)
# ═══════════════════════════════════════════════════════════════════
# PHASE 2 — SHORT-TERM INVESTIGATIONS (WEEKS 1–4)
# ═══════════════════════════════════════════════════════════════════
phase_header(doc, 2, "CRITICAL INVESTIGATIONS — TREATMENT DECISION MAPPING", "Weeks 1–4", "1F5C99")
spacer(doc)
table_grid(doc,
headers=["Priority", "Investigation", "Purpose", "Timeframe"],
rows=[
("URGENT", "Review Aug 2025 CT Chest + USG Abdomen + MRI Pituitary",
"Rule out new PE / splanchnic thrombosis / pleural tumor. Confirm ectopic vs pituitary source.", "Day 1–3"),
("URGENT", "Serum bicarbonate / venous blood gas",
"Explain low chloride 95.7 mmol/L. Check metabolic alkalosis.", "Day 1–2"),
("HIGH", "Urinary Free Cortisol (24-hr UFC) × 2",
"Baseline true cortisol burden before osilodrostat. 8 AM serum may underestimate.", "Week 1"),
("HIGH", "Late-Night Salivary Cortisol (LNSC) × 2",
"Confirm loss of diurnal rhythm, document active Cushing.", "Week 1"),
("HIGH", "Ga-68 DOTATATE PET/CT — REPEAT",
"Single most important test for PRRT eligibility. Quantify SSTR expression across all current lesions.", "Weeks 2–4"),
("HIGH", "FDG PET/CT — if not recently repeated",
"Grade metabolic activity. FDG-dominant = higher grade disease.", "Weeks 2–4"),
("HIGH", "Histopathology block retrieval (2022 + 2024)",
"Ki-67, mitotic rate, grade (G1/G2/G3), ACTH IHC, TTF-1, CDX2, PAX8, synaptophysin.", "Weeks 1–3"),
("HIGH", "MEN1 + SDHx germline genetic panel (blood)",
"Thymic NETs: >20% MEN1 association. Prior right adrenal hemorrhage: SDHx risk.", "Week 1"),
("ROUTINE", "DEXA bone density scan",
"Baseline BMD — Cushing-related bone loss. Age 23 = high-risk for early osteoporosis.", "Weeks 2–4"),
("ROUTINE", "Ophthalmic pressure (IOP) check",
"Baseline glaucoma screening — steroid risk.", "Week 2–4"),
("ROUTINE", "Cholecalciferol 60,000 IU/week × 8 weeks",
"Vitamin D 29.54 (low-normal). Start supplementation immediately. Then 1000–2000 IU/day maintenance.", "Start Day 1"),
("ROUTINE", "Calcium 1,000 mg/day oral",
"Bone protection — Cushing-related accelerated bone resorption.", "Start Day 1"),
],
col_widths=[0.9, 2.0, 2.7, 1.0]
)
spacer(doc)
# ═══════════════════════════════════════════════════════════════════
# PHASE 3 — TUMOR-DIRECTED THERAPY (MONTH 1–3)
# ═══════════════════════════════════════════════════════════════════
phase_header(doc, 3, "TUMOR-DIRECTED THERAPY — SEQUENCED BY SSTR STATUS + GRADE", "Month 1–3", "375623")
spacer(doc)
box(doc,
"DECISION TREE: Treatment selection depends on results from Phase 2 investigations.\n"
"Path A: Ga-68 DOTATATE positive → PRRT (Lu-177 DOTATATE)\n"
"Path B: SSTR negative, G2/G3 on histopath → Everolimus\n"
"Path C: G2–G3, rapid progression, high Ki-67 → CAPTEM chemotherapy\n"
"Path D: Localized resectable recurrence → Surgical debulking (Dr. Deshpande)\n"
"Path E: Refractory cortisol despite medical therapy → Bilateral adrenalectomy",
bg="E8F4FD", text_rgb=DARK_BLUE)
spacer(doc)
subsection(doc, "Path A: PRRT — Lu-177 DOTATATE (if SSTR-positive)", GREEN_DARK)
table_grid(doc,
headers=["Parameter", "Detail"],
rows=[
("Drug", "Lutetium-177 DOTATATE [177Lu-DOTATATE] (Lutathera®)"),
("Eligibility criterion", "Ga-68 DOTATATE PET/CT showing SSTR-positive lesions (Krenning score ≥2)"),
("Dose per cycle", "7.4 GBq IV infusion"),
("Number of cycles", "4 cycles"),
("Interval", "Every 8 weeks"),
("Pre-requisite (cortisol)", "Cortisol MUST be controlled on osilodrostat/metyrapone before Cycle 1"),
("Pre-requisite (adrenal)", "Consider bilateral adrenalectomy before Cycle 1 if cortisol uncontrollable medically"),
("Renal protection", "Amino acid infusion pre- and post-PRRT. eGFR currently 127 — excellent"),
("Evidence", "Boehm et al. Endocr Oncol 2024 (PMID 39649117): 5/7 ectopic Cushing patients = complete biochemical ECS remission post-PRRT"),
("PRRT centre", "Must be performed at accredited PRRT centre with endocrine emergency backup"),
],
col_widths=[2.0, 4.5]
)
spacer(doc)
box(doc,
"CRITICAL PRRT SAFETY PROTOCOL — ACTH HYPERCORTISOLEMIC CRISIS PREVENTION:\n"
"PRRT Cycle 1 can trigger acute tumor lysis → massive ACTH release within 5–7 days. "
"Documented case: Cortisol 141 µg/dL + ACTH >2000 pg/mL + psychosis post-Cycle 1 (Pandit et al. 2025, PMID 41035789).\n\n"
"MANDATORY pre-PRRT protocol:\n"
" 1. Osilodrostat/metyrapone dose to be PRE-ESCALATED the week before each PRRT cycle\n"
" 2. Etomidate IV (0.02 mg/kg/h) on standby in PRRT unit for potential crisis management\n"
" 3. ICU/HDU backup must be available at the PRRT centre\n"
" 4. If etomidate used: cortisol MUST be measured by LC-MS/MS (not immunoassay — assay interference)\n"
" 5. Bilateral adrenalectomy should be performed BEFORE PRRT if cortisol is not medically controllable",
bg="FFE5E5", text_rgb=RED)
spacer(doc)
subsection(doc, "Path B: Everolimus (if SSTR-negative or as second-line after PRRT)", MED_BLUE)
table_grid(doc,
headers=["Parameter", "Detail"],
rows=[
("Drug", "Everolimus (Afinitor®)"),
("Mechanism", "mTOR inhibitor — anti-proliferative in NET"),
("Dose", "10 mg orally ONCE daily (OD) continuously"),
("Indication here", "Progressive thoracic/thymic NET after SSA failure, SSTR-negative, or after PRRT"),
("Evidence", "RADIANT-4 trial: PFS benefit in progressive non-functional lung/GI NETs. Piórek et al. Cancers 2025 (PMID 40563625)."),
("Key monitoring", "Stomatitis, pneumonitis (check HRCT if new cough/dyspnoea), hyperglycaemia (worsens Cushing-related glucose risk), LFT monthly"),
("Drug interaction", "Osilodrostat + everolimus: monitor LFT and glucose closely. Dose-reduce if Grade 3 toxicity."),
("Dose modification", "Reduce to 5 mg OD for Grade 3 stomatitis or pulmonary toxicity. Withhold for Grade 4."),
],
col_widths=[2.0, 4.5]
)
spacer(doc)
subsection(doc, "Path C: CAPTEM Chemotherapy (G2/G3 or rapid progression)", MED_BLUE)
table_grid(doc,
headers=["Drug", "Dose", "Schedule", "Cycle", "Monitoring"],
rows=[
("Capecitabine", "1000 mg/m² BD", "Days 1–14 of each cycle", "28-day cycle", "LFT, CBC, hand-foot syndrome"),
("Temozolomide", "200 mg/m² OD", "Days 10–14 of each cycle", "28-day cycle", "CBC, nausea, fatigue"),
],
col_widths=[1.5, 1.5, 2.0, 1.2, 1.3]
)
bullet(doc, "CAPTEM is most active in G2 NETs with Ki-67 >10% and in pancreatic NETs. Response rates ~30–50% in G2 disease.", bold_prefix="Note")
bullet(doc, "Monitor LFT closely — Cushing-related liver stress + chemo hepatotoxicity risk. Hold if ALT/AST >5x ULN.", bold_prefix="Caution")
bullet(doc, "Tsoli M et al. Curr Treat Options Oncol 2025 (PMID 41042443) — CAPTEM active in ACTH-secreting NENs.", bold_prefix="Evidence")
spacer(doc)
subsection(doc, "Path D: Surgical Debulking (if localized resectable recurrence)", MED_BLUE)
table_grid(doc,
headers=["Parameter", "Detail"],
rows=[
("Surgeon", "Dr. Deshpande — Thoracic Surgery (prior VATS 2022, Sternotomy 2024)"),
("Indication", "Single or limited mediastinal recurrence on imaging — potentially resectable"),
("Pre-op requirement", "Cortisol controlled. Anticoagulation bridged. Infection risk minimized."),
("Expected benefit", "May achieve temporary biochemical remission (as seen after 2022 and 2024 resections). Reduces ACTH burden."),
("Timing", "Only after cortisol stabilized and full imaging review. Decision at surgical MDT."),
("Note", "Third surgery in same field carries higher complication risk — adhesions, bleeding. Weigh against PRRT option."),
],
col_widths=[2.0, 4.5]
)
spacer(doc)
subsection(doc, "Path E: Bilateral Adrenalectomy — Fallback + Pre-PRRT Option", RED)
table_grid(doc,
headers=["Scenario", "Recommendation"],
rows=[
("Medical therapy fails (cortisol uncontrolled despite max dose osilodrostat + metyrapone)",
"Proceed to bilateral laparoscopic adrenalectomy. Life-saving intervention."),
("Pre-PRRT stabilization (if cortisol not controllable medically before PRRT)",
"Bilateral adrenalectomy BEFORE PRRT Cycle 1 — prevents PRRT-induced hypercortisolemic crisis."),
("Post-bilateral adrenalectomy management",
"Lifelong hydrocortisone 20 mg AM + 10 mg PM + fludrocortisone 0.1 mg OD. Addisonian crisis education mandatory."),
("Evidence",
"Peixe et al. Ir J Med Sci 2026 (PMID 42126756): BA achieved remission in recurrent mediastinal NET ectopic Cushing. "
"Pandit et al. 2025 (PMID 41035789): BA used as bridge to safe PRRT in thymic NET."),
],
col_widths=[2.5, 4.0]
)
spacer(doc)
# ═══════════════════════════════════════════════════════════════════
# PHASE 4 — ONGOING MONITORING PROTOCOL
# ═══════════════════════════════════════════════════════════════════
phase_header(doc, 4, "ONGOING MONITORING PROTOCOL", "Continuous", "5B278F")
spacer(doc)
table_grid(doc,
headers=["Frequency", "Test / Action", "Target / Threshold", "Responsible"],
rows=[
("Twice weekly × 4 weeks\n(osilodrostat start)", "K+, Na+, Cl−, serum cortisol (8 AM)", "K+ ≥3.5; Cortisol trending to target", "Endocrinology"),
("Weekly × 4 weeks", "FBS, weight, BP (sitting/standing), urine dipstick", "FBS <130; BP <130/80; No glycosuria", "GP / Endocrine nurse"),
("Every 2 weeks", "8 AM cortisol + UFC", "Target cortisol 10–15 µg/dL", "Endocrinology"),
("Every 2 weeks", "ECG — QTc interval", "QTc <500 ms. Dose-hold if exceeded.", "Cardiology / GP"),
("Monthly", "CBC, LFT, RFT, Chromogranin A", "Tumor activity + organ safety screening", "Oncology / GP"),
("Monthly", "Sandostatin LAR 30 mg IM", "Continue until PRRT/alternative decision confirmed", "Oncology"),
("Per PRRT cycle", "Cortisol, ACTH, K+, Creatinine, LFT", "Safety before each cycle; crisis prevention", "PRRT centre"),
("3-monthly", "CT Chest + Abdomen (or DOTA PET)", "Disease response assessment", "NET Oncology"),
("6-monthly", "DEXA bone density scan", "Detect progressive bone loss from Cushing", "Endocrinology"),
("6-monthly", "Ophthalmic review (IOP)", "Glaucoma screening — steroid risk", "Ophthalmology"),
("Annually", "Fasting lipids, HbA1c, DEXA", "Metabolic syndrome surveillance", "Endocrinology / GP"),
],
col_widths=[1.7, 2.2, 2.2, 1.4]
)
spacer(doc)
# ═══════════════════════════════════════════════════════════════════
# SECTION: COMPLETE DRUG LIST
# ═══════════════════════════════════════════════════════════════════
section_title(doc, "COMPLETE MEDICATION LIST — AS PER PROTOCOL", "1A3A5C")
spacer(doc)
table_grid(doc,
headers=["Category", "Drug", "Dose", "Route", "Frequency", "Status"],
rows=[
("Cortisol control", "Osilodrostat", "Start 1 mg → titrate to max 30 mg", "Oral", "BD", "START NOW"),
("Cortisol control (alt/add)", "Metyrapone", "250–500 mg", "Oral", "Every 6 h", "If osilodrostat insufficient"),
("GR blocker (metabolic)", "Mifepristone", "300–600 mg", "Oral", "OD", "Optional — for glucose/BP if needed"),
("Steroid replacement", "Hydrocortisone", "20 mg AM + 10 mg at 4–6 PM", "Oral", "BD", "Start when cortisol <15 µg/dL"),
("Emergency steroid", "Hydrocortisone", "100 mg", "IV/IM", "Stat (emergency only)", "ALWAYS carry"),
("Anticoagulation", "Apixaban", "5 mg", "Oral", "BD", "RESTART — URGENT"),
("PCP prophylaxis", "Co-trimoxazole", "480 mg", "Oral", "OD", "START NOW"),
("Gastric protection", "Omeprazole", "20 mg", "Oral", "OD", "START NOW"),
("SSA (ongoing)", "Sandostatin LAR", "30 mg", "IM", "Monthly", "Continue until redirected"),
("Bone/Vitamin D", "Cholecalciferol", "60,000 IU × 8 weeks, then 1000–2000 IU/day", "Oral", "Weekly × 8 then daily", "START NOW"),
("Bone/Calcium", "Calcium carbonate", "1000 mg", "Oral", "OD", "START NOW"),
("Tumor-directed (PRRT)", "Lu-177 DOTATATE", "7.4 GBq/cycle × 4 cycles", "IV infusion", "Every 8 weeks", "PENDING — after DOTA PET"),
("OR targeted therapy", "Everolimus", "10 mg", "Oral", "OD", "PENDING — if SSTR-negative"),
("OR chemotherapy", "CAPTEM (Cap + TMZ)", "As per protocol above", "Oral", "28-day cycle", "PENDING — if G2/G3"),
],
col_widths=[1.5, 1.5, 1.5, 0.8, 1.2, 1.0]
)
spacer(doc)
# ═══════════════════════════════════════════════════════════════════
# GENETICS PLAN
# ═══════════════════════════════════════════════════════════════════
section_title(doc, "GENETIC TESTING PLAN", "375623")
spacer(doc)
table_grid(doc,
headers=["Gene Panel", "Rationale", "Specimen", "Action if Positive"],
rows=[
("MEN1 (Multiple Endocrine Neoplasia Type 1)",
"Thymic NETs occur in >20% of MEN1 carriers. Age 23 with two resections — strong indicator. MEN1 also associated with parathyroid adenoma, pituitary tumors.",
"Peripheral blood — germline",
"Dedicated MEN1 surveillance (pituitary, parathyroid, pancreas). Family cascade testing. Informs long-term surveillance and recurrence risk."),
("SDHB / SDHD / SDHC (SDH complex subunits)",
"Prior right adrenal hemorrhage at age 22 may represent adrenal pheochromocytoma/paraganglioma rather than incidental hemorrhage. SDHx mutations are associated with aggressive paraganglioma-NEN syndromes.",
"Peripheral blood — germline",
"Metaiodobenzylguanidine (MIBG) or DOTA PET for paraganglioma. Family testing. Surveillance for head/neck paragangliomas."),
("ATRX / DAXX (somatic, tumor block)",
"Associated with aggressive thymic carcinoids and alternative lengthening of telomeres (ALT).",
"Paraffin block (2022 or 2024)",
"Poorer prognosis marker. May influence intensity of systemic therapy."),
],
col_widths=[1.6, 2.2, 1.4, 2.3]
)
spacer(doc)
# ═══════════════════════════════════════════════════════════════════
# CLINICAL TRIAL CONSIDERATIONS
# ═══════════════════════════════════════════════════════════════════
section_title(doc, "CLINICAL TRIAL ELIGIBILITY — TO BE ASSESSED", "1A3A5C")
spacer(doc)
box(doc,
"Shresthvi's case — young adult, recurrent metastatic NET, ectopic ACTH Cushing, prior PRRT-naïve — "
"may be eligible for multiple active trials. MDT oncology team should check:\n\n"
"• NET + Ectopic ACTH basket trials (ENETS, NANETS collaborative registries)\n"
"• PRRT dose-escalation trials at AIIMS Delhi, Tata Memorial Mumbai, or MSKCC international arms\n"
"• Immunotherapy trials in NEN (anti-PD-1 in G2/G3 NEN — cabozantinib combinations)\n"
"• Telotristat ethyl trials (serotonin + ACTH co-secreting NET)\n"
"• Surufatinib (multi-target TKI) — active in non-pancreatic NETs, including thoracic\n"
"• Bispecific antibody / radioimmunotherapy trials (experimental — SSTR2-targeted)\n\n"
"Suggested registries: ENETS CoE registry, AIIMS Neuroendocrine tumour cohort, NCT.gov (search: NET + Cushing OR ectopic ACTH)",
bg="EAF2FB", text_rgb=DARK_BLUE)
spacer(doc)
# ═══════════════════════════════════════════════════════════════════
# PATIENT EDUCATION + LIFESTYLE
# ═══════════════════════════════════════════════════════════════════
section_title(doc, "PATIENT EDUCATION & SUPPORTIVE CARE", "1F5C99")
spacer(doc)
subsection(doc, "Dietary Recommendations", MED_BLUE)
bullet(doc, "Low-sodium diet (<2g/day) — reduces fluid retention and edema from Cushing syndrome")
bullet(doc, "High-protein diet (1.2–1.5 g/kg/day) — prevents Cushing-related muscle wasting (sarcopenia)")
bullet(doc, "Low-glycaemic index carbohydrates — reduces glucose fluctuations (HbA1c 5.7% — borderline)")
bullet(doc, "Calcium-rich foods (dairy, leafy greens) + supplementation — bone protection")
bullet(doc, "Avoid high-fat, high-sugar foods — cardiovascular risk in Cushing context")
subsection(doc, "Activity & Physiotherapy", MED_BLUE)
bullet(doc, "Gentle exercise (walking, swimming, yoga) — combats Cushing-related proximal muscle weakness")
bullet(doc, "Avoid vigorous exercise until cortisol controlled — risk of fracture given potential bone loss")
bullet(doc, "Physiotherapy assessment if proximal myopathy present")
subsection(doc, "Psychological Support", MED_BLUE)
bullet(doc, "Cushing syndrome causes mood disorders, depression, anxiety — formal psychological support should be offered")
bullet(doc, "Peer support networks for NET patients: NETA India, Carcinoid Cancer Foundation, ENETS patient resources")
subsection(doc, "Emergency Instructions for Patient and Family", RED)
box(doc,
"EMERGENCY PROTOCOL — GO TO ER IMMEDIATELY FOR ANY OF:\n"
"• Severe headache, visual changes, confusion, or seizures\n"
"• Chest pain, sudden breathlessness, or palpitations\n"
"• Leg swelling, calf pain, or redness\n"
"• Fever ≥38°C or signs of infection\n"
"• Severe vomiting preventing oral medications (risk of adrenal crisis)\n"
"• Sudden dizziness, collapse, or hypotension\n"
"• In any emergency: patient is on adrenal-blocking therapy and requires HYDROCORTISONE 100 mg IV/IM immediately. "
"Show the steroid emergency card to treating ER physicians.",
bg="FFE5E5", text_rgb=RED)
spacer(doc)
# ── FOOTER ────────────────────────────────────────────────────────────────
fp = doc.add_paragraph()
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
para_shade(fp, "D6E4F0")
r = fp.add_run(
"Protocol Version 1.0 | Date: 19 July 2026 | Prepared by Clinical MDT\n"
"This protocol is for clinical use by authorised medical professionals only. "
"All management decisions require individual clinical assessment and consultant authorisation."
)
r.italic = True; r.font.size = Pt(8.5); r.font.color.rgb = DARK_BLUE
doc.save(OUTPUT)
print(f"SAVED: {OUTPUT}")
cd /tmp/workspace/shresthvi-net && python3 make_treatment_protocol.py 2>&1
ls -lh /tmp/workspace/shresthvi-net/*.docx
MDT Brief Shresthvi Havelia
Word Document · DOCX
Treatment Protocol Shresthvi Havelia
Word Document · DOCX