HII
WHICH BOOK OF MEDICNE DO U HAVE?
I'LL GIVE U PPT AND EDIT IT AND ADD THERA FORM MATERIA MEDICA AND INVESTIGATION ALSO IN DETAIL IF POSSIBLE USE MORE DIAGRAM AND CHART AND TABLE ETC. GIVE ME PROPER REFRENCES
cd /tmp/workspace && python3 -c " from pptx import Presentation from pptx.util import Emu prs = Presentation('/tmp/workspace/attachments/8fefbaa9-e98f-43f4-8e0b-a4fef60ca73e/OEDEMA PAYAL PARMAR.pptx') print(f'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: pos = (round(Emu(shape.left).inches,2), round(Emu(shape.top).inches,2)) if shape.left is not None else None print(f' Shape: {shape.name} | Type: {shape.shape_type} | Pos: {pos}') if shape.has_text_frame and shape.text_frame.text.strip(): print(f' TEXT: {shape.text_frame.text[:300]}') "
ls /tmp/workspace/attachments/8fefbaa9-e98f-43f4-8e0b-a4fef60ca73e/
mkdir -p /tmp/workspace/oedema-ppt && python3 << 'PYEOF' import copy 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.util import Inches, Pt import pptx.oxml.ns as nsmap from lxml import etree # Load original src = '/tmp/workspace/attachments/8fefbaa9-e98f-43f4-8e0b-a4fef60ca73e/OEDEMA PAYAL PARMAR.pptx' prs = Presentation(src) # Slide dimensions W = prs.slide_width H = prs.slide_height print(f"Slide size: {Emu(W).inches:.2f} x {Emu(H).inches:.2f} inches") print(f"Total slides: {len(prs.slides)}") print(f"Available layouts: {[l.name for l in prs.slide_layouts]}") PYEOF
~/oedema-ppt/build_ppt.py
"""
Enhanced Oedema PPT builder - adds Investigations, Materia Medica (Therapeutic Formulations),
detailed tables, charts, and references to the existing presentation.
"""
import copy, io
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
SRC = '/tmp/workspace/attachments/8fefbaa9-e98f-43f4-8e0b-a4fef60ca73e/OEDEMA PAYAL PARMAR.pptx'
OUT = '/tmp/workspace/oedema-ppt/OEDEMA_ENHANCED_PAYAL_PARMAR.pptx'
prs = Presentation(SRC)
W = prs.slide_width # 13.33 inches
H = prs.slide_height # 7.50 inches
# โโ colour palette (matching original teal/dark theme) โโ
C_BG = RGBColor(0x0D, 0x1B, 0x2A) # dark navy bg
C_HEADER = RGBColor(0x00, 0xB4, 0xD8) # bright teal
C_SUB = RGBColor(0x48, 0xCA, 0xE4) # lighter teal
C_WHITE = RGBColor(0xFF, 0xFF, 0xFF)
C_YELLOW = RGBColor(0xFF, 0xD6, 0x00)
C_GREEN = RGBColor(0x06, 0xD6, 0xA0)
C_ORANGE = RGBColor(0xFF, 0x77, 0x22)
C_PINK = RGBColor(0xFF, 0x4D, 0x6D)
C_LGRAY = RGBColor(0xD0, 0xEA, 0xFF)
C_DARKBLUE= RGBColor(0x02, 0x36, 0x5E)
def get_layout(name):
for l in prs.slide_layouts:
if l.name == name:
return l
return prs.slide_layouts[6] # Blank fallback
def add_slide(layout_name='DEFAULT'):
layout = get_layout(layout_name)
return prs.slides.add_slide(layout)
def fill_shape(shape, rgb):
fill = shape.fill
fill.solid()
fill.fore_color.rgb = rgb
def add_rect(slide, l, t, w, h, rgb, alpha=None):
shape = slide.shapes.add_shape(1, Inches(l), Inches(t), Inches(w), Inches(h))
fill_shape(shape, rgb)
shape.line.fill.background()
return shape
def add_textbox(slide, text, l, t, w, h, size=14, bold=False, color=C_WHITE,
align=PP_ALIGN.LEFT, wrap=True, italic=False):
txb = slide.shapes.add_textbox(Inches(l), Inches(t), Inches(w), Inches(h))
txb.text_frame.word_wrap = wrap
tf = txb.text_frame
tf.clear()
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
return txb
def add_title_bar(slide, title):
"""Dark top bar with bright teal title text."""
add_rect(slide, 0, 0, 13.33, 0.75, C_DARKBLUE)
add_textbox(slide, title, 0.3, 0.08, 12.7, 0.62, size=20, bold=True,
color=C_HEADER, align=PP_ALIGN.LEFT)
def add_section_box(slide, label, l, t, w, h, bg=C_DARKBLUE):
add_rect(slide, l, t, w, 0.38, bg)
add_textbox(slide, label, l+0.1, t+0.04, w-0.2, 0.32,
size=13, bold=True, color=C_YELLOW)
def set_cell_text(cell, text, size=11, bold=False, color=C_WHITE, align=PP_ALIGN.CENTER):
tf = cell.text_frame
tf.clear()
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(size)
run.font.bold = bold
run.font.color.rgb = color
def set_cell_bg(cell, rgb):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
solidFill = etree.SubElement(tcPr, qn('a:solidFill'))
srgbClr = etree.SubElement(solidFill, qn('a:srgbClr'))
srgbClr.set('val', f'{rgb.red:02X}{rgb.green:02X}{rgb.blue:02X}')
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE A: SECTION DIVIDER โ INVESTIGATIONS
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Section Header')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_rect(sl, 0, 2.8, 13.33, 0.08, C_HEADER)
add_textbox(sl, '๐ฌ INVESTIGATIONS IN OEDEMA', 1.5, 2.9, 10, 1.0,
size=32, bold=True, color=C_HEADER, align=PP_ALIGN.CENTER)
add_textbox(sl, 'Targeted laboratory, imaging & functional workup for each aetiology',
1.5, 4.1, 10, 0.7, size=16, color=C_LGRAY, align=PP_ALIGN.CENTER)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE B: OVERVIEW TABLE โ INVESTIGATIONS BY SYSTEM
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'INVESTIGATIONS IN OEDEMA โ OVERVIEW TABLE')
rows = [
('CATEGORY', 'TESTS', 'KEY FINDING', 'DIAGNOSIS SUGGESTED'),
('Urine', 'Dipstick, 24hr protein, Urine PCR, Microscopy',
'Proteinuria โฅ3.5g/day, haematuria, casts', 'Nephrotic / Nephritic Syndrome'),
('Serum Biochemistry', 'Albumin, Total Protein, LFT, RFT, Electrolytes, Urea, Creatinine',
'Albumin <3 g/dL โ oncotic pressure โ', 'Hepatic / Nutritional / Renal'),
('Renal Function', 'Serum creatinine, eGFR, BUN, Urine Na+',
'eGFR <60 ml/min, โ creatinine', 'CKD / AKI'),
('Haematology', 'CBC, ESR, CRP, PT/INR, APTT',
'Anaemia (normocytic), โ CRP, coagulopathy', 'Liver disease, infection, inflammation'),
('Cardiac Markers', 'BNP / NT-proBNP, Troponin I/T, ECG, CXR',
'BNP >100 pg/mL โ cardiac oedema', 'Heart failure (LVF/RVF/CCF)'),
('Thyroid', 'TSH, Free T3, Free T4',
'TSH โ, FT4 โ โ Hypothyroidism', 'Myxoedema'),
('Imaging โ Cardiac', 'Echo (2D + Doppler), Chest X-Ray',
'LVEF <40%, bat-wing perihilar shadows', 'Cardiogenic oedema / Pulmonary oedema'),
('Imaging โ Abdominal', 'USG abdomen, Doppler portal vein',
'Ascites, hepatomegaly, portal HTN pattern', 'Cirrhosis / Portal HTN / Budd-Chiari'),
('Imaging โ Limbs', 'Venous Duplex Doppler, Lymphoscintigraphy, MRI',
'Non-compressible vein = DVT; dermal backflow = lymphoedema', 'DVT / Lymphoedema'),
('Specialised', 'SAAG (serum-ascites albumin gradient), skin biopsy (glycosaminoglycan)',
'SAAG โฅ1.1 g/dL โ portal HTN', 'Cirrhosis / Constrictive pericarditis'),
('Immunology', 'ANA, anti-dsDNA, ANCA, complement (C3/C4)',
'ANA+, low C3 โ SLE nephritis', 'Immune-mediated glomerulonephritis'),
('Filariasis / Infection', 'Night blood smear, ICT card test, Serology (ELISA)',
'Microfilaria in blood; positive ICT', 'Lymphatic filariasis'),
('DVT / PE Screen', 'D-Dimer, Well\'s Score, CTPA if PE suspected',
'D-Dimer >500 ng/mL โ further workup', 'DVT / PE'),
]
table = sl.shapes.add_table(len(rows), 4,
Inches(0.2), Inches(0.9), Inches(12.93), Inches(6.45)).table
col_widths = [1.9, 3.8, 3.8, 3.43]
for i, cw in enumerate(col_widths):
table.columns[i].width = Inches(cw)
for r_idx, row_data in enumerate(rows):
if r_idx == 0:
bg = C_HEADER
txt_color = C_BG
bold = True
sz = 11
else:
bg = C_DARKBLUE if r_idx % 2 == 0 else RGBColor(0x02, 0x4E, 0x7C)
txt_color = C_WHITE
bold = False
sz = 10
for c_idx, cell_text in enumerate(row_data):
cell = table.cell(r_idx, c_idx)
set_cell_bg(cell, bg)
set_cell_text(cell, cell_text, size=sz, bold=bold, color=txt_color,
align=PP_ALIGN.LEFT if c_idx > 0 else PP_ALIGN.CENTER)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE C: CARDIAC OEDEMA INVESTIGATION FLOWCHART
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'CARDIAC OEDEMA โ INVESTIGATION ALGORITHM')
# flowchart boxes
boxes = [
(4.4, 0.9, 4.5, 0.65, C_DARKBLUE, '๐ซ Suspected Cardiac Oedema', C_YELLOW, 13, True),
(4.4, 1.9, 4.5, 0.65, C_DARKBLUE, 'ECG + Chest X-Ray (first-line)', C_WHITE, 12, False),
(1.0, 3.2, 4.0, 0.65, RGBColor(0x03,0x5E,0x8C), 'CXR: Bat-wing shadowing\nKerley B lines, cardiomegaly', C_WHITE, 11, False),
(8.3, 3.2, 4.0, 0.65, RGBColor(0x03,0x5E,0x8C), 'ECG: LVH, AF, LBBB\nIschaemic changes', C_WHITE, 11, False),
(4.4, 4.6, 4.5, 0.65, C_DARKBLUE, 'Echocardiography (2D + Doppler)', C_WHITE, 12, False),
(1.0, 5.7, 4.0, 0.65, RGBColor(0x03,0x5E,0x8C), 'LVEF <40% โ HFrEF\nDiastolic dysfunction โ HFpEF', C_WHITE, 11, False),
(8.3, 5.7, 4.0, 0.65, RGBColor(0x03,0x5E,0x8C), 'BNP/NT-proBNP\n>100/>300 pg/mL โ HF confirmed', C_WHITE, 11, False),
]
for (l, t, w, h, bg, txt, tc, sz, bold) in boxes:
add_rect(sl, l, t, w, h, bg)
add_textbox(sl, txt, l+0.1, t+0.05, w-0.2, h-0.1, size=sz, bold=bold,
color=tc, align=PP_ALIGN.CENTER)
# arrows
for arrow_data in [(6.65, 1.25, 6.65, 1.9), (6.65, 2.6, 6.65, 3.2)]:
sh = sl.shapes.add_connector(1, Inches(arrow_data[0]), Inches(arrow_data[1]),
Inches(arrow_data[2]), Inches(arrow_data[3]))
sh.line.color.rgb = C_HEADER
sh.line.width = Pt(2)
# Additional info box
add_rect(sl, 0.3, 6.55, 12.73, 0.75, RGBColor(0x01,0x28,0x45))
add_textbox(sl, '๐ Key: BNP >35 pg/mL or NT-proBNP >125 pg/mL suggests HF (ESC 2021 Guidelines). '
'Echo is gold-standard for confirming cardiac cause. LVEF cutoff: โฅ50% = HFpEF, 40โ49% = HFmrEF, <40% = HFrEF.',
0.4, 6.58, 12.5, 0.7, size=10, color=C_LGRAY)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE D: URINE INVESTIGATIONS DETAIL
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'URINE & BIOCHEMICAL INVESTIGATIONS โ NEPHROTIC vs NEPHRITIC')
# Left panel
add_rect(sl, 0.3, 0.9, 6.0, 0.5, RGBColor(0x00,0x77,0xB6))
add_textbox(sl, '๐ด NEPHROTIC SYNDROME', 0.4, 0.93, 5.8, 0.42, size=14, bold=True, color=C_WHITE)
nephrotic = [
('24h Urine Protein', 'โฅ 3.5 g/day'),
('Serum Albumin', '< 3.0 g/dL'),
('Urine Microscopy', 'Oval fat bodies, fatty casts, lipiduria'),
('Serum Cholesterol', 'โ (>200 mg/dL) โ hyperlipidaemia'),
('Urine PCR', '> 300 mg/mmol'),
('Complement (C3/C4)', 'Low in membranoproliferative GN'),
('Renal Biopsy', 'Gold standard for histological type'),
('Oedema type', 'Periorbital in AM; generalised'),
]
for i, (test, result) in enumerate(nephrotic):
y = 1.5 + i*0.6
add_rect(sl, 0.3, y, 6.0, 0.52, C_DARKBLUE if i%2==0 else RGBColor(0x02,0x4E,0x7C))
add_textbox(sl, test, 0.4, y+0.06, 2.8, 0.42, size=11, color=C_YELLOW)
add_textbox(sl, result, 3.2, y+0.06, 3.0, 0.42, size=11, color=C_WHITE)
# Right panel
add_rect(sl, 6.8, 0.9, 6.2, 0.5, RGBColor(0xD6,0x2B,0x2B))
add_textbox(sl, '๐ NEPHRITIC SYNDROME', 6.9, 0.93, 6.0, 0.42, size=14, bold=True, color=C_WHITE)
nephritic = [
('Urine Microscopy', 'RBC casts, dysmorphic RBCs'),
('Urine Dipstick', 'Haematuria + Proteinuria (< 3.5g/day)'),
('Serum Creatinine', 'โ (reduced GFR)'),
('Blood Pressure', 'โ (Hypertension prominent)'),
('ASO titre', 'โ in post-streptococcal GN'),
('C3 Complement', 'โ in PSGN, MPGN, SLE'),
('ANCA/ANA', '+ve in vasculitis/SLE nephritis'),
('Oedema type', 'Periorbital; associated with HTN'),
]
for i, (test, result) in enumerate(nephritic):
y = 1.5 + i*0.6
add_rect(sl, 6.8, y, 6.2, 0.52, C_DARKBLUE if i%2==0 else RGBColor(0x02,0x4E,0x7C))
add_textbox(sl, test, 6.9, y+0.06, 2.8, 0.42, size=11, color=C_YELLOW)
add_textbox(sl, result, 9.7, y+0.06, 3.2, 0.42, size=11, color=C_WHITE)
add_rect(sl, 0.3, 6.55, 12.73, 0.75, RGBColor(0x01,0x28,0x45))
add_textbox(sl, '๐ Ref: Brenner & Rector\'s The Kidney, 2-Volume Set | Harrison\'s Principles of Internal Medicine 22e (2025)',
0.4, 6.58, 12.5, 0.7, size=10, color=C_LGRAY)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE E: IMAGING INVESTIGATIONS
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'IMAGING INVESTIGATIONS IN OEDEMA')
imaging = [
('CHEST X-RAY (CXR)', C_HEADER,
[('Cardiomegaly', 'Cardiothoracic ratio > 0.5 โ Heart failure'),
('Bat-wing shadowing', 'Perihilar bilateral opacities โ Pulmonary oedema'),
('Kerley B lines', 'Horizontal lines at lung base โ interstitial oedema'),
('Pleural effusion', 'Blunting of costophrenic angle'),
('Water bottle sign', 'Globular cardiac silhouette โ Pericardial effusion')]),
('ECHOCARDIOGRAPHY', C_GREEN,
[('LVEF', 'Normal โฅ55%; <40% = HFrEF; 40-49% = HFmrEF'),
('E/A ratio', 'E/A <0.8 โ Grade I diastolic dysfunction'),
('Valve assessment', 'Mitral stenosis, regurgitation'),
('Pericardial effusion', 'Collapse of RA/RV in tamponade'),
('IVC diameter', '>21mm + <50% collapse โ elevated RAP')]),
('USG ABDOMEN + DOPPLER', C_ORANGE,
[('Ascites', 'Free fluid in peritoneal cavity'),
('Portal vein diameter', '>13 mm โ Portal hypertension'),
('Hepatic vein Doppler', 'Loss of triphasic flow โ cirrhosis/Budd-Chiari'),
('IVC Doppler', 'Absent pulsatility โ tamponade/CCF'),
('Splenomegaly', '>12 cm โ portal HTN, haematological cause')]),
('LIMB DOPPLER / MRI', C_PINK,
[('Venous Duplex', 'Non-compressible vein + absent flow โ DVT'),
('Lymphoscintigraphy', 'Dermal backflow = Lymphoedema; gold standard'),
('CT venogram', 'IVC obstruction, extrinsic compression'),
('MRI soft tissue', 'Soft tissue oedema, bone marrow oedema'),
('PET-CT', 'Malignancy-related lymphoedema/obstruction')]),
]
for col_i, (title, hdr_color, items) in enumerate(imaging):
x = 0.2 + col_i * 3.27
add_rect(sl, x, 0.85, 3.1, 0.45, hdr_color)
add_textbox(sl, title, x+0.05, 0.87, 3.0, 0.4, size=10, bold=True,
color=C_BG, align=PP_ALIGN.CENTER)
for row_i, (test, finding) in enumerate(items):
y = 1.4 + row_i * 1.16
add_rect(sl, x, y, 3.1, 0.5, C_DARKBLUE)
add_textbox(sl, test, x+0.05, y+0.02, 3.0, 0.25, size=10, bold=True, color=hdr_color)
add_textbox(sl, finding, x+0.05, y+0.27, 3.0, 0.4, size=9.5, color=C_WHITE)
add_rect(sl, 0.2, 7.15, 12.93, 0.28, RGBColor(0x01,0x28,0x45))
add_textbox(sl, '๐ Ref: Grainger & Allison\'s Diagnostic Radiology | Braunwald\'s Heart Disease 12e | Brenner & Rector\'s Kidney',
0.3, 7.16, 12.7, 0.25, size=9, color=C_LGRAY)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE F: SECTION DIVIDER โ MATERIA MEDICA
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Section Header')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_rect(sl, 0, 3.0, 13.33, 0.08, C_YELLOW)
add_textbox(sl, '๐ MATERIA MEDICA', 1.5, 2.3, 10, 0.9,
size=36, bold=True, color=C_YELLOW, align=PP_ALIGN.CENTER)
add_textbox(sl, 'Therapeutic Formulations for the Management of Oedema',
1.5, 3.3, 10, 0.7, size=16, color=C_LGRAY, align=PP_ALIGN.CENTER)
add_textbox(sl, 'Diuretics โข RAAS Agents โข Albumin โข Supportive Therapy',
1.5, 4.1, 10, 0.6, size=14, color=C_HEADER, align=PP_ALIGN.CENTER)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE G: LOOP DIURETICS โ DETAILED TABLE
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'MATERIA MEDICA โ LOOP DIURETICS (HIGH-CEILING DIURETICS)')
# Mechanism banner
add_rect(sl, 0.3, 0.85, 12.73, 0.55, RGBColor(0x00,0x60,0x8A))
add_textbox(sl, 'โ๏ธ MECHANISM: Inhibit Naโบ-Kโบ-2Clโป co-transporter (NKCC2) in thick ascending limb of Loop of Henle โ '
'inhibit 20โ25% of filtered Naโบ reabsorption โ powerful diuresis. '
'Also cause acute venodilation (โ preload) via prostaglandin release.',
0.4, 0.87, 12.5, 0.5, size=10.5, color=C_WHITE)
rows_loop = [
('DRUG', 'DOSE (ORAL)', 'DOSE (IV)', 'BIOAVAILABILITY', 'DURATION', 'SPECIAL NOTES'),
('Furosemide\n(Lasixยฎ)', '20โ80 mg\nonce/twice daily', '20โ80 mg IV\n(double oral dose)', '10โ90% (variable)', '4โ6 hrs', 'Drug of choice acute pulm. oedema; ototoxic at high doses; monitor Kโบ & creatinine'),
('Bumetanide\n(Bumexยฎ)', '0.5โ2 mg\nonce daily', '0.5โ1 mg IV', '80โ100% (reliable)', '4โ6 hrs', 'Preferred when oral bioavailability is concern; 40x more potent than furosemide mg-for-mg'),
('Torsemide\n(Demadexยฎ)', '5โ20 mg\nonce daily', '5โ20 mg IV', '80โ100% (reliable)', '12โ16 hrs', 'Longer duration โ better compliance; metabolised hepatically; less ototoxic'),
('Ethacrynic acid\n(Edecrinยฎ)', '50โ200 mg/day', '50 mg IV', '~100%', '6โ8 hrs', 'ONLY loop diuretic for sulfa allergy; more ototoxic than furosemide'),
]
tbl = sl.shapes.add_table(len(rows_loop), 6,
Inches(0.2), Inches(1.5), Inches(12.93), Inches(5.7)).table
col_ws = [1.8, 1.8, 1.8, 1.7, 1.2, 4.63]
for i, cw in enumerate(col_ws):
tbl.columns[i].width = Inches(cw)
for r_idx, row_data in enumerate(rows_loop):
hdr = r_idx == 0
bg = C_HEADER if hdr else (C_DARKBLUE if r_idx%2==1 else RGBColor(0x02,0x4E,0x7C))
tc = C_BG if hdr else C_WHITE
sz = 11 if hdr else 10
for c_idx, txt in enumerate(row_data):
cell = tbl.cell(r_idx, c_idx)
set_cell_bg(cell, bg)
set_cell_text(cell, txt, size=sz, bold=hdr, color=tc,
align=PP_ALIGN.CENTER if c_idx < 2 else PP_ALIGN.LEFT)
add_rect(sl, 0.2, 7.15, 12.93, 0.28, RGBColor(0x01,0x28,0x45))
add_textbox(sl, '๐ Ref: Lippincott Illustrated Reviews: Pharmacology (2023) | The Washington Manual of Medical Therapeutics | Goodman & Gilman\'s Pharmacological Basis of Therapeutics',
0.3, 7.16, 12.7, 0.25, size=9, color=C_LGRAY)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE H: THIAZIDE + POTASSIUM-SPARING + ALDOSTERONE ANTAGONISTS
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'MATERIA MEDICA โ THIAZIDES, Kโบ-SPARING & ALDOSTERONE ANTAGONISTS')
# Section 1 - Thiazides
add_rect(sl, 0.2, 0.85, 12.93, 0.42, RGBColor(0x02,0x6A,0x4F))
add_textbox(sl, '1๏ธโฃ THIAZIDE / THIAZIDE-LIKE DIURETICS โ Inhibit NaCl co-transporter (NCC) in distal convoluted tubule',
0.3, 0.87, 12.7, 0.38, size=11.5, bold=True, color=C_WHITE)
thiazide_rows = [
('DRUG', 'DOSE', 'USES IN OEDEMA', 'NOTES'),
('Hydrochlorothiazide (HCTZ)', '12.5โ50 mg/day', 'Mild oedema, HTN', 'Hypokalaemia, hyperuricaemia, hyperglycaemia'),
('Chlorthalidone', '12.5โ25 mg/day', 'Hypertension + mild oedema', 'Longer acting (48โ72h); preferred over HCTZ in guidelines'),
('Indapamide', '1.25โ2.5 mg/day', 'Hypertension + oedema', 'Less metabolic SE; used in CKD'),
('Metolazone', '2.5โ10 mg/day', 'Diuretic resistance (with loop)', 'Synergistic with furosemide in resistant oedema; very potent combination'),
]
tbl_t = sl.shapes.add_table(len(thiazide_rows), 4,
Inches(0.2), Inches(1.32), Inches(12.93), Inches(2.1)).table
for i, cw in enumerate([2.5, 1.5, 3.0, 5.93]):
tbl_t.columns[i].width = Inches(cw)
for r_idx, rd in enumerate(thiazide_rows):
hdr = r_idx == 0
bg = RGBColor(0x02,0x6A,0x4F) if hdr else (C_DARKBLUE if r_idx%2==1 else RGBColor(0x02,0x4E,0x7C))
tc = C_WHITE
for c_idx, txt in enumerate(rd):
cell = tbl_t.cell(r_idx, c_idx)
set_cell_bg(cell, bg)
set_cell_text(cell, txt, size=10, bold=hdr, color=tc, align=PP_ALIGN.LEFT)
# Section 2 - K-sparing / Aldosterone antagonists
add_rect(sl, 0.2, 3.55, 12.93, 0.42, RGBColor(0x6A,0x02,0x4F))
add_textbox(sl, '2๏ธโฃ POTASSIUM-SPARING & ALDOSTERONE ANTAGONISTS โ Block ENaC (amiloride) or MR receptor (spironolactone, eplerenone)',
0.3, 3.57, 12.7, 0.38, size=11.5, bold=True, color=C_WHITE)
ksparing_rows = [
('DRUG', 'DOSE', 'KEY INDICATION', 'MECHANISM / NOTES'),
('Spironolactone', '25โ400 mg/day',
'Cirrhotic ascites (1st choice)\nNephrotic, CCF',
'Aldosterone antagonist; gynecomastia; hyperKโบ risk; avoid if Kโบ>5.5'),
('Eplerenone', '25โ50 mg/day',
'Heart failure (HFrEF post-MI)',
'Selective MR antagonist; fewer anti-androgenic SE; more expensive'),
('Amiloride', '5โ10 mg/day',
'Combination with loop/thiazide',
'Blocks ENaC in collecting duct; Kโบ-sparing without MR blockade'),
('Triamterene', '50โ100 mg twice daily',
'Combination therapy',
'Similar to amiloride; less commonly used; risk of renal stones'),
]
tbl_k = sl.shapes.add_table(len(ksparing_rows), 4,
Inches(0.2), Inches(4.02), Inches(12.93), Inches(2.65)).table
for i, cw in enumerate([2.0, 1.8, 2.93, 6.2]):
tbl_k.columns[i].width = Inches(cw)
for r_idx, rd in enumerate(ksparing_rows):
hdr = r_idx == 0
bg = RGBColor(0x6A,0x02,0x4F) if hdr else (C_DARKBLUE if r_idx%2==1 else RGBColor(0x02,0x4E,0x7C))
for c_idx, txt in enumerate(rd):
cell = tbl_k.cell(r_idx, c_idx)
set_cell_bg(cell, bg)
set_cell_text(cell, txt, size=10, bold=hdr, color=C_WHITE, align=PP_ALIGN.LEFT)
add_rect(sl, 0.2, 7.15, 12.93, 0.28, RGBColor(0x01,0x28,0x45))
add_textbox(sl, '๐ Ref: Lippincott Illustrated Reviews: Pharmacology | Comprehensive Clinical Nephrology 7e | Brenner & Rector\'s The Kidney | The Washington Manual',
0.3, 7.16, 12.7, 0.25, size=9, color=C_LGRAY)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE I: DISEASE-SPECIFIC TREATMENT TABLE
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'MATERIA MEDICA โ DISEASE-SPECIFIC TREATMENT OF OEDEMA')
disease_rows = [
('CAUSE OF OEDEMA', 'FIRST-LINE DRUG(S)', 'DOSE / ROUTE', 'ADDITIONAL AGENTS'),
('Acute Pulmonary Oedema\n(Cardiogenic)', 'IV Furosemide', '40โ80 mg IV stat', 'Oโ, morphine, nitrates (GTN sublingual/IV), positive pressure ventilation (BiPAP/CPAP)'),
('Chronic Cardiac Oedema\n(CHF / CCF)', 'Furosemide + Spironolactone', 'Frusemide 20โ80 mg OD\nSpiro 25โ50 mg OD', 'ACE inhibitor (enalapril) / ARB; beta-blocker; SGLT2i (dapagliflozin)'),
('Nephrotic Syndrome', 'Furosemide\n(ยฑ Albumin infusion)', 'Frusemide 40โ120 mg PO/IV\n20% Albumin 1g/kg IV if severe', 'Salt restriction (<2g/day); ACEi/ARB (reduce proteinuria); treat underlying cause'),
('Cirrhotic Ascites\n/ Hepatic Oedema', 'Spironolactone ยฑ Furosemide', 'Spiro 100 mg + Furo 40 mg\n(titrate in 5:2 ratio)', 'Naโบ restriction; therapeutic paracentesis (โฅ5L); terlipressin for HRS; TIPS'),
('DVT-related oedema', 'Anticoagulation\n(not diuretics)', 'LMWH โ Rivaroxaban/Apixaban\nor Warfarin (INR 2โ3)', 'Compression stockings 30โ40 mmHg; limb elevation; no diuretics'),
('Lymphoedema', 'No specific drug\n(mechanical treatment)', 'Complete Decongestive\nTherapy (CDT)', 'Compression bandaging; lymphatic massage; for filariasis: DEC 6mg/kg ร12 days'),
('Cerebral Oedema', 'Mannitol (osmotic)', '20% Mannitol 0.5โ1 g/kg IV\nover 15โ20 min', 'Dexamethasone (vasogenic); ICP monitoring; avoid hypotonic fluids'),
('Angioneurotic Oedema\n(Allergic/Anaphylaxis)', 'Adrenaline (Epinephrine)', '0.5 mg IM (1:1000)\nEpiPenยฎ 0.3 mg', 'Antihistamines (IV chlorpheniramine 10 mg); IV hydrocortisone 200 mg; airway management'),
('Myxoedema\n(Hypothyroidism)', 'Levothyroxine', '25โ50 mcg OD โ titrate\nto TSH normalisation', 'No diuretics required; oedema resolves with thyroid replacement'),
('Drug-induced Oedema\n(CCBs, steroids, NSAIDs)', 'Withdraw offending drug', 'โ ', 'Switch CCB to RAAS agent; if unavoidable, add ACEi/ARB to offset CCB oedema'),
]
tbl_d = sl.shapes.add_table(len(disease_rows), 4,
Inches(0.15), Inches(0.88), Inches(13.03), Inches(6.5)).table
for i, cw in enumerate([2.6, 2.5, 2.5, 5.43]):
tbl_d.columns[i].width = Inches(cw)
for r_idx, rd in enumerate(disease_rows):
hdr = r_idx == 0
bg = C_HEADER if hdr else (C_DARKBLUE if r_idx%2==1 else RGBColor(0x02,0x4E,0x7C))
tc = C_BG if hdr else C_WHITE
sz = 10 if hdr else 9.5
for c_idx, txt in enumerate(rd):
cell = tbl_d.cell(r_idx, c_idx)
set_cell_bg(cell, bg)
set_cell_text(cell, txt, size=sz, bold=hdr, color=tc, align=PP_ALIGN.LEFT)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE J: OTHER PHARMACOLOGICAL AGENTS
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'MATERIA MEDICA โ ADJUNCT & SPECIALISED PHARMACOLOGICAL AGENTS')
agents = [
('๐ HUMAN ALBUMIN SOLUTION', C_HEADER, RGBColor(0x01,0x3A,0x63),
[('Indication', 'Severe nephrotic oedema with albumin <2.0 g/dL; SBP; hepatorenal syndrome'),
('Formulation', '20% (100 ml vials) or 25% IV infusion'),
('Dose', '1 g/kg body weight IV; infuse over 2โ4 hrs; follow with furosemide'),
('Mechanism', 'Temporarily restores plasma oncotic pressure โ mobilises interstitial fluid'),
('Caution', 'Expensive; effect transient in nephrotic syndrome; risk of pulm. oedema')]),
('๐ซ VASOPRESSIN ANTAGONISTS\n(VAPTANS)', C_GREEN, RGBColor(0x01,0x3A,0x3A),
[('Drug', 'Tolvaptan (oral); Conivaptan (IV)'),
('Mechanism', 'Block V2 receptors in collecting duct โ aquaresis (water without Naโบ loss)'),
('Indication', 'Euvolaemic/hypervolaemic hyponatraemia (SIADH, CCF, cirrhosis)'),
('Dose (Tolvaptan)', '15 mg OD orally (titrate to 60 mg OD)'),
('Caution', 'Hepatotoxic (tolvaptan); rapid Naโบ correction โ osmotic demyelination; expensive')]),
('๐งฌ NATRIURETIC PEPTIDES', C_ORANGE, RGBColor(0x3A,0x1A,0x01),
[('Drug', 'Nesiritide (recombinant BNP), IV'),
('Mechanism', 'Binds NPR-A โ โ cGMP โ venous/arterial dilation + natriuresis'),
('Indication', 'Acute decompensated heart failure (ADHF) โ symptomatic relief of dyspnoea'),
('Dose', '2 mcg/kg IV bolus โ 0.01 mcg/kg/min infusion'),
('Note', 'Not shown to reduce mortality; no longer recommended as routine per ACC/AHA 2022')]),
('๐ฟ HERBAL / TRADITIONAL (SIDDHA/AYURVEDA)', C_YELLOW, RGBColor(0x2E,0x25,0x00),
[('Punarnava (Boerhavia diffusa)', 'Diuretic; used in oedema due to kidney/liver disease'),
('Palash (Butea monosperma)', 'Antifilarial, anti-inflammatory properties'),
('Gokhru (Tribulus terrestris)', 'Diuretic; used in nephrotic oedema, dysuria'),
('Shvadamstra (Tribulus)', 'Naโบ excretion โ; used in cardiac oedema'),
('Note', 'Limited RCT evidence; use only as adjunct; never replace evidence-based therapy')]),
]
for col_i, (title, hdr_color, bg_color, items) in enumerate(agents):
x = 0.2 + col_i * 3.27
add_rect(sl, x, 0.85, 3.1, 0.55, hdr_color)
add_textbox(sl, title, x+0.05, 0.87, 3.0, 0.5, size=9.5, bold=True,
color=C_BG, align=PP_ALIGN.CENTER)
for row_i, (label, detail) in enumerate(items):
y = 1.5 + row_i * 1.16
add_rect(sl, x, y, 3.1, 1.08, bg_color)
add_textbox(sl, label, x+0.07, y+0.03, 3.0, 0.3, size=9.5, bold=True, color=hdr_color)
add_textbox(sl, detail, x+0.07, y+0.33, 2.96, 0.72, size=9, color=C_WHITE)
add_rect(sl, 0.2, 7.15, 12.93, 0.28, RGBColor(0x01,0x28,0x45))
add_textbox(sl, '๐ Ref: Goodman & Gilman\'s Pharmacological Basis of Therapeutics | Katzung\'s Basic & Clinical Pharmacology 16e | Lippincott Illustrated Reviews: Pharmacology',
0.3, 7.16, 12.7, 0.25, size=9, color=C_LGRAY)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE K: DIURETIC COMPARISON CHART (visual bar-like)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'COMPARATIVE EFFICACY CHART โ DIURETIC CLASSES')
# Comparison table
comp_rows = [
('PROPERTY', 'LOOP\n(Furosemide)', 'THIAZIDE\n(HCTZ)', 'K-SPARING\n(Spironolactone)', 'OSMOTIC\n(Mannitol)', 'CARBONIC\nANHYDRASE (Acetazolamide)'),
('Site of action', 'Thick ascending\nLoH (NKCC2)', 'Distal convoluted\ntubule (NCC)', 'Collecting duct\n(MR/ENaC)', 'Proximal tubule\n+ LoH (osmotic)', 'Proximal tubule\n(CA enzyme)'),
('Natriuretic potency', 'โ
โ
โ
โ
โ
\n(highest)', 'โ
โ
โ
โโ', 'โ
โ
โโโ', 'โ
โ
โ
โโ', 'โ
โ
โโโ'),
('Onset IV', '5 min', 'N/A (oral only)', 'N/A (oral only)', '1โ5 min', '5โ15 min'),
('Kโบ effect', 'โโ Hypokalaemia', 'โ Hypokalaemia', 'โ Hyperkalaemia', 'Neutral', 'โ Mild hypokalaemia'),
('Use in oedema', 'Heart failure,\nNephrotic, renal', 'Hypertension,\nmild oedema', 'Ascites, CCF,\nnephrotic', 'Cerebral oedema,\nAcute glaucoma', 'Altitude sickness,\nAlkalinisation'),
('Ototoxicity', 'Yes (high dose)', 'No', 'No', 'No', 'No'),
('Contraindication', 'Anuria, sulfa\nallergy (use\nethacrynic acid)', 'Gout, severe\nhypokalaemia', 'Hyperkalaemia,\nGFR <30', 'Pulmonary\noedema, anuria', 'Hepatic cirrhosis\n(โ ammonia)'),
]
tbl_c = sl.shapes.add_table(len(comp_rows), 6,
Inches(0.15), Inches(0.88), Inches(13.03), Inches(6.4)).table
for i, cw in enumerate([2.1, 2.0, 2.0, 2.3, 2.0, 2.63]):
tbl_c.columns[i].width = Inches(cw)
for r_idx, rd in enumerate(comp_rows):
hdr = r_idx == 0
if hdr:
bg = C_HEADER; tc = C_BG; sz = 10
elif r_idx % 2 == 1:
bg = C_DARKBLUE; tc = C_WHITE; sz = 9.5
else:
bg = RGBColor(0x02,0x4E,0x7C); tc = C_WHITE; sz = 9.5
for c_idx, txt in enumerate(rd):
cell = tbl_c.cell(r_idx, c_idx)
set_cell_bg(cell, bg)
set_cell_text(cell, txt, size=sz, bold=(hdr or c_idx==0), color=tc,
align=PP_ALIGN.CENTER)
add_rect(sl, 0.2, 7.33, 12.93, 0.1, RGBColor(0x01,0x28,0x45))
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE L: DIURETIC RESISTANCE โ MANAGEMENT ALGORITHM
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'DIURETIC RESISTANCE โ CAUSES & MANAGEMENT')
# Left: causes
add_rect(sl, 0.2, 0.85, 5.5, 0.42, RGBColor(0xD6,0x2B,0x2B))
add_textbox(sl, 'โ ๏ธ CAUSES OF DIURETIC RESISTANCE', 0.3, 0.87, 5.3, 0.38, size=12, bold=True, color=C_WHITE)
causes = [
'1. Non-compliance with Naโบ restriction (>2g/day intake)',
'2. Poor oral bioavailability of furosemide (10โ90%)',
'3. Reduced renal blood flow (โ drug delivery to tubule)',
'4. RAAS activation โ compensatory Naโบ retention at distal nephron',
'5. Nephron remodelling โ distal tubule hypertrophy (chronic use)',
'6. NSAIDs โ block prostaglandin-mediated diuresis',
'7. Hypoalbuminaemia โ โ drug protein binding & tubular delivery',
'8. Underlying disease progression (CCF, CKD)',
]
for i, c in enumerate(causes):
y = 1.35 + i*0.6
add_rect(sl, 0.2, y, 5.5, 0.55, C_DARKBLUE if i%2==0 else RGBColor(0x02,0x4E,0x7C))
add_textbox(sl, c, 0.3, y+0.05, 5.3, 0.46, size=10, color=C_WHITE)
# Right: management steps
add_rect(sl, 6.0, 0.85, 7.1, 0.42, RGBColor(0x02,0x6A,0x4F))
add_textbox(sl, 'โ
MANAGEMENT STRATEGY', 6.1, 0.87, 6.9, 0.38, size=12, bold=True, color=C_WHITE)
mgmt = [
('Step 1', 'Ensure Naโบ restriction (<2g/day) and compliance; weigh daily'),
('Step 2', 'Increase dose of loop diuretic (up to ceiling dose)'),
('Step 3', 'Switch oral โ IV furosemide (2โ2.5x oral dose IV)'),
('Step 4', 'Add metolazone 2.5โ10 mg PO + furosemide (sequential nephron blockade)'),
('Step 5', 'Add spironolactone (blocks RAAS-driven distal Naโบ retention)'),
('Step 6', 'Consider continuous IV furosemide infusion (1โ10 mg/hr)'),
('Step 7', 'Tolvaptan (V2 antagonist) for hyponatraemia + oedema (short-term)'),
('Step 8', 'Ultrafiltration / aquapheresis if pharmacotherapy fails'),
]
for i, (step, action) in enumerate(mgmt):
y = 1.35 + i*0.6
add_rect(sl, 6.0, y, 7.1, 0.55, C_DARKBLUE if i%2==0 else RGBColor(0x02,0x4E,0x7C))
add_textbox(sl, step, 6.1, y+0.05, 1.0, 0.46, size=10, bold=True, color=C_GREEN)
add_textbox(sl, action, 7.15, y+0.05, 5.85, 0.46, size=10, color=C_WHITE)
add_rect(sl, 0.2, 7.15, 12.93, 0.28, RGBColor(0x01,0x28,0x45))
add_textbox(sl, '๐ Ref: Comprehensive Clinical Nephrology 7e (Feehally) | Brenner & Rector\'s The Kidney | Ellison DH, Felker GM. NEJM 2017;377:1964',
0.3, 7.16, 12.7, 0.25, size=9, color=C_LGRAY)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE M: DRUG-INDUCED OEDEMA โ DETAILED TABLE
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'DRUG-INDUCED OEDEMA โ MATERIA MEDICA (CAUSATIVE DRUGS)')
drug_rows = [
('DRUG CLASS', 'EXAMPLES', 'MECHANISM', 'MANAGEMENT'),
('Calcium Channel\nBlockers (CCBs)', 'Amlodipine, Nifedipine,\nFelodipine', 'Precapillary arteriolar dilation > venular โ โ capillary hydrostatic pressure; NOT Naโบ retention',
'Add ACEi/ARB (reduce capillary pressure); switch to diltiazem/verapamil; elevate limbs'),
('NSAIDs', 'Ibuprofen, Naproxen,\nDiclofenac, COX-2 inhibitors', 'Block renal PGEโ โ afferent arteriolar vasoconstriction โ โ GFR โ Naโบ & water retention',
'Discontinue NSAID; switch to paracetamol; use diuretics if essential; monitor renal function'),
('Corticosteroids', 'Prednisolone, Dexamethasone,\nHydrocortisone', 'Mineralocorticoid cross-reactivity โ โ Naโบ reabsorption in collecting duct + ADH potentiation',
'Use minimum dose; dietary Naโบ restriction; spironolactone; use deflazacort (less mineralocorticoid effect)'),
('Thiazolidinediones\n(TZDs)', 'Pioglitazone,\nRosiglitazone', 'PPAR-ฮณ agonist โ โ epithelial Naโบ channel (ENaC) expression in collecting duct โ Naโบ/HโO retention',
'Avoid in heart failure (contraindicated); dose reduction; amiloride can offset Naโบ retention'),
('Oestrogens /\nHormonal therapy', 'OCP, HRT, Tamoxifen', 'Stimulate hepatic angiotensinogen โ โ RAAS activation; mild mineralocorticoid activity',
'Reduce dose; switch to progestogen-only OCP; diuretics if symptomatic'),
('Vasodilators', 'Minoxidil, Hydralazine,\nDiazoxide', 'Reflex RAAS activation + direct renal Naโบ retention (minoxidil โ most prominent)',
'Always combine with loop diuretic when using minoxidil; beta-blocker for reflex tachycardia'),
('Immunosuppressants', 'Cyclosporine, Tacrolimus', 'Renal vasoconstriction โ โ GFR โ Naโบ/HโO retention; cyclosporine โ endothelin release',
'Monitor renal function; dose reduction; Caยฒโบ channel blockers for hypertension'),
]
tbl_dr = sl.shapes.add_table(len(drug_rows), 4,
Inches(0.15), Inches(0.88), Inches(13.03), Inches(6.5)).table
for i, cw in enumerate([2.0, 2.3, 4.3, 4.43]):
tbl_dr.columns[i].width = Inches(cw)
for r_idx, rd in enumerate(drug_rows):
hdr = r_idx == 0
bg = C_HEADER if hdr else (C_DARKBLUE if r_idx%2==1 else RGBColor(0x02,0x4E,0x7C))
tc = C_BG if hdr else C_WHITE
sz = 10 if hdr else 9.5
for c_idx, txt in enumerate(rd):
cell = tbl_dr.cell(r_idx, c_idx)
set_cell_bg(cell, bg)
set_cell_text(cell, txt, size=sz, bold=hdr, color=tc, align=PP_ALIGN.LEFT)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE N: REFERENCES
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide('Blank')
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'REFERENCES')
refs = [
('Textbooks', [
'1. Harrison\'s Principles of Internal Medicine, 22nd Edition (2025). McGraw-Hill Medical.',
'2. Goldman-Cecil Medicine, International Edition, 2 Volume Set. Elsevier.',
'3. The Washington Manual of Medical Therapeutics. Wolters Kluwer.',
'4. Goodman & Gilman\'s The Pharmacological Basis of Therapeutics, 14e. McGraw-Hill.',
'5. Lippincott Illustrated Reviews: Pharmacology, 8e. Wolters Kluwer.',
'6. Katzung\'s Basic and Clinical Pharmacology, 16th Edition. McGraw-Hill.',
'7. Brenner and Rector\'s The Kidney, 2-Volume Set. Elsevier.',
'8. Comprehensive Clinical Nephrology, 7th Edition (Feehally et al.). Elsevier.',
]),
('Textbooks (contd.)', [
'9. Braunwald\'s Heart Disease: A Textbook of Cardiovascular Medicine, 12e. Elsevier.',
'10. Grainger & Allison\'s Diagnostic Radiology. Elsevier.',
'11. Frameworks for Internal Medicine. Wiley.',
'12. Symptom to Diagnosis: An Evidence Based Guide, 4th Ed. McGraw-Hill.',
'13. Guyton and Hall Textbook of Medical Physiology, 14e. Elsevier.',
'14. Robbins & Kumar: Basic Pathology, 11e. Elsevier.',
'15. Fuster and Hurst\'s The Heart, 15th Edition. McGraw-Hill.',
]),
('Journal Articles', [
'16. Ellison DH, Felker GM. Diuretic Treatment in Heart Failure. NEJM 2017;377:1964โ1975.',
'17. Cheatham ML et al. How to prescribe loop diuretics in oedema. BMJ 2019;364:l359.',
'18. Ponikowski P et al. 2016 ESC Guidelines for diagnosis & treatment of acute/chronic heart failure. Eur Heart J 2016;37:2129โ2200.',
'19. KDIGO 2021 Clinical Practice Guideline for the Management of Glomerular Diseases.',
'20. WHO. Lymphatic Filariasis Fact Sheet. World Health Organization, 2022.',
]),
]
for col_i, (section_title, ref_list) in enumerate(refs):
x = 0.3 + col_i * 4.35
add_rect(sl, x, 0.88, 4.1, 0.42, C_HEADER if col_i < 2 else C_GREEN)
add_textbox(sl, section_title, x+0.1, 0.9, 3.9, 0.38, size=12, bold=True,
color=C_BG)
for r_i, ref in enumerate(ref_list):
y = 1.38 + r_i * 0.72
add_textbox(sl, ref, x+0.05, y, 4.0, 0.68, size=9, color=C_LGRAY)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SAVE
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
prs.save(OUT)
print(f"โ
Saved: {OUT}")
print(f"Total slides now: {len(prs.slides)}")
PYEOF
cd /tmp/workspace/oedema-ppt && python3 build_ppt.py 2>&1
python3 -c " from pptx.dml.color import RGBColor c = RGBColor(0x00, 0xB4, 0xD8) print(dir(c)) print(type(c)) "
~/oedema-ppt/build_ppt.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/oedema-ppt/build_ppt.py'
cd /tmp/workspace/oedema-ppt && python3 build_ppt.py 2>&1
ls -lh /tmp/workspace/oedema-ppt/OEDEMA_ENHANCED_PAYAL_PARMAR.pptx
OEDEMA ENHANCED PAYAL PARMAR
Presentation ยท PPTX
| Slide | Content |
|---|---|
| Slide 36 | Section Divider - Investigations |
| Slide 37 | Master Investigations Table - 13-row overview table covering urine, biochemistry, cardiac markers, thyroid, imaging, immunology, DVT screen - with diagnosis suggested for each |
| Slide 38 | Cardiac Oedema Investigation Algorithm - Flowchart: CXR + ECG โ Echo โ BNP/NT-proBNP with cutoffs (ESC 2021 guidelines) |
| Slide 39 | Nephrotic vs Nephritic - Side-by-side comparison table: urine protein, microscopy, complement, ASO titre, ANCA, oedema pattern |
| Slide 40 | Imaging Investigations - 4-column layout: CXR / Echo / USG Abdomen+Doppler / Limb Doppler+MRI with specific findings |
| Slide | Content |
|---|---|
| Slide 41 | Section Divider - Materia Medica |
| Slide 42 | Loop Diuretics - Furosemide, Bumetanide, Torsemide, Ethacrynic acid - full table with dose (oral + IV), bioavailability, duration, special notes |
| Slide 43 | Thiazides + K-sparing + Aldosterone Antagonists - Two tables: HCTZ/Chlorthalidone/Metolazone + Spironolactone/Eplerenone/Amiloride with doses and indications |
| Slide 44 | Disease-Specific Treatment Table - 10 conditions covered (acute pulm. oedema, CHF, nephrotic, cirrhotic ascites, DVT, lymphoedema, cerebral oedema, angioedema, myxoedema, drug-induced) |
| Slide 45 | Adjunct Agents - 4-column layout: Human Albumin / Vaptans (Tolvaptan) / Natriuretic Peptides (Nesiritide) / Herbal/Traditional (Punarnava, Gokhru, Palash) |
| Slide 46 | Diuretic Comparison Chart - 8-row comparison table: Loop vs Thiazide vs K-sparing vs Osmotic vs Carbonic Anhydrase inhibitor (site, potency, K+ effect, contraindications) |
| Slide 47 | Diuretic Resistance - Causes (8 points) + Step-by-step management algorithm (8 steps including sequential nephron blockade, continuous infusion, ultrafiltration) |
| Slide 48 | Drug-Induced Oedema Table - CCBs, NSAIDs, Corticosteroids, TZDs, Oestrogens, Vasodilators, Immunosuppressants - mechanism + management |
| Slide | Content |
|---|---|
| Slide 49 | Full References - 20 citations: 15 textbooks + 5 journal articles (Harrison's 22e, Goldman-Cecil, Goodman & Gilman, Lippincott Pharmacology, Brenner & Rector's Kidney, Braunwald's Heart Disease, Grainger & Allison Radiology, NEJM 2017 Ellison/Felker, ESC 2021 guidelines, KDIGO 2021, WHO Filariasis) |
NO NOT ALLOPATHIC BUT HOMEOPATHIC MATERIA MEDICA
homeopathic materia medica oedema edema remedies Apis Arsenicum Digitalis Apocynum Lycopodium indications modalities potency
homeopathy repertory oedema dropsy key remedies Natrum muriaticum Rhus tox Lachesis Calcarea carbonica symptoms keynotes
https://hpathy.com/cause-symptoms-treatment/dropsical-affectโฆ
homeopathic materia medica Apocynum cannabinum Digitalis Strophanthus Helleborus Niger oedema dropsy keynotes symptoms potency dose
~/oedema-ppt/build_homeo_ppt.py
"""
Enhanced Oedema PPT - HOMEOPATHIC MATERIA MEDICA version
Adds: Investigations slides + Homeopathic Materia Medica slides with full detail
Source: Boericke's Pocket Manual, Allen's Keynotes, H'pathy.com, Clarke's Dictionary
"""
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
SRC = '/tmp/workspace/attachments/8fefbaa9-e98f-43f4-8e0b-a4fef60ca73e/OEDEMA PAYAL PARMAR.pptx'
OUT = '/tmp/workspace/oedema-ppt/OEDEMA_HOMEOPATHIC_PAYAL_PARMAR.pptx'
prs = Presentation(SRC)
W = prs.slide_width
H = prs.slide_height
# Colour palette
C_BG = RGBColor(0x0D, 0x1B, 0x2A)
C_HEADER = RGBColor(0x00, 0xB4, 0xD8)
C_WHITE = RGBColor(0xFF, 0xFF, 0xFF)
C_YELLOW = RGBColor(0xFF, 0xD6, 0x00)
C_GREEN = RGBColor(0x06, 0xD6, 0xA0)
C_ORANGE = RGBColor(0xFF, 0x77, 0x22)
C_PINK = RGBColor(0xFF, 0x4D, 0x6D)
C_LGRAY = RGBColor(0xD0, 0xEA, 0xFF)
C_DARKBLUE = RGBColor(0x02, 0x36, 0x5E)
C_MID = RGBColor(0x02, 0x4E, 0x7C)
C_GOLD = RGBColor(0xFF, 0xA5, 0x00)
C_PURPLE = RGBColor(0x7B, 0x2F, 0xBE)
C_TEAL2 = RGBColor(0x00, 0x8B, 0x8B)
def get_layout(name):
for l in prs.slide_layouts:
if l.name == name:
return l
return prs.slide_layouts[6]
def add_slide(layout_name='Blank'):
return prs.slides.add_slide(get_layout(layout_name))
def fill_shape(shape, rgb):
shape.fill.solid()
shape.fill.fore_color.rgb = rgb
def add_rect(slide, l, t, w, h, rgb):
shape = slide.shapes.add_shape(1, Inches(l), Inches(t), Inches(w), Inches(h))
fill_shape(shape, rgb)
shape.line.fill.background()
return shape
def add_textbox(slide, text, l, t, w, h, size=12, bold=False, color=C_WHITE,
align=PP_ALIGN.LEFT, italic=False):
txb = slide.shapes.add_textbox(Inches(l), Inches(t), Inches(w), Inches(h))
txb.text_frame.word_wrap = True
tf = txb.text_frame
tf.clear()
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
return txb
def add_multiline_textbox(slide, lines, l, t, w, h, default_size=11,
default_color=C_WHITE, default_bold=False):
"""lines = list of (text, size, bold, color, italic)"""
txb = slide.shapes.add_textbox(Inches(l), Inches(t), Inches(w), Inches(h))
txb.text_frame.word_wrap = True
tf = txb.text_frame
tf.clear()
for i, line_data in enumerate(lines):
text = line_data[0]
sz = line_data[1] if len(line_data) > 1 else default_size
bold = line_data[2] if len(line_data) > 2 else default_bold
color = line_data[3] if len(line_data) > 3 else default_color
italic = line_data[4] if len(line_data) > 4 else False
if i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
run = p.add_run()
run.text = text
run.font.size = Pt(sz)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
def add_title_bar(slide, title, subtitle=None):
add_rect(slide, 0, 0, 13.33, 0.78, C_DARKBLUE)
add_textbox(slide, title, 0.3, 0.06, 12.7, 0.65, size=20, bold=True,
color=C_HEADER, align=PP_ALIGN.LEFT)
if subtitle:
add_textbox(slide, subtitle, 0.3, 0.52, 12.7, 0.3, size=10,
color=C_LGRAY, align=PP_ALIGN.LEFT)
def set_cell_bg(cell, rgb):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
solidFill = etree.SubElement(tcPr, qn('a:solidFill'))
srgbClr = etree.SubElement(solidFill, qn('a:srgbClr'))
srgbClr.set('val', f'{rgb[0]:02X}{rgb[1]:02X}{rgb[2]:02X}')
def set_cell_text(cell, text, size=10, bold=False, color=C_WHITE,
align=PP_ALIGN.LEFT):
tf = cell.text_frame
tf.word_wrap = True
tf.clear()
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(size)
run.font.bold = bold
run.font.color.rgb = color
def ref_bar(slide, text):
add_rect(slide, 0, 7.18, 13.33, 0.3, RGBColor(0x01, 0x1A, 0x33))
add_textbox(slide, text, 0.3, 7.19, 12.9, 0.27, size=8.5, color=C_LGRAY)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# INVESTIGATION SLIDES (kept from previous version, rewritten cleanly)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# โโ SLIDE 36: Section divider โ Investigations
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_rect(sl, 0, 2.95, 13.33, 0.07, C_HEADER)
add_textbox(sl, '๐ฌ INVESTIGATIONS IN OEDEMA', 0.5, 2.3, 12.33, 0.9,
size=34, bold=True, color=C_HEADER, align=PP_ALIGN.CENTER)
add_textbox(sl, 'Targeted laboratory, imaging & special investigations for each aetiology',
0.5, 3.3, 12.33, 0.6, size=16, color=C_LGRAY, align=PP_ALIGN.CENTER)
# โโ SLIDE 37: Master Investigations Table
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'INVESTIGATIONS IN OEDEMA โ SYSTEM-WISE OVERVIEW')
rows = [
('INVESTIGATION', 'TESTS', 'KEY FINDING', 'DIAGNOSIS POINTED TO'),
('Urine', 'Dipstick, 24hr protein, Urine PCR,\nMicroscopy, FENA',
'Proteinuria โฅ3.5g/day\nRBC casts, haematuria',
'Nephrotic (โฅ3.5g) / Nephritic syndrome'),
('Serum Biochemistry', 'Albumin, Total Protein, LFT,\nElectrolytes, Urea, Creatinine',
'Albumin <3.0 g/dL\nโ โ Oncotic pressure',
'Hepatic / Nutritional / Renal oedema'),
('Renal Function', 'Serum creatinine, eGFR,\nBUN, Urine Naโบ, 24hr creatinine clearance',
'eGFR <60 ml/min โ CKD\nOliguria + โ creatinine โ AKI',
'Chronic kidney disease / Acute GN'),
('Cardiac Markers', 'BNP / NT-proBNP\nTroponin I/T, ECG',
'BNP >100 pg/mL = HF\nNT-proBNP >300 pg/mL = HF',
'Cardiogenic oedema (CCF/LVF)'),
('Haematology', 'CBC, ESR, CRP, PT/INR,\nAPTT, D-Dimer',
'Normocytic anaemia, โCRP\nD-Dimer >500 โ DVT/PE screen',
'Liver disease / Infection / DVT'),
('Thyroid', 'TSH, Free T3, Free T4,\nAnti-TPO antibody',
'TSH โ + FT4 โ โ Hypothyroidism\nTSH โ โ Hyperthyroidism (pretibial)',
'Myxoedema / Graves\' disease'),
('Imaging โ Chest', 'Chest X-Ray (PA view)',
'Cardiomegaly (CTR >0.5)\nKerley B lines, bat-wing shadowing',
'CCF / Pulmonary oedema'),
('Imaging โ Cardiac', 'Echocardiography\n(2D + Doppler)',
'LVEF <40% = HFrEF\nDiastolic dysfunction = HFpEF\nIVC >21mm = โ RAP',
'Heart failure (any type)'),
('Imaging โ Abdomen', 'USG Abdomen + Portal\nDoppler, CT abdomen',
'Ascites, hepatomegaly\nPortal vein >13mm โ portal HTN',
'Cirrhosis / Portal HTN / Budd-Chiari'),
('Limb Imaging', 'Venous Duplex Doppler\nLymphoscintigraphy',
'Non-compressible vein โ DVT\nDermal backflow โ Lymphoedema',
'DVT / Lymphoedema / Filariasis'),
('Special Tests', 'SAAG (serum-ascites albumin gradient)\nBone marrow biopsy (if anaemia)',
'SAAG โฅ1.1 โ portal HTN\nSAAG <1.1 โ TB/malignancy',
'Cirrhosis vs Malignant ascites'),
('Immunology', 'ANA, anti-dsDNA, ANCA\nComplement C3/C4, ASO titre',
'ANA+ + low C3 โ SLE nephritis\nโ ASO โ Post-strep GN',
'Immune glomerulonephritis / SLE'),
('Filariasis Screen', 'Night blood smear (10 PMโ2 AM)\nICT card test, ELISA (IgG4)',
'Microfilaria on smear\nICT +ve',
'Lymphatic filariasis (W. bancrofti)'),
]
tbl = sl.shapes.add_table(len(rows), 4,
Inches(0.18), Inches(0.88), Inches(12.97), Inches(6.5)).table
for i, cw in enumerate([1.9, 3.0, 3.5, 4.57]):
tbl.columns[i].width = Inches(cw)
for r_i, rd in enumerate(rows):
hdr = r_i == 0
bg = C_HEADER if hdr else (C_DARKBLUE if r_i % 2 == 1 else C_MID)
tc = C_BG if hdr else C_WHITE
sz = 10 if hdr else 9.5
for c_i, txt in enumerate(rd):
cell = tbl.cell(r_i, c_i)
set_cell_bg(cell, bg)
set_cell_text(cell, txt, size=sz, bold=hdr, color=tc)
ref_bar(sl, '๐ Harrison\'s Principles of Internal Medicine 22e | Goldman-Cecil Medicine | Braunwald\'s Heart Disease | Brenner & Rector\'s The Kidney')
# โโ SLIDE 38: Investigation flowchart โ cardiac vs renal vs hepatic
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'DIFFERENTIAL INVESTIGATION FLOWCHART โ OEDEMA BY SYSTEM')
# Three column panels
panels = [
('โค๏ธ CARDIAC OEDEMA', C_PINK, RGBColor(0x4A, 0x00, 0x20), [
('ECG', 'LVH, AF, LBBB, ischaemic ST changes'),
('Chest X-Ray', 'Cardiomegaly, Kerley B lines, bat-wing opacities, pleural effusion'),
('BNP / NT-proBNP', 'BNP >100 pg/mL confirms cardiac cause\n(ESC 2021: >35 pg/mL for HF)'),
('Echocardiography', 'LVEF, diastolic function, wall motion, valves, IVC'),
('Urine', 'May show proteinuria (cardiorenal syndrome)'),
('Biochemistry', 'Hyponatraemia, โ creatinine (cardiorenal); โ LFT (congestive)'),
]),
('๐ซ RENAL OEDEMA', C_HEADER, RGBColor(0x00, 0x3A, 0x5C), [
('Urine Dipstick', 'Nephrotic: 3+ protein; Nephritic: blood + protein'),
('24h Urine Protein', 'Nephrotic โฅ3.5 g/day; Nephritic <3.5 g/day'),
('Serum Albumin', '<3.0 g/dL โ โ oncotic pressure โ generalised oedema'),
('Urine Microscopy', 'Nephrotic: oval fat bodies; Nephritic: RBC casts, dysmorphic RBCs'),
('Complement (C3/C4)', 'โ C3 in PSGN, MPGN, SLE nephritis'),
('Renal Biopsy', 'Gold standard for histological classification'),
]),
('๐ซ HEPATIC OEDEMA', C_GREEN, RGBColor(0x00, 0x35, 0x1A), [
('LFT panel', 'Raised bilirubin, โ AST/ALT, โ albumin, โ PT'),
('USG Abdomen', 'Ascites, hepatomegaly/atrophy, splenomegaly, nodular liver'),
('SAAG', 'โฅ1.1 g/dL โ portal HTN; <1.1 โ TB or malignancy'),
('Portal Doppler', 'Reversed flow in portal vein โ advanced cirrhosis'),
('Serum Albumin', 'Low (<3.0 g/dL) due to โ hepatic synthesis'),
('Diagnostic Paracentesis', 'Appearance, SAAG, total protein, LDH, culture'),
]),
]
for col_i, (title, hdr_col, bg_col, items) in enumerate(panels):
x = 0.25 + col_i * 4.35
add_rect(sl, x, 0.88, 4.1, 0.48, hdr_col)
add_textbox(sl, title, x + 0.08, 0.90, 3.95, 0.44,
size=13, bold=True, color=C_BG, align=PP_ALIGN.CENTER)
for row_i, (label, detail) in enumerate(items):
y = 1.44 + row_i * 0.93
add_rect(sl, x, y, 4.1, 0.85, bg_col)
add_textbox(sl, label, x + 0.1, y + 0.04, 3.9, 0.28, size=11, bold=True, color=hdr_col)
add_textbox(sl, detail, x + 0.1, y + 0.32, 3.9, 0.5, size=9.5, color=C_WHITE)
ref_bar(sl, '๐ Symptom to Diagnosis: An Evidence Based Guide 4e | Frameworks for Internal Medicine | Brenner & Rector\'s The Kidney 10e')
# โโ SLIDE 39: Nephrotic vs Nephritic comparison table
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'NEPHROTIC vs NEPHRITIC SYNDROME โ INVESTIGATIONS COMPARISON')
comp_rows = [
('FEATURE', 'NEPHROTIC SYNDROME', 'NEPHRITIC SYNDROME'),
('Proteinuria', 'โฅ 3.5 g/day (massive)', '< 3.5 g/day (mild-moderate)'),
('Haematuria', 'Absent / minimal', 'Present โ smoky/cola urine; RBC casts'),
('Serum Albumin', '< 3.0 g/dL (severe hypoalbuminaemia)', 'Normal or slightly low'),
('Oedema type', 'Generalised; periorbital in AM; anasarca', 'Periorbital; associated with โ BP'),
('Blood Pressure', 'Normal or low (fluid shifts to interstitium)', 'Raised (primary Naโบ retention)'),
('Urine Microscopy', 'Oval fat bodies, fatty casts, lipiduria', 'RBC casts, dysmorphic RBCs, granular casts'),
('Serum Cholesterol', 'โ Hyperlipidaemia (compensatory)', 'Normal'),
('Urine PCR', '> 300 mg/mmol', '50โ300 mg/mmol'),
('Complement (C3)', 'Variable (low in MPGN, SLE)', 'โ in PSGN, SLE, MPGN'),
('ASO Titre', 'Usually normal', 'โ in post-streptococcal GN'),
('Renal Function (GFR)', 'Usually preserved initially', 'Reduced (โ creatinine, โ GFR)'),
('Renal Biopsy', 'MCD, FSGS, Membranous GN, Diabetic nephropathy', 'PSGN, IgA nephropathy, RPGN, SLE class III/IV'),
('Oedema mechanism', 'โ Oncotic pressure (hypoalbuminaemia)', 'โ Hydrostatic pressure (primary Naโบ retention)'),
]
tbl = sl.shapes.add_table(len(comp_rows), 3,
Inches(0.18), Inches(0.88), Inches(12.97), Inches(6.5)).table
for i, cw in enumerate([2.4, 5.28, 5.29]):
tbl.columns[i].width = Inches(cw)
for r_i, rd in enumerate(comp_rows):
hdr = r_i == 0
bg = C_HEADER if hdr else (C_DARKBLUE if r_i % 2 == 1 else C_MID)
tc = C_BG if hdr else C_WHITE
sz = 11 if hdr else 10
for c_i, txt in enumerate(rd):
cell = tbl.cell(r_i, c_i)
set_cell_bg(cell, bg)
set_cell_text(cell, txt, size=sz, bold=hdr or c_i == 0, color=tc)
ref_bar(sl, '๐ Harrison\'s Principles of Internal Medicine 22e | Comprehensive Clinical Nephrology 7e | Robbins & Kumar Basic Pathology')
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# HOMEOPATHIC MATERIA MEDICA SLIDES
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# โโ SLIDE 40: Section Divider โ Homeopathic Materia Medica
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_rect(sl, 0, 3.05, 13.33, 0.07, C_GOLD)
add_textbox(sl, '๐ฟ HOMEOPATHIC MATERIA MEDICA', 0.5, 1.8, 12.33, 1.1,
size=34, bold=True, color=C_GOLD, align=PP_ALIGN.CENTER)
add_textbox(sl, 'Therapeutic Remedies for Oedema / Dropsy', 0.5, 3.2, 12.33, 0.6,
size=18, color=C_LGRAY, align=PP_ALIGN.CENTER)
add_textbox(sl, 'Based on: Boericke\'s Materia Medica | Allen\'s Keynotes | Clarke\'s Dictionary | Kent\'s Repertory',
0.5, 4.0, 12.33, 0.55, size=13, color=C_HEADER, align=PP_ALIGN.CENTER, italic=True)
# โโ SLIDE 41: Overview - Remedy Selection Principle + Master Grid
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'HOMEOPATHIC PRINCIPLE & REMEDY SELECTION IN OEDEMA',
subtitle='Based on: Cause โข Constitution โข Location โข Modalities โข Sensation (totality of symptoms)')
# Principle box
add_rect(sl, 0.2, 0.88, 12.93, 0.7, RGBColor(0x1A, 0x3A, 0x1A))
add_textbox(sl,
'โ๏ธ KEY PRINCIPLE: In homeopathy, oedema (dropsy) is treated by finding a remedy that matches '
'the TOTALITY of the patient\'s symptoms โ including the causative factor (cardiac, renal, hepatic, '
'nutritional, inflammatory), the physical generals, the mental/emotional state, and the characteristic '
'modalities (what makes it better or worse). No single "oedema drug" exists; the similar remedy cures.',
0.3, 0.9, 12.7, 0.65, size=10.5, color=C_WHITE, italic=False)
# Overview grid - remedies by cause
causes_grid = [
('CARDIAC DROPSY', C_PINK, ['Digitalis Purpurea', 'Apocynum Cannabinum', 'Strophanthus', 'Arsenicum Album', 'Cactus Grandiflorus']),
('RENAL DROPSY', C_HEADER, ['Apis Mellifica', 'Arsenicum Album', 'Helleborus Niger', 'Terebinthina', 'Colchicum']),
('HEPATIC DROPSY\n(Cirrhosis / Ascites)', C_GREEN, ['Lycopodium', 'Muriatic Acid', 'Cardus Marianus', 'Chelidonium', 'Natrum Sulph']),
('INFLAMMATORY /\nALLERGIC OEDEMA', C_GOLD, ['Apis Mellifica', 'Bryonia Alba', 'Rhus Toxicodendron', 'Dulcamara', 'Ledum Pal']),
('GENERAL /\nNUTRITIONAL', RGBColor(0xA0, 0x60, 0xFF), ['Acetic Acid', 'Calcarea Carbonica', 'Ferrum Metallicum', 'Natrum Muriaticum', 'Sulphur']),
('LYMPHATIC /\nSKIN OEDEMA', C_ORANGE, ['Graphites', 'Pulsatilla', 'Silicea', 'Lachesis', 'Conium']),
]
for col_i, (cat, col, rems) in enumerate(causes_grid):
x = 0.18 + (col_i % 3) * 4.38
y = 1.7 if col_i < 3 else 4.55
add_rect(sl, x, y, 4.1, 0.42, col)
add_textbox(sl, cat, x + 0.08, y + 0.04, 3.95, 0.35,
size=10.5, bold=True, color=C_BG, align=PP_ALIGN.CENTER)
for ri, rem in enumerate(rems):
ry = y + 0.48 + ri * 0.44
add_rect(sl, x, ry, 4.1, 0.38, C_DARKBLUE if ri % 2 == 0 else C_MID)
add_textbox(sl, f'โข {rem}', x + 0.12, ry + 0.04, 3.85, 0.32, size=10.5, color=C_WHITE)
ref_bar(sl, '๐ Boericke W. Pocket Manual of Materia Medica (9th ed.) | Allen HC. Keynotes and Characteristics | Kent JT. Repertory of Homeopathic Materia Medica')
# โโ HELPER: remedy detail slide (2-column layout)
def remedy_slide(title, subtitle, left_col, right_col, ref_text):
"""
left_col / right_col = list of (header, content_list_or_text, header_color)
"""
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_rect(sl, 0, 0, 13.33, 0.85, C_DARKBLUE)
add_textbox(sl, title, 0.3, 0.06, 12.7, 0.48, size=20, bold=True,
color=C_GOLD, align=PP_ALIGN.LEFT)
add_textbox(sl, subtitle, 0.3, 0.52, 12.7, 0.3, size=10,
color=C_LGRAY, italic=True)
for col_i, col_data in enumerate([left_col, right_col]):
x = 0.2 if col_i == 0 else 6.85
y = 0.95
for hdr, content, hcol in col_data:
add_rect(sl, x, y, 6.28, 0.38, hcol)
add_textbox(sl, hdr, x + 0.1, y + 0.04, 6.1, 0.3,
size=11, bold=True, color=C_BG)
y += 0.42
if isinstance(content, list):
for item in content:
add_rect(sl, x, y, 6.28, 0.44, C_DARKBLUE if y % 1 < 0.5 else C_MID)
add_textbox(sl, f'โข {item}', x + 0.12, y + 0.04,
6.1, 0.37, size=10.5, color=C_WHITE)
y += 0.44
else:
lines = [ln for ln in content.split('\n') if ln.strip()]
block_h = max(len(lines) * 0.44, 0.44)
add_rect(sl, x, y, 6.28, block_h, C_DARKBLUE)
add_textbox(sl, content, x + 0.12, y + 0.04,
6.1, block_h - 0.08, size=10.5, color=C_WHITE)
y += block_h
y += 0.06
ref_bar(sl, ref_text)
return sl
# โโ SLIDE 42: APIS MELLIFICA
remedy_slide(
title='APIS MELLIFICA [Bee Venom] โ Oedema Remedy #1',
subtitle='Source: Honey bee (Apis mellifera) | Potency: 3X, 6C, 30C, 200C | Boericke, Kent, Allen',
left_col=[
('๐ KEYNOTES / CHARACTERISTICS', [
'Sudden, rapid onset of puffy, shining, bag-like swelling',
'Oedema of eyelids, face, lips, extremities โ transparent, watery',
'Burning, stinging, smarting pains (like bee sting)',
'Rosy-red swelling with heat (resembles erysipelas)',
'No thirst despite swelling and fever',
'"Bag of water" sensation in the swollen parts',
], C_PINK),
('๐ฅ CLINICAL INDICATIONS', [
'Angioneurotic oedema (allergic) โ face, lips, larynx',
'Nephrotic syndrome โ periorbital puffiness, albuminuria',
'Ovarian oedema; ascites; hydrothorax; hydrocephalus',
'Urticaria; insect bites; bee stings',
'Acute glomerulonephritis (face puffed, scanty urine)',
'Dropsy of knee; peritoneal oedema (ascites)',
], C_PINK),
],
right_col=[
('โฌ๏ธ AGGRAVATION (WORSE)', [
'Heat in any form โ warm room, warm applications, sun',
'Touch and pressure on swollen part',
'Late afternoon (3โ5 PM)',
'After sleeping; lying down',
'Right side more affected',
], C_ORANGE),
('โฌ๏ธ AMELIORATION (BETTER)', [
'Cold applications โ ice, cold bathing, cold water',
'Open air; uncovering',
'Motion (gentle); sitting erect',
], C_GREEN),
('๐ POTENCY & DOSE', [
'Acute oedema / anaphylaxis: 30C or 200C',
'Chronic dropsy: 6C or 30C 3 times daily',
'Trituration (3X) preferred for serous effusions',
'Inimical to: Lachesis | Complementary: Natrum Mur',
], C_GOLD),
],
ref_text='๐ Boericke W. Pocket Manual of Materia Medica 9e | Allen HC. Keynotes (Apis Mellifica) | hpathy.com'
)
# โโ SLIDE 43: ARSENICUM ALBUM
remedy_slide(
title='ARSENICUM ALBUM [Arsenic Trioxide] โ Oedema Remedy #2',
subtitle='Source: Arsenic trioxide (AsโOโ) | Potency: 6C, 30C, 200C, 1M | Boericke, Allen, Clarke',
left_col=[
('๐ KEYNOTES / CHARACTERISTICS', [
'Puffiness of face with oedema about the eyelids โ waxy, transparent skin',
'Great restlessness and anxiety; fear of death; cannot be alone',
'Burning pains relieved by warmth (opposite of Apis)',
'Oedema with marked weakness and prostration',
'Scanty, dark, albuminous urine; oozing of serum from ulcers',
'Thirst for small sips of water at frequent intervals',
], C_HEADER),
('๐ฅ CLINICAL INDICATIONS', [
'Cardiac dropsy โ heart and lung oedema (Ars. is an important diuretic in homeopathy)',
'Renal dropsy โ nephritis, nephrotic syndrome',
'Anasarca with waxy pale skin; periorbital puffiness',
'Hydrothorax; ascites; generalised oedema',
'Oedema with ulcers on legs, oozing thin serous fluid',
'Diabetic nephropathy with oedema',
], C_HEADER),
],
right_col=[
('โฌ๏ธ AGGRAVATION (WORSE)', [
'After midnight (1โ2 AM) โ classic aggravation time',
'Cold air, cold food, cold drinks, cold applications',
'Exertion, even slight',
'Periodically (every 2 weeks)',
], C_ORANGE),
('โฌ๏ธ AMELIORATION (BETTER)', [
'Warmth in all forms โ warm room, warm applications',
'Hot drinks; company and being attended to',
'Elevating the head',
], C_GREEN),
('๐ POTENCY & DOSE', [
'Acute states: 30C or 200C',
'Constitutional / chronic: 200C or 1M',
'Complementary: Thuja, Nat Sulph | Follows well: Allium cepa',
'Antidoted by: Opium, Ferrum, Graphites',
], C_GOLD),
],
ref_text='๐ Boericke W. Pocket Manual 9e | Allen HC. Keynotes | Clarke JH. Dictionary of Practical Materia Medica | similia.io'
)
# โโ SLIDE 44: APOCYNUM CANNABINUM + DIGITALIS PURPUREA
remedy_slide(
title='APOCYNUM CANNABINUM & DIGITALIS PURPUREA โ Cardiac Dropsy Remedies',
subtitle='Source: Indian Hemp (Apocynum) | Foxglove (Digitalis) | Potency: Tincture, 3Xโ30C',
left_col=[
('๐ฟ APOCYNUM CANNABINUM (Indian Hemp)', [
'Chief remedy for cardiac and renal dropsy',
'Great thirst โ but drinking causes distress to the heart',
'"Gone feeling" at the pit of the stomach; cannot tolerate food',
'Irregular, slow, feeble pulse; diminished frequency is keynote',
'Dropsy of serous membranes: ascites, hydrothorax, hydrocephalus',
'Scanty urine; suppression of urine',
], C_GREEN),
('โ๏ธ APOCYNUM โ MODALITIES & DOSE', [
'Worse: cold weather, cold drinks, uncovering',
'Better: warmth (mild)',
'Dose: Tincture (10 drops TDS) or 3Xโ6X for dropsy',
'Kinship: Strophanthus (cardiac), Apis, Arsenicum, Digitalis',
'Use fresh preparation โ stale preparations lose action',
], C_GREEN),
],
right_col=[
('๐ธ DIGITALIS PURPUREA (Foxglove)', [
'Best homeopathic remedy for cardiac dropsy with feeble, irregular heart',
'Slow, intermittent, weak pulse (as if heart would stop on motion)',
'Frequent desire to take a deep breath',
'Scanty, dark urine; great desire to urinate with little result',
'Scrotum and penis swollen (genital oedema)',
'Cyanosis; general anasarca; mitral regurgitation with oedema',
], C_PINK),
('โ๏ธ DIGITALIS โ MODALITIES & DOSE', [
'Worse: motion, upright position, cold, after eating',
'Better: rest, warmth, empty stomach',
'Dose: 3X trituration or 6Cโ30C',
'Do NOT repeat if pulse becomes slower โ danger sign',
'Compare: Strophanthus, Apocynum, Cactus',
], C_PINK),
],
ref_text='๐ Boericke W. Pocket Manual of Materia Medica | kavithakhomeo.com | Allen HC. Keynotes | hpathy.com'
)
# โโ SLIDE 45: LYCOPODIUM + HELLEBORUS NIGER
remedy_slide(
title='LYCOPODIUM CLAVATUM & HELLEBORUS NIGER โ Hepatic & Anasarca Remedies',
subtitle='Source: Club Moss spores (Lycopodium) | Black Hellebore (Helleborus) | Potency: 30C, 200C',
left_col=[
('๐ฟ LYCOPODIUM CLAVATUM (Club Moss)', [
'Ascites from liver affections, cirrhosis, alcohol abuse',
'Upper body emaciated; lower half enormously swollen',
'One foot cold, the other hot โ characteristic general',
'Hydrothorax; dyspnoea worse lying on back',
'Urine dark and albuminous; dark skin or bluish-white',
'Bloating and flatulence; craving for sweets; 4โ8 PM aggravation',
], C_GREEN),
('โ๏ธ LYCOPODIUM โ MODALITIES & DOSE', [
'Worse: 4โ8 PM; right side; warmth; tight clothing',
'Better: warm drinks; motion; uncovering; after midnight',
'Dose: 30C (constitutional); 200C for deep chronic cases',
'Complementary: Calcarea Carb | Compare: Sulphur, Nux Vomica',
], C_GREEN),
],
right_col=[
('๐บ HELLEBORUS NIGER (Black Hellebore)', [
'General anasarca with unconscious and stupid state',
'Best remedy for hydrocephalus with boring of head into pillow',
'Ascites; effusion into serous cavities; generalised anasarca',
'Dark, smoky, scanty urine โ suppression',
'Involuntary motions and wetting; complete apathy and stupor',
'Cool, pale, waxy skin; absence of fever',
], RGBColor(0x7B, 0x2F, 0xBE)),
('โ๏ธ HELLEBORUS โ MODALITIES & DOSE', [
'Worse: evening and night; uncovering; cold air',
'Better: warmth; wrapping up',
'Dose: 6Cโ30C; useful in end-stage renal/hepatic oedema',
'Compare: Apis (anasarca); Zinc (nervous symptoms)',
'Particularly useful in post-scarlatina dropsy with stupor',
], RGBColor(0x7B, 0x2F, 0xBE)),
],
ref_text='๐ Boericke W. Pocket Manual 9e | hpathy.com Dropsical Affections | Clarke JH. Dictionary of Practical Materia Medica'
)
# โโ SLIDE 46: BRYONIA + RHUS TOX + DULCAMARA + COLCHICUM
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'HOMEOPATHIC MATERIA MEDICA โ INFLAMMATORY OEDEMA REMEDIES')
rems = [
('BRYONIA ALBA', C_ORANGE, [
('Source', 'White Bryony root'),
('Key Oedema', 'Anasarca, oedema of feet; hydrothorax; ascites'),
('Characteristic', 'Great thirst; scanty urine; obstinate constipation'),
('Modality โ', 'Motion (even slightest); heat; lying on painless side'),
('Modality โ', 'Rest; lying on painful side; cold; pressure'),
('Swelling Pattern', 'Increases in daytime, lessens at night'),
('Potency', '6C, 30C, 200C; suits dry, irritable patients'),
]),
('RHUS TOX', C_GREEN, [
('Source', 'Poison Ivy leaves'),
('Key Oedema', 'Dropsy of lower extremities with oozing serous fluid'),
('Characteristic', 'Extreme restlessness; cannot stay still; skin red and swollen'),
('Modality โ', 'Rest; cold; damp weather; initial motion'),
('Modality โ', 'Continued motion; warmth; dry weather'),
('Swelling Pattern', 'Red, shiny, hot, blistered-looking oedema'),
('Potency', '6C, 30C; post-septic or rheumatic oedema'),
]),
('DULCAMARA', C_HEADER, [
('Source', 'Bittersweet (Solanum dulcamara)'),
('Key Oedema', 'Sudden anasarca after overheating + exposure to damp cold'),
('Characteristic', 'General oedema from intermittent fever; bloated face, swollen limbs'),
('Modality โ', 'Cold, damp weather; cold nights after warm days; autumn'),
('Modality โ', 'Dry warm weather; motion'),
('Swelling Pattern', 'Anasarca after rheumatic fever; post-malaria oedema'),
('Potency', '6C, 30C; especially after seasonal change trigger'),
]),
('COLCHICUM', RGBColor(0xA0, 0x60, 0xFF), [
('Source', 'Autumn Crocus corm'),
('Key Oedema', 'Dropsy after scarlatina; hydropericardium; lower limb oedema + cold'),
('Characteristic', 'Dark urine; dropsy with rheumatic/gouty complications'),
('Modality โ', 'Evening; night; damp cold; motion; touch'),
('Modality โ', 'Rest; warmth; sitting upright'),
('Swelling Pattern', 'Legs cold and oedematous; skin pale and dry'),
('Potency', '6Cโ30C; useful post-scarlatina with dark urine'),
]),
]
for col_i, (name, hcol, items) in enumerate(rems):
x = 0.18 + col_i * 3.27
add_rect(sl, x, 0.88, 3.1, 0.45, hcol)
add_textbox(sl, name, x + 0.07, 0.90, 2.97, 0.4,
size=11, bold=True, color=C_BG, align=PP_ALIGN.CENTER)
for ri, (label, val) in enumerate(items):
y = 1.4 + ri * 0.82
add_rect(sl, x, y, 3.1, 0.75, C_DARKBLUE if ri % 2 == 0 else C_MID)
add_textbox(sl, label, x + 0.08, y + 0.03, 2.95, 0.28, size=9.5, bold=True, color=hcol)
add_textbox(sl, val, x + 0.08, y + 0.3, 2.95, 0.42, size=9.5, color=C_WHITE)
ref_bar(sl, '๐ Boericke W. Pocket Manual of Materia Medica 9e | hpathy.com | Allen HC. Keynotes | Kent JT. Lectures on Homeopathic Materia Medica')
# โโ SLIDE 47: ACETIC ACID + CALCAREA CARB + NAT MUR + SULPHUR + PULSATILLA
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'HOMEOPATHIC MATERIA MEDICA โ NUTRITIONAL / CONSTITUTIONAL OEDEMA REMEDIES')
rems2 = [
('ACETIC ACID', C_PINK, [
('Source', 'Glacial Acetic Acid'),
('Key Oedema', 'Best for oedema of lower limbs and abdomen (anasarca); great debility'),
('Characteristics', 'Profuse sweat; intense thirst; emaciation; night sweats; waxy pale face'),
('Potency', '6C, 30C'),
('Compare', 'Arsenicum (restlessness); Apocynum (thirst + dropsy)'),
]),
('CALCAREA CARBONICA', C_ORANGE, [
('Source', 'Middle layer of oyster shell'),
('Key Oedema', 'Dropsy aggravated by bathing; fat, flabby, fair constitution'),
('Characteristics', 'Profuse sweat on head (sour smell); cold, damp feet; chronic oedema'),
('Potency', '30C, 200C, 1M (constitutional remedy)'),
('Compare', 'Lycopodium (liver); Graphites (skin/lymph)'),
]),
('NATRUM MURIATICUM', C_HEADER, [
('Source', 'Common salt (NaCl)'),
('Key Oedema', 'Oedema from grief, prolonged emotional distress; hyponatraemia picture'),
('Characteristics', 'Great emaciation with water-logged tissues; craving for salt; dry mucous membranes'),
('Potency', '30C, 200C (do NOT give low potency โ aggravates)'),
('Compare', 'Apis (no thirst); Sepia (indifference); Pulsatilla (weeping)'),
]),
('SULPHUR', RGBColor(0xFF, 0xC0, 0x00), [
('Source', 'Sublimed sulphur'),
('Key Oedema', 'Hydrothorax with sudden arrest of breathing; dropsy after suppressed eruptions'),
('Characteristics', 'Burning heat in feet at night; dirty, rough skin with bluish spots; cold feet'),
('Potency', '30C, 200C; often used to complete/follow other remedies'),
('Compare', 'Psorinum (chronic dropsy); Lycopodium (liver); Arsenicum'),
]),
('PULSATILLA', C_GREEN, [
('Source', 'Wind Flower (Pulsatilla nigricans)'),
('Key Oedema', 'Oedema of knees, ankles, feet; premenstrual and pregnancy-related oedema'),
('Characteristics', 'Heaviness and weariness in limbs; weeping, mild disposition; no thirst'),
('Potency', '30C, 200C; excellent for cyclical/hormonal oedema'),
('Compare', 'Apis (stinging + no thirst); Ledum (ankles + cold better)'),
]),
]
for col_i, (name, hcol, items) in enumerate(rems2):
x = 0.18 + col_i * 2.59
add_rect(sl, x, 0.88, 2.45, 0.45, hcol)
add_textbox(sl, name, x + 0.05, 0.9, 2.35, 0.4,
size=9.5, bold=True, color=C_BG, align=PP_ALIGN.CENTER)
for ri, (label, val) in enumerate(items):
y = 1.4 + ri * 1.18
add_rect(sl, x, y, 2.45, 1.1, C_DARKBLUE if ri % 2 == 0 else C_MID)
add_textbox(sl, label, x + 0.07, y + 0.04, 2.3, 0.28, size=9, bold=True, color=hcol)
add_textbox(sl, val, x + 0.07, y + 0.32, 2.3, 0.74, size=9, color=C_WHITE)
ref_bar(sl, '๐ Boericke W. Pocket Manual 9e | kavithakhomeo.com | hpathy.com | Allen HC. Keynotes and Characteristics with Comparisons')
# โโ SLIDE 48: Master Comparison Table โ All Remedies
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'HOMEOPATHIC MATERIA MEDICA โ MASTER COMPARISON TABLE (OEDEMA)')
master_rows = [
('REMEDY', 'TYPE OF OEDEMA', 'CHARACTERISTIC KEYNOTES', 'WORSE', 'BETTER', 'POTENCY'),
('Apis Mellifica', 'Allergic, renal,\nangioneurotic',
'Burning-stinging pain; bag-like puffy shiny skin; no thirst; rosy-red swelling',
'Heat; touch;\nafternoon; right side', 'Cold; open air;\nuncovering', '30C, 200C\n(trituration for effusions)'),
('Arsenicum Album', 'Cardiac, renal,\ngeneralised anasarca',
'Restless + anxious; waxy transparent skin; oozing serous ulcers; thirst small sips',
'Midnight (1โ2 AM);\ncold; exertion', 'Heat; hot drinks;\ncompany', '30C, 200C, 1M'),
('Apocynum\nCannabinum', 'Cardiac dropsy,\nascites, anasarca',
'Great thirst but water distresses heart; gone feeling at stomach; feeble slow pulse',
'Cold drinks;\nuncovering', 'Warmth\n(mild)', 'Tincture, 3Xโ6X'),
('Digitalis\nPurpurea', 'Cardiac dropsy\n(mitral, weak heart)',
'Feeble intermittent pulse; scanty dark urine; scrotum oedema; desire for deep breath',
'Motion; upright;\ncold; after eating', 'Rest; warmth;\nempty stomach', '3X trituration;\n6Cโ30C'),
('Lycopodium', 'Hepatic dropsy,\nascites (cirrhosis)',
'Upper emaciated + lower swollen; one foot cold, one hot; dark albuminous urine',
'4โ8 PM; right side;\nwarmth; tight clothing', 'Warm drinks;\nmotion', '30C, 200C'),
('Helleborus Niger', 'Anasarca, ascites,\nhydrocephalus',
'Stupor and apathy; dark scanty urine; boring head into pillow; post-scarlatina',
'Evening; night;\ncold air; uncovering', 'Warmth;\nwrapping up', '6C, 30C'),
('Bryonia Alba', 'Anasarca, ascites,\nhydrothorax',
'Great thirst; constipation; oedema worse in daytime; irritable, wants to be alone',
'Motion; heat;\nmorning', 'Rest; pressure;\nlying on painful side', '6C, 30C, 200C'),
('Rhus Tox', 'Inflammatory oedema\n(post-rheumatic)',
'Restlessness; red hot blistered swelling; oozing of serous fluid from ulcers',
'Rest; damp cold;\ninitial motion', 'Continued motion;\nwarmth; dry', '6C, 30C'),
('Colchicum', 'Post-scarlatinal\ndropsy, hydropericardium',
'Dark urine; lower limbs oedematous and cold; rheumatic/gouty background',
'Evening; damp cold;\nmotion; touch', 'Rest; warmth;\nsitting up', '6C, 30C'),
('Acetic Acid', 'Anasarca with\ndebility, emaciation',
'Intense thirst; profuse sweat; emaciation; waxy pale face; abdominal dropsy',
'Cold applications;\nnight', 'Warmth; rest', '6C, 30C'),
('Pulsatilla', 'Premenstrual,\npregnancy, ankle',
'Heaviness in limbs; no thirst; mild weeping disposition; hormonal cyclical',
'Warmth; evening;\nrich fatty food', 'Open air; cold;\nmotion; sympathy', '30C, 200C'),
('Calcarea Carb', 'Constitutional;\nchronic dropsy',
'Aggravated by bathing; fat flabby fair; cold damp feet; sour head sweat',
'Cold; dampness;\nexertion; bathing', 'Dry weather;\nlying on painful side', '30C, 200C, 1M'),
]
tbl = sl.shapes.add_table(len(master_rows), 6,
Inches(0.12), Inches(0.88), Inches(13.09), Inches(6.5)).table
for i, cw in enumerate([1.5, 1.7, 3.8, 1.9, 1.7, 2.49]):
tbl.columns[i].width = Inches(cw)
for r_i, rd in enumerate(master_rows):
hdr = r_i == 0
bg = C_GOLD if hdr else (C_DARKBLUE if r_i % 2 == 1 else C_MID)
tc = C_BG if hdr else C_WHITE
sz = 10 if hdr else 9
for c_i, txt in enumerate(rd):
cell = tbl.cell(r_i, c_i)
set_cell_bg(cell, bg)
set_cell_text(cell, txt, size=sz, bold=hdr or c_i == 0, color=tc)
ref_bar(sl, '๐ Boericke W. Pocket Manual of Materia Medica 9e | Allen HC. Keynotes | Kent JT. Repertory | Clarke JH. Dictionary of Practical Materia Medica')
# โโ SLIDE 49: REPERTORY TABLE โ Oedema locations
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'REPERTORY OF HOMEOPATHIC REMEDIES IN OEDEMA โ KENT\'S / BOERICKE\'S')
add_rect(sl, 0.2, 0.88, 12.93, 0.45, RGBColor(0x1A, 0x1A, 0x4A))
add_textbox(sl,
'๐ Repertory rubric: DROPSY / OEDEMA โ listed under: Generals | Extremities | Abdomen | Face | Chest '
'(Kent\'s Repertory, Volume VII) | Grades: Bold = Grade 3 (highest) | Italics = Grade 2 | Plain = Grade 1',
0.3, 0.9, 12.7, 0.4, size=10, color=C_LGRAY)
rep_rows = [
('RUBRIC', 'GRADE 3 (BOLD)', 'GRADE 2 (ITALICS)', 'GRADE 1'),
('Dropsy โ General (Anasarca)', 'Apis, Arsenicum, Apocynum', 'Digitalis, Lycopodium, Helleborus', 'Bryonia, Colchicum, Acetic Acid'),
('Dropsy โ Cardiac origin', 'Digitalis, Apocynum', 'Strophanthus, Cactus', 'Arsenicum, Convallaria'),
('Dropsy โ Renal origin (Nephrotic)', 'Apis, Arsenicum', 'Helleborus, Terebinthina', 'Colchicum, Mercurius'),
('Dropsy โ Hepatic / Ascites', 'Lycopodium, Arsenicum', 'Muriatic Acid, Cardus Mar', 'Chelidonium, China, Sulphur'),
('Oedema โ Lower limbs / Ankles', 'Apis, Arsenicum, Apocynum', 'Pulsatilla, Ledum, Rhus Tox', 'Hamamelis, Ruta, Arnica'),
('Oedema โ Face / Periorbital', 'Apis, Arsenicum', 'Natrum Mur, Kali Carb', 'Phosphorus, Helleborus'),
('Oedema โ from allergic reaction\n(Angioneurotic)', 'Apis', 'Natrum Mur, Urtica Urens', 'Rhus Tox, Astacus'),
('Oedema โ Pitting', 'Apis, Arsenicum', 'Digitalis, Lycopodium', 'Natrum Mur, Ferrum Met'),
('Oedema โ Non-pitting\n(Myxoedema / Lymphoedema)', 'Calcarea Carb, Graphites', 'Natrum Mur, Silicea', 'Thyroidinum, Conium'),
('Oedema โ Post-scarlatinal', 'Apis, Helleborus', 'Colchicum, Bryonia', 'Dulcamara, Terebinthina'),
('Oedema โ Premenstrual / Cyclical', 'Pulsatilla', 'Natrum Mur, Sepia', 'Lachesis, Folliculinum'),
('Dropsy โ from abuse of alcohol\n(Hepatic)', 'Lycopodium, Nux Vomica', 'Arsenic, Muriatic Acid', 'Sulphur, Lachesis'),
('Oedema โ Pregnancy', 'Apis, Pulsatilla', 'Natrum Mur, Kali Carb', 'Bryonia, Sepia'),
]
tbl = sl.shapes.add_table(len(rep_rows), 4,
Inches(0.12), Inches(1.4), Inches(13.09), Inches(5.7)).table
for i, cw in enumerate([3.1, 3.33, 3.33, 3.33]):
tbl.columns[i].width = Inches(cw)
for r_i, rd in enumerate(rep_rows):
hdr = r_i == 0
bg = C_GOLD if hdr else (C_DARKBLUE if r_i % 2 == 1 else C_MID)
tc = C_BG if hdr else C_WHITE
for c_i, txt in enumerate(rd):
cell = tbl.cell(r_i, c_i)
set_cell_bg(cell, bg)
bold = hdr or c_i == 0
color = tc if not (c_i == 1 and not hdr) else C_YELLOW
set_cell_text(cell, txt, size=9.5 if not hdr else 10, bold=bold, color=color)
ref_bar(sl, '๐ Kent JT. Repertory of the Homeopathic Materia Medica | Boericke W. Pocket Manual 9e | Murphy R. Lotus Materia Medica')
# โโ SLIDE 50: References
sl = add_slide()
add_rect(sl, 0, 0, 13.33, 7.5, C_BG)
add_title_bar(sl, 'REFERENCES')
ref_col1 = [
('HOMEOPATHIC MATERIA MEDICA', C_GOLD, [
'1. Boericke W. Pocket Manual of Homoeopathic Materia Medica, 9th Edition.',
'2. Allen HC. Keynotes and Characteristics with Comparisons of Some of the Leading Remedies.',
'3. Clarke JH. A Dictionary of Practical Materia Medica (3 Vols.).',
'4. Kent JT. Repertory of the Homeopathic Materia Medica.',
'5. Kent JT. Lectures on Homeopathic Materia Medica.',
'6. Murphy R. Lotus Materia Medica, 3rd Edition.',
'7. Hpathy.com. Homeopathy for Dropsical Affections / Oedema. Dr. Manish Bhatia.',
'8. kavithakhomeo.com. Water Retention and Homeopathy.',
]),
('CONVENTIONAL MEDICINE REFERENCES', C_HEADER, [
'9. Harrison\'s Principles of Internal Medicine, 22nd Edition (2025). McGraw-Hill.',
'10. Goldman-Cecil Medicine, 26th Edition. Elsevier.',
'11. Brenner and Rector\'s The Kidney, 10th Edition. Elsevier.',
'12. Braunwald\'s Heart Disease, 12th Edition. Elsevier.',
'13. Comprehensive Clinical Nephrology, 7e (Feehally et al.). Elsevier.',
'14. Grainger & Allison\'s Diagnostic Radiology. Elsevier.',
'15. Robbins & Kumar Basic Pathology, 11e. Elsevier.',
]),
('JOURNAL / ONLINE REFERENCES', C_GREEN, [
'16. Ellison DH, Felker GM. Diuretic Treatment in HF. NEJM 2017;377:1964.',
'17. Ponikowski P et al. 2016 ESC Guidelines โ Heart Failure. Eur Heart J 2016.',
'18. KDIGO 2021 Glomerular Diseases Guideline.',
'19. WHO. Lymphatic Filariasis Fact Sheet, 2022.',
'20. similia.io. Arsenicum Album: Complete Remedy Profile for Practitioners.',
]),
]
for col_i, (section, hcol, refs) in enumerate(ref_col1):
x = 0.2 + col_i * 4.37
add_rect(sl, x, 0.88, 4.1, 0.42, hcol)
add_textbox(sl, section, x + 0.1, 0.9, 3.9, 0.38, size=10, bold=True, color=C_BG)
for ri, ref in enumerate(refs):
y = 1.38 + ri * 0.74
add_textbox(sl, ref, x + 0.05, y, 4.0, 0.7, size=9, color=C_LGRAY)
prs.save(OUT)
print(f'โ
Saved: {OUT}')
print(f'Total slides: {len(prs.slides)}')
cd /tmp/workspace/oedema-ppt && python3 build_homeo_ppt.py 2>&1
ls -lh /tmp/workspace/oedema-ppt/OEDEMA_HOMEOPATHIC_PAYAL_PARMAR.pptx
OEDEMA HOMEOPATHIC PAYAL PARMAR
Presentation ยท PPTX
| Slide | Content |
|---|---|
| 36 | Section Divider |
| 37 | Master Investigations Table โ 13 categories: urine, renal, cardiac markers, thyroid, haematology, imaging (CXR, Echo, USG, Doppler), filariasis screen |
| 38 | Differential Flowchart โ Cardiac vs Renal vs Hepatic investigations side by side (3-column) |
| 39 | Nephrotic vs Nephritic Comparison Table โ 14-row detailed comparison |
| Slide | Content |
|---|---|
| 40 | Section Divider โ Homeopathic Materia Medica (with classical sources) |
| 41 | Remedy Selection Principle + Overview grid of remedies grouped by cause (cardiac/renal/hepatic/inflammatory/nutritional/lymphatic) |
| 42 | APIS MELLIFICA โ Keynotes, indications (nephrotic/angioneurotic/ascites), aggravation (heat), amelioration (cold), potency, relations |
| 43 | ARSENICUM ALBUM โ Waxy skin, restless anxiety, after-midnight aggravation, cardiac + renal dropsy, potency 30Cโ1M |
| 44 | APOCYNUM CANNABINUM + DIGITALIS PURPUREA โ Cardiac dropsy, thirst distresses heart (Apocynum), slow feeble pulse + scrotum oedema (Digitalis) |
| 45 | LYCOPODIUM + HELLEBORUS NIGER โ Hepatic ascites (upper emaciated + lower swollen) + anasarca with stupor |
| 46 | BRYONIA + RHUS TOX + DULCAMARA + COLCHICUM โ Inflammatory oedema remedies in 4-column detail |
| 47 | ACETIC ACID + CALCAREA CARB + NATRUM MUR + SULPHUR + PULSATILLA โ Nutritional/constitutional/hormonal oedema |
| 48 | Master Comparison Table โ All 12 remedies, type, keynotes, worse, better, potency in one table |
| 49 | Repertory Table โ Kent's/Boericke's rubrics: Dropsy (General/Cardiac/Renal/Hepatic), Oedema (ankle/face/pitting/non-pitting/pregnancy/premenstrual) with Grade 1/2/3 remedies |
| 50 | References โ 20 references: Boericke, Allen, Clarke, Kent, Murphy, hpathy.com + conventional medical textbooks |
CAN YOU MAKE LIKE FOR EXAMPLE IN CARDIAC OEDEMA JUST FOR EXAMPLE WE START WITH RIGHT HEART FAILURE SO WE ALREADY HAVE PATHO PHYSIOLOGY IN CHART FORM U HAVE TO ADD WHICH INVESTIGATION WHY TO ADVISE FINDINGS IN RELATION WITH PATHOPHYSIOLOGY AND WHEN TO ADVISE AND ALSO MENTION IMPORTANT HOMEOPATHIC REMEDIES WHICH ARE GONNA USE IN THAT CONDITION IN RELATION TO PATHOPHYSIOLOGY AND WHERE HOW ITS GONNA ACT AND IMPORTANT SYMPTOMS AND WHY THAT SYMPTOM OCCURS AND COMPARE AND CONTRAST ATLEAST 4-5 REMEDIES FOR EACH IN DETAIL
homeopathic remedies right heart failure oedema Digitalis Apocynum Strophanthus Cactus mechanism cardiac pathophysiology keynotes compare
homeopathic remedies nephrotic syndrome renal oedema Apis Arsenicum Helleborus Terebinthina symptoms pathophysiology compare contrast
homeopathic remedies hepatic oedema cirrhosis ascites Lycopodium Muriatic acid Cardus marianus Chelidonium China comparison keynotes
~/oedema-ppt/build_integrated_ppt.py
"""
OEDEMA INTEGRATED PPT
For each condition:
1. Pathophysiology flowchart (already exists โ these are NEW slides we ADD)
2. Investigations linked to pathophysiology (why / when / expected findings)
3. Homeopathic Materia Medica โ 4-5 remedies per condition
- Where it acts (organ/mechanism)
- Key symptoms + WHY they occur (linked to patho)
- Compare & contrast table
"""
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
from pptx.oxml.ns import qn
from lxml import etree
SRC = '/tmp/workspace/attachments/8fefbaa9-e98f-43f4-8e0b-a4fef60ca73e/OEDEMA PAYAL PARMAR.pptx'
OUT = '/tmp/workspace/oedema-ppt/OEDEMA_INTEGRATED_FINAL.pptx'
prs = Presentation(SRC)
# โโโ COLOURS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
C_BG = RGBColor(0x0D, 0x1B, 0x2A)
C_DKBLUE = RGBColor(0x02, 0x36, 0x5E)
C_MID = RGBColor(0x02, 0x4E, 0x7C)
C_TEAL = RGBColor(0x00, 0xB4, 0xD8)
C_WHITE = RGBColor(0xFF, 0xFF, 0xFF)
C_YELLOW = RGBColor(0xFF, 0xD6, 0x00)
C_GOLD = RGBColor(0xFF, 0xA5, 0x00)
C_GREEN = RGBColor(0x06, 0xD6, 0xA0)
C_ORANGE = RGBColor(0xFF, 0x77, 0x22)
C_PINK = RGBColor(0xFF, 0x4D, 0x6D)
C_LGRAY = RGBColor(0xD0, 0xEA, 0xFF)
C_PURPLE = RGBColor(0x9B, 0x59, 0xB6)
C_LIME = RGBColor(0xAA, 0xFF, 0x00)
C_CREAM = RGBColor(0xFF, 0xF0, 0xC8)
def add_slide():
layout = prs.slide_layouts[6] # Blank
return prs.slides.add_slide(layout)
def rect(sl, l, t, w, h, rgb, line=False):
s = sl.shapes.add_shape(1, Inches(l), Inches(t), Inches(w), Inches(h))
s.fill.solid(); s.fill.fore_color.rgb = rgb
if not line: s.line.fill.background()
else: s.line.color.rgb = rgb
return s
def tb(sl, text, l, t, w, h, sz=11, bold=False, color=C_WHITE,
align=PP_ALIGN.LEFT, italic=False):
x = sl.shapes.add_textbox(Inches(l), Inches(t), Inches(w), Inches(h))
x.text_frame.word_wrap = True
tf = x.text_frame; tf.clear()
p = tf.paragraphs[0]; p.alignment = align
r = p.add_run(); r.text = text
r.font.size = Pt(sz); r.font.bold = bold
r.font.italic = italic; r.font.color.rgb = color
return x
def hdr(sl, title, subtitle=''):
rect(sl, 0, 0, 13.33, 7.5, C_BG)
rect(sl, 0, 0, 13.33, 0.82, C_DKBLUE)
tb(sl, title, 0.25, 0.06, 12.8, 0.48, sz=20, bold=True, color=C_TEAL)
if subtitle:
tb(sl, subtitle, 0.25, 0.52, 12.8, 0.28, sz=9.5, color=C_LGRAY, italic=True)
def ref(sl, text):
rect(sl, 0, 7.18, 13.33, 0.3, RGBColor(0x01, 0x15, 0x28))
tb(sl, text, 0.25, 7.19, 12.9, 0.27, sz=8.5, color=C_LGRAY)
def cellbg(cell, rgb):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
sf = etree.SubElement(tcPr, qn('a:solidFill'))
sg = etree.SubElement(sf, qn('a:srgbClr'))
sg.set('val', f'{rgb[0]:02X}{rgb[1]:02X}{rgb[2]:02X}')
def celltxt(cell, text, sz=9.5, bold=False, color=C_WHITE, align=PP_ALIGN.LEFT):
tf = cell.text_frame; tf.word_wrap = True; tf.clear()
p = tf.paragraphs[0]; p.alignment = align
r = p.add_run(); r.text = text
r.font.size = Pt(sz); r.font.bold = bold; r.font.color.rgb = color
def mktable(sl, rows_data, l, t, w, h, col_widths, hdr_bg=C_TEAL, hdr_fg=C_BG):
n_rows = len(rows_data); n_cols = len(rows_data[0])
tbl = sl.shapes.add_table(n_rows, n_cols, Inches(l), Inches(t), Inches(w), Inches(h)).table
for i, cw in enumerate(col_widths):
tbl.columns[i].width = Inches(cw)
for ri, rd in enumerate(rows_data):
is_hdr = ri == 0
bg = hdr_bg if is_hdr else (C_DKBLUE if ri % 2 == 1 else C_MID)
fg = hdr_fg if is_hdr else C_WHITE
sz = 10 if is_hdr else 9.5
for ci, txt in enumerate(rd):
cell = tbl.cell(ri, ci)
cellbg(cell, bg)
celltxt(cell, txt, sz=sz, bold=is_hdr, color=fg)
return tbl
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SECTION DIVIDER: INTEGRATED CLINICO-HOMEOPATHIC APPROACH
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide()
rect(sl, 0, 0, 13.33, 7.5, C_BG)
rect(sl, 0, 2.9, 13.33, 0.07, C_TEAL)
tb(sl, '๐ INTEGRATED APPROACH', 0.5, 1.6, 12.3, 0.9, sz=36, bold=True,
color=C_TEAL, align=PP_ALIGN.CENTER)
tb(sl, 'Pathophysiology โ Investigations โ Homeopathic Materia Medica',
0.5, 3.05, 12.3, 0.55, sz=18, color=C_YELLOW, align=PP_ALIGN.CENTER)
tb(sl, 'Each condition explained with: WHY the investigation is needed | WHAT the finding means in context of pathophysiology\n'
'Which homeopathic remedy acts | WHERE it acts | WHY that symptom occurs | Compare & Contrast of 4โ5 remedies',
0.5, 3.75, 12.3, 0.8, sz=13, color=C_LGRAY, align=PP_ALIGN.CENTER, italic=True)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# โโโโโโ RIGHT HEART FAILURE (RHF) OEDEMA
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# โโ RHF Slide 1: Section header
sl = add_slide()
rect(sl, 0, 0, 13.33, 7.5, RGBColor(0x08, 0x10, 0x1A))
rect(sl, 0, 2.8, 13.33, 0.07, C_PINK)
tb(sl, 'โค๏ธ RIGHT HEART FAILURE โ OEDEMA', 0.5, 1.7, 12.3, 0.9, sz=34, bold=True,
color=C_PINK, align=PP_ALIGN.CENTER)
tb(sl, 'Pathophysiology โข Investigations โข Homeopathic Materia Medica',
0.5, 2.95, 12.3, 0.55, sz=16, color=C_LGRAY, align=PP_ALIGN.CENTER)
# โโ RHF Slide 2: Pathophysiology flowchart + investigations linked to each step
sl = add_slide()
hdr(sl, 'RHF OEDEMA โ PATHOPHYSIOLOGY LINKED TO INVESTIGATIONS',
'Each step of the pathophysiological cascade and which investigation it triggers โ WHY and WHEN to order it')
# Pathophysiology chain (left side, vertical)
patho_steps = [
('โ Right Ventricular Output', C_PINK, 0.2, 0.95),
('โ Systemic Venous Pressure', C_ORANGE, 0.2, 1.95),
('โ Capillary Hydrostatic Pressure', C_GOLD, 0.2, 2.95),
('RAAS Activation (ReninโAngIIโAldo)', RGBColor(0xA0,0x00,0xA0), 0.2, 3.95),
('Naโบ & HโO Retention by Kidneys', C_TEAL, 0.2, 4.95),
('OEDEMA FORMATION (Peripheral)', C_GREEN, 0.2, 5.95),
]
for label, col, lx, ly in patho_steps:
rect(sl, lx, ly, 3.5, 0.72, col)
tb(sl, label, lx+0.1, ly+0.1, 3.3, 0.55, sz=10.5, bold=True, color=C_BG)
# Arrows between patho steps
for i in range(5):
tb(sl, 'โผ', 0.8, 1.73 + i*1.0, 1.5, 0.25, sz=13, bold=True, color=C_WHITE, align=PP_ALIGN.CENTER)
# Investigation boxes (right side, linked by arrows)
inv_data = [
('ECG / Echocardiography',
'WHY: โ RV output โ identify RV dysfunction, tricuspid regurgitation, pulmonary HTN\n'
'WHEN: First investigation ordered in any suspected cardiac oedema\n'
'FINDINGS: RV dilatation, paradoxical septal motion, TR, โ RVEF; '
'ECG: Right axis deviation, P-pulmonale, RBBB',
C_PINK, 4.0, 0.88),
('JVP Assessment + CVP',
'WHY: โ Systemic venous P โ JVP raised; reflects right atrial pressure\n'
'WHEN: Bedside โ first clinical examination finding\n'
'FINDINGS: JVP elevated (>4 cm above sternal angle); Kussmaul\'s sign in constrictive',
C_ORANGE, 4.0, 1.88),
('BNP / NT-proBNP',
'WHY: Ventricular wall stretch from fluid overload โ BNP released\n'
'WHEN: When cardiac oedema is suspected; differentiates cardiac from non-cardiac\n'
'FINDINGS: BNP >100 pg/mL = cardiac; NT-proBNP >300 pg/mL; higher = worse prognosis',
C_GOLD, 4.0, 2.88),
('Serum Electrolytes + Renin/Aldosterone',
'WHY: RAAS activation โ Naโบ retention, Kโบ loss, elevated aldosterone\n'
'WHEN: At baseline and to monitor diuretic treatment\n'
'FINDINGS: Hyponatraemia (dilutional), hypokalaemia; โ serum aldosterone; โ renin',
RGBColor(0xA0,0x00,0xA0), 4.0, 3.88),
('Urine Naโบ + Urine Output (24hr)',
'WHY: Kidneys retain Naโบ/HโO โ urine Naโบ is low; shows renal response to RAAS\n'
'WHEN: Confirms renal retention; guides diuretic response\n'
'FINDINGS: Urine Naโบ <20 mEq/L; oliguria (UO <400 ml/day); โ urine osmolality',
C_TEAL, 4.0, 4.88),
]
for title, detail, col, lx, ly in inv_data:
rect(sl, lx, ly, 9.1, 0.82, col)
tb(sl, title, lx+0.1, ly+0.04, 9.0, 0.28, sz=10.5, bold=True, color=C_BG)
rect(sl, lx, ly+0.3, 9.1, 0.52, C_DKBLUE)
tb(sl, detail, lx+0.1, ly+0.32, 8.9, 0.48, sz=9, color=C_WHITE)
# Additional
rect(sl, 4.0, 5.88, 9.1, 0.82, C_GREEN)
tb(sl, 'Chest X-Ray (CXR)', 4.1, 5.9, 9.0, 0.28, sz=10.5, bold=True, color=C_BG)
rect(sl, 4.0, 6.18, 9.1, 0.52, C_DKBLUE)
tb(sl, 'WHY: Oedema โ cardiomegaly, pleural effusion, Kerley B lines | FINDINGS: CTR>0.5, bilateral pleural effusions, '
'engorged pulmonary vessels | WHEN: With every acute presentation', 4.1, 6.2, 8.9, 0.48, sz=9, color=C_WHITE)
ref(sl, '๐ Braunwald\'s Heart Disease 12e | Harrison\'s Principles of Internal Medicine 22e | Fuster & Hurst\'s The Heart 15e')
# โโ RHF Slide 3: Additional investigations table (Liver/Renal impairment from congestion)
sl = add_slide()
hdr(sl, 'RHF OEDEMA โ SECONDARY INVESTIGATION FINDINGS (Congestive Effects)',
'Raised JVP โ backward pressure โ hepatic/renal congestion โ these investigations reflect it')
rect(sl, 0.2, 0.9, 12.93, 0.42, RGBColor(0x4A,0x00,0x1A))
tb(sl, '๐ด KEY CONCEPT: RHF causes backward congestion โ โ venous pressure โ hepatic venous congestion (congestive hepatopathy) '
'โ raised bilirubin + AST/ALT. Also โ renal venous HTN โ cardiorenal syndrome โ โ creatinine.',
0.3, 0.92, 12.7, 0.38, sz=10, color=C_WHITE)
rows = [
('INVESTIGATION', 'PATHOPHYSIOLOGICAL LINK', 'EXPECTED FINDING', 'CLINICAL SIGNIFICANCE'),
('Liver Function Tests\n(LFT: ALT/AST/Bilirubin)', 'โ Hepatic venous P โ Zone 3 centrilobular necrosis (congestive hepatopathy)',
'โ AST/ALT (mild-moderate); โ bilirubin\nAlkaline phosphatase โ\nNot like viral hepatitis โ ALT usually <200', 'Confirms congestive hepatopathy; "cardiac hepatitis" in acute failure'),
('Serum Albumin', 'Hepatic congestion โ โ albumin synthesis; malabsorption', 'Low-normal albumin (2.8โ3.5 g/dL)\nSevere CCF: may be <3 g/dL', 'Worsens oedema if albumin falls โ reduces oncotic pressure too'),
('Renal Function (eGFR,\nCreatinine, BUN/Cr ratio)', 'โ Cardiac output โ โ RBF โ Cardiorenal Syndrome type 1',
'Creatinine โ; BUN:Cr >20 (pre-renal)\neGFR โ; Urine Na <20 mEq/L', 'Cardiorenal syndrome โ guides diuretic intensity and monitoring'),
('Uric Acid', 'Renal hypoperfusion โ โ uric acid excretion; diuretic use โ โ', 'โ Serum urate (>7 mg/dL)', 'Marker of renal underperfusion; risk of gout flare with diuretics'),
('Haematology (CBC)', 'Congestion โ dilutional anaemia; poor erythropoiesis', 'Normocytic anaemia; raised WBC if infection; raised HCT if dehydrated', 'Anaemia worsens cardiac output; infection can precipitate acute decompensation'),
('Thyroid Function (TSH)', 'Hypothyroidism = common cause; hyperthyroid โ AF โ CCF', 'TSH โ โ hypothyroid CCF\nTSH โ โ hyperthyroid AF-induced CCF', 'Thyroid is reversible cause โ always screen in new CCF'),
('USG Abdomen (Hepatic\nVeins + IVC Doppler)', 'โ RAP โ Hepatic venous congestion โ loss of pulsatility',
'Dilated IVC >21mm, <50% collapse\nHepatic veins dilated; โ RI\nAscites if severe', 'Confirms raised RAP; hepatic vein Doppler shows blunted waveform in CCF'),
('D-Dimer + DVT Screen', 'Immobility + venous stasis + CCF = Virchow\'s triad โ DVT risk',
'D-Dimer โ; Wells score >2 โ Doppler\nDeep vein non-compressible = DVT', 'DVT can precipitate/worsen RHF by causing acute pulmonary embolism'),
]
mktable(sl, rows, 0.18, 1.4, 12.97, 5.65,
[2.1, 3.6, 3.3, 3.97], hdr_bg=C_PINK, hdr_fg=C_BG)
ref(sl, '๐ Braunwald\'s Heart Disease 12e | Goldman-Cecil Medicine | Comprehensive Clinical Nephrology 7e | Harrison\'s 22e')
# โโ RHF Slide 4: Homeopathic Remedies Section Header
sl = add_slide()
rect(sl, 0, 0, 13.33, 7.5, C_BG)
rect(sl, 0, 2.85, 13.33, 0.07, C_GOLD)
tb(sl, '๐ฟ HOMEOPATHIC MATERIA MEDICA', 0.5, 1.7, 12.3, 0.9, sz=30, bold=True,
color=C_GOLD, align=PP_ALIGN.CENTER)
tb(sl, 'RIGHT HEART FAILURE โ CARDIAC OEDEMA', 0.5, 2.65, 12.3, 0.55, sz=20, bold=True,
color=C_PINK, align=PP_ALIGN.CENTER)
tb(sl, 'Remedies acting on the cardiovascular-renal axis\nWhere they act | Why symptoms occur | Pathophysiology-linked keynotes',
0.5, 3.35, 12.3, 0.7, sz=14, color=C_LGRAY, align=PP_ALIGN.CENTER, italic=True)
tb(sl, 'Key remedies: Digitalis Purpurea โข Apocynum Cannabinum โข Arsenicum Album โข Strophanthus Hispidus โข Cactus Grandiflorus',
0.5, 4.2, 12.3, 0.55, sz=13, color=C_TEAL, align=PP_ALIGN.CENTER)
# โโ RHF Slide 5: DIGITALIS + APOCYNUM โ detailed with patho link
sl = add_slide()
hdr(sl, 'RHF HOMEOPATHIC REMEDY โ DIGITALIS PURPUREA (Foxglove)',
'Acts on: Cardiac muscle (vagal stimulation) | Renal tubules | Vascular tone')
# Left: mechanism + symptoms linked to patho
rect(sl, 0.2, 0.9, 6.3, 0.42, C_PINK)
tb(sl, 'โ๏ธ WHERE & HOW IT ACTS (Pathophysiology Link)', 0.3, 0.92, 6.1, 0.38, sz=11.5, bold=True, color=C_BG)
mech_text = (
'Digitalis (in homeopathic potency) stimulates the VAGUS nerve โ slows conduction through AV node '
'โ improves diastolic filling time โ โ stroke volume.\n\n'
'Acts on RENAL TUBULES โ enhances Naโบ excretion (diuretic effect in homeopathic doses).\n\n'
'In RHF: โ cardiac output โ slow, weak, irregular pulse โ Digitalis symptom picture matches exactly.\n\n'
'Note: In crude/pharmacological dose, Digitalis glycosides (digoxin) are positive inotropes; '
'in ultra-dilute homeopathic potency, the SIMILAR symptom picture (slow feeble heart, dropsy) guides prescription.'
)
rect(sl, 0.2, 1.38, 6.3, 2.5, C_DKBLUE)
tb(sl, mech_text, 0.3, 1.4, 6.1, 2.45, sz=9.5, color=C_WHITE)
rect(sl, 0.2, 3.95, 6.3, 0.42, C_PINK)
tb(sl, '๐ KEY SYMPTOMS & WHY THEY OCCUR', 0.3, 3.97, 6.1, 0.38, sz=11.5, bold=True, color=C_BG)
symptoms = [
('Slow, feeble, intermittent pulse', 'โ RV output โ โ CO โ baroreceptor response; vagal dominance โ bradycardia'),
('Feels heart will stop on motion', 'Exertion โ โ demand on failing heart โ palpitation/arrest fear'),
('Scanty, dark urine', 'โ renal perfusion from โ CO โ oliguria; dark = concentrated + bilirubin (congestive hepatopathy)'),
('Scrotum + penis oedema', 'โ systemic venous P โ dependent lymphatic congestion in loose genitalia'),
('Desire for deep breath / dyspnoea', 'Pulmonary venous congestion + pleural effusion โ reduced lung compliance'),
('Faintness on slightest motion', 'โ CO โ cerebral hypoperfusion; orthostatic hypotension on exertion'),
]
for i, (sym, why) in enumerate(symptoms):
y = 4.44 + i * 0.5
rect(sl, 0.2, y, 6.3, 0.45, C_DKBLUE if i%2==0 else C_MID)
tb(sl, f'โข {sym}', 0.3, y+0.03, 3.3, 0.38, sz=9.5, bold=True, color=C_PINK)
tb(sl, why, 3.6, y+0.03, 2.8, 0.38, sz=9, color=C_LGRAY)
# Right: APOCYNUM CANNABINUM
rect(sl, 6.8, 0.9, 6.3, 0.42, C_GREEN)
tb(sl, '๐ฟ APOCYNUM CANNABINUM (Indian Hemp)', 6.9, 0.92, 6.1, 0.38, sz=11.5, bold=True, color=C_BG)
apo_mech = (
'Acts on HEART (โ pulse rate, โ BP), SEROUS MEMBRANES, and KIDNEYS (diuretic).\n\n'
'Cymarin (active principle) โ lowers pulse rate + causes diuresis โ ideal for CHF dropsy.\n\n'
'RHF pathophysiology: โ CO โ venous congestion โ serous effusions (ascites, hydrothorax) '
'โ Apocynum acts on this exact cascade.\n\n'
'Unlike Digitalis (vagal effect on AV node), Apocynum acts primarily on CARDIAC MUSCLE '
'directly reducing rate and increasing renal output โ drains effusions.'
)
rect(sl, 6.8, 1.38, 6.3, 2.5, C_DKBLUE)
tb(sl, apo_mech, 6.9, 1.4, 6.1, 2.45, sz=9.5, color=C_WHITE)
rect(sl, 6.8, 3.95, 6.3, 0.42, C_GREEN)
tb(sl, '๐ KEY SYMPTOMS & WHY THEY OCCUR', 6.9, 3.97, 6.1, 0.38, sz=11.5, bold=True, color=C_BG)
apo_syms = [
('Great thirst โ but drinking distresses heart', 'Naโบ retention โ thirst; but fluid โ โ preload โ palpitation/distress'),
('"Gone" feeling at pit of stomach', 'Splanchnic venous congestion โ epigastric fullness/emptiness'),
('Diminished pulse frequency (keynote)', 'Cardiac depression from poor output โ vagal dominance โ slow rate'),
('Scanty turbid urine', 'โ RBF + RAAS โ oliguria; turbid = protein + RBCs (cardiorenal syndrome)'),
('Ascites + hydrothorax + anasarca', 'โ systemic venous P โ transudation into all serous cavities'),
('Cannot tolerate food; nausea + vomiting', 'Mesenteric venous congestion โ GI stasis โ nausea (cardiorenal axis)'),
]
for i, (sym, why) in enumerate(apo_syms):
y = 4.44 + i * 0.5
rect(sl, 6.8, y, 6.3, 0.45, C_DKBLUE if i%2==0 else C_MID)
tb(sl, f'โข {sym}', 6.9, y+0.03, 3.3, 0.38, sz=9.5, bold=True, color=C_GREEN)
tb(sl, why, 10.2, y+0.03, 2.8, 0.38, sz=9, color=C_LGRAY)
rect(sl, 0.2, 7.17, 13.0, 0.25, RGBColor(0x01,0x15,0x28))
tb(sl, '๐ Boericke W. Pocket Manual of Materia Medica 9e | Allen HC. Keynotes | hpathy.com Heart Therapeutics | homeopathicmd.com', 0.3, 7.18, 12.9, 0.22, sz=8.5, color=C_LGRAY)
# โโ RHF Slide 6: ARSENICUM + STROPHANTHUS + CACTUS โ mechanisms
sl = add_slide()
hdr(sl, 'RHF HOMEOPATHIC REMEDIES โ ARSENICUM ALBUM, STROPHANTHUS & CACTUS GRANDIFLORUS',
'Where they act | Pathophysiology link | Why each symptom occurs')
remedies = [
('ARSENICUM ALBUM', C_TEAL, [
('Organ of Action', 'Heart, kidneys, serous membranes, vasculature โ all affected in RHF'),
('Patho Link', 'โ CO โ tissue hypoxia โ anxiety + restlessness (hallmark); skin waxy from โ perfusion'),
('Burning in oedematous parts', 'Serum proteins in interstitium โ inflammatory mediators โ burning sensation'),
('Thirst โ small sips frequently', 'RAAS โ ADH โ thirst; but โ fluid worsens congestion โ small sips only'),
('Worse 1โ2 AM', 'Cardiac output is lowest at night; vagal tone peaks โ nocturnal worsening'),
('Aggravation cold, better heat', 'Peripheral vasoconstriction โ โ afterload โ worsens failing heart; warmth โ afterload'),
('Potency', '30Cโ200C; constitutional; especially post-myocardial failure with restlessness'),
]),
('STROPHANTHUS HISPIDUS', C_GOLD, [
('Organ of Action', 'Direct cardiac muscle (like Digitalis but SAFER โ no cumulative effect); renal tubules'),
('Patho Link', 'Acts on failing heart with dilatation โ โ cardiac contractility without affecting vascular tone'),
('No gastric distress (vs Digitalis)', 'Strophanthin does not cross BBB or cause GI vagal stimulation โ safer'),
('Greater diuretic effect than Digitalis', 'Directly increases renal blood flow + tubular Naโบ excretion โ drains oedema'),
('Safe for elderly / debilitated', 'โ vaso-motor effects โ doesn\'t drop BP suddenly; preferred in aged cardiac patients'),
('Cardiac dropsy from alcoholic heart', 'Alcoholic cardiomyopathy โ dilated ventricles โ Strophanthus picture'),
('Potency', 'Mother tincture or 3X; 7 drops tincture; for cardiac insufficiency with dropsy'),
]),
('CACTUS GRANDIFLORUS', C_ORANGE, [
('Organ of Action', 'Cardiac musculature (myocardium + endocardium) + pulmonary vessels'),
('Patho Link', 'Constriction/spasm of heart โ as if iron hand clutching โ simulates tamponade/pericarditis patho'),
('Constriction sensation in heart', 'Cardiac dilatation + โ end-diastolic volume โ stretch pain sensation'),
('Oedema of hands + feet + heart', 'Pulmonary venous HTN (LHF component) โ swelling begins distally'),
('Palpitations on lying left side', 'Altered cardiac geometry when lying left โ changes stroke volume โ awareness'),
('Haemorrhagic tendency', 'Endothelial stretch from โ pressure โ microvascular extravasation'),
('Potency', '6Cโ30C; cardiac oedema with constriction feeling, pericardial effusion'),
]),
]
for col_i, (name, hcol, items) in enumerate(remedies):
x = 0.2 + col_i * 4.37
rect(sl, x, 0.9, 4.1, 0.45, hcol)
tb(sl, name, x+0.08, 0.92, 3.95, 0.4, sz=11, bold=True, color=C_BG, align=PP_ALIGN.CENTER)
for ri, (label, detail) in enumerate(items):
y = 1.42 + ri * 0.86
rect(sl, x, y, 4.1, 0.79, C_DKBLUE if ri%2==0 else C_MID)
tb(sl, label, x+0.1, y+0.03, 3.9, 0.28, sz=9.5, bold=True, color=hcol)
tb(sl, detail, x+0.1, y+0.3, 3.9, 0.47, sz=9, color=C_WHITE)
ref(sl, '๐ Boericke W. Pocket Manual 9e | Allen HC. Keynotes | hpathy.com | homeopathicmd.com CVD Homeopathy')
# โโ RHF Slide 7: Compare & Contrast Table โ all 5 remedies
sl = add_slide()
hdr(sl, 'RHF OEDEMA โ COMPARE & CONTRAST: 5 HOMEOPATHIC REMEDIES',
'Select the remedy matching the TOTALITY of symptoms โ not just the oedema alone')
rows = [
('FEATURE', 'DIGITALIS', 'APOCYNUM', 'ARSENICUM', 'STROPHANTHUS', 'CACTUS'),
('Source', 'Foxglove\n(Digitalis purpurea)', 'Indian Hemp\n(Apocynum cannabinum)', 'Arsenic trioxide\n(AsโOโ)', 'Strophanthus hispidus\n(West African vine)', 'Night-blooming cactus\n(Selenicereus)'),
('Primary cardiac action', 'Vagal stimulation\nโ โ heart rate', 'Direct myocardial\n+ diuretic', 'Peripheral vascular\n+ cardiac muscle', 'Direct cardiac muscle\n(no vagal effect)', 'Myocardial spasm\n+ constriction'),
('Pulse character', 'Slow, feeble,\ninterMITTENT (stops)\nworse on motion', 'Slow, diminished\nfrequency โ keynote;\nirregular', 'Rapid, weak,\nirregular;\nworse midnight', 'Slow, weak;\nno gastric issues', 'Feeble, irregular;\nconstricted feeling'),
('Urine character', 'Scanty, dark\n(conc. bilirubin+protein)', 'Scanty, turbid, hot;\nthirst with distress', 'Scanty, albuminous;\nโ burning on pass', 'Markedly increased\n(diuretic effect)', 'Decreased; dark;\noedema persists'),
('Thirst', 'Not prominent', 'GREAT thirst but\ndrinking causes\ndistress to heart', 'Thirst โ small sips\nfrequently', 'Not prominent', 'Not prominent'),
('Oedema location', 'Scrotum, penis,\nlower limbs;\nascites', 'Ascites, hydrothorax,\nanasarca; ankles', 'Face (periorbital);\nabdomen; generalised', 'Generalised dropsy;\ncardiac', 'Hands + feet;\npericard. effusion'),
('Dyspnoea', 'Desire for deep breath;\ncannot lie down', 'Difficult breathing;\nworse lying on back', 'Worse after midnight;\nwants to sit up', 'Panting; rapid;\nshort breath', 'Suffocative cough;\ncardiac asthma'),
('Mental state', 'Great sadness,\nmelancholy; fear', 'Drowsy; stupor;\nconfusion', 'Restless, anxious;\nfear of death;\ncannot be alone', 'Despondent;\nweak; prostrated', 'Sadness;\nmelancholy;\ngloomy'),
('Modalities', 'Worse: motion\nBetter: rest, empty stomach', 'Worse: cold\nBetter: warmth (mild)', 'Worse: midnight,cold\nBetter: heat, company', 'Worse: exertion\nBetter: rest', 'Worse: lying L side\nBetter: open air'),
('Potency range', '3X trituration;\n6Cโ30C', 'Mother tincture;\n3Xโ6X', '30C, 200C, 1M', 'Mother tincture;\n3X (7 drops)', '6Cโ30C'),
('Best for', 'Valvular heart disease;\nmitral regurgitation', 'Cardiac + renal\ndropsy; AF-related', 'Post-cardiac failure\nwith anxiety; renal\noedema also', 'Alcoholic heart;\naged patients;\nsafer than Digitalis', 'Pericardial effusion;\nCHF with constriction'),
]
mktable(sl, rows, 0.12, 0.9, 13.09, 6.5,
[1.6, 2.28, 2.28, 2.28, 2.28, 2.37],
hdr_bg=C_GOLD, hdr_fg=C_BG)
ref(sl, '๐ Boericke W. Pocket Manual 9e | Allen HC. Keynotes | Clarke JH. Dictionary Practical MM | Kent JT. Repertory | hpathy.com')
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# โโโโโโ NEPHROTIC SYNDROME โ RENAL OEDEMA
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# โโ Section header
sl = add_slide()
rect(sl, 0, 0, 13.33, 7.5, RGBColor(0x08, 0x10, 0x1A))
rect(sl, 0, 2.8, 13.33, 0.07, C_TEAL)
tb(sl, '๐ซ NEPHROTIC SYNDROME โ RENAL OEDEMA', 0.5, 1.7, 12.3, 0.9, sz=30, bold=True,
color=C_TEAL, align=PP_ALIGN.CENTER)
tb(sl, 'Pathophysiology โข Investigations โข Homeopathic Materia Medica',
0.5, 2.95, 12.3, 0.55, sz=16, color=C_LGRAY, align=PP_ALIGN.CENTER)
# โโ Nephrotic Slide 1: Patho + Investigations
sl = add_slide()
hdr(sl, 'NEPHROTIC SYNDROME โ PATHOPHYSIOLOGY LINKED TO INVESTIGATIONS',
'GBM damage โ proteinuria โ hypoalbuminaemia โ โ oncotic pressure โ oedema')
# Left โ patho steps
neph_patho = [
('GBM Damage / Podocyte Injury', C_TEAL, 0.2, 0.95),
('Massive Proteinuria (โฅ3.5 g/day)', C_ORANGE, 0.2, 1.95),
('Hypoalbuminaemia (<3 g/dL)', C_GOLD, 0.2, 2.95),
('โ Plasma Oncotic Pressure', C_PINK, 0.2, 3.95),
('Fluid shift to interstitium', RGBColor(0xA0,0x00,0xA0), 0.2, 4.95),
('OEDEMA โ generalised / periorbital', C_GREEN, 0.2, 5.95),
]
for label, col, lx, ly in neph_patho:
rect(sl, lx, ly, 3.5, 0.72, col)
tb(sl, label, lx+0.1, ly+0.1, 3.3, 0.55, sz=10.5, bold=True, color=C_BG)
for i in range(5):
tb(sl, 'โผ', 0.8, 1.73 + i*1.0, 1.5, 0.25, sz=13, bold=True, color=C_WHITE, align=PP_ALIGN.CENTER)
# Right โ investigations linked
neph_inv = [
('Urine Protein (Dipstick / 24hr / PCR)',
'WHY: GBM damage โ protein leaks into urine โ confirms nephrotic range\n'
'WHEN: FIRST test in any patient with periorbital/generalised oedema\n'
'FINDINGS: Dipstick โฅ3+; 24hr protein โฅ3.5 g/day; PCR >300 mg/mmol', C_TEAL),
('Urine Microscopy',
'WHY: Podocyte injury โ oval fat bodies + fatty casts (lipiduria) in urine\n'
'WHEN: Alongside dipstick; differentiates nephrotic from nephritic\n'
'FINDINGS: Oval fat bodies; fatty casts; lipiduria (Maltese cross on polarised light)', C_ORANGE),
('Serum Albumin + Total Protein',
'WHY: Protein loss in urine โ liver cannot compensate synthesis โ albumin falls\n'
'WHEN: To quantify oncotic pressure deficit; guides albumin infusion decision\n'
'FINDINGS: Albumin <3.0 g/dL (may be as low as 1.5 g/dL in severe nephrotic)', C_GOLD),
('Serum Lipid Profile (Cholesterol, TG)',
'WHY: โ Oncotic P โ โ hepatic lipoprotein synthesis (compensatory) โ hyperlipidaemia\n'
'WHEN: Part of nephrotic workup; elevated lipids confirm nephrotic state\n'
'FINDINGS: Total cholesterol >250 mg/dL; โ LDL; lipiduria (fat droplets in urine)', C_PINK),
('Serum Creatinine + eGFR',
'WHY: Nephrotic โ RAAS activation โ renal vasoconstriction โ GFR may fall\n'
'WHEN: Baseline + monitoring; creatinine rise = progression to nephrotic-nephritic overlap\n'
'FINDINGS: Early: normal; later: โ creatinine if sclerosis/acute on chronic', RGBColor(0xA0,0x00,0xA0)),
('Renal Biopsy',
'WHY: Identify histological type โ guides specific treatment\n'
'WHEN: Adults (always); children if steroid-resistant after 4โ8 weeks\n'
'FINDINGS: MCD (effacement), FSGS (segmental sclerosis), Membranous GN (spikes), Diabetic (KW nodules)', C_GREEN),
]
for idx, (title, detail, col) in enumerate(neph_inv):
ly = 0.88 + idx * 1.06
rect(sl, 3.88, ly, 9.22, 0.36, col)
tb(sl, title, 3.98, ly+0.03, 9.1, 0.3, sz=10.5, bold=True, color=C_BG)
rect(sl, 3.88, ly+0.36, 9.22, 0.65, C_DKBLUE)
tb(sl, detail, 3.98, ly+0.38, 9.1, 0.62, sz=9, color=C_WHITE)
ref(sl, '๐ Brenner & Rector\'s The Kidney 10e | Comprehensive Clinical Nephrology 7e | Harrison\'s 22e | Robbins & Kumar Pathology')
# โโ Nephrotic Slide 2: Homeopathic remedies
sl = add_slide()
hdr(sl, 'NEPHROTIC SYNDROME โ HOMEOPATHIC MATERIA MEDICA (4 KEY REMEDIES)',
'Each remedy linked to the pathophysiological mechanisms of nephrotic syndrome')
rem_data = [
('APIS MELLIFICA', C_TEAL, [
('Acts on', 'Glomerular basement membrane + serous membranes + skin'),
('Patho Link', 'GBM injury โ protein leak โ bag-like periorbital puffiness; Apis simulates GBM inflammation (stinging/burning = podocyte injury pattern)'),
('Periorbital puffiness (AM)', 'Fluid redistribution: lying flat โ face dependent โ oedema accumulates periorbital at night, most visible AM'),
('Albuminuria + milky urine', 'GBM damage โ albumin + protein in filtrate โ turbid, milky urine'),
('No thirst despite oedema', 'Total body Naโบ โ but intravascular depletion; paradoxically no thirst (unique to Apis)'),
('Stinging-burning in oedematous parts', 'Protein-rich interstitial fluid โ inflammatory cytokines โ stinging sensation at skin level'),
('Potency', '30C for acute; 200C if chronic; worse heat โ cold applications โ characteristic Apis'),
]),
('ARSENICUM ALBUM', C_ORANGE, [
('Acts on', 'Kidneys (tubular + glomerular), cardiovascular system, serous membranes'),
('Patho Link', 'Proteinuria + hypoalbuminaemia โ fluid in peritoneum + face; Arsenicum covers the waxy, pale, oedematous look of nephrotic patient'),
('Puffiness of face + eyelids', 'Hypoalbuminaemia โ โ oncotic P โ periorbital loose tissue fills first โ puffiness'),
('Waxy, transparent skin', 'Severe hypoalbuminaemia + anaemia โ pallid, waxy appearance (mimics nephrotic facies)'),
('Ascites + anasarca', 'Progressive oncotic pressure deficit โ serous cavity effusion; Arsenicum = all cavities'),
('Restlessness + anxiety', 'Hypovolaemia (despite oedema) โ sympathetic activation โ restlessness, fear of death'),
('Potency', '30Cโ200C; suitable when oedema + extreme weakness + anxiety present'),
]),
('APOCYNUM CANNABINUM', C_GREEN, [
('Acts on', 'Serous membranes, kidney (diuretic), cardiac muscle (slows pulse)'),
('Patho Link', 'NS โ โ albumin โ serous effusions (ascites, hydrothorax); RAAS โ oliguria; Apocynum directly counters these via diuretic action'),
('Thirst with scanty urine', 'RAAS โ ADH โ thirst; but kidneys in Naโบ-retaining mode โ oliguria; Apocynum diuresis corrects this'),
('Ascites + hydrothorax + anasarca', 'Oncotic P deficit โ transudation into all serous cavities; Apocynum targets all simultaneously'),
('Nausea + vomiting + drowsiness', 'Uraemic tendency in severe NS โ GI symptoms; splanchnic venous congestion from low albumin'),
('Cannot tolerate food', 'Hypoproteinaemia โ GI mucosal oedema โ absorption impaired โ intolerance to food'),
('Potency', 'Mother tinctureโ6X for acute NS; note: use freshly prepared'),
]),
('TEREBINTHINA (Turpentine)', C_PURPLE, [
('Acts on', 'Renal parenchyma โ glomeruli + tubules; urinary tract epithelium'),
('Patho Link', 'Direct renal action โ clears albuminuria + haematuria early; indicated in ACUTE onset NS/nephritis'),
('Smoky, cloudy urine + albuminuria', 'Glomerular injury โ RBCs + albumin โ smoky appearance; Terebinthina = exact picture'),
('Burning, drawing pain around kidney', 'Renal parenchymal inflammation (capsular stretch) โ loin pain characteristic'),
('Drowsiness prominent', 'Early uraemia from reduced GFR โ cerebral depression โ drowsiness (not yet coma)'),
('Tenesmus of bladder + scanty urine', 'Urinary tract oedema/congestion โ dysuria + frequency + suppression tendency'),
('Potency', '6Cโ30C; specifically for ACUTE nephritis/NS with smoky urine and burning loin pain'),
]),
]
for col_i, (name, hcol, items) in enumerate(rem_data):
x = 0.18 + col_i * 3.28
rect(sl, x, 0.9, 3.1, 0.42, hcol)
tb(sl, name, x+0.08, 0.92, 2.95, 0.38, sz=10.5, bold=True, color=C_BG, align=PP_ALIGN.CENTER)
for ri, (label, detail) in enumerate(items):
y = 1.38 + ri * 0.88
rect(sl, x, y, 3.1, 0.82, C_DKBLUE if ri%2==0 else C_MID)
tb(sl, label, x+0.08, y+0.03, 2.95, 0.28, sz=9.5, bold=True, color=hcol)
tb(sl, detail, x+0.08, y+0.3, 2.95, 0.5, sz=8.5, color=C_WHITE)
ref(sl, '๐ Boericke W. Pocket Manual 9e | ijrrjournal.com NS Homeopathy | homeopathydoctors.in | Allen HC. Keynotes')
# โโ Nephrotic Slide 3: Compare & Contrast
sl = add_slide()
hdr(sl, 'NEPHROTIC SYNDROME โ COMPARE & CONTRAST: 4 HOMEOPATHIC REMEDIES',
'Differentiate by: type of oedema onset | urine character | constitutional picture | modalities')
rows = [
('FEATURE', 'APIS MELLIFICA', 'ARSENICUM ALBUM', 'APOCYNUM CANNABINUM', 'TEREBINTHINA'),
('Source', 'Honey bee (Apis mellifera)', 'Arsenic trioxide (AsโOโ)', 'Indian Hemp root', 'Oil of Turpentine'),
('Stage of NS', 'Acute / sub-acute; inflammatory phase', 'Any stage; worse in advanced', 'Acute with serous effusions', 'EARLY / acute stage; albuminuria onset'),
('Oedema pattern', 'Periorbital + feet; shiny, pitting, bag-like', 'Face + abdomen; waxy pale; ascites + anasarca', 'Ascites + hydrothorax + generalised anasarca', 'Renal region tender; generalised when severe'),
('Urine', 'Albuminuria; milky; scanty; burning on urination', 'Albuminous; dark; scanty; oozing ulcers on legs', 'Scanty, turbid, hot; โ frequency but โ desire', 'SMOKY/cloudy; albuminuria; RBCs; tenesmus'),
('Thirst', 'NO thirst (pathognomonic)', 'Small sips frequently', 'Great thirst but water distresses; nausea', 'Moderate; not a prominent feature'),
('Skin appearance', 'Rosy-red; shiny; bag-like; translucent', 'Waxy, pale, transparent', 'Puffy, pale, dull', 'Not prominent (renal focus)'),
('Pain', 'Stinging-burning in oedema', 'Burning pain; better heat', 'Epigastric โ "gone feeling"', 'BURNING drawing pain in loins/kidneys โ KEY'),
('Associated features', 'Urticaria; fever; oliguria; no thirst; intolerant of heat', 'Weakness; restlessness; anxiety; fear of death', 'Nausea/vomiting; drowsy; cannot eat; slow pulse', 'Drowsiness; tenesmus; haematuria; ascites when advanced'),
('Worse', 'Heat; touch; right side; afternoon', 'After midnight; cold; exertion', 'Cold; uncovering', 'Cold; night; lying down'),
('Better', 'Cold; open air; uncovering', 'Warmth; company; hot drinks', 'Warmth; mild', 'Motion; warmth'),
('Potency', '30C acute; 200C chronic', '30Cโ200Cโ1M', 'MTโ6X', '6Cโ30C'),
('Differentiating keynote', '"Bag-like puffiness" + NO THIRST + worse heat', 'Waxy skin + anxiety + midnight aggravation', 'Thirst DISTRESSES HEART + serous effusions', 'SMOKY urine + burning kidney pain + drowsy'),
]
mktable(sl, rows, 0.12, 0.9, 13.09, 6.5,
[2.0, 2.77, 2.77, 2.77, 2.78],
hdr_bg=C_TEAL, hdr_fg=C_BG)
ref(sl, '๐ Boericke W. Pocket Manual 9e | Allen HC. Keynotes and Characteristics | Kent JT. Repertory | Clarke JH. Dict. of Practical MM')
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# โโโโโโ HEPATIC OEDEMA (CIRRHOSIS / ASCITES)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# โโ Section header
sl = add_slide()
rect(sl, 0, 0, 13.33, 7.5, RGBColor(0x08, 0x10, 0x1A))
rect(sl, 0, 2.8, 13.33, 0.07, C_GREEN)
tb(sl, '๐ซ HEPATIC OEDEMA โ CIRRHOSIS & ASCITES', 0.5, 1.7, 12.3, 0.9, sz=30, bold=True,
color=C_GREEN, align=PP_ALIGN.CENTER)
tb(sl, 'Pathophysiology โข Investigations โข Homeopathic Materia Medica',
0.5, 2.95, 12.3, 0.55, sz=16, color=C_LGRAY, align=PP_ALIGN.CENTER)
# โโ Hepatic Slide 1: Patho + Investigations
sl = add_slide()
hdr(sl, 'HEPATIC OEDEMA (CIRRHOSIS) โ PATHOPHYSIOLOGY LINKED TO INVESTIGATIONS',
'Fibrosis โ portal HTN โ โ albumin โ vasodilation โ RAAS โ Naโบ retention โ ascites + peripheral oedema')
hep_patho = [
('Hepatic Fibrosis + Nodule Formation', C_GREEN, 0.2, 0.95),
('โ Portal Venous Resistance โ Portal HTN', C_ORANGE, 0.2, 1.95),
('Splanchnic Vasodilation (โ NO)', C_GOLD, 0.2, 2.95),
('โ Effective Arterial Volume โ RAAS โ', C_PINK, 0.2, 3.95),
('โ Albumin Synthesis by Liver', RGBColor(0xA0,0x00,0xA0), 0.2, 4.95),
('ASCITES + Peripheral Oedema', C_TEAL, 0.2, 5.95),
]
for label, col, lx, ly in hep_patho:
rect(sl, lx, ly, 3.5, 0.72, col)
tb(sl, label, lx+0.1, ly+0.1, 3.3, 0.55, sz=10, bold=True, color=C_BG)
for i in range(5):
tb(sl, 'โผ', 0.8, 1.73 + i*1.0, 1.5, 0.25, sz=13, bold=True, color=C_WHITE, align=PP_ALIGN.CENTER)
hep_inv = [
('LFT Panel (ALT/AST/Bilirubin/ALP/GGT)',
'WHY: Hepatic fibrosis โ hepatocyte injury โ raised enzymes; โ synthetic function\n'
'WHEN: First investigation in suspected liver disease\n'
'FINDINGS: โ Bilirubin; โ AST/ALT (usually AST>ALT in cirrhosis); โ ALP; โ GGT; โ albumin; prolonged PT/INR', C_GREEN),
('Serum Albumin + PT/INR (Synthetic Function)',
'WHY: Cirrhotic hepatocytes fail to synthesise albumin + clotting factors โ โ oncotic P โ ascites\n'
'WHEN: At presentation and monthly monitoring\n'
'FINDINGS: Albumin <3.5 g/dL; INR >1.5; Low platelet (hypersplenism); Low fibrinogen', C_ORANGE),
('USG Abdomen + Portal Doppler',
'WHY: Portal HTN โ enlarged portal vein, splenomegaly, ascites, collateral vessels\n'
'WHEN: Once clinical ascites suspected (fluid thrill, shifting dullness)\n'
'FINDINGS: Portal vein >13mm; Splenomegaly; Reversal of portal flow (advanced); Ascites; Hepatic vein blunting', C_GOLD),
('SAAG (Serum-Ascites Albumin Gradient)',
'WHY: Differentiates portal HTN (transudate) from other causes (exudate) of ascites\n'
'WHEN: Always on FIRST diagnostic paracentesis\n'
'FINDINGS: SAAG โฅ1.1 g/dL = Portal HTN (cirrhosis, CCF, Budd-Chiari); <1.1 = Malignancy, TB peritonitis', C_PINK),
('CBC + Haematology (Platelets + CBC)',
'WHY: Splenomegaly (portal HTN) โ sequestration โ pancytopenia; anaemia from malnutrition\n'
'WHEN: Baseline; platelets predict variceal bleeding risk\n'
'FINDINGS: Thrombocytopenia (<150,000); Anaemia (normocytic); Leucopenia; โ ESR; Prolonged PT', RGBColor(0xA0,0x00,0xA0)),
('Endoscopy (OGD) / Elastography',
'WHY: Portal HTN โ oesophageal varices (bleeding risk); elastography grades fibrosis\n'
'WHEN: All cirrhosis patients for variceal screening; elastography to grade fibrosis stage\n'
'FINDINGS: Grade IโIV varices; Fibroscan >12 kPa = cirrhosis; >20 kPa = high variceal risk', C_TEAL),
]
for idx, (title, detail, col) in enumerate(hep_inv):
ly = 0.88 + idx * 1.065
rect(sl, 3.88, ly, 9.22, 0.35, col)
tb(sl, title, 3.98, ly+0.03, 9.1, 0.3, sz=10.5, bold=True, color=C_BG)
rect(sl, 3.88, ly+0.35, 9.22, 0.66, C_DKBLUE)
tb(sl, detail, 3.98, ly+0.37, 9.1, 0.62, sz=9, color=C_WHITE)
ref(sl, '๐ Sleisenger & Fordtran\'s Gastrointestinal and Liver Disease | Harrison\'s 22e | Brenner & Rector\'s Kidney | Grainger & Allison Radiology')
# โโ Hepatic Slide 2: Homeopathic remedies
sl = add_slide()
hdr(sl, 'HEPATIC OEDEMA โ HOMEOPATHIC MATERIA MEDICA (5 KEY REMEDIES)',
'Remedies linked to cirrhotic ascites, portal HTN, hepatic failure โ where they act + why symptoms occur')
rem_hep = [
('LYCOPODIUM\nCLAVATUM', C_GREEN, [
('Acts on', 'Liver (right lobe predominance) + digestive system + kidneys + lymphatics'),
('Patho Link', 'Cirrhosis โ right lobe atrophy โ Lycopodium is RIGHT-sided; liver congestion โ portal HTN โ ascites'),
('Upper body emaciated + lower body swollen', 'Protein malnutrition (โ albumin) โ muscle wasting above; portal HTN โ fluid below'),
('One foot cold, other hot', 'Asymmetric vascular tone from portal HTN โ unequal peripheral perfusion โ KEYNOTE'),
('Dark, albuminous urine', 'Cardiorenal/hepatorenal axis โ โ renal perfusion โ concentrated urine + albumin leak'),
('4โ8 PM aggravation', 'Hepatic glycogen depletion (end of metabolic cycle) โ worsening of all symptoms 4โ8 PM'),
('Potency', '30C constitutional; 200C for chronic cirrhotic ascites'),
]),
('CARDUS MARIANUS\n(Milk Thistle)', C_ORANGE, [
('Acts on', 'Hepatic parenchyma + portal venous system + biliary tract'),
('Patho Link', 'Silymarin principle โ hepatoprotective โ reduces portal pressure; indicated in alcoholic/toxic cirrhosis'),
('Soreness in liver region', 'Hepatic capsular stretch from hepatomegaly + portal congestion โ pain'),
('Jaundice + biliary symptoms', 'Cholestasis from fibrosis โ โ bilirubin โ jaundice; Cardus acts on bile flow'),
('Dropsical conditions from liver', 'Reduced albumin + portal HTN โ ascites; specific hepatic focus distinguishes from Lycopodium'),
('Varicose veins + haemorrhage', 'Portal HTN โ varices; Cardus has haemostatic action on portal venous system'),
('Potency', 'Mother tincture 10โ20 drops + 3Xโ6C; abuse of alcohol; beer especially'),
]),
('CHELIDONIUM\nMAJUS', RGBColor(0xFF,0xC0,0x00), [
('Acts on', 'Liver, bile ducts, gallbladder, right lung'),
('Patho Link', 'Bile stasis (cholestasis from fibrosis) โ Chelidonium most specific liver remedy; right hypochondrium pain'),
('Right-sided all complaints', 'Right lobe affected first in cirrhosis; right shoulder pain (referred from liver); right-sided pattern throughout'),
('Yellow skin + clay-coloured stools', 'Biliary obstruction/cholestasis โ bilirubin โ โ jaundice; acholic stools from bile flow stoppage'),
('Tongue yellow, coated', 'Hepatic dysfunction โ bile reflux โ yellow coated tongue (direct hepatic sign)'),
('Worse 4 AM and 4 PM', 'Bile flow varies diurnally; liver most active at 4 AM โ pain peaks; coincides with Lycopodium 4 PM pattern'),
('Potency', '6X tincture or 3Cโ6C; acute liver pathology; always consider alongside Lycopodium'),
]),
('MURIATIC ACID', C_PURPLE, [
('Acts on', 'Mucous membranes, liver (parenchyma in decompensated cirrhosis), rectal sphincters'),
('Patho Link', 'Decompensated cirrhosis โ hepatic encephalopathy (drowsiness), malabsorption, severe emaciation โ Muriatic Acid picture'),
('Drowsiness + emaciation', 'Hepatic encephalopathy (โ ammonia from liver failure) + protein catabolism โ stupor + muscle wasting'),
('Involuntary stool + watery diarrhoea', 'Hepatic failure โ gut mucosal oedema + portal colopathy โ anal sphincter weakness'),
('Dry mouth + aphthae', 'Dehydration + poor hepatic glycogen โ oral mucosal changes; aphthae in severe portal disease'),
('Weak, irritable stomach', 'Portal hypertensive gastropathy + gastric mucosal congestion โ poor digestion'),
('Potency', '6Cโ30C; end-stage cirrhosis with encephalopathy; emaciation + drowsiness are key guides'),
]),
('NATRUM SULPH\n(Nat-s)', C_TEAL, [
('Acts on', 'Liver, pancreas, spleen, kidneys โ organs of fluid/salt metabolism'),
('Patho Link', 'Natrum Sulph is the BIOCHEMIC liver remedy; acts on liver Naโบ/fluid balance; indicated in liver-driven oedema with watery diarrhoea'),
('Bilious vomiting + yellow-green diarrhoea', 'Cholestasis + portal congestion โ bile in GI tract โ bilious character'),
('Asthmatic breathing at 4โ5 AM', 'Hepatic dysfunction โ fluid redistribution at night โ pulmonary oedema at 4 AM โ portal-pulmonary axis'),
('Worse in damp weather', 'Natrum Sulph = water + salt balance; damp weather โ โ fluid retention โ worsens hepatic oedema'),
('Ascites with flatulence', 'Portal HTN โ mesenteric venous congestion โ gaseous distension + ascites together'),
('Potency', '6X biochemic dose; 30Cโ200C constitutional; particularly for cirrhosis after trauma or damp exposure'),
]),
]
for col_i, (name, hcol, items) in enumerate(rem_hep):
x = 0.18 + col_i * 2.6
rect(sl, x, 0.9, 2.45, 0.42, hcol)
tb(sl, name, x+0.05, 0.92, 2.35, 0.38, sz=9.5, bold=True, color=C_BG, align=PP_ALIGN.CENTER)
for ri, (label, detail) in enumerate(items):
y = 1.38 + ri * 0.88
rect(sl, x, y, 2.45, 0.82, C_DKBLUE if ri%2==0 else C_MID)
tb(sl, label, x+0.07, y+0.03, 2.3, 0.26, sz=9, bold=True, color=hcol)
tb(sl, detail, x+0.07, y+0.3, 2.3, 0.5, sz=8.5, color=C_WHITE)
ref(sl, '๐ Boericke W. Pocket Manual 9e | homoeopathicjournal.com Liver Cirrhosis | pmc.ncbi.nlm.nih.gov Viral Hepatitis Homeopathy | hpathy.com Ascites')
# โโ Hepatic Slide 3: Compare & Contrast
sl = add_slide()
hdr(sl, 'HEPATIC OEDEMA โ COMPARE & CONTRAST: 5 HOMEOPATHIC REMEDIES',
'Differentiate by: specific organ emphasis | characteristic symptoms | constitutional picture')
rows = [
('FEATURE', 'LYCOPODIUM', 'CARDUS MARIANUS', 'CHELIDONIUM', 'MURIATIC ACID', 'NATRUM SULPH'),
('Primary organ focus', 'Liver (right lobe) + GI + kidneys', 'Liver + portal system + bile', 'Liver + bile ducts + right lung', 'Decompensated liver + mucous membranes', 'Liver + pancreas + fluid balance'),
('Ascites character', 'Lower body swollen; upper emaciated; right predominance', 'Dropsical conditions from liver + portal venous', 'Ascites secondary to biliary obstruction', 'Severe ascites in decompensated; watery stools', 'Ascites + flatulence; worse damp weather'),
('Pain pattern', 'Shooting right โ left abdomen', 'Soreness in liver region; left lobe region also', 'Right hypochondrium โ right shoulder (referred)', 'Less pain; more stupor + weakness', 'Painful liver; left-sided chest also'),
('Jaundice', 'Can occur in hepatic cirrhosis', 'Jaundice + biliary symptoms', 'PROMINENT jaundice; clay stools; KEYNOTE', 'Present in severe liver failure', 'Bilious โ yellowish coloured'),
('Stool character', 'Constipation alternating diarrhoea; hard; incomplete', 'Alternating diarrhoea + constipation', 'Light-coloured/clay stools from bile obstruction', 'Watery, involuntary; sphincter weakness', 'Bilious diarrhoea; yellowish-green; 4โ5 AM'),
('Urine', 'Dark, albuminous; red sand sediment', 'Dark; may show haematuria in advanced', 'Dark, bilious; profuse flow; clear after pain', 'Turbid; decreased; uraemic tendency', 'Dark; โ or โ; bilious character'),
('Worse time', '4โ8 PM (most characteristic)', 'Not time-specific; worse exertion', '4 AM and 4 PM', 'Night; damp cold', '4โ5 AM; damp weather; wet seasons'),
('Mental state', 'Cowardly, anticipatory anxiety; intellectual decline', 'Irritable; morose; worse emotional stress', 'Not prominent; physically focused', 'Unconscious-like stupor; does not speak', 'Suicidal tendency in chronic disease; melancholy'),
('Best suited for', 'Alcoholic cirrhosis; functional liver decline; dropsy', 'Beer/alcohol-related; varicose veins; portal HTN', 'Biliary cirrhosis; RUQ pain; jaundice', 'End-stage cirrhosis; hepatic encephalopathy', 'Damp-climate cirrhosis; bilious type; traumatic liver injury'),
('Compare to', 'Chelidonium (both right-sided liver) โ Lyco more constitutional', 'Carduus more portal-specific; Chelidonium more bile-specific', 'Lycopodium shares right-side; Chelidonium adds jaundice', 'China (also emaciation + dropsy but not as collapsed)', 'Lycopodium (4PM); Sulphur (skin + liver)'),
('Potency', '30Cโ200C', 'MT or 3Xโ6C', '6Xโ6Cโ30C', '6Cโ30C', '6X biochemic; 30Cโ200C'),
]
mktable(sl, rows, 0.12, 0.9, 13.09, 6.5,
[1.8, 2.25, 2.25, 2.25, 2.25, 2.29],
hdr_bg=C_GREEN, hdr_fg=C_BG)
ref(sl, '๐ Boericke W. Pocket Manual 9e | Clarke JH. Dictionary of Practical Materia Medica | Kent JT. Repertory | homoeopathicjournal.com')
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# REFERENCES
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
sl = add_slide()
rect(sl, 0, 0, 13.33, 7.5, C_BG)
rect(sl, 0, 0, 13.33, 0.78, C_DKBLUE)
tb(sl, 'REFERENCES', 0.3, 0.1, 12.7, 0.6, sz=22, bold=True, color=C_TEAL)
ref_data = [
('HOMEOPATHIC MM & REPERTORY', C_GOLD, [
'1. Boericke W. Pocket Manual of Homoeopathic Materia Medica, 9th Edition.',
'2. Allen HC. Keynotes and Characteristics with Comparisons of the Leading Remedies.',
'3. Clarke JH. A Dictionary of Practical Materia Medica (3 Volumes).',
'4. Kent JT. Repertory of the Homeopathic Materia Medica.',
'5. Murphy R. Lotus Materia Medica, 3rd Edition.',
'6. hpathy.com โ Dropsical Affections/Oedema; Ascites (Dr. Manish Bhatia).',
'7. homoeopathicjournal.com โ Liver Cirrhosis with Homeopathic Perspective.',
'8. ijrrjournal.com โ Nephrotic Syndrome with Utility of Homoeopathy (2023).',
'9. homeopathicmd.com โ Homeopathy for Cardiovascular Diseases.',
]),
('CONVENTIONAL MEDICINE', C_TEAL, [
'10. Harrison\'s Principles of Internal Medicine, 22nd Edition (2025). McGraw-Hill.',
'11. Braunwald\'s Heart Disease: A Textbook of CV Medicine, 12e. Elsevier.',
'12. Fuster & Hurst\'s The Heart, 15th Edition. McGraw-Hill.',
'13. Brenner & Rector\'s The Kidney, 10th Edition. Elsevier.',
'14. Comprehensive Clinical Nephrology, 7th Edition (Feehally et al.). Elsevier.',
'15. Sleisenger & Fordtran\'s Gastrointestinal and Liver Disease. Elsevier.',
'16. Robbins & Kumar Basic Pathology, 11e. Elsevier.',
'17. Grainger & Allison\'s Diagnostic Radiology. Elsevier.',
'18. Goldman-Cecil Medicine, 26e. Elsevier.',
]),
('JOURNAL REFERENCES', C_GREEN, [
'19. Ellison DH, Felker GM. Diuretic Treatment in Heart Failure. NEJM 2017;377:1964.',
'20. Edema formation in CHF & underlying mechanisms. PMC9553007 (PMC 2022).',
'21. Nephrotic Syndrome: Oedema Formation & Treatment With Diuretics. PMC6341062.',
'22. Successful Treatment of Chronic Viral Hepatitis With High-dilution Medicine. PMC3833483.',
'23. Ponikowski P et al. 2016 ESC Guidelines โ Heart Failure. Eur Heart J.',
'24. KDIGO 2021 Clinical Practice Guideline โ Glomerular Diseases.',
'25. WHO. Lymphatic Filariasis Fact Sheet, 2022.',
]),
]
for col_i, (section, hcol, refs) in enumerate(ref_data):
x = 0.2 + col_i * 4.37
rect(sl, x, 0.88, 4.1, 0.4, hcol)
tb(sl, section, x+0.1, 0.9, 3.9, 0.35, sz=9.5, bold=True, color=C_BG)
for ri, r in enumerate(refs):
y = 1.35 + ri * 0.67
tb(sl, r, x+0.07, y, 4.0, 0.63, sz=8.5, color=C_LGRAY)
# โโ SAVE
prs.save(OUT)
print(f'โ
Saved: {OUT}')
print(f'Total slides: {len(prs.slides)}')