Create a presentation on topic Nidana Panchaka from charak samhita in detail for present infront of class
Nidana Panchaka Charak Samhita detailed explanation Hetu Purvarupa Rupa Upashaya Samprapti
https://openaccesspub.org/international-journal-of-complemen…
mkdir -p /tmp/workspace/nidana-panchaka && ls /tmp/workspace/nidana-panchaka/
~/nidana-panchaka/create_pptx.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.util import Inches, Pt
import copy
# ── Color Palette ──────────────────────────────────────────────────────────────
DARK_GREEN = RGBColor(0x1A, 0x5C, 0x38) # deep Ayurvedic green
MID_GREEN = RGBColor(0x2E, 0x8B, 0x57) # sea green accent
LIGHT_GREEN = RGBColor(0xC8, 0xE6, 0xC9) # soft mint bg panel
GOLD = RGBColor(0xC8, 0x9B, 0x2F) # Sanskrit gold
CREAM = RGBColor(0xFD, 0xF6, 0xE3) # warm parchment
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK_TEXT = RGBColor(0x1C, 0x1C, 0x1C)
SUBTLE_GRAY = RGBColor(0xF0, 0xF0, 0xF0)
ORANGE_ACC = RGBColor(0xE6, 0x5C, 0x00) # warm orange accent
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
# ── Helpers ────────────────────────────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill_rgb, alpha=None):
shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
shape.fill.solid()
shape.fill.fore_color.rgb = fill_rgb
shape.line.fill.background()
return shape
def add_text(slide, text, x, y, w, h, font_size=18, bold=False,
color=DARK_TEXT, align=PP_ALIGN.LEFT, italic=False,
v_anchor=MSO_ANCHOR.TOP, wrap=True):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = wrap
tf.vertical_anchor = v_anchor
tf.margin_left = Inches(0.05)
tf.margin_right = Inches(0.05)
tf.margin_top = Inches(0.03)
tf.margin_bottom= Inches(0.03)
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.name = "Calibri"
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.italic= italic
run.font.color.rgb = color
return tf
def add_multiline(slide, lines, x, y, w, h, font_size=16, color=DARK_TEXT,
bold_first=False, line_spacing=1.15):
"""lines: list of (text, bold) tuples"""
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Inches(0.05)
tf.margin_right = Inches(0.05)
tf.margin_top = Inches(0.03)
tf.margin_bottom= Inches(0.03)
first = True
for (txt, bold) in lines:
if first:
p = tf.paragraphs[0]
first = False
else:
p = tf.add_paragraph()
p.alignment = PP_ALIGN.LEFT
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 = txt
run.font.name = "Calibri"
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.color.rgb = color
return tf
def section_header_bar(slide, title, subtitle=""):
"""Full-width colored header bar at top of slide."""
add_rect(slide, 0, 0, 13.333, 1.1, DARK_GREEN)
add_rect(slide, 0, 1.1, 13.333, 0.07, GOLD)
add_text(slide, title, 0.3, 0.05, 12.5, 0.8,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT,
v_anchor=MSO_ANCHOR.MIDDLE)
if subtitle:
add_text(slide, subtitle, 0.3, 0.75, 12.5, 0.35,
font_size=14, bold=False, color=GOLD, align=PP_ALIGN.LEFT)
def footer_bar(slide, text="Nidana Panchaka | Charak Samhita | Ayurvedic Diagnostics"):
add_rect(slide, 0, 7.15, 13.333, 0.35, DARK_GREEN)
add_text(slide, text, 0.3, 7.16, 12.5, 0.3,
font_size=11, color=WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
def bullet_box(slide, bullets, x, y, w, h, bg_color=SUBTLE_GRAY,
title=None, title_color=DARK_GREEN, font_size=15,
bullet_color=DARK_TEXT, accent_color=MID_GREEN):
add_rect(slide, x, y, w, h, bg_color)
cy = y + 0.1
if title:
add_text(slide, title, x+0.12, cy, w-0.24, 0.38,
font_size=17, bold=True, color=title_color)
cy += 0.38
lines = [(f" • {b}", False) for b in bullets]
add_multiline(slide, lines, x+0.1, cy, w-0.2, h-(cy-y)-0.05,
font_size=font_size, color=bullet_color)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 1 – TITLE SLIDE
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
# Full dark-green background
add_rect(slide, 0, 0, 13.333, 7.5, DARK_GREEN)
# Gold diagonal accent strip (simulate with a tall-narrow rect)
add_rect(slide, 9.5, 0, 0.06, 7.5, GOLD)
add_rect(slide, 9.65, 0, 3.683, 7.5, RGBColor(0x12, 0x40, 0x28))
# Sanskrit shloka band
add_rect(slide, 0, 5.5, 9.45, 0.9, RGBColor(0x14, 0x4A, 0x2B))
add_text(slide,
'"निदानं पूर्वरूपं च रूपमुपशयस्तथा।\nसम्प्राप्तिरिति विज्ञेया पञ्चधा निदानं बुधैः॥"',
0.3, 5.52, 9.0, 0.85, font_size=13, italic=True, color=GOLD,
align=PP_ALIGN.CENTER)
# Main title
add_text(slide, "NIDANA PANCHAKA", 0.4, 1.1, 9.0, 1.1,
font_size=52, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_text(slide, "The Five-Fold Diagnostic Framework", 0.4, 2.2, 9.0, 0.55,
font_size=22, bold=False, color=GOLD, align=PP_ALIGN.LEFT)
add_rect(slide, 0.4, 2.8, 3.5, 0.06, GOLD)
add_text(slide, "From Charak Samhita — Nidana Sthana", 0.4, 2.95, 9.0, 0.45,
font_size=18, bold=False, color=LIGHT_GREEN, align=PP_ALIGN.LEFT)
add_text(slide, "Presented by:", 0.4, 3.65, 5.0, 0.35,
font_size=14, color=RGBColor(0xAA, 0xDD, 0xBB), align=PP_ALIGN.LEFT)
add_text(slide, "Department of Ayurveda — Basic Principles", 0.4, 4.0, 9.0, 0.35,
font_size=14, color=WHITE, align=PP_ALIGN.LEFT)
# Right panel decorative label
add_text(slide, "आयुर्वेद", 9.8, 1.5, 3.0, 1.0,
font_size=36, bold=True, color=GOLD, align=PP_ALIGN.CENTER)
add_text(slide, "AYURVEDA", 9.8, 2.5, 3.0, 0.5,
font_size=16, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(slide, 10.3, 3.1, 2.0, 0.06, GOLD)
add_text(slide, "Charak Samhita\nNidana Sthana\nChapter 1", 9.8, 3.25, 3.0, 1.2,
font_size=14, color=LIGHT_GREEN, align=PP_ALIGN.CENTER)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 2 – TABLE OF CONTENTS
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "Table of Contents", "What we will cover today")
footer_bar(slide)
topics = [
("01", "Introduction to Nidana Panchaka"),
("02", "Nidana — Etiological Factors (Hetu)"),
("03", "Purvarupa — Prodromal Symptoms"),
("04", "Rupa — Signs & Symptoms"),
("05", "Upashaya — Therapeutic Trials"),
("06", "Samprapti — Pathogenesis"),
("07", "Clinical Significance & Application"),
("08", "Summary & Key Takeaways"),
]
col1, col2 = topics[:4], topics[4:]
for i, (num, title) in enumerate(col1):
y = 1.35 + i * 1.35
add_rect(slide, 0.5, y, 5.6, 1.15, WHITE)
add_rect(slide, 0.5, y, 0.55, 1.15, DARK_GREEN)
add_text(slide, num, 0.5, y+0.25, 0.55, 0.6,
font_size=18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, title, 1.2, y+0.25, 4.8, 0.6,
font_size=15, bold=False, color=DARK_TEXT, align=PP_ALIGN.LEFT,
v_anchor=MSO_ANCHOR.MIDDLE)
for i, (num, title) in enumerate(col2):
y = 1.35 + i * 1.35
add_rect(slide, 7.1, y, 5.6, 1.15, WHITE)
add_rect(slide, 7.1, y, 0.55, 1.15, MID_GREEN)
add_text(slide, num, 7.1, y+0.25, 0.55, 0.6,
font_size=18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, title, 7.8, y+0.25, 4.8, 0.6,
font_size=15, bold=False, color=DARK_TEXT, align=PP_ALIGN.LEFT,
v_anchor=MSO_ANCHOR.MIDDLE)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 3 – INTRODUCTION
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "Introduction to Nidana Panchaka",
"Foundation of Ayurvedic Disease Diagnosis")
footer_bar(slide)
# Left text block
add_rect(slide, 0.4, 1.3, 7.5, 5.7, WHITE)
intro_lines = [
("What is Nidana Panchaka?", True),
("", False),
("The term 'Nidana Panchaka' is derived from:", False),
(" • Nidana = Diagnosis / Cause", False),
(" • Panchaka = Five / Five-fold", False),
("", False),
("It refers to the FIVE diagnostic tools described by Acharya Charaka", False),
("in Nidana Sthana, Chapter 1 (Jwara Nidanam) of Charak Samhita.", False),
("", False),
("Together they form a complete framework for:", False),
(" • Understanding the etiology (cause) of disease", False),
(" • Tracing pathogenesis (how disease develops)", False),
(" • Identifying signs and symptoms accurately", False),
(" • Planning rational treatment", False),
("", False),
('Charaka states: "Nidana Purvarupam Cha Rupam Upashayastatha,', True),
('Sampraptirithi Vijneya Panchadha Nidanam Budhaih"', True),
("(CS Nidana Sthana 1/5)", False),
]
add_multiline(slide, intro_lines, 0.55, 1.4, 7.2, 5.5, font_size=14, color=DARK_TEXT)
# Right info boxes
add_rect(slide, 8.2, 1.3, 4.7, 1.8, DARK_GREEN)
add_text(slide, "Reference in Charak Samhita", 8.35, 1.35, 4.4, 0.4,
font_size=13, bold=True, color=GOLD)
add_text(slide, "Nidana Sthana • Chapter 1\nVerse 5 (CS Ni. 1/5)\nJwara Nidana Adhyaya",
8.35, 1.75, 4.4, 1.2, font_size=13, color=WHITE)
add_rect(slide, 8.2, 3.25, 4.7, 1.9, MID_GREEN)
add_text(slide, "Purpose of Nidana Panchaka", 8.35, 3.3, 4.4, 0.4,
font_size=13, bold=True, color=WHITE)
add_multiline(slide,
[(" ✓ Accurate diagnosis", False),
(" ✓ Determine dosha involvement", False),
(" ✓ Guide treatment planning", False),
(" ✓ Assess prognosis", False),
(" ✓ Identify affected dhatus/srotas", False)],
8.35, 3.7, 4.4, 1.4, font_size=13, color=WHITE)
add_rect(slide, 8.2, 5.3, 4.7, 1.7, LIGHT_GREEN)
add_text(slide, "The Five Components", 8.35, 5.35, 4.4, 0.4,
font_size=13, bold=True, color=DARK_GREEN)
add_multiline(slide,
[(" 1. Nidana (Hetu)", False),
(" 2. Purvarupa", False),
(" 3. Rupa", False),
(" 4. Upashaya", False),
(" 5. Samprapti", False)],
8.35, 5.75, 4.4, 1.1, font_size=13, color=DARK_TEXT)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 4 – OVERVIEW DIAGRAM (5 petals)
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "The Five Limbs of Diagnosis",
"Nidana Panchaka — Conceptual Overview")
footer_bar(slide)
# Center circle
add_rect(slide, 5.5, 2.8, 2.3, 2.3, DARK_GREEN)
add_text(slide, "NIDANA\nPANCHAKA", 5.5, 3.0, 2.3, 1.8,
font_size=17, bold=True, color=WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
# Five surrounding boxes
boxes = [
(1.0, 1.3, "1. NIDANA\n(Hetu)", "Etiological\nFactors / Cause", DARK_GREEN),
(10.0, 1.3, "2. PURVARUPA\n(Prodrome)", "Premonitory\nSymptoms", MID_GREEN),
(10.0, 4.6, "3. RUPA\n(Lakshana)", "Signs &\nSymptoms", RGBColor(0xC8, 0x5A, 0x00)),
(1.0, 4.6, "4. UPASHAYA\n(Satmya)", "Therapeutic\nTest / Trial", RGBColor(0x5B, 0x2D, 0x8E)),
(5.2, 5.9, "5. SAMPRAPTI\n(Pathogenesis)", "Mechanism of\nDisease", RGBColor(0x0A, 0x52, 0x7A)),
]
arrows = [
# from box-center to center-circle, just draw connecting lines as thin rects
]
for (bx, by, title, sub, clr) in boxes:
add_rect(slide, bx, by, 2.5, 1.6, clr)
add_text(slide, title, bx+0.1, by+0.08, 2.3, 0.8,
font_size=15, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, sub, bx+0.1, by+0.85, 2.3, 0.65,
font_size=13, color=LIGHT_GREEN, align=PP_ALIGN.CENTER)
# Connecting lines (thin rectangles as connectors)
# Box1 -> center
add_rect(slide, 3.5, 2.5, 2.15, 0.06, GOLD)
# Box2 -> center
add_rect(slide, 7.75, 2.5, 2.25, 0.06, GOLD)
# Box4 -> center
add_rect(slide, 3.5, 5.25, 2.15, 0.06, GOLD)
# Box3 -> center
add_rect(slide, 7.75, 5.25, 2.25, 0.06, GOLD)
# Box5 -> center
add_rect(slide, 6.4, 5.85, 0.06, 0.95, GOLD)
add_text(slide,
"Each component is both independent and complementary — together they ensure accurate, holistic diagnosis.",
0.4, 7.0, 12.5, 0.35, font_size=12, italic=True, color=DARK_GREEN,
align=PP_ALIGN.CENTER)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 5 – NIDANA (HETU)
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "1. NIDANA (Hetu) — Etiological Factors",
"CS Nidana Sthana 1/5 | निदान")
footer_bar(slide)
add_rect(slide, 0.4, 1.25, 8.0, 5.75, WHITE)
nidana_lines = [
("Definition:", True),
(" 'Nidanam' refers to the causative factor that produces disease.", False),
(" It is also called 'Hetu', 'Karana', or 'Nimitta'.", False),
("", False),
("Types of Nidana (Classification):", True),
(" A) Sannikrishta Nidana (Proximate/Immediate cause):", False),
(" • Direct dosha-provoking factors", False),
(" • E.g. excessive intake of katu (pungent) rasa provoking Pitta", False),
(" B) Viprakrishta Nidana (Remote/Distant cause):", False),
(" • Predisposing factors; root cause", False),
(" • E.g. poor diet, climate, heredity (Adibala pravritta)", False),
(" C) Vyabhichari Nidana (Occasional cause):", False),
(" • Cause that doesn't always produce disease", False),
("", False),
("Trividha Hetu (Three main categories — CS Sutra 11/43):", True),
(" 1. Asatmyendriyartha Samyoga — Improper contact of sense organs", False),
(" 2. Pragyaparadha — Intellectual blasphemy / wrong conduct", False),
(" 3. Parinama — Abnormal time/season (Kala)", False),
("", False),
("Clinical Role:", True),
(" • Knowing cause allows Hetu Viparita (cause-opposite) treatment", False),
(" • Nidana Parivarjana = first step of treatment (removal of cause)", False),
]
add_multiline(slide, nidana_lines, 0.55, 1.35, 7.7, 5.55, font_size=13, color=DARK_TEXT)
# Right panel
add_rect(slide, 8.7, 1.25, 4.3, 2.5, DARK_GREEN)
add_text(slide, "Synonyms of Nidana", 8.85, 1.3, 4.0, 0.45,
font_size=15, bold=True, color=GOLD)
add_multiline(slide,
[(" • Hetu", False), (" • Karana", False), (" • Nimitta", False),
(" • Ayatana", False), (" • Prakriti", False), (" • Dosha-prakopa-hetu", False)],
8.85, 1.75, 4.0, 1.85, font_size=14, color=WHITE)
add_rect(slide, 8.7, 3.9, 4.3, 3.1, LIGHT_GREEN)
add_text(slide, "Examples from Jwara (Fever)", 8.85, 3.95, 4.0, 0.45,
font_size=15, bold=True, color=DARK_GREEN)
add_multiline(slide,
[("Ama formation due to:", False),
(" • Viruddha Ahara (incompatible food)", False),
(" • Excessive Samshodhana", False),
(" • Vegadhana (suppression of urges)", False),
(" • Exposure to incompatible weather", False),
(" • Grief, anger, excessive exertion", False),
("", False),
("→ All trigger Ama + Dosha vitiation", False),
("→ Leading to Jwara (fever)", False)],
8.85, 4.4, 4.0, 2.5, font_size=13, color=DARK_TEXT)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 6 – PURVARUPA
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "2. PURVARUPA — Prodromal Symptoms",
"CS Nidana Sthana 1/6 | पूर्वरूप")
footer_bar(slide)
add_rect(slide, 0.4, 1.25, 8.0, 5.75, WHITE)
purva_lines = [
("Definition:", True),
(" Purva = before / prior | Rupa = form/manifestation", False),
(" Purvarupa are the premonitory signs that appear BEFORE the full", False),
(" manifestation of disease (i.e., before Rupa stage).", False),
("", False),
("Key Characteristics:", True),
(" • They are incomplete, mild, and unclear (avyakta)", False),
(" • They indicate which dosha is being aggravated", False),
(" • They hint at the type of disease to come", False),
(" • Also called 'Poorva Roopa' or 'Premonitory symptoms'", False),
("", False),
("Stages where Purvarupa appears:", True),
(" Sanchaya → Prakopa → PRASARA (Purvarupa appears here)", False),
(" i.e., during the 3rd stage of Kriya Kala (Shat Kriya Kala)", False),
("", False),
("Significance:", True),
(" • Early detection of forthcoming disease", False),
(" • Treatment at this stage is easier and more effective", False),
(" • Less medicine needed; simpler modalities sufficient", False),
(" • Helps in PREVENTIVE management (Apunarbhava Chikitsa)", False),
("", False),
("Types:", True),
(" 1. Samanya Purvarupa — common to all diseases (e.g. fatigue)", False),
(" 2. Vishishta Purvarupa — specific to particular disease", False),
]
add_multiline(slide, purva_lines, 0.55, 1.35, 7.7, 5.55, font_size=13, color=DARK_TEXT)
add_rect(slide, 8.7, 1.25, 4.3, 2.5, MID_GREEN)
add_text(slide, "Purvarupa of Jwara (Fever)", 8.85, 1.3, 4.0, 0.45,
font_size=15, bold=True, color=WHITE)
add_multiline(slide,
[(" • Yawning (Jrimbha)", False),
(" • Excessive fatigue (Angamarda)", False),
(" • Loss of appetite (Aruchi)", False),
(" • Heaviness of body (Gourava)", False),
(" • Dislike for cold / heat", False),
(" • Malaise and body ache", False),
(" • Desire to sleep", False)],
8.85, 1.75, 4.0, 1.85, font_size=13, color=WHITE)
add_rect(slide, 8.7, 3.9, 4.3, 3.1, RGBColor(0xFF, 0xF3, 0xE0))
add_text(slide, "Shat Kriya Kala Correlation", 8.85, 3.95, 4.0, 0.45,
font_size=15, bold=True, color=ORANGE_ACC)
add_multiline(slide,
[("Stage 1: Sanchaya (Accumulation)", False),
("Stage 2: Prakopa (Aggravation)", False),
("Stage 3: Prasara ← Purvarupa here", True),
("Stage 4: Sthana Samshraya", False),
("Stage 5: Vyakti ← Rupa here", False),
("Stage 6: Bheda (Complication)", False)],
8.85, 4.4, 4.0, 2.45, font_size=13, color=DARK_TEXT)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 7 – RUPA
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "3. RUPA — Signs and Symptoms",
"CS Nidana Sthana 1/7 | रूप / लक्षण")
footer_bar(slide)
add_rect(slide, 0.4, 1.25, 8.0, 5.75, WHITE)
rupa_lines = [
("Definition:", True),
(" Rupa = form, appearance, manifestation.", False),
(" Rupa refers to the SPECIFIC signs and symptoms that appear when", False),
(" the disease is fully manifested (Vyakti stage / Stage 5 of Kriya Kala).", False),
("", False),
("Also known as:", True),
(" • Lakshana (characteristics)", False),
(" • Linga (features)", False),
(" • Chinha (signs)", False),
(" • Akruti (form of disease)", False),
("", False),
("Types of Rupa:", True),
(" 1. Samanya Rupa — Common signs (e.g., fever in many diseases)", False),
(" 2. Vishishta Rupa — Pathognomonic/specific to one disease", False),
(" 3. Sthayee Rupa — Persistent symptoms throughout the disease", False),
("", False),
("Clinical Importance:", True),
(" • Rupa confirms the diagnosis definitively", False),
(" • Helps differentiate between similar diseases (Vyadhi Bheda)", False),
(" • Identifies which doshas are primarily involved", False),
(" • Guides specific treatment planning", False),
(" • Determines disease severity and prognosis", False),
]
add_multiline(slide, rupa_lines, 0.55, 1.35, 7.7, 5.55, font_size=13, color=DARK_TEXT)
add_rect(slide, 8.7, 1.25, 4.3, 3.0, RGBColor(0xC8, 0x5A, 0x00))
add_text(slide, "Rupa of Jwara (Fever)", 8.85, 1.3, 4.0, 0.45,
font_size=15, bold=True, color=WHITE)
add_multiline(slide,
[("Vata Jwara:", True),
(" • Chills, shivering, body ache", False),
("Pitta Jwara:", True),
(" • High fever, burning, thirst", False),
(" • Yellow discolouration", False),
("Kapha Jwara:", True),
(" • Low-grade fever, heaviness", False),
(" • Nausea, cold extremities", False)],
8.85, 1.75, 4.0, 2.35, font_size=13, color=WHITE)
add_rect(slide, 8.7, 4.4, 4.3, 2.6, LIGHT_GREEN)
add_text(slide, "Rupa vs Purvarupa", 8.85, 4.45, 4.0, 0.45,
font_size=15, bold=True, color=DARK_GREEN)
add_multiline(slide,
[("Purvarupa:", True),
(" Incomplete, mild, non-specific", False),
(" Disease not yet manifested", False),
("", False),
("Rupa:", True),
(" Complete, specific, clear", False),
(" Disease fully manifested", False),
(" Stage 5 (Vyakti) of Kriya Kala", False)],
8.85, 4.9, 4.0, 2.0, font_size=13, color=DARK_TEXT)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 8 – UPASHAYA
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "4. UPASHAYA — Therapeutic Trial",
"CS Nidana Sthana 1/8 | उपशय")
footer_bar(slide)
add_rect(slide, 0.4, 1.25, 8.0, 5.75, WHITE)
upashaya_lines = [
("Definition:", True),
(" Upashaya = that which is soothing / that which produces comfort.", False),
(" It is a DIAGNOSTIC-THERAPEUTIC TEST using food, drugs, or", False),
(" regimens to confirm diagnosis by observing patient's response.", False),
("", False),
("Its counterpart — Anupashaya:", True),
(" Anupashaya = factors that aggravate the disease.", False),
(" Both together help in confirming diagnosis.", False),
("", False),
("Classification of Upashaya (Charaka — 18 types total):", True),
(" By relationship with Hetu (cause) and Vyadhi (disease):", False),
(" 1. Hetu Viparita — opposite to cause (treats the cause)", False),
(" 2. Vyadhi Viparita — opposite to disease (symptomatic treatment)", False),
(" 3. Hetu-Vyadhi Viparita — opposite to both cause and disease", False),
(" 4. Hetu Samanya — same as cause (test to observe worsening)", False),
(" 5. Vyadhi Samanya — same as disease", False),
(" 6. Hetu-Vyadhi Samanya — same as both", False),
(" (× 3 modes = Ahara, Vihara, Aushadha = 18 types)", False),
("", False),
("Role when diagnosis is unclear:", True),
(" • If Nidana, Purvarupa, and Rupa are unclear or absent,", False),
(" • Upashaya serves as a definitive diagnostic tool", False),
(" • A patient improving with Vata-pacifying therapy → Vata disorder", False),
]
add_multiline(slide, upashaya_lines, 0.55, 1.35, 7.7, 5.55, font_size=13, color=DARK_TEXT)
add_rect(slide, 8.7, 1.25, 4.3, 2.2, RGBColor(0x5B, 0x2D, 0x8E))
add_text(slide, "18 Types (Summary)", 8.85, 1.3, 4.0, 0.45,
font_size=15, bold=True, color=WHITE)
add_multiline(slide,
[("Ahara (Diet): 6 types", False),
("Vihara (Regimen): 6 types", False),
("Aushadha (Drug): 6 types", False),
("= 18 types total", True),
("(CS Nidana Sthana 1/8)", False)],
8.85, 1.75, 4.0, 1.5, font_size=13, color=WHITE)
add_rect(slide, 8.7, 3.6, 4.3, 1.7, RGBColor(0xEE, 0xE8, 0xFF))
add_text(slide, "Clinical Example", 8.85, 3.65, 4.0, 0.45,
font_size=15, bold=True, color=RGBColor(0x5B, 0x2D, 0x8E))
add_multiline(slide,
[("Unclear abdominal pain:", False),
("→ Give warm sesame oil massage", False),
("→ If relief: Vata-type pain confirmed", False),
("→ If worsens: not Vata (rule out)", False)],
8.85, 4.1, 4.0, 1.1, font_size=13, color=DARK_TEXT)
add_rect(slide, 8.7, 5.45, 4.3, 1.55, LIGHT_GREEN)
add_text(slide, "Key Principle", 8.85, 5.5, 4.0, 0.4,
font_size=14, bold=True, color=DARK_GREEN)
add_text(slide,
"Upashaya confirms diagnosis\nwhen other 4 components\nare absent or unclear.",
8.85, 5.9, 4.0, 1.0, font_size=13, color=DARK_TEXT)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 9 – SAMPRAPTI
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "5. SAMPRAPTI — Pathogenesis",
"CS Nidana Sthana 1/9 | सम्प्राप्ति")
footer_bar(slide)
add_rect(slide, 0.4, 1.25, 7.7, 5.75, WHITE)
samprapti_lines = [
("Definition:", True),
(" Samprapti = Sam (complete) + Prapti (attainment/manifestation)", False),
(" It is the complete pathway of disease — how it arises from", False),
(" causative factors to full manifestation through Dosha-Dushya Sammurchhana.", False),
("", False),
("Also called: Agati, Jati, Kriya, Ayatana (synonyms)", False),
("", False),
("Types of Samprapti:", True),
(" 1. Sankhya Samprapti — number of disease types", False),
(" E.g., Jwara is of 8 types based on dosha combinations", False),
(" 2. Pradhanya Samprapti — predominant dosha/dushya involved", False),
(" 3. Bala Samprapti — strength/severity of the disease", False),
(" 4. Nidana Samprapti — involvement of specific nidana type", False),
(" 5. Vyadhi Samprapti (Kala Samprapti) — time taken to manifest", False),
("", False),
("Components of Samprapti:", True),
(" • Dosha (which dosha is vitiated)", False),
(" • Dushya (tissues/doshas being vitiated)", False),
(" • Srotas (channels affected)", False),
(" • Srotodushti (type of channel dysfunction)", False),
(" • Adhisthana (site/seat of disease)", False),
(" • Rogamarga (pathway: Shakha, Koshtha, Marma-Asthi-Sandhi)", False),
(" • Vyakti (specific disease manifestation)", False),
(" • Bheda (varieties of disease)", False),
]
add_multiline(slide, samprapti_lines, 0.55, 1.35, 7.4, 5.55, font_size=13, color=DARK_TEXT)
add_rect(slide, 8.4, 1.25, 4.6, 5.75, RGBColor(0x0A, 0x52, 0x7A))
add_text(slide, "Samprapti of Jwara", 8.55, 1.3, 4.3, 0.45,
font_size=15, bold=True, color=GOLD)
samprapti_jwara = [
("Hetu:", True),
(" Viruddha Ahara, Vegadhana,", False),
(" Ama formation", False),
("", False),
("↓ Ama + Dosha vitiation", True),
("↓ Rasa Dhatu involvement", False),
("↓ Rasavaha Srotas obstruction", False),
("↓ Hridaya → Ushma imbalance", False),
("", False),
("Srotodusti: Sanga + Atipravritti", False),
("Adhisthana: Sarva Shareera", False),
("Vyakti: Santapa (fever)", False),
("", False),
("Result: Jwara (Fever)", True),
]
add_multiline(slide, samprapti_jwara, 8.55, 1.8, 4.2, 5.1, font_size=13, color=WHITE)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 10 – SHAT KRIYA KALA (correlation table)
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "Nidana Panchaka & Shat Kriya Kala",
"Correlation with Six Stages of Disease Progression")
footer_bar(slide)
stages = [
("Stage 1", "Sanchaya", "Accumulation of Dosha in its own site", "Nidana active — causative factors accumulating"),
("Stage 2", "Prakopa", "Aggravation of Dosha", "Nidana at peak; Hetu most relevant"),
("Stage 3", "Prasara", "Spread of Dosha from its site", "PURVARUPA appears — premonitory symptoms"),
("Stage 4", "Sthana Samshraya", "Dosha lodges in a new site/dhatu", "Purvarupa continues; early RUPA begins"),
("Stage 5", "Vyakti", "Full manifestation of disease", "RUPA clear; UPASHAYA & SAMPRAPTI diagnosed"),
("Stage 6", "Bheda", "Complications/chronicity", "All five fully applicable; prognosis assessed"),
]
headers = ["Stage", "Sanskrit Name", "Meaning", "Nidana Panchaka Correlation"]
col_widths = [0.9, 1.8, 3.2, 5.7]
col_x = [0.3, 1.25, 3.1, 6.35]
row_h = 0.8
header_y = 1.25
# Header row
add_rect(slide, 0.3, header_y, 12.7, 0.55, DARK_GREEN)
for i, (hdr, cx, cw) in enumerate(zip(headers, col_x, col_widths)):
add_text(slide, hdr, cx+0.05, header_y+0.05, cw-0.1, 0.45,
font_size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
for r, (sn, skt, meaning, corr) in enumerate(stages):
y = header_y + 0.55 + r * row_h
bg = WHITE if r % 2 == 0 else RGBColor(0xF2, 0xF8, 0xF4)
add_rect(slide, 0.3, y, 12.7, row_h-0.04, bg)
# highlight Purvarupa, Rupa rows
if r == 2:
add_rect(slide, 6.3, y, 6.75, row_h-0.04, RGBColor(0xE8, 0xF5, 0xE9))
if r == 4:
add_rect(slide, 6.3, y, 6.75, row_h-0.04, RGBColor(0xFF, 0xF3, 0xE0))
data = [sn, skt, meaning, corr]
for i, (val, cx, cw) in enumerate(zip(data, col_x, col_widths)):
add_text(slide, val, cx+0.05, y+0.08, cw-0.1, row_h-0.2,
font_size=12, bold=(i == 1), color=DARK_TEXT, align=PP_ALIGN.LEFT,
v_anchor=MSO_ANCHOR.MIDDLE)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 11 – CLINICAL SIGNIFICANCE
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "Clinical Significance & Applications",
"Why Nidana Panchaka is the Cornerstone of Ayurvedic Diagnosis")
footer_bar(slide)
cards = [
(DARK_GREEN, "Diagnosis", [
"Enables systematic and complete diagnosis",
"Each component confirms/supports others",
"Prevents misdiagnosis",
"Applicable to ALL diseases in Ayurveda",
]),
(MID_GREEN, "Treatment Planning", [
"Nidana → Hetu Viparita Chikitsa",
"Samprapti → Samprapti Vighatana therapy",
"Upashaya guides drug/diet selection",
"Rupa helps in Shamana vs Shodhana choice",
]),
(RGBColor(0xC8, 0x5A, 0x00), "Prognosis", [
"Purvarupa stage = best prognosis",
"Bheda stage = poorest prognosis",
"Number of involved doshas affects outlook",
"Samprapti reveals chronicity",
]),
(RGBColor(0x5B, 0x2D, 0x8E), "Prevention", [
"Purvarupa enables early intervention",
"Nidana Parivarjana = remove cause",
"Prevents disease from reaching Bheda",
"Foundation of preventive Ayurveda",
]),
]
for i, (color, title, points) in enumerate(cards):
col = i % 2
row = i // 2
x = 0.4 + col * 6.5
y = 1.3 + row * 3.0
add_rect(slide, x, y, 6.1, 2.7, color)
add_text(slide, title, x+0.15, y+0.1, 5.8, 0.45,
font_size=18, bold=True, color=WHITE)
add_rect(slide, x+0.1, y+0.55, 5.9, 0.04, RGBColor(0xFF, 0xFF, 0xFF, ))
lines = [(f" ✓ {p}", False) for p in points]
add_multiline(slide, lines, x+0.15, y+0.65, 5.8, 1.9,
font_size=14, color=WHITE)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 12 – COMPARISON TABLE
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "Nidana Panchaka — Quick Reference Table",
"All five components at a glance")
footer_bar(slide)
table_data = [
("Nidana\n(Hetu)", "Causative factors", "CS Ni. 1/5", "Sanchaya-Prakopa stage",
"Nidana Parivarjana;\nHetu Viparita Chikitsa"),
("Purvarupa", "Prodromal symptoms\n(avyakta — incomplete)", "CS Ni. 1/6", "Prasara stage (Stage 3)",
"Early treatment;\nApunarbhava chikitsa"),
("Rupa\n(Lakshana)", "Specific signs &\nsymptoms (vyakta)", "CS Ni. 1/7", "Vyakti stage (Stage 5)",
"Specific treatment;\nVyadhi Bheda"),
("Upashaya", "Therapeutic trial;\nrelieving factors", "CS Ni. 1/8", "When diagnosis unclear",
"Confirms diagnosis;\n18-type classification"),
("Samprapti", "Pathogenesis;\nmechanism of disease", "CS Ni. 1/9", "All stages",
"Samprapti Vighatana;\ntargeted treatment"),
]
col_heads = ["Component", "Description", "Reference", "Kriya Kala Stage", "Therapeutic Use"]
col_x = [0.3, 2.55, 5.35, 7.1, 9.7]
col_w = [2.2, 2.75, 1.7, 2.55, 3.3]
row_h = 1.0
hy = 1.25
add_rect(slide, 0.3, hy, 12.7, 0.55, DARK_GREEN)
for hdr, cx, cw in zip(col_heads, col_x, col_w):
add_text(slide, hdr, cx+0.05, hy+0.05, cw-0.1, 0.45,
font_size=12, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
row_colors = [DARK_GREEN, MID_GREEN, RGBColor(0xC8,0x5A,0x00),
RGBColor(0x5B,0x2D,0x8E), RGBColor(0x0A,0x52,0x7A)]
for r, (row, rclr) in enumerate(zip(table_data, row_colors)):
y = hy + 0.55 + r * row_h
add_rect(slide, 0.3, y, 12.7, row_h-0.03, RGBColor(0xFA,0xFA,0xFA))
add_rect(slide, 0.3, y, 2.2, row_h-0.03, rclr)
add_text(slide, row[0], 0.35, y+0.1, 2.1, row_h-0.25,
font_size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
for val, cx, cw in zip(row[1:], col_x[1:], col_w[1:]):
add_text(slide, val, cx+0.05, y+0.08, cw-0.1, row_h-0.2,
font_size=12, color=DARK_TEXT, align=PP_ALIGN.LEFT,
v_anchor=MSO_ANCHOR.MIDDLE)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 13 – NIDANA PANCHAKA IN PRACTICE (Case-based)
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "Applied Example — Jwara (Fever)",
"Applying Nidana Panchaka in clinical practice")
footer_bar(slide)
case_data = [
(DARK_GREEN, "1. NIDANA",
["Viruddha Ahara (incompatible food)", "Vegadharan (holding natural urges)",
"Excessive exertion/grief", "Ama formation → Dosha vitiation"]),
(MID_GREEN, "2. PURVARUPA",
["Jrimbha (yawning)", "Angamarda (body ache)", "Aruchi (anorexia)",
"Trushna (thirst)", "Gourava (heaviness)"]),
(RGBColor(0xC8, 0x5A, 0x00), "3. RUPA",
["Santapa (burning fever)", "Daha (burning sensation)", "Trishna (excessive thirst)",
"Deha Gaurava", "Dosha-specific features"]),
(RGBColor(0x5B, 0x2D, 0x8E), "4. UPASHAYA",
["Laghu Ahara relieves → Ama-type fever", "Svedana (sudation) relieves → Vata type",
"Sheetala chikitsa relieves → Pitta Jwara"]),
(RGBColor(0x0A, 0x52, 0x7A), "5. SAMPRAPTI",
["Ama + Dosha → Rasavaha Srotas obstruction",
"Hridaya → Ushma imbalance → Santapa",
"8 types (Sankhya Samprapti)"]),
]
col_pos = [(0.3,1.3), (2.95,1.3), (5.6,1.3), (8.25,1.3), (10.9,1.3)]
for (x,y), (color, title, items) in zip(col_pos, case_data):
add_rect(slide, x, y, 2.55, 5.85, color)
add_text(slide, title, x+0.08, y+0.1, 2.38, 0.55,
font_size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(slide, x+0.1, y+0.65, 2.35, 0.04, WHITE)
lines = [(f"• {item}", False) for item in items]
add_multiline(slide, lines, x+0.1, y+0.75, 2.35, 4.9,
font_size=12, color=WHITE)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 14 – MODERN CORRELATION
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "Correlation with Modern Medicine",
"Nidana Panchaka vs. Contemporary Medical Diagnosis")
footer_bar(slide)
add_rect(slide, 0.3, 1.25, 12.7, 5.6, WHITE)
# Headers
add_rect(slide, 0.3, 1.25, 3.0, 0.55, DARK_GREEN)
add_rect(slide, 3.35, 1.25, 4.6, 0.55, MID_GREEN)
add_rect(slide, 8.0, 1.25, 5.0, 0.55, RGBColor(0xC8, 0x5A, 0x00))
add_text(slide, "Nidana Panchaka", 0.35, 1.28, 2.9, 0.45,
font_size=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "Ayurvedic Concept", 3.4, 1.28, 4.5, 0.45,
font_size=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "Modern Medical Equivalent", 8.05, 1.28, 4.9, 0.45,
font_size=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rows = [
("Nidana (Hetu)", "Etiological factors causing dosha vitiation",
"Etiology — risk factors, causative agents (bacteria, genetics, lifestyle)"),
("Purvarupa", "Prodromal/premonitory incomplete symptoms",
"Prodrome — early warning signs (e.g. aura before migraine, malaise before fever)"),
("Rupa", "Specific, complete signs and symptoms",
"Signs & Symptoms — clinical features used in diagnosis (Chief complaints, OPQRST)"),
("Upashaya", "Therapeutic trial to confirm diagnosis",
"Ex-juvantibus therapy — treating empirically to confirm; also differential diagnosis"),
("Samprapti", "Pathogenesis — mechanism of disease development",
"Pathophysiology — cellular/molecular mechanism; disease progression model"),
]
row_colors_alt = [RGBColor(0xF8,0xFD,0xF8), WHITE]
for r, (comp, ayur, modern) in enumerate(rows):
y = 1.8 + r * 1.0
bg = row_colors_alt[r % 2]
add_rect(slide, 0.3, y, 12.7, 0.97, bg)
add_rect(slide, 0.3, y, 3.0, 0.97, RGBColor(0xE8, 0xF5, 0xE9))
add_text(slide, comp, 0.35, y+0.08, 2.9, 0.8,
font_size=14, bold=True, color=DARK_GREEN, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
add_text(slide, ayur, 3.4, y+0.08, 4.5, 0.8,
font_size=13, color=DARK_TEXT, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(slide, modern, 8.05, y+0.08, 4.9, 0.8,
font_size=12, color=DARK_TEXT, v_anchor=MSO_ANCHOR.MIDDLE)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 15 – SUMMARY & KEY TAKEAWAYS
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, DARK_GREEN)
add_rect(slide, 0, 6.9, 13.333, 0.6, RGBColor(0x12, 0x40, 0x28))
add_text(slide, "Summary & Key Takeaways", 0.4, 0.15, 12.5, 0.75,
font_size=32, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_rect(slide, 0.4, 0.9, 5.0, 0.06, GOLD)
# Five takeaway boxes
takeaways = [
("NIDANA", "Know the cause → treat the cause.\nNidana Parivarjana is the first step."),
("PURVARUPA", "Early warning system of Ayurveda.\nIntervene before full manifestation."),
("RUPA", "Specific signs confirm diagnosis.\nDifferentiate Dosha involvement."),
("UPASHAYA", "Diagnostic-therapeutic tool.\n18 types; confirms when others fail."),
("SAMPRAPTI", "Complete pathogenesis pathway.\nTarget it with Samprapti Vighatana."),
]
for i, (title, body) in enumerate(takeaways):
x = 0.3 + i * 2.55
add_rect(slide, x, 1.1, 2.45, 4.2, RGBColor(0x1F, 0x6E, 0x44))
add_rect(slide, x, 1.1, 2.45, 0.55, GOLD)
add_text(slide, title, x+0.08, 1.12, 2.28, 0.48,
font_size=14, bold=True, color=DARK_GREEN, align=PP_ALIGN.CENTER)
add_text(slide, body, x+0.1, 1.7, 2.28, 3.5,
font_size=13, color=WHITE, wrap=True)
add_rect(slide, 0.3, 5.5, 12.7, 1.25, RGBColor(0x14, 0x4A, 0x2B))
add_text(slide,
'"ज्ञात्वा रोगं निदानं च पूर्वरूपाणि लक्षणम् |\nउपशयं सम्प्राप्तिं च षड्विधं परीक्षेत ॥"',
0.4, 5.55, 12.5, 1.1, font_size=15, italic=True, color=GOLD,
align=PP_ALIGN.CENTER)
add_text(slide,
"Nidana Panchaka is the COMPLETE diagnostic framework. A physician who masters these five tools\n"
"achieves accurate diagnosis, rational treatment, and successful outcomes.",
0.3, 6.92, 12.7, 0.55, font_size=11, color=LIGHT_GREEN,
align=PP_ALIGN.CENTER)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 16 – REFERENCES
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, CREAM)
section_header_bar(slide, "References", "Sources & Further Reading")
footer_bar(slide)
refs = [
("Primary Text:",
"Charaka Samhita — Nidana Sthana, Chapter 1 (Jwara Nidana), Verses 1/5–1/9\n"
"Acharya Charaka, ed. by Acharya Yadavji Trikamji, Chaukhamba Surbharati Prakashan, Varanasi"),
("Commentary:",
"Ayurveda Dipika (Chakrapanidatta) on Charak Samhita\n"
"Jalpakalpataru (Gangadhara Kaviraj) on Charaka Samhita"),
("Secondary References:",
"Sharangdhara Samhita — Purva Khanda\n"
"Madhava Nidana (Rogavinischaya) — Madhavakara\n"
"Ashtanga Hridayam — Vagbhata, Nidana Sthana"),
("Modern Research:",
"Shastri A D (2016). Nidana Panchaka and its relevance in contemporary Ayurvedic practice.\n"
"Journal of Ayurveda and Integrative Medicine.\n"
"Patwardhan B. (2014). Bridging Ayurveda with evidence-based scientific approaches."),
("Textbooks:",
"Samhita & Siddhanta — BAMS textbooks (CCIM syllabus)\n"
"Roga Nidana & Vikriti Vijnana — standard BAMS curriculum texts"),
]
for r, (head, body) in enumerate(refs):
y = 1.3 + r * 1.15
add_rect(slide, 0.4, y, 12.5, 1.05, WHITE if r % 2 == 0 else RGBColor(0xF2,0xF8,0xF4))
add_rect(slide, 0.4, y, 1.9, 1.05, LIGHT_GREEN)
add_text(slide, head, 0.45, y+0.12, 1.8, 0.75,
font_size=13, bold=True, color=DARK_GREEN, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(slide, body, 2.4, y+0.08, 10.35, 0.85,
font_size=12, color=DARK_TEXT, v_anchor=MSO_ANCHOR.MIDDLE, wrap=True)
# ══════════════════════════════════════════════════════════════════════════════
# SAVE
# ══════════════════════════════════════════════════════════════════════════════
out_path = "/tmp/workspace/nidana-panchaka/Nidana_Panchaka_Charak_Samhita.pptx"
prs.save(out_path)
print(f"Saved: {out_path}")
print(f"Total slides: {len(prs.slides)}")
cd /tmp/workspace/nidana-panchaka && python create_pptx.py 2>&1
ls -lh /tmp/workspace/nidana-panchaka/
Nidana Panchaka Charak Samhita
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title Slide — dark Ayurvedic green + gold, Sanskrit shloka (CS Ni. 1/5) |
| 2 | Table of Contents — 8 topics with numbered cards |
| 3 | Introduction — meaning of Nidana Panchaka, reference (Nidana Sthana Ch.1), purpose |
| 4 | Conceptual Diagram — 5 surrounding boxes connected to a central "Nidana Panchaka" hub |
| 5 | Nidana (Hetu) — definition, types (Sannikrishta/Viprakrishta), Trividha Hetu, Nidana Parivarjana, Jwara examples |
| 6 | Purvarupa — prodromal symptoms, Shat Kriya Kala correlation (Stage 3), Jwara examples, Samanya vs Vishishta |
| 7 | Rupa — Lakshana/Linga, types, Rupa vs Purvarupa comparison, Dosha-wise Jwara Rupa |
| 8 | Upashaya — 18-type classification (Ahara/Vihara/Aushadha × 6), Hetu Viparita etc., clinical example |
| 9 | Samprapti — 5 types (Sankhya, Pradhanya, Bala, Nidana, Kala), 8 components, full Jwara pathogenesis |
| 10 | Shat Kriya Kala Correlation Table — all 6 stages mapped to Nidana Panchaka |
| 11 | Clinical Significance — 4 color-coded cards: Diagnosis, Treatment, Prognosis, Prevention |
| 12 | Quick Reference Table — all 5 components with reference, Kriya Kala stage, therapeutic use |
| 13 | Applied Case — Jwara — all 5 components applied to fever in 5 parallel columns |
| 14 | Modern Medicine Correlation — Ayurvedic term vs modern equivalent (etiology, prodrome, pathophysiology, etc.) |
| 15 | Summary & Takeaways — 5 gold-capped boxes + closing Sanskrit shloka |
| 16 | References — Charak Samhita, Chakrapanidatta commentary, Madhava Nidana, modern journals |