You have 30 year research experience in roganidan department of ayurved I am 1 st year pg scholar in roganidan department I want to study on medovah Srotodushti lakshan in patients of cholelithiasis for my thesis work. Before That I should make synopsis ppt and present before department and scientific committee if they pass it then I will conduct research So with your 30 year experience makE ppt for my presentation make ppt is short, to the point, saying my idea to the audience follow the finer criteria
mkdir -p /tmp/workspace/roganidan-synopsis && ls /tmp/workspace/roganidan-synopsis/
~/roganidan-synopsis/create_ppt.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.oxml.ns import qn
from pptx.util import Pt
import copy
from lxml import etree
# ── Palette ──────────────────────────────────────────────────────────────────
SAFFRON = RGBColor(0xD4, 0x6A, 0x00) # deep saffron - Ayurvedic warmth
DARK_TEAL = RGBColor(0x1A, 0x4A, 0x4A) # header background
CREAM = RGBColor(0xFD, 0xF6, 0xE3) # slide background
DARK_TEXT = RGBColor(0x1C, 0x1C, 0x1C)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_GOLD = RGBColor(0xF5, 0xC5, 0x18)
MID_TEAL = RGBColor(0x2E, 0x7D, 0x7D)
ACCENT_RED = RGBColor(0xB5, 0x2B, 0x2B)
W = Inches(13.333)
H = Inches(7.5)
prs = Presentation()
prs.slide_width = W
prs.slide_height = H
blank = prs.slide_layouts[6] # fully blank layout
# ─────────────────────────────────────────────────────────────────────────────
# Helper utilities
# ─────────────────────────────────────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill_rgb, alpha=None):
shape = slide.shapes.add_shape(1, x, y, w, h) # MSO_SHAPE_TYPE.RECTANGLE = 1
shape.line.fill.background()
shape.line.color.rgb = fill_rgb
shape.fill.solid()
shape.fill.fore_color.rgb = fill_rgb
return shape
def add_textbox(slide, x, y, w, h, text, font_size, bold=False, color=DARK_TEXT,
align=PP_ALIGN.LEFT, wrap=True, italic=False, anchor=MSO_ANCHOR.TOP):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = wrap
tf.vertical_anchor = anchor
tf.margin_left = 0
tf.margin_right = 0
tf.margin_top = 0
tf.margin_bottom = 0
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
run.font.name = "Calibri"
return tb
def add_multiline_textbox(slide, x, y, w, h, lines, base_size, bold_first=False,
color=DARK_TEXT, align=PP_ALIGN.LEFT, line_spacing=1.15,
anchor=MSO_ANCHOR.TOP):
"""lines = list of (text, size_delta, bold, color_override) tuples or plain strings"""
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
tf.vertical_anchor = anchor
tf.margin_left = 0; tf.margin_right = 0
tf.margin_top = 0; tf.margin_bottom = 0
first = True
for item in lines:
if isinstance(item, str):
text, delta, bld, col = item, 0, False, color
else:
text = item[0]
delta = item[1] if len(item) > 1 else 0
bld = item[2] if len(item) > 2 else False
col = item[3] if len(item) > 3 else color
if first:
p = tf.paragraphs[0]
first = False
else:
p = tf.add_paragraph()
p.alignment = align
from pptx.oxml.ns import qn
from lxml import etree
pPr = p._pPr
if pPr is None:
pPr = p._p.get_or_add_pPr()
lnSpc = etree.SubElement(pPr, qn('a:lnSpc'))
spcPct = etree.SubElement(lnSpc, qn('a:spcPct'))
spcPct.set('val', str(int(line_spacing * 100000)))
run = p.add_run()
run.text = text
run.font.size = Pt(base_size + delta)
run.font.bold = (bold_first and text == lines[0]) or bld
run.font.color.rgb = col
run.font.name = "Calibri"
return tb
def header_bar(slide, title_text, subtitle_text=None):
"""Dark teal header bar across top."""
add_rect(slide, 0, 0, W, Inches(1.1), DARK_TEAL)
add_textbox(slide, Inches(0.3), Inches(0.12), Inches(11), Inches(0.7),
title_text, 26, bold=True, color=WHITE, align=PP_ALIGN.LEFT,
anchor=MSO_ANCHOR.MIDDLE)
if subtitle_text:
add_textbox(slide, Inches(0.3), Inches(0.78), Inches(11), Inches(0.35),
subtitle_text, 13, bold=False, color=LIGHT_GOLD,
align=PP_ALIGN.LEFT)
def cream_bg(slide):
add_rect(slide, 0, 0, W, H, CREAM)
def bottom_strip(slide, text="Roganidan Department | PG Synopsis | 2026"):
add_rect(slide, 0, H - Inches(0.32), W, Inches(0.32), DARK_TEAL)
add_textbox(slide, Inches(0.3), H - Inches(0.32), Inches(12), Inches(0.32),
text, 9, color=LIGHT_GOLD, align=PP_ALIGN.LEFT,
anchor=MSO_ANCHOR.MIDDLE)
def divider_line(slide, y, color=MID_TEAL, thickness=1):
from pptx.util import Pt as Pt2
ln = slide.shapes.add_shape(1, Inches(0.4), y, W - Inches(0.8), Inches(0.02))
ln.fill.background()
ln.line.color.rgb = color
ln.line.width = Pt2(thickness)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 1 – Title Slide
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, W, H, DARK_TEAL) # full dark bg
add_rect(s, 0, Inches(2.3), W, Inches(3.2), RGBColor(0x12, 0x36, 0x36)) # content panel
# Saffron top accent
add_rect(s, 0, 0, W, Inches(0.22), SAFFRON)
# Saffron bottom accent
add_rect(s, 0, H - Inches(0.22), W, Inches(0.22), SAFFRON)
# Sanskrit verse (small, gold)
add_textbox(s, Inches(0.5), Inches(0.35), Inches(12), Inches(0.5),
'"मेदोवहानां स्रोतसां मूलं वृक्कौ वपावहनं च" — Charaka Sharira 5/8',
11, italic=True, color=LIGHT_GOLD, align=PP_ALIGN.CENTER)
# Main title
add_textbox(s, Inches(0.5), Inches(1.6), Inches(12.3), Inches(0.75),
"Medovah Srotodushti Lakshana in Patients of Cholelithiasis",
30, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_textbox(s, Inches(0.5), Inches(2.35), Inches(12.3), Inches(0.45),
"An Observational Clinical Study",
17, italic=True, color=LIGHT_GOLD, align=PP_ALIGN.CENTER)
# Divider
add_rect(s, Inches(3), Inches(2.95), Inches(7.3), Inches(0.04), SAFFRON)
# Candidate info block
info_lines = [
("Presented by: [Your Name], PG Scholar (1st Year)", 0, False, WHITE),
("Guide: Dr. _____________, M.D. (Ayu.), Roganidan", 0, False, LIGHT_GOLD),
("Department of Roganidan & Vikriti Vigyan", 0, False, LIGHT_GOLD),
("[Name of Ayurvedic College & University]", 0, False, RGBColor(0xCC, 0xCC, 0xCC)),
]
add_multiline_textbox(s, Inches(1), Inches(3.1), Inches(11.3), Inches(1.6),
info_lines, 14, align=PP_ALIGN.CENTER, line_spacing=1.5)
# Bottom label
add_textbox(s, Inches(0.5), H - Inches(1.1), Inches(12.3), Inches(0.5),
"PG Synopsis Presentation | Academic Year 2026-27",
12, color=RGBColor(0xAA, 0xAA, 0xAA), align=PP_ALIGN.CENTER)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 2 – Introduction
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Introduction", "Conceptual Background")
bottom_strip(s)
col1_x = Inches(0.4)
col2_x = Inches(6.9)
col_w = Inches(6.1)
y0 = Inches(1.25)
# Left column header
add_rect(s, col1_x, y0, col_w, Inches(0.38), MID_TEAL)
add_textbox(s, col1_x + Inches(0.1), y0 + Inches(0.04), col_w - Inches(0.2), Inches(0.34),
"Medovah Srotas — Ayurvedic Perspective", 13, bold=True, color=WHITE,
anchor=MSO_ANCHOR.MIDDLE)
left_points = [
("• Meda Dhatu (adipose tissue) is the 4th Dhatu in the Sapta Dhatu sequence.", 0, False, DARK_TEXT),
("• Medovah Srotas: channels carrying & nourishing Meda Dhatu.", 0, False, DARK_TEXT),
("• Moola: Vrikka (kidneys) and Vapavahana (omentum/mesenteric fat).", 0, False, DARK_TEXT),
("• Dushti Hetu: Asyasukha, Divasvapna, Medura Ahara, Avyayama.", 0, False, DARK_TEXT),
("• Dushti Lakshana (C.Su.28): Sthaulya, Ati-sveda, Alpa-prana, Daurbalya,", 0, False, DARK_TEXT),
(" Chala-sphik/Udara/Stana, Kshudha-adhikya, Pipasa-adhikya.", 0, False, DARK_TEXT),
]
add_multiline_textbox(s, col1_x + Inches(0.1), y0 + Inches(0.45), col_w - Inches(0.2),
Inches(2.8), left_points, 12, line_spacing=1.4)
# Right column header
add_rect(s, col2_x, y0, col_w, Inches(0.38), SAFFRON)
add_textbox(s, col2_x + Inches(0.1), y0 + Inches(0.04), col_w - Inches(0.2), Inches(0.34),
"Cholelithiasis — Modern Perspective", 13, bold=True, color=WHITE,
anchor=MSO_ANCHOR.MIDDLE)
right_points = [
("• Cholelithiasis = Gallstone disease; prevalence ~10-15% in adults.", 0, False, DARK_TEXT),
("• Strongly associated with obesity, dyslipidemia, insulin resistance.", 0, False, DARK_TEXT),
("• 'Fat, Fertile, Forty, Female, Flatulent' — classic risk profile.", 0, False, DARK_TEXT),
("• Pathogenesis: supersaturation of bile with cholesterol, nucleation,", 0, False, DARK_TEXT),
(" gallbladder dysmotility.", 0, False, DARK_TEXT),
("• USG abdomen: gold standard for diagnosis.", 0, False, DARK_TEXT),
]
add_multiline_textbox(s, col2_x + Inches(0.1), y0 + Inches(0.45), col_w - Inches(0.2),
Inches(2.8), right_points, 12, line_spacing=1.4)
# Bridge statement
add_rect(s, Inches(0.4), Inches(5.25), W - Inches(0.8), Inches(0.75), RGBColor(0xE8, 0xF4, 0xF4))
add_textbox(s, Inches(0.55), Inches(5.28), W - Inches(1.1), Inches(0.65),
"KEY LINK: Cholelithiasis shares its cardinal risk factors (obesity, fat-rich diet, "
"sedentary habit) with the known Hetu of Medovah Srotodushti — raising the hypothesis "
"that Medovah Srotas Dushti Lakshanas are demonstrably present in cholelithiasis patients.",
12, italic=True, color=DARK_TEAL, align=PP_ALIGN.LEFT, anchor=MSO_ANCHOR.MIDDLE)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 3 – Need / Rationale
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Need for the Study", "Why This Research Matters")
bottom_strip(s)
need_items = [
("1", "Prevalence Gap",
"Cholelithiasis affects millions yet is described only in modern pathology terms. "
"No published study maps Medovah Srotodushti Lakshanas in this cohort."),
("2", "Diagnostic Potential",
"If specific Ayurvedic Lakshanas consistently appear in cholelithiasis patients, "
"they can serve as early clinical markers before gallstone formation."),
("3", "Preventive Scope",
"Identifying Medovah Srotodushti early allows Nidana Parivarjana and Chikitsa "
"before surgical intervention becomes necessary."),
("4", "Research Contribution",
"This study will generate evidence-based data linking Ayurvedic Srotas theory "
"with a common metabolic-surgical condition — a significant academic contribution."),
("5", "Curriculum Relevance",
"Roganidan department aims to validate classical Nidana through clinical observation. "
"This study directly fulfils that mandate."),
]
y_start = Inches(1.3)
box_h = Inches(0.78)
gap = Inches(0.1)
num_w = Inches(0.55)
num_bg = [DARK_TEAL, MID_TEAL, SAFFRON, DARK_TEAL, MID_TEAL]
for i, (num, heading, detail) in enumerate(need_items):
y = y_start + i * (box_h + gap)
# Number badge
add_rect(s, Inches(0.4), y, num_w, box_h, num_bg[i])
add_textbox(s, Inches(0.4), y, num_w, box_h, num, 24, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
# Content box
add_rect(s, Inches(0.4) + num_w, y, W - Inches(0.8) - num_w, box_h,
RGBColor(0xF0, 0xF7, 0xF7))
add_textbox(s, Inches(0.4) + num_w + Inches(0.12), y + Inches(0.04),
W - Inches(1.2) - num_w, Inches(0.25),
heading, 13, bold=True, color=DARK_TEAL)
add_textbox(s, Inches(0.4) + num_w + Inches(0.12), y + Inches(0.28),
W - Inches(1.2) - num_w, Inches(0.45),
detail, 11, color=DARK_TEXT)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 4 – Aims & Objectives
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Aims & Objectives")
bottom_strip(s)
# AIM box
add_rect(s, Inches(0.4), Inches(1.25), W - Inches(0.8), Inches(0.7), MID_TEAL)
add_textbox(s, Inches(0.55), Inches(1.28), Inches(2.2), Inches(0.64),
"AIM", 18, bold=True, color=WHITE, anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, Inches(2.75), Inches(1.25), Inches(0.03), Inches(0.7), WHITE)
add_textbox(s, Inches(2.85), Inches(1.28), W - Inches(3.2), Inches(0.64),
"To study Medovah Srotodushti Lakshanas in patients of Cholelithiasis "
"and to assess their prevalence and severity.",
13, color=WHITE, anchor=MSO_ANCHOR.MIDDLE)
# Objectives header
add_textbox(s, Inches(0.4), Inches(2.15), Inches(4), Inches(0.4),
"OBJECTIVES", 14, bold=True, color=DARK_TEAL)
divider_line(s, Inches(2.52), color=SAFFRON, thickness=1.5)
objectives = [
("01", "To observe & document the classical Medovah Srotodushti Lakshanas "
"(Sthaulya, Atisveda, Daurbalya, Kshudha-Adhikya, etc.) in USG-confirmed "
"cholelithiasis patients."),
("02", "To assess the frequency and severity of each Lakshana using a validated "
"scoring scale designed for this study."),
("03", "To correlate findings with modern parameters: BMI, lipid profile, "
"ultrasonographic findings (stone size, number, GB wall thickness)."),
("04", "To identify which Medovah Srotodushti Lakshanas are most predominant "
"in this patient group and suggest their diagnostic utility."),
]
y0 = Inches(2.6)
for i, (num, text) in enumerate(objectives):
y = y0 + i * Inches(1.0)
add_rect(s, Inches(0.4), y, Inches(0.55), Inches(0.5), SAFFRON)
add_textbox(s, Inches(0.4), y, Inches(0.55), Inches(0.5), num,
14, bold=True, color=WHITE, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_textbox(s, Inches(1.05), y, W - Inches(1.45), Inches(0.5), text,
12, color=DARK_TEXT, anchor=MSO_ANCHOR.MIDDLE)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 5 – Hypothesis
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Hypothesis")
bottom_strip(s)
# Central hypothesis card
add_rect(s, Inches(0.8), Inches(1.4), Inches(11.73), Inches(2.0), DARK_TEAL)
add_textbox(s, Inches(1.0), Inches(1.5), Inches(11.33), Inches(1.8),
'"Patients diagnosed with Cholelithiasis will demonstrate clinically significant '
'Medovah Srotodushti Lakshanas as described in classical Ayurvedic texts, '
'and the severity of these Lakshanas will positively correlate with the '
'severity of cholelithiasis on ultrasonographic parameters."',
16, italic=True, color=WHITE, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
# H0 / H1
add_rect(s, Inches(0.8), Inches(3.65), Inches(5.75), Inches(1.2), RGBColor(0xE8, 0xF4, 0xF4))
add_textbox(s, Inches(0.95), Inches(3.68), Inches(5.4), Inches(0.4),
"NULL HYPOTHESIS (H\u2080)", 13, bold=True, color=ACCENT_RED)
add_textbox(s, Inches(0.95), Inches(4.08), Inches(5.4), Inches(0.7),
"No significant Medovah Srotodushti Lakshanas will be found in "
"cholelithiasis patients above baseline population levels.",
11, color=DARK_TEXT)
add_rect(s, Inches(6.83), Inches(3.65), Inches(5.75), Inches(1.2), RGBColor(0xE8, 0xF4, 0xF4))
add_textbox(s, Inches(6.98), Inches(3.68), Inches(5.4), Inches(0.4),
"ALTERNATE HYPOTHESIS (H\u2081)", 13, bold=True, color=MID_TEAL)
add_textbox(s, Inches(6.98), Inches(4.08), Inches(5.4), Inches(0.7),
"Clinically significant Medovah Srotodushti Lakshanas will be "
"demonstrably present and correlatable in cholelithiasis patients.",
11, color=DARK_TEXT)
# Rationale line
add_textbox(s, Inches(0.8), Inches(5.05), Inches(11.73), Inches(0.5),
"Basis: Shared Hetu (Atisnigdha, Guru Ahara; Avyayama; Divasvapna) link both "
"conditions through Meda-Kha-Vaigunya and Srotorodha pathology.",
12, italic=True, color=DARK_TEAL, align=PP_ALIGN.CENTER)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 6 – Materials & Methods
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Materials & Methods", "Study Design Overview")
bottom_strip(s)
# 3-column layout
cols = [
("Study Type", MID_TEAL, [
"Observational, Cross-sectional Study",
"",
"Duration: 18 months",
"",
"Setting: OPD & IPD,\n[Your Institute]",
]),
("Sample", SAFFRON, [
"Sample Size: 60 patients*",
"",
"Group A (Cases): 60 USG-confirmed\ncholelithiasis patients",
"",
"*Calculated by formula:\nn = Z\u00b2 \u00d7 P(1-P) / d\u00b2",
]),
("Tools", DARK_TEAL, [
"1. Structured Case Proforma",
"2. Medovah Srotodushti\n Lakshana Scoring Sheet",
"3. Anthropometry (BMI, WC)",
"4. Lipid Profile, LFT, FBS",
"5. USG Abdomen Report",
]),
]
col_w2 = Inches(3.9)
x_positions = [Inches(0.35), Inches(4.75), Inches(9.12)]
y0 = Inches(1.25)
for (title, color, items), xp in zip(cols, x_positions):
add_rect(s, xp, y0, col_w2, Inches(0.45), color)
add_textbox(s, xp + Inches(0.1), y0 + Inches(0.03), col_w2 - Inches(0.2), Inches(0.42),
title, 14, bold=True, color=WHITE, anchor=MSO_ANCHOR.MIDDLE,
align=PP_ALIGN.CENTER)
add_rect(s, xp, y0 + Inches(0.45), col_w2, Inches(4.1), RGBColor(0xF2, 0xF8, 0xF8))
y_item = y0 + Inches(0.6)
for item in items:
if item:
add_textbox(s, xp + Inches(0.12), y_item, col_w2 - Inches(0.24), Inches(0.5),
item, 12, color=DARK_TEXT)
y_item += Inches(0.55) if item else Inches(0.2)
# Note
add_textbox(s, Inches(0.35), Inches(6.2), Inches(12.6), Inches(0.35),
"* Sample size subject to revision post-ethical clearance and power analysis.",
10, italic=True, color=RGBColor(0x77, 0x77, 0x77))
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 7 – Selection Criteria (FINER Criteria Slide)
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Selection Criteria", "Inclusion | Exclusion | Diagnostic Criteria")
bottom_strip(s)
# Three panels
panels = [
("INCLUSION CRITERIA", MID_TEAL, [
"1. Age 20–60 years, either sex",
"2. USG-confirmed cholelithiasis (single/multiple stones)",
"3. Willing to give informed consent",
"4. Ability to follow up for study duration",
"5. Patients not on hypolipidemic / bariatric treatment",
]),
("EXCLUSION CRITERIA", ACCENT_RED, [
"1. Acute cholecystitis / cholangitis (emergency)",
"2. Post-cholecystectomy patients",
"3. Known malignancy of biliary tract",
"4. Pregnancy / Lactation",
"5. Severe systemic illness (CKD, cirrhosis, heart failure)",
"6. Patients on long-term steroids / immunosuppressants",
"7. Age <20 or >60 years",
]),
("DIAGNOSTIC CRITERIA", DARK_TEAL, [
"MODERN:",
"• USG Abdomen (cholelithiasis confirmed)",
"• BMI, Waist Circumference",
"• Lipid Profile, FBS, LFT",
"",
"AYURVEDIC:",
"• Medovah Srotodushti Lakshana",
" scoring sheet (researcher-designed,",
" validated by expert panel)",
"• Prakriti assessment (AYU scale)",
]),
]
col_w3 = Inches(4.0)
x_pos3 = [Inches(0.3), Inches(4.67), Inches(9.03)]
y0 = Inches(1.25)
for (title, color, items), xp in zip(panels, x_pos3):
add_rect(s, xp, y0, col_w3, Inches(0.42), color)
add_textbox(s, xp + Inches(0.08), y0 + Inches(0.03), col_w3 - Inches(0.16), Inches(0.36),
title, 12, bold=True, color=WHITE, align=PP_ALIGN.CENTER,
anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, xp, y0 + Inches(0.42), col_w3, Inches(4.7), RGBColor(0xF5, 0xF9, 0xF9))
y_i = y0 + Inches(0.55)
for item in items:
clr = DARK_TEXT
bld = False
if item in ("MODERN:", "AYURVEDIC:"):
clr = color; bld = True
add_textbox(s, xp + Inches(0.1), y_i, col_w3 - Inches(0.2), Inches(0.42),
item, 11, color=clr, bold=bld)
y_i += Inches(0.44) if item else Inches(0.18)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 8 – Observational Parameters & Scoring
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Observational Parameters & Scoring", "Medovah Srotodushti Lakshana Assessment Tool")
bottom_strip(s)
# Table header
headers = ["Lakshana", "Classical Reference", "Clinical Equivalent", "Score (0–3)"]
col_ws = [Inches(2.8), Inches(2.8), Inches(3.5), Inches(1.5)]
x_starts = [Inches(0.35), Inches(3.15), Inches(5.95), Inches(9.45)]
y_hdr = Inches(1.28)
for hdr, xp, cw in zip(headers, x_starts, col_ws):
add_rect(s, xp, y_hdr, cw - Inches(0.04), Inches(0.38), DARK_TEAL)
add_textbox(s, xp + Inches(0.06), y_hdr + Inches(0.03), cw - Inches(0.14), Inches(0.32),
hdr, 12, bold=True, color=WHITE, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
rows = [
("Sthaulya", "C.Su.21/9", "BMI ≥25, abdominal obesity (WC)", "0–3"),
("Atisveda", "C.Su.21/9", "Excessive sweating on mild exertion", "0–3"),
("Daurbalya", "C.Su.21/9", "Easy fatiguability, weakness", "0–3"),
("Kshudha-adhikya", "C.Su.21/9", "Increased appetite, frequent hunger", "0–3"),
("Pipasa-adhikya", "C.Su.21/9", "Excessive thirst", "0–3"),
("Anga-gaurava", "A.H.Su.11", "Heaviness of body", "0–3"),
("Alpa-prana", "C.Su.21/9", "Low vitality / decreased stamina", "0–3"),
("Chala-sphik", "C.Su.21/9", "Pendulous abdomen / flanks", "0–3"),
]
row_colors = [RGBColor(0xF0, 0xF7, 0xF7), RGBColor(0xFC, 0xFC, 0xFC)]
for i, (lk, ref, eq, sc) in enumerate(rows):
yr = Inches(1.68) + i * Inches(0.52)
rc = row_colors[i % 2]
data = [lk, ref, eq, sc]
for j, (cell, xp, cw) in enumerate(zip(data, x_starts, col_ws)):
add_rect(s, xp, yr, cw - Inches(0.04), Inches(0.5), rc)
bld = (j == 0)
col = MID_TEAL if j == 0 else DARK_TEXT
add_textbox(s, xp + Inches(0.06), yr + Inches(0.04),
cw - Inches(0.14), Inches(0.42),
cell, 11, bold=bld, color=col, anchor=MSO_ANCHOR.MIDDLE)
# Scoring note
add_textbox(s, Inches(0.35), Inches(6.0), Inches(12.6), Inches(0.38),
"Scoring: 0 = Absent | 1 = Mild | 2 = Moderate | 3 = Severe "
"| Maximum Total Score: 24 | Validation: Expert panel of Roganidan faculty",
11, italic=True, color=DARK_TEAL)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 9 – Expected Outcome & Significance
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Expected Outcome & Significance")
bottom_strip(s)
outcomes = [
(SAFFRON, "Clinical Finding",
"Documentation of frequency & severity of Medovah Srotodushti Lakshanas in "
"a well-defined cholelithiasis cohort for the first time."),
(MID_TEAL, "Correlation Data",
"Statistical correlation between Lakshana scores and modern markers "
"(BMI, lipid profile, stone burden on USG)."),
(DARK_TEAL, "Diagnostic Framework",
"A validated Lakshana scoring sheet usable in clinical practice for "
"early Medovah Srotas assessment."),
(SAFFRON, "Preventive Insight",
"Identification of high-risk individuals through Ayurvedic Nidana before "
"stone formation — enabling Nidana Parivarjana-based prevention."),
]
y0 = Inches(1.35)
for i, (color, heading, detail) in enumerate(outcomes):
y = y0 + i * Inches(1.25)
add_rect(s, Inches(0.35), y, Inches(0.1), Inches(0.9), color)
add_rect(s, Inches(0.5), y, W - Inches(0.85), Inches(0.9),
RGBColor(0xF0, 0xF7, 0xF7))
add_textbox(s, Inches(0.65), y + Inches(0.05), Inches(3.5), Inches(0.3),
heading, 13, bold=True, color=color)
add_textbox(s, Inches(0.65), y + Inches(0.35), W - Inches(1.15), Inches(0.5),
detail, 12, color=DARK_TEXT)
# Significance footer
add_rect(s, Inches(0.35), Inches(6.25), W - Inches(0.7), Inches(0.55), DARK_TEAL)
add_textbox(s, Inches(0.5), Inches(6.28), W - Inches(1.0), Inches(0.52),
"This study will bridge Ayurvedic Srotas Siddhanta with evidence-based clinical medicine "
"— contributing original, publishable data to Roganidan scholarship.",
13, italic=True, color=WHITE, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 10 – References
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "References")
bottom_strip(s)
refs = [
"1. Charaka Samhita (Acharya YT Ed.) — Sutrasthana 21/9, 28/7; Sharirasthana 5/8.",
"2. Ashtanga Hridayam (Srikantha Murthy Ed.) — Sutrasthana 11/13-14.",
"3. Sushruta Samhita — Sutrasthana 15 (Meda Dhatu Chikitsa).",
"4. Agnivesha (Dridhabala revised) — Vimana Sthana 5/16 (Srotodushti Hetu).",
"5. Longo DL et al. Harrison's Principles of Internal Medicine, 21st Ed. — Cholelithiasis, Ch. 345.",
"6. Friedman LS. Current Diagnosis & Treatment: Gastroenterology — Biliary Tract Disorders.",
"7. Portincasa P et al. 'Cholesterol gallstone disease.' Lancet. 2006;368(9531):230-239.",
"8. Shaffer EA. 'Gallstone disease: epidemiology of gallbladder stone disease.' Best Pract Res Clin Gastroenterol. 2006.",
"9. Sharma PV. Dravyaguna Vijnana, Vol. II — Medaghna Dravyas.",
"10. Yadavji Trikamji Acharya. Commentary on Charaka Samhita (Chakrapani). Reprint 2013.",
]
y0 = Inches(1.3)
for i, ref in enumerate(refs):
y = y0 + i * Inches(0.48)
clr = DARK_TEAL if i % 2 == 0 else MID_TEAL
add_rect(s, Inches(0.35), y, Inches(0.06), Inches(0.36), clr)
add_textbox(s, Inches(0.48), y, W - Inches(0.85), Inches(0.42),
ref, 11, color=DARK_TEXT)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 11 – Thank You / Closing
# ─────────────────────────────────────────────────────────────────────────────
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, W, H, DARK_TEAL)
add_rect(s, 0, 0, W, Inches(0.22), SAFFRON)
add_rect(s, 0, H - Inches(0.22), W, Inches(0.22), SAFFRON)
add_textbox(s, Inches(1), Inches(1.5), Inches(11.3), Inches(1.0),
"Thank You", 54, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(s, Inches(3.5), Inches(2.7), Inches(6.3), Inches(0.06), SAFFRON)
add_textbox(s, Inches(1), Inches(2.95), Inches(11.3), Inches(0.6),
'"सर्वे भवन्तु सुखिनः | सर्वे सन्तु निरामयाः"',
18, italic=True, color=LIGHT_GOLD, align=PP_ALIGN.CENTER)
add_textbox(s, Inches(1), Inches(3.75), Inches(11.3), Inches(0.5),
"I request the Honourable Scientific Committee for approval of this synopsis.",
15, italic=True, color=RGBColor(0xDD, 0xDD, 0xDD), align=PP_ALIGN.CENTER)
add_textbox(s, Inches(1), Inches(4.55), Inches(11.3), Inches(0.5),
"Open to all queries, suggestions, and guidance from the panel.",
13, color=RGBColor(0xAA, 0xAA, 0xAA), align=PP_ALIGN.CENTER)
# Guide/Scholar block
add_rect(s, Inches(3.8), Inches(5.3), Inches(5.73), Inches(0.04), MID_TEAL)
add_textbox(s, Inches(1), Inches(5.5), Inches(11.3), Inches(0.38),
"[Your Name] | PG Scholar, 1st Year | Roganidan Department | [Institute Name]",
12, color=LIGHT_GOLD, align=PP_ALIGN.CENTER)
# ─────────────────────────────────────────────────────────────────────────────
# SAVE
# ─────────────────────────────────────────────────────────────────────────────
out_path = "/tmp/workspace/roganidan-synopsis/Medovah_Srotodushti_Cholelithiasis_Synopsis.pptx"
prs.save(out_path)
print(f"Saved: {out_path}")
print(f"Slides: {len(prs.slides)}")
cd /tmp/workspace/roganidan-synopsis && python create_ppt.py 2>&1
Medovah Srotodushti Cholelithiasis Synopsis
Presentation · PPTX
| # | Slide | What it communicates |
|---|---|---|
| 1 | Title | Full title, candidate/guide info, Sanskrit verse from Charaka Sharira 5/8 on Medovah Srotas |
| 2 | Introduction | Two-column layout — Ayurvedic Medovah Srotas concept vs. Modern Cholelithiasis, bridged by the KEY LINK statement |
| 3 | Need for the Study | 5 numbered cards: prevalence gap, diagnostic potential, preventive scope, research contribution, curriculum relevance |
| 4 | Aims & Objectives | One clear Aim box + 4 numbered Objectives (Lakshana observation, scoring, modern correlation, diagnostic utility) |
| 5 | Hypothesis | Central hypothesis + H0/H1 boxes side-by-side, basis statement |
| 6 | Materials & Methods | 3-column: Study Type / Sample Size / Tools used |
| 7 | Selection Criteria | Inclusion / Exclusion / Diagnostic Criteria in 3 color-coded panels |
| 8 | Observational Parameters & Scoring | Full table - 8 Lakshanas with classical reference, clinical equivalent, 0-3 scoring |
| 9 | Expected Outcome | 4 outcome boxes (findings, correlation, framework, prevention) + significance footer |
| 10 | References | 10 references - Charaka, Ashtanga Hridayam, Sushruta, Harrison's, Lancet, and others |
| 11 | Thank You | Sanskrit shloka, request to committee, clean closing |
Make point of introduction in which ayurvedic view morden view and relationship between them with reference
~/roganidan-synopsis/create_intro_slides.py
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from lxml import etree
from pptx.oxml.ns import qn
# ── Palette ───────────────────────────────────────────────────────────────────
SAFFRON = RGBColor(0xD4, 0x6A, 0x00)
DARK_TEAL = RGBColor(0x1A, 0x4A, 0x4A)
CREAM = RGBColor(0xFD, 0xF6, 0xE3)
DARK_TEXT = RGBColor(0x1C, 0x1C, 0x1C)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_GOLD = RGBColor(0xF5, 0xC5, 0x18)
MID_TEAL = RGBColor(0x2E, 0x7D, 0x7D)
ACCENT_RED = RGBColor(0xB5, 0x2B, 0x2B)
PALE_TEAL = RGBColor(0xE8, 0xF4, 0xF4)
PALE_SAFFRON = RGBColor(0xFD, 0xF0, 0xDE)
W = Inches(13.333)
H = Inches(7.5)
# ─── helpers ──────────────────────────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill_rgb):
shape = slide.shapes.add_shape(1, x, y, w, h)
shape.line.fill.background()
shape.line.color.rgb = fill_rgb
shape.fill.solid()
shape.fill.fore_color.rgb = fill_rgb
return shape
def tb(slide, x, y, w, h, text, size, bold=False, italic=False,
color=DARK_TEXT, align=PP_ALIGN.LEFT, anchor=MSO_ANCHOR.TOP, wrap=True):
box = slide.shapes.add_textbox(x, y, w, h)
tf = box.text_frame
tf.word_wrap = wrap
tf.vertical_anchor = anchor
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = 0
p = tf.paragraphs[0]
p.alignment = align
r = p.add_run()
r.text = text
r.font.size = Pt(size)
r.font.bold = bold
r.font.italic = italic
r.font.color.rgb = color
r.font.name = "Calibri"
return box
def add_para(tf, text, size, bold=False, italic=False, color=DARK_TEXT,
align=PP_ALIGN.LEFT, spacing=1.3):
p = tf.add_paragraph()
p.alignment = align
pPr = p._p.get_or_add_pPr()
lnSpc = etree.SubElement(pPr, qn('a:lnSpc'))
spcPct = etree.SubElement(lnSpc, qn('a:spcPct'))
spcPct.set('val', str(int(spacing * 100000)))
r = p.add_run()
r.text = text
r.font.size = Pt(size)
r.font.bold = bold
r.font.italic = italic
r.font.color.rgb = color
r.font.name = "Calibri"
return p
def header_bar(slide, title, sub=None):
add_rect(slide, 0, 0, W, Inches(1.05), DARK_TEAL)
tb(slide, Inches(0.3), Inches(0.1), Inches(11.5), Inches(0.65),
title, 25, bold=True, color=WHITE, align=PP_ALIGN.LEFT, anchor=MSO_ANCHOR.MIDDLE)
if sub:
tb(slide, Inches(0.3), Inches(0.72), Inches(11.5), Inches(0.3),
sub, 12, italic=True, color=LIGHT_GOLD)
def cream_bg(slide):
add_rect(slide, 0, 0, W, H, CREAM)
def footer(slide, txt="Roganidan Department | PG Synopsis | 2026"):
add_rect(slide, 0, H - Inches(0.3), W, Inches(0.3), DARK_TEAL)
tb(slide, Inches(0.3), H - Inches(0.3), Inches(12), Inches(0.3),
txt, 9, color=LIGHT_GOLD, anchor=MSO_ANCHOR.MIDDLE)
def ref_tag(slide, x, y, text):
"""Small superscript-style reference label"""
tb(slide, x, y, Inches(3.5), Inches(0.22), text, 8.5, italic=True,
color=MID_TEAL, align=PP_ALIGN.LEFT)
def bullet_section(slide, x, y, w, h, items):
"""items = list of (bullet_text, ref_text, is_heading)"""
box = slide.shapes.add_textbox(x, y, w, h)
tf = box.text_frame
tf.word_wrap = True
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = 0
first = True
for (text, ref, is_heading) in items:
if first:
p = tf.paragraphs[0]; first = False
else:
p = tf.add_paragraph()
pPr = p._p.get_or_add_pPr()
lnSpc = etree.SubElement(pPr, qn('a:lnSpc'))
spcPct = etree.SubElement(lnSpc, qn('a:spcPct'))
spcPct.set('val', str(int(1.25 * 100000)))
p.alignment = PP_ALIGN.LEFT
r = p.add_run()
r.text = text
r.font.size = Pt(10) if not is_heading else Pt(12)
r.font.bold = is_heading
r.font.color.rgb = DARK_TEAL if is_heading else DARK_TEXT
r.font.name = "Calibri"
if ref:
r2 = p.add_run()
r2.text = f" [{ref}]"
r2.font.size = Pt(8)
r2.font.italic = True
r2.font.color.rgb = MID_TEAL
r2.font.name = "Calibri"
return box
# ─────────────────────────────────────────────────────────────────────────────
# Load existing PPT and replace slide 2 (index 1) with 3 new Introduction slides
# ─────────────────────────────────────────────────────────────────────────────
# We'll build the 3 intro slides as a fresh mini-pptx, then show them separately.
# For simplicity we generate a standalone pptx with just the intro slides
# (user can copy-paste into the main deck via PPT's "Reuse Slides" feature)
prs = Presentation()
prs.slide_width = W
prs.slide_height = H
blank = prs.slide_layouts[6]
# =============================================================================
# INTRO SLIDE A: Ayurvedic View — Medovah Srotas
# =============================================================================
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Introduction — Ayurvedic View",
"Medovah Srotas: Classical Conceptual Framework")
footer(s)
# Left side label bar
add_rect(s, 0, Inches(1.05), Inches(0.18), H - Inches(1.35), SAFFRON)
# ── CARD 1: Srotas Definition ──────────────────────────────────────────────
yc = Inches(1.2)
add_rect(s, Inches(0.28), yc, Inches(12.7), Inches(0.38), MID_TEAL)
tb(s, Inches(0.38), yc + Inches(0.04), Inches(12.5), Inches(0.3),
"1. Srotas — Definition & Concept", 12, bold=True, color=WHITE)
add_rect(s, Inches(0.28), yc + Inches(0.38), Inches(12.7), Inches(0.68), PALE_TEAL)
items_1 = [
("• Srotas are channels / pathways that carry dhatus, doshas, malas and rasa throughout the body.",
"C.Vi.5/3", False),
("• \"Srotansi khalu sharire antatah parinaham gacchanti\" — they pervade the entire body.",
"C.Vi.5/4", False),
("• Srotas are functional units of metabolism — not merely anatomical tubes.",
"C.Vi.5/5", False),
]
bullet_section(s, Inches(0.4), yc + Inches(0.42), Inches(12.4), Inches(0.62), items_1)
# ── CARD 2: Medovah Srotas ────────────────────────────────────────────────
yc = Inches(2.38)
add_rect(s, Inches(0.28), yc, Inches(12.7), Inches(0.38), SAFFRON)
tb(s, Inches(0.38), yc + Inches(0.04), Inches(12.5), Inches(0.3),
"2. Medovah Srotas — Identity", 12, bold=True, color=WHITE)
add_rect(s, Inches(0.28), yc + Inches(0.38), Inches(12.7), Inches(0.72), PALE_SAFFRON)
items_2 = [
("• \"Medovahaanam srotasam vrikko mulam vapavahanancha\" — Moola: Kidneys (Vrikka) + Omentum (Vapavahana).",
"C.Sha.5/8", False),
("• Carries and nourishes Meda Dhatu — lipid / adipose tissue, the 4th Dhatu in Sapta Dhatu Poshana Krama.",
"C.Ci.15/17", False),
("• Meda Dhatu function: Sneha (lubrication), Dridhatva (structural support), Sveda (sweating), Asthipushti (bone nourishment).",
"A.H.Su.11/5", False),
]
bullet_section(s, Inches(0.4), yc + Inches(0.42), Inches(12.4), Inches(0.68), items_2)
# ── CARD 3: Dushti Hetu ───────────────────────────────────────────────────
yc = Inches(3.28)
add_rect(s, Inches(0.28), yc, Inches(6.2), Inches(0.38), DARK_TEAL)
tb(s, Inches(0.38), yc + Inches(0.04), Inches(6.0), Inches(0.3),
"3. Dushti Hetu (Causative Factors)", 12, bold=True, color=WHITE)
add_rect(s, Inches(0.28), yc + Inches(0.38), Inches(6.2), Inches(1.22), PALE_TEAL)
items_3 = [
("• Asyasukha — excessive comfort, sedentary habits", "C.Su.21/4", False),
("• Divasvapna — day sleep", "C.Su.21/4", False),
("• Atisnigdha, Atimadhu, Atiguruahara — high-fat, sweet, heavy diet", "C.Su.21/4", False),
("• Avyayama — lack of physical exercise", "A.H.Su.13/25", False),
("• Beeja Dosha — genetic / hereditary predisposition", "C.Vi.5/16", False),
]
bullet_section(s, Inches(0.4), yc + Inches(0.42), Inches(6.0), Inches(1.15), items_3)
# ── CARD 4: Dushti Lakshana ────────────────────────────────────────────────
add_rect(s, Inches(6.75), yc, Inches(6.23), Inches(0.38), DARK_TEAL)
tb(s, Inches(6.85), yc + Inches(0.04), Inches(6.0), Inches(0.3),
"4. Dushti Lakshana (Clinical Features)", 12, bold=True, color=WHITE)
add_rect(s, Inches(6.75), yc + Inches(0.38), Inches(6.23), Inches(1.22), PALE_TEAL)
items_4 = [
("• Sthaulya (obesity) — excessive corpulence", "C.Su.21/9", False),
("• Atisveda — profuse perspiration", "C.Su.21/9", False),
("• Daurbalya — weakness, fatiguability", "C.Su.21/9", False),
("• Alpa-prana — reduced vitality / stamina", "C.Su.21/9", False),
("• Kshudha / Pipasa Adhikya — polyphagia / polydipsia", "C.Su.21/9", False),
("• Chala-sphik, Chala-udara — pendulous flanks, abdomen","C.Su.21/9", False),
]
bullet_section(s, Inches(6.87), yc + Inches(0.42), Inches(6.0), Inches(1.15), items_4)
# ── CARD 5: Samprapti ─────────────────────────────────────────────────────
yc = Inches(4.92)
add_rect(s, Inches(0.28), yc, Inches(12.7), Inches(0.38), MID_TEAL)
tb(s, Inches(0.38), yc + Inches(0.04), Inches(12.5), Inches(0.3),
"5. Samprapti (Pathogenesis) of Medovah Srotodushti", 12, bold=True, color=WHITE)
add_rect(s, Inches(0.28), yc + Inches(0.38), Inches(12.7), Inches(0.62), PALE_TEAL)
# Flow chart text (simple inline)
flow = ("Nidana (Hetu) → Kapha-Meda Vriddhi → Agni Mandya → Srotovarodha (Srotorodha) → "
"Meda Dhatu Prasara obstruction → Dushti Lakshanas manifest → "
"If unresolved → Medoroga / Prameha / Further Upadrava")
tb(s, Inches(0.4), yc + Inches(0.42), Inches(12.4), Inches(0.55),
flow, 11, italic=True, color=DARK_TEAL)
# =============================================================================
# INTRO SLIDE B: Modern View — Cholelithiasis
# =============================================================================
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Introduction — Modern View",
"Cholelithiasis: Epidemiology, Pathogenesis & Risk Factors")
footer(s)
add_rect(s, 0, Inches(1.05), Inches(0.18), H - Inches(1.35), ACCENT_RED)
# ── CARD 1: Definition & Epidemiology ─────────────────────────────────────
yc = Inches(1.2)
add_rect(s, Inches(0.28), yc, Inches(12.7), Inches(0.38), ACCENT_RED)
tb(s, Inches(0.38), yc + Inches(0.04), Inches(12.5), Inches(0.3),
"1. Definition & Epidemiology", 12, bold=True, color=WHITE)
add_rect(s, Inches(0.28), yc + Inches(0.38), Inches(12.7), Inches(0.72), RGBColor(0xFD, 0xF0, 0xF0))
items_e1 = [
("• Cholelithiasis = presence of calculi (stones) in the gallbladder.",
"Robbins Pathology, Ch. Gallbladder", False),
("• Prevalence: 10–15% in Western adults; rising in India due to urbanisation and dietary change.",
"Clinical GI Endoscopy 3e, Ch.53", False),
("• >80% are cholesterol stones; remainder are pigment stones (bilirubin + calcium).",
"Robbins Pathology, p.636", False),
]
bullet_section(s, Inches(0.4), yc + Inches(0.42), Inches(12.4), Inches(0.68), items_e1)
# ── CARD 2: Pathogenesis ──────────────────────────────────────────────────
yc = Inches(2.38)
add_rect(s, Inches(0.28), yc, Inches(12.7), Inches(0.38), RGBColor(0x8B, 0x22, 0x22))
tb(s, Inches(0.38), yc + Inches(0.04), Inches(12.5), Inches(0.3),
"2. Pathogenesis of Cholesterol Gallstones", 12, bold=True, color=WHITE)
add_rect(s, Inches(0.28), yc + Inches(0.38), Inches(12.7), Inches(0.72), RGBColor(0xFD, 0xF0, 0xF0))
# Three-step pathogenesis flow
flow_items = [
("Step 1 → Supersaturation of bile with cholesterol (↑ hepatic cholesterol secretion / ↓ bile salts)",
"Yamada's Gastroenterology 7e", False),
("Step 2 → Nucleation: cholesterol monohydrate crystals form in bile; accelerated by nucleating proteins.",
"Yamada's Gastroenterology 7e", False),
("Step 3 → Gallbladder dysmotility / stasis → crystal accumulation → stone formation.",
"Yamada's Gastroenterology 7e", False),
]
bullet_section(s, Inches(0.4), yc + Inches(0.42), Inches(12.4), Inches(0.68), flow_items)
# ── CARD 3: Risk Factors ──────────────────────────────────────────────────
yc = Inches(3.28)
add_rect(s, Inches(0.28), yc, Inches(6.2), Inches(0.38), ACCENT_RED)
tb(s, Inches(0.38), yc + Inches(0.04), Inches(6.0), Inches(0.3),
"3. Modifiable Risk Factors", 12, bold=True, color=WHITE)
add_rect(s, Inches(0.28), yc + Inches(0.38), Inches(6.2), Inches(1.22), RGBColor(0xFD, 0xF0, 0xF0))
items_rf1 = [
("• Obesity (BMI >30) — strongest modifiable risk factor", "Clinical GI Endoscopy 3e, Ch.53", False),
("• Sedentary lifestyle — reduced gallbladder motility", "Clinical GI Endoscopy 3e, Ch.53", False),
("• High-fat, high-cholesterol diet; rapid weight loss", "Clinical GI Endoscopy 3e, Ch.53", False),
("• Dyslipidaemia — elevated LDL / triglycerides", "Clinical GI Endoscopy 3e, Ch.53", False),
("• Insulin resistance / Metabolic Syndrome", "Sleisenger & Fordtran, 11e", False),
]
bullet_section(s, Inches(0.4), yc + Inches(0.42), Inches(6.0), Inches(1.15), items_rf1)
add_rect(s, Inches(6.75), yc, Inches(6.23), Inches(0.38), ACCENT_RED)
tb(s, Inches(6.85), yc + Inches(0.04), Inches(6.0), Inches(0.3),
"4. Non-Modifiable Risk Factors", 12, bold=True, color=WHITE)
add_rect(s, Inches(6.75), yc + Inches(0.38), Inches(6.23), Inches(1.22), RGBColor(0xFD, 0xF0, 0xF0))
items_rf2 = [
("• Age >40 years", "Robbins Pathology, p.636", False),
("• Female sex / estrogen (4F rule: Fat, Female, Fertile, Forty)", "Robbins Pathology, p.636", False),
("• Genetics — LITH gene loci; family history", "Sleisenger & Fordtran, 11e", False),
("• Ethnicity (Pima Indians, Hispanic population)", "Sleisenger & Fordtran, 11e", False),
("• Haemolytic disease — pigment stones", "Clinical GI Endoscopy 3e, Ch.53", False),
]
bullet_section(s, Inches(6.87), yc + Inches(0.42), Inches(6.0), Inches(1.15), items_rf2)
# ── CARD 5: Diagnosis ──────────────────────────────────────────────────────
yc = Inches(4.92)
add_rect(s, Inches(0.28), yc, Inches(12.7), Inches(0.38), RGBColor(0x8B, 0x22, 0x22))
tb(s, Inches(0.38), yc + Inches(0.04), Inches(12.5), Inches(0.3),
"5. Diagnosis & Clinical Features", 12, bold=True, color=WHITE)
add_rect(s, Inches(0.28), yc + Inches(0.38), Inches(12.7), Inches(0.62), RGBColor(0xFD, 0xF0, 0xF0))
items_dx = [
("• USG abdomen: gold standard — sensitivity >95% for gallstones ≥2 mm.",
"Yamada's Gastroenterology 7e", False),
("• Most patients (70%) are asymptomatic; symptoms: RUQ biliary colic, nausea, fatty food intolerance.",
"Clinical GI Endoscopy 3e, Ch.53", False),
("• Complications: acute cholecystitis, choledocholithiasis, cholangitis, pancreatitis, Mirizzi syndrome.",
"Sleisenger & Fordtran, 11e", False),
]
bullet_section(s, Inches(0.4), yc + Inches(0.42), Inches(12.4), Inches(0.55), items_dx)
# =============================================================================
# INTRO SLIDE C: Relationship — Ayurveda <-> Modern (The Conceptual Bridge)
# =============================================================================
s = prs.slides.add_slide(blank)
cream_bg(s)
header_bar(s, "Introduction — Relationship Between Medovah Srotodushti & Cholelithiasis",
"Conceptual Bridge: Ayurveda ↔ Modern Medicine")
footer(s)
add_rect(s, 0, Inches(1.05), Inches(0.18), H - Inches(1.35), LIGHT_GOLD)
# ── COMPARISON TABLE ──────────────────────────────────────────────────────
col_headers = ["Ayurvedic Concept", "Modern Equivalent", "Common Ground"]
col_xs = [Inches(0.28), Inches(4.7), Inches(9.1)]
col_widths = [Inches(4.35), Inches(4.35), Inches(4.0)]
yh = Inches(1.2)
for hdr, cx, cw in zip(col_headers, col_xs, col_widths):
add_rect(s, cx, yh, cw - Inches(0.05), Inches(0.4), DARK_TEAL)
tb(s, cx + Inches(0.08), yh + Inches(0.04), cw - Inches(0.2), Inches(0.32),
hdr, 12, bold=True, color=WHITE, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
rows = [
("Atisnigdha / Guru Ahara\n(C.Su.21/4)",
"High-fat, high-cholesterol diet\n(Clinical GI Endoscopy 3e)",
"Dietary excess of fat → Meda Vriddhi / cholesterol supersaturation in bile"),
("Avyayama + Asyasukha\n(C.Su.21/4)",
"Sedentary lifestyle\n(Clinical GI Endoscopy 3e)",
"Physical inactivity → Kapha-Meda Sanchaya / gallbladder dysmotility"),
("Sthaulya (Obesity)\n(C.Su.21/9)",
"Obesity — strongest risk factor\n(Robbins Pathology, p.636)",
"Central obesity = shared phenotype for Medovah Srotodushti & cholelithiasis"),
("Medovriddhi → Kapha Prakopa\n(A.H.Ni.12)",
"Dyslipidaemia / Metabolic Syndrome\n(Sleisenger & Fordtran)",
"Elevated Meda (triglycerides, LDL) disrupts both Srotas function & bile chemistry"),
("Srotovarodha in Vapavahana\n(C.Sha.5/8)",
"Omental / visceral fat accumulation → Gallbladder stasis\n(Yamada's GE 7e)",
"Vapavahana (omentum) as Mula = anatomical neighbour of the gallbladder"),
]
row_bg = [PALE_TEAL, PALE_SAFFRON, PALE_TEAL, PALE_SAFFRON, PALE_TEAL]
yr = yh + Inches(0.4)
for i, (ay, mod, com) in enumerate(rows):
rh = Inches(0.82)
bg = row_bg[i]
for j, (cell_text, cx, cw) in enumerate(zip([ay, mod, com], col_xs, col_widths)):
add_rect(s, cx, yr, cw - Inches(0.05), rh, bg)
box = slide = s.shapes.add_textbox(cx + Inches(0.07), yr + Inches(0.05),
cw - Inches(0.18), rh - Inches(0.1))
tf_c = box.text_frame; tf_c.word_wrap = True
tf_c.margin_left = tf_c.margin_right = tf_c.margin_top = tf_c.margin_bottom = 0
lines = cell_text.split('\n')
first = True
for line in lines:
if first:
p = tf_c.paragraphs[0]; first = False
else:
p = tf_c.add_paragraph()
r = p.add_run()
r.text = line
r.font.size = Pt(9.5)
r.font.color.rgb = DARK_TEXT if j < 2 else DARK_TEAL
r.font.bold = False
r.font.italic = (j < 2 and '\n' in cell_text and line.startswith('('))
r.font.name = "Calibri"
yr += rh + Inches(0.04)
# ── KEY MESSAGE BOX ──────────────────────────────────────────────────────
add_rect(s, Inches(0.28), Inches(6.12), Inches(12.7), Inches(0.68), DARK_TEAL)
tb(s, Inches(0.38), Inches(6.13), Inches(12.5), Inches(0.66),
"KEY HYPOTHESIS: The common Hetu of Medovah Srotodushti "
"(Guru Ahara, Avyayama, Divasvapna) directly maps to the modifiable risk "
"factors of cholelithiasis — suggesting that Medovah Srotas Dushti Lakshanas "
"will be clinically demonstrable and quantifiable in cholelithiasis patients.",
12, italic=True, color=WHITE, align=PP_ALIGN.LEFT, anchor=MSO_ANCHOR.MIDDLE)
# =============================================================================
# SAVE
# =============================================================================
out = "/tmp/workspace/roganidan-synopsis/Introduction_Slides_3panel.pptx"
prs.save(out)
print("Saved:", out)
print("Slides:", len(prs.slides))
cd /tmp/workspace/roganidan-synopsis && python create_intro_slides.py 2>&1
Introduction Slides 3panel
Presentation · PPTX
| Section | Key Points | Reference |
|---|---|---|
| Srotas Definition | Channels pervading the body; functional metabolic units | C.Vi.5/3-5 |
| Medovah Srotas Identity | Moola = Vrikka + Vapavahana; carries Meda Dhatu (4th Dhatu) | C.Sha.5/8 |
| Dushti Hetu | Asyasukha, Divasvapna, Avyayama, Atisnigdha Ahara, Beeja Dosha | C.Su.21/4; C.Vi.5/16 |
| Dushti Lakshana | Sthaulya, Atisveda, Daurbalya, Alpa-prana, Kshudha/Pipasa Adhikya, Chala-sphik | C.Su.21/9 |
| Samprapti (Pathogenesis) | Hetu → Kapha-Meda Vriddhi → Agni Mandya → Srotovarodha → Lakshanas → Medoroga | C.Su.28 |
| Section | Key Points | Reference |
|---|---|---|
| Epidemiology | 10-15% adults; >80% cholesterol stones; rising in India | Robbins Pathology p.636 |
| Pathogenesis | 3-step: Bile supersaturation → Nucleation → Dysmotility/Stasis | Yamada's Gastroenterology 7e |
| Modifiable Risk Factors | Obesity, sedentary life, high-fat diet, dyslipidaemia, insulin resistance | Clinical GI Endoscopy 3e Ch.53 |
| Non-Modifiable Risk Factors | Age >40, Female sex (4F rule), Genetics (LITH gene), Ethnicity | Robbins Pathology; Sleisenger & Fordtran |
| Diagnosis | USG >95% sensitivity; 70% asymptomatic; complications | Clinical GI Endoscopy 3e |
| Ayurvedic Concept | Modern Equivalent | Common Ground |
|---|---|---|
| Atisnigdha/Guru Ahara | High-fat, high-cholesterol diet | Dietary fat excess → Meda Vriddhi / bile cholesterol supersaturation |
| Avyayama + Asyasukha | Sedentary lifestyle | Inactivity → Kapha-Meda Sanchaya / gallbladder dysmotility |
| Sthaulya (Obesity) | Obesity — strongest risk factor | Shared phenotype for both conditions |
| Medovriddhi → Kapha Prakopa | Dyslipidaemia / Metabolic Syndrome | Elevated Meda = elevated LDL/TG, disrupting bile chemistry |
| Srotovarodha in Vapavahana | Visceral fat / gallbladder stasis | Vapavahana (omentum) is the anatomical neighbour of the gallbladder |
Above material without slide in sentences
review of previous litrecher work
Medovaha srotas Ayurveda clinical study
cholelithiasis obesity metabolic syndrome gallstone
Ayurveda srotas obesity metabolic disorder
review of literature Medovah Srotodushti Lakshana cholelithiasis Ayurveda research studies
Ayurveda obesity Meda Dhatu metabolic syndrome
cholelithiasis obesity visceral fat omental adipose gallbladder
Medovah Srotas Sthaulya clinical study Ayurveda PG thesis Roganidan obesity
PMID: 36506064
https://www.phytojournal.com/archives/2022/vol11issue5/PartD…
https://ijam.co.in/index.php/ijam/article/viewFile/07022016/…
gallstone disease BMI lipid profile insulin resistance prevalence India
gallstone disease metabolic syndrome India prevalence
Diagnosis of morden research work
| Investigation | Purpose | Sensitivity | Specificity | Reference |
|---|---|---|---|---|
| USG Abdomen | Gold standard for gallstones in GB | >95% | ~99% | Schwartz's Surgery 11e |
| LFT (ALP, Bilirubin, GGT) | Biliary obstruction screen | 87-91% | High | Symptom to Diagnosis 4e |
| MRCP | CBD stones, non-invasive | 90% | 95% | Current Surgical Therapy 14e |
| ERCP | CBD stones + therapeutic | >90% | 99% | Symptom to Diagnosis 4e |
| EUS | CBD stones, intermediate risk | 90-100% | 90-100% | Symptom to Diagnosis 4e |
| CT Abdomen | Complications, CBD stones | 75% | Moderate | Symptom to Diagnosis 4e |
| HIDA Scan | Gallbladder function | 88-94% | 78-80% | Mulholland Surgery 7e |
| Lipid Profile / BMI / FBS | Metabolic risk assessment | — | — | Sleisenger & Fordtran 11e |