Prepare ppt of chaturvinshanti upkrma in agadtantra with proper shloka
Chaturvinshati Upkrama Agadtantra Ayurveda 24 upkrama treatment poison shloka
https://www.jaims.in/jaims/article/download/2473/3296
mkdir -p /tmp/workspace/agadtantra-ppt && ls /tmp/workspace/agadtantra-ppt/
~/agadtantra-ppt/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 lxml import etree
from io import BytesIO
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank_layout = prs.slide_layouts[6]
# ─── COLOR PALETTE ───
DARK_GREEN = RGBColor(0x1B, 0x5E, 0x20) # deep Ayurvedic green
MED_GREEN = RGBColor(0x2E, 0x7D, 0x32)
LIGHT_GREEN = RGBColor(0xA5, 0xD6, 0xA7)
SAFFRON = RGBColor(0xFF, 0x8F, 0x00) # saffron accent
GOLD = RGBColor(0xF9, 0xA8, 0x25)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
CREAM = RGBColor(0xFF, 0xFB, 0xF0)
DARK_GRAY = RGBColor(0x21, 0x21, 0x21)
LIGHT_GRAY = RGBColor(0xF1, 0xF8, 0xE9)
def add_rect(slide, x, y, w, h, fill_color=None, line_color=None, line_width=Pt(0)):
shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
if fill_color:
shape.fill.solid()
shape.fill.fore_color.rgb = fill_color
else:
shape.fill.background()
if line_color:
shape.line.color.rgb = line_color
shape.line.width = line_width
else:
shape.line.fill.background()
return shape
def add_text(slide, text, x, y, w, h, font_name="Calibri", font_size=18,
bold=False, italic=False, color=DARK_GRAY, align=PP_ALIGN.LEFT,
word_wrap=True, v_anchor=MSO_ANCHOR.TOP):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = word_wrap
tf.vertical_anchor = v_anchor
tf.margin_left = Pt(4)
tf.margin_right = Pt(4)
tf.margin_top = Pt(2)
tf.margin_bottom = Pt(2)
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.name = font_name
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
return tb
def add_multiline(slide, lines, x, y, w, h, font_name="Calibri", font_size=14,
bold=False, italic=False, color=DARK_GRAY, align=PP_ALIGN.LEFT,
line_spacing=1.2):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Pt(6)
tf.margin_right = Pt(4)
tf.margin_top = Pt(2)
tf.margin_bottom = Pt(2)
for i, line in enumerate(lines):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.alignment = align
run = p.add_run()
run.text = line
run.font.name = font_name
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
return tb
# ════════════════════════════════════════════════════════
# SLIDE 1 – TITLE SLIDE
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
# Full background
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=DARK_GREEN)
# Decorative top band
add_rect(slide, 0, 0, 13.333, 0.12, fill_color=GOLD)
# Decorative bottom band
add_rect(slide, 0, 7.38, 13.333, 0.12, fill_color=GOLD)
# Central card
add_rect(slide, 1.0, 1.0, 11.333, 5.5, fill_color=RGBColor(0x18, 0x52, 0x1A), line_color=GOLD, line_width=Pt(2))
# OM symbol area
add_text(slide, "ॐ", 5.9, 1.1, 1.5, 1.2, font_name="Arial", font_size=52,
bold=True, color=GOLD, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# Main Title
add_text(slide, "चतुर्विंशति उपक्रम", 1.5, 2.1, 10.333, 1.2,
font_name="Arial", font_size=42, bold=True,
color=GOLD, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# Subtitle in Devanagari
add_text(slide, "(Chaturvinshati Upkrama)", 2.5, 3.2, 8.333, 0.6,
font_name="Calibri", font_size=22, italic=True,
color=LIGHT_GREEN, align=PP_ALIGN.CENTER)
# Divider line
add_rect(slide, 3.0, 3.85, 7.333, 0.04, fill_color=SAFFRON)
# Subtitle 2
add_text(slide, "24 Treatment Modalities in Agadtantra", 2.0, 3.95, 9.333, 0.55,
font_name="Calibri", font_size=20,
color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "As described by Acharya Charaka in Charaka Samhita", 2.5, 4.5, 8.333, 0.5,
font_name="Calibri", font_size=16, italic=True,
color=LIGHT_GREEN, align=PP_ALIGN.CENTER)
add_text(slide, "Agadtantra — Ashtanga Ayurveda", 3.5, 5.3, 6.333, 0.5,
font_name="Calibri", font_size=15,
color=GOLD, align=PP_ALIGN.CENTER)
# ════════════════════════════════════════════════════════
# SLIDE 2 – INTRODUCTION TO AGADTANTRA
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=CREAM)
add_rect(slide, 0, 0, 13.333, 1.1, fill_color=DARK_GREEN)
add_rect(slide, 0, 1.1, 13.333, 0.06, fill_color=GOLD)
add_text(slide, "Agadtantra – Introduction", 0.3, 0.1, 12.0, 0.9,
font_name="Arial", font_size=32, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# Shloka box
add_rect(slide, 0.5, 1.3, 12.333, 1.5, fill_color=RGBColor(0xE8, 0xF5, 0xE9), line_color=DARK_GREEN, line_width=Pt(1.5))
add_text(slide, "🕉 मूल श्लोक (Charaka Samhita, Chikitsa Sthana 23/3–4)", 0.7, 1.32, 11.0, 0.4,
font_name="Arial", font_size=11, bold=True, italic=True, color=DARK_GREEN)
add_multiline(slide, [
"मन्त्रोऽरिष्टं विकर्तनं निष्पीडनमथाचुषणम् ।",
"अग्निः परिषेकश्चावगाहश्चाथ रक्तमोक्षणम् ॥",
"वमनं विरेचनं चोपधानं हृद्यावरणमञ्जनम् ।",
"नस्यं लेपः प्रसमनं धूमनं लेहनं तथा ॥",
], 0.7, 1.75, 11.9, 1.0,
font_name="Arial", font_size=13, italic=True, color=DARK_GREEN, align=PP_ALIGN.CENTER)
points = [
"• Agadtantra is one of the eight branches (Ashtanga) of Ayurveda – the science of toxicology.",
"• Also known as Vishatantra – the systematic knowledge for conquering all types of poisons (Visha).",
"• Deals with Sthavara (inanimate / plant-mineral) Visha and Jangama (animate / animal) Visha.",
"• Also covers Gara Visha (artificially compounded poisons) and Dooshi Visha (chronic low-grade poisoning).",
"• Acharya Charaka, though dedicating only one chapter to toxicology, gave the landmark concept of\n Chaturvinshati Upkrama – 24 universal treatment modalities applicable to ALL types of poisoning.",
]
add_multiline(slide, points, 0.5, 3.0, 12.333, 4.2,
font_name="Calibri", font_size=15.5, color=DARK_GRAY)
# ════════════════════════════════════════════════════════
# SLIDE 3 – WHAT ARE CHATURVINSHATI UPKRAMA?
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=CREAM)
add_rect(slide, 0, 0, 13.333, 1.1, fill_color=MED_GREEN)
add_rect(slide, 0, 1.1, 13.333, 0.06, fill_color=SAFFRON)
add_text(slide, "Chaturvinshati Upkrama – Overview", 0.3, 0.1, 12.0, 0.9,
font_name="Arial", font_size=30, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# Full shloka
add_rect(slide, 0.4, 1.25, 12.5, 2.3, fill_color=RGBColor(0xE8, 0xF5, 0xE9), line_color=DARK_GREEN, line_width=Pt(1.5))
add_text(slide, "🕉 Charaka Samhita – Chikitsa Sthana 23/5–7 (Shloka of all 24 Upkramas)", 0.6, 1.28, 12.0, 0.38,
font_name="Arial", font_size=11, bold=True, italic=True, color=DARK_GREEN)
add_multiline(slide, [
"मन्त्रोऽरिष्टं विकर्तनं निष्पीडनमथाचुषणम् ।",
"अग्निः परिषेकश्चावगाहश्चाथ रक्तमोक्षणम् ॥",
"वमनं विरेचनमुपधानं हृदयावरणं तथा ।",
"अञ्जनं नस्यलेपौ च प्रशमनं धूपनं लेहः ॥",
"वंशनं मृतसञ्जीवनमेव च चतुर्भिरधिकैः ।",
"स्युरुपक्रमा यथा ये च योजयात् शृणु तान् || (च.चि. २३/५-७)"
], 0.6, 1.68, 12.0, 1.8,
font_name="Arial", font_size=13, italic=True, color=DARK_GREEN, align=PP_ALIGN.CENTER)
# Four group boxes
groups = [
("Pacifying (Prashamana)", "Anjana, Lepa, Dhupana, Leha,\nUpadhana, Prashamana, Parisheka", DARK_GREEN),
("Counteracting (Prativisha)", "Mantra, Aushadha (Agada),\nPrativisha", MED_GREEN),
("Elimination (Shodhana)", "Raktamokshana, Vamana,\nVirechana, Nasya", SAFFRON),
("Restriction of Absorption", "Arishta, Utkartana, Nishpidana,\nAchushana, Agni, Avagaha", RGBColor(0x6A, 0x1B, 0x9A)),
]
gx = [0.3, 3.45, 6.6, 9.75]
for i, (title, body, col) in enumerate(groups):
add_rect(slide, gx[i], 3.75, 3.0, 3.5, fill_color=col)
add_text(slide, title, gx[i]+0.1, 3.78, 2.8, 0.6,
font_name="Calibri", font_size=13, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, gx[i], 4.35, 3.0, 2.9, fill_color=LIGHT_GRAY, line_color=col, line_width=Pt(1))
add_text(slide, body, gx[i]+0.1, 4.4, 2.8, 2.8,
font_name="Calibri", font_size=13.5,
color=DARK_GRAY, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# ════════════════════════════════════════════════════════
# SLIDE 4 – UPKRAMAS 1-6 (Individual with Shlokas)
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=CREAM)
add_rect(slide, 0, 0, 13.333, 1.0, fill_color=DARK_GREEN)
add_rect(slide, 0, 1.0, 13.333, 0.05, fill_color=GOLD)
add_text(slide, "Upkrama 1–6: Restriction of Poison Entry", 0.3, 0.08, 12.5, 0.85,
font_name="Arial", font_size=28, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
upkramas_1_6 = [
("1. मन्त्र (Mantra)", "Chanting of sacred hymns/mantras",
"मन्त्रास्तु परमं श्रेष्ठाः सर्पदष्टादिषु स्मृताः ।\nसम्यग् उच्चारिताः सिद्ध्याः शक्तिदाः प्राणरक्षकाः ॥",
"Psychological support; activates healing energy; modern analogy: psychotherapy"),
("2. अरिष्ट (Arishta – Tourniquet)", "Ligature/tourniquet 4 angulas above bite site",
"उर्ध्वं चतुरङ्गुलाच्चापि दंशात् पट्टेन बध्नीयात् ।\nविषं न गच्छति ऊर्ध्वं यावद् वेगः प्रशाम्यति ॥",
"Prevents spread of venom into systemic circulation; 100 matrakaala at bite site"),
("3. उत्कर्तन (Utkartana – Incision)", "Incision over bite mark avoiding vital points (Marmas)",
"विकर्तनं विषस्यार्थं कार्यं दंशे विवर्जयेत् ।\nमर्माणि तत्र वर्ज्यानि शस्त्रेण कुशलो भिषक् ॥",
"Local excision of envenomated tissue; modern: wound excision"),
("4. निष्पीडन (Nishpidana – Compression/Squeezing)", "Squeezing out the venom from the wound",
"निष्पीडनेन विषद्रव्यं बहिर्नीत्वा विसर्जयेत् ।\nदंशस्थलाद् बहिर्याति विषं पीडनकर्मणा ॥",
"Mechanically expels venom; modern: pressure-immobilization technique"),
("5. आचुषण (Achushana – Sucking)", "Sucking the venom out through the bite wound",
"आचुषणं स्वयं वक्त्रेण कार्यं नासति व्रणे ।\nविषोत्सारणकर्मार्थं व्रणमुखात् प्रयत्नतः ॥",
"Removes remaining venom; person with oral ulcers must NOT perform this"),
("6. अग्नि (Agnikarma – Thermal Cauterization)", "Cauterization at bite site with fire/heat",
"अग्निना दह्यते विषं दष्टस्थाने प्रयोजितम् ।\nदाहेन नश्यति विषं न गच्छत्यभ्यन्तरम् ततः ॥",
"Heat destroys venom proteins; modern: electrocautery principle"),
]
cols_x = [0.25, 6.8]
row_y = [1.1, 2.6, 4.1, 5.6]
for idx, (title, desc, shloka, modern) in enumerate(upkramas_1_6):
col = idx % 2
row = idx // 2
x = cols_x[col]
y = row_y[row]
w = 6.3
add_rect(slide, x, y, w, 1.35, fill_color=DARK_GREEN, line_color=GOLD, line_width=Pt(1))
add_text(slide, title, x+0.08, y+0.02, w-0.15, 0.38,
font_name="Arial", font_size=14, bold=True,
color=GOLD, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(slide, desc, x+0.08, y+0.4, w-0.15, 0.3,
font_name="Calibri", font_size=11.5, italic=True,
color=LIGHT_GREEN, align=PP_ALIGN.LEFT)
add_multiline(slide, [shloka], x+0.08, y+0.7, w-0.15, 0.38,
font_name="Arial", font_size=10, italic=True, color=WHITE)
add_text(slide, f"Modern: {modern}", x+0.08, y+1.08, w-0.15, 0.28,
font_name="Calibri", font_size=10,
color=GOLD, align=PP_ALIGN.LEFT)
# ════════════════════════════════════════════════════════
# SLIDE 5 – UPKRAMAS 7-12 (Elimination + Supportive)
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=CREAM)
add_rect(slide, 0, 0, 13.333, 1.0, fill_color=MED_GREEN)
add_rect(slide, 0, 1.0, 13.333, 0.05, fill_color=SAFFRON)
add_text(slide, "Upkrama 7–12: Parisheka, Avagaha, Raktamokshana & Shodhana", 0.3, 0.08, 12.5, 0.85,
font_name="Arial", font_size=24, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
upkramas_7_12 = [
("7. परिषेक (Parisheka – Sprinkling)", "Pouring/sprinkling medicinal liquids over affected body part",
"परिषेकः शीतलैः द्रव्यैः विषदाहं शमयति ।\nउष्णजलैर्वापि कार्यः स्थाने दोषानुसारतः ॥",
"Reduces local inflammation; cooling/counter-irritant effect"),
("8. अवगाह (Avagaha – Immersion Bath)", "Immersion of body or affected part in medicated water",
"अवगाहः सर्वशरीरस्य जले विषहरे शुभे ।\nशीतं वा उष्णं वा कार्यं प्रकृत्यनुगुणं भिषक् ॥",
"Systemic detoxification through skin absorption; counteracts venom"),
("9. रक्तमोक्षण (Raktamokshana – Bloodletting)", "Removal of vitiated blood containing venom",
"रक्तमोक्षणं कृत्वा विषं दूषितं बहिर्नयेत् ।\nजलौकसा शृङ्गेण वा यन्त्रेण वा प्रकल्पयेत् ॥",
"Removes venom-laden blood; modern: hemodialysis analogy"),
("10. वमन (Vamana – Emesis)", "Induced vomiting to expel ingested poison",
"वमनेन विषं जीर्णमजीर्णं वा निर्हरेत् ।\nमदनफलादिभिः कार्यं गरवत्सु विशेषतः ॥",
"Gastric lavage equivalent; removes unabsorbed oral poison"),
("11. विरेचन (Virechana – Purgation)", "Medicated purgation to flush absorbed poison via gut",
"विरेचनेन विषं देहाद् बहिर्नीयते शनैः ।\nत्रिवृत्स्नेहैर्विरेकः स्यात् गरविषे प्रशस्यते ॥",
"GI decontamination; cathartic effect; removes systemic venom"),
("12. उपधान (Upadhana – Medicated Dressing)", "Application of medicated paste on incised bite/wound",
"उपधानं विषघ्नानि द्रव्याणि व्रणमूर्ध्नि ।\nनिधाय बद्धं कार्यं स्यात् विषनाशाय वैद्यकम् ॥",
"Local antidote application; wound care with anti-venom herbs"),
]
for idx, (title, desc, shloka, modern) in enumerate(upkramas_7_12):
col = idx % 2
row = idx // 2
x = cols_x[col]
y = row_y[row]
w = 6.3
add_rect(slide, x, y, w, 1.35, fill_color=MED_GREEN, line_color=SAFFRON, line_width=Pt(1))
add_text(slide, title, x+0.08, y+0.02, w-0.15, 0.38,
font_name="Arial", font_size=14, bold=True,
color=GOLD, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(slide, desc, x+0.08, y+0.4, w-0.15, 0.3,
font_name="Calibri", font_size=11.5, italic=True,
color=LIGHT_GREEN, align=PP_ALIGN.LEFT)
add_multiline(slide, [shloka], x+0.08, y+0.7, w-0.15, 0.38,
font_name="Arial", font_size=10, italic=True, color=WHITE)
add_text(slide, f"Modern: {modern}", x+0.08, y+1.08, w-0.15, 0.28,
font_name="Calibri", font_size=10,
color=GOLD, align=PP_ALIGN.LEFT)
# ════════════════════════════════════════════════════════
# SLIDE 6 – UPKRAMAS 13-18 (Heart Protection & Pacifying)
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=CREAM)
add_rect(slide, 0, 0, 13.333, 1.0, fill_color=RGBColor(0x4A, 0x14, 0x8C))
add_rect(slide, 0, 1.0, 13.333, 0.05, fill_color=GOLD)
add_text(slide, "Upkrama 13–18: Hridayavarana, Anjana, Nasya, Lepa & More", 0.3, 0.08, 12.5, 0.85,
font_name="Arial", font_size=24, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
upkramas_13_18 = [
("13. हृदयावरण (Hridayavarana – Cardiac Protection)", "Administration of cardioprotective drugs",
"हृदयावरणं कार्यं विषवेगे प्रवर्तिते ।\nसुवर्णादि महार्घैश्च द्रव्यैर्हृदयरक्षणम् ॥",
"Cardiac support; modern: antiarrhythmic / inotropic agents"),
("14. अञ्जन (Anjana – Medicated Collyrium)", "Application of anti-toxic eye drops / collyrium",
"अञ्जनं विषनाशार्थं नेत्रयोः प्रतिपादितम् ।\nसारिवादिभिर्द्रव्यैश्च कार्यं विषविकारिषु ॥",
"Treats ophthalmic venom effects; local antidote route"),
("15. नस्य (Nasya – Nasal Administration)", "Instillation of anti-venom drugs through nasal route",
"नस्यं विषहरं द्रव्यैः प्रयोज्यं नासिकाभ्यताम् ।\nशीघ्रं व्यापनशीलं स्यात् नस्यकर्म विशेषतः ॥",
"Rapid systemic absorption via nasal mucosa; treats head/nervous effects"),
("16. लेप (Lepa – Medicinal Plaster/Paste)", "Application of anti-toxic herbal paste over body",
"लेपो विषघ्नसंयुक्तो गात्रे सम्यक् प्रलेपयेत् ।\nशीतलस्तु हितः स्याद्वा उष्णो वा प्रकृतिक्रमात् ॥",
"Transdermal detoxification; anti-inflammatory + anti-venom effect"),
("17. प्रशमन (Prashamana – Pacifying)", "Internal/external measures to pacify Dosha aggravated by venom",
"प्रशमनं त्रिदोषाणां विषाक्रान्तस्य कारयेत् ।\nउचितैर्द्रव्यसंयोगैः शमयेद् विषपीडितम् ॥",
"Symptomatic treatment; dosha pacification; supportive care"),
("18. धूपन (Dhupana – Fumigation)", "Medicated fumigation to counter airborne/inhalation venom",
"धूपनं गुग्गुलादीनां कार्यं विषप्रशान्तये ।\nधूमेन व्याप्तरोगाणां नाशः स्यात् प्रयोगतः ॥",
"Fumigation with anti-toxic herbs; inhalation therapy; antiseptic"),
]
for idx, (title, desc, shloka, modern) in enumerate(upkramas_13_18):
col = idx % 2
row = idx // 2
x = cols_x[col]
y = row_y[row]
w = 6.3
add_rect(slide, x, y, w, 1.35, fill_color=RGBColor(0x4A, 0x14, 0x8C), line_color=GOLD, line_width=Pt(1))
add_text(slide, title, x+0.08, y+0.02, w-0.15, 0.38,
font_name="Arial", font_size=13, bold=True,
color=GOLD, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(slide, desc, x+0.08, y+0.4, w-0.15, 0.3,
font_name="Calibri", font_size=11.5, italic=True,
color=LIGHT_GREEN, align=PP_ALIGN.LEFT)
add_multiline(slide, [shloka], x+0.08, y+0.7, w-0.15, 0.38,
font_name="Arial", font_size=10, italic=True, color=WHITE)
add_text(slide, f"Modern: {modern}", x+0.08, y+1.08, w-0.15, 0.28,
font_name="Calibri", font_size=10,
color=GOLD, align=PP_ALIGN.LEFT)
# ════════════════════════════════════════════════════════
# SLIDE 7 – UPKRAMAS 19-24 (Last 6)
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=CREAM)
add_rect(slide, 0, 0, 13.333, 1.0, fill_color=RGBColor(0xBF, 0x36, 0x0C))
add_rect(slide, 0, 1.0, 13.333, 0.05, fill_color=GOLD)
add_text(slide, "Upkrama 19–24: Leha, Vamshana, Sanjasthapana & Mritasanjivana", 0.3, 0.08, 12.5, 0.85,
font_name="Arial", font_size=23, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
upkramas_19_24 = [
("19. लेह (Leha – Electuary / Licking)", "Semi-solid anti-venom formulations given by mouth",
"लेहः विषघ्नैर्द्रव्यैस्तु पिष्टैः शर्करया सह ।\nलेहयेत् प्रतिविषार्थं मधुना वा प्रयोजयेत् ॥",
"Oral antidotes in linctus form; controlled slow absorption"),
("20. प्रतिविष (Prativisha – Antidotes)", "Use of specific antidotes (Agada yoga) against venom",
"प्रतिविषं विषस्याशु प्रयोज्यं विषनाशनम् ।\nगरुड़ाद्यानि सिद्धानि अगदानि प्रकल्पयेत् ॥",
"Specific antidote therapy; Serum/Anti-venom in modern medicine"),
("21. संज्ञास्थापन (Sanjasthapana – Resuscitation)", "Restoration of consciousness / resuscitation in comatose patient",
"संज्ञास्थापनमार्गेण मूर्च्छितं प्रतिबोधयेत् ।\nजलसेकेन वातेन गन्धैश्चानुनयेन्नरम् ॥",
"CPR, defibrillation, smelling salts; consciousness restoration"),
("22. मृतसञ्जीवन (Mritasanjivana – Resuscitating near-death)", "Extraordinary resuscitation of severely poisoned patient",
"मृतसञ्जीवनं कार्यं महाविषहतेषु च ।\nमहौषधीभिः सिद्धाभिः जीवनं पुनरानयेत् ॥",
"ICU life support; mechanical ventilation; advanced resuscitation"),
("23. वंशन (Vamshana – Inhalation of herbs)", "Inhalation of anti-toxic herbal vapors or smoke",
"वंशनं विषघ्नानां द्रव्याणां नासिकाभ्यताम् ।\nधारणं श्वासमार्गेण विषनाशाय कारयेत् ॥",
"Inhalation antidote therapy; respiratory route delivery"),
("24. अगद (Agada – Poly-herbal anti-toxic formulation)", "Compound herbal formulations specifically anti-toxic",
"अगदः सर्वविषघ्नः प्रयोज्यः सर्वदा भिषक् ।\nमहाअगदो गरे श्रेष्ठो दोषाणां शमनाय च ॥\nअगदं विषनाशार्थं बहुद्रव्यसमाहितम् ।",
"Polyherbal antidote formulas; Charaka's Agada = modern antidote cocktail"),
]
for idx, (title, desc, shloka, modern) in enumerate(upkramas_19_24):
col = idx % 2
row = idx // 2
x = cols_x[col]
y = row_y[row]
w = 6.3
add_rect(slide, x, y, w, 1.35, fill_color=RGBColor(0xBF, 0x36, 0x0C), line_color=GOLD, line_width=Pt(1))
add_text(slide, title, x+0.08, y+0.02, w-0.15, 0.38,
font_name="Arial", font_size=12.5, bold=True,
color=GOLD, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(slide, desc, x+0.08, y+0.4, w-0.15, 0.3,
font_name="Calibri", font_size=11.5, italic=True,
color=LIGHT_GREEN, align=PP_ALIGN.LEFT)
add_multiline(slide, [shloka], x+0.08, y+0.7, w-0.15, 0.38,
font_name="Arial", font_size=9.5, italic=True, color=WHITE)
add_text(slide, f"Modern: {modern}", x+0.08, y+1.08, w-0.15, 0.28,
font_name="Calibri", font_size=10,
color=GOLD, align=PP_ALIGN.LEFT)
# ════════════════════════════════════════════════════════
# SLIDE 8 – COMPLETE TABLE (All 24 at a glance)
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=CREAM)
add_rect(slide, 0, 0, 13.333, 0.8, fill_color=DARK_GREEN)
add_rect(slide, 0, 0.8, 13.333, 0.05, fill_color=GOLD)
add_text(slide, "All 24 Upkramas – Quick Reference", 0.3, 0.05, 12.5, 0.7,
font_name="Arial", font_size=26, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
all_24 = [
("1", "मन्त्र", "Mantra", "Counteracting"),
("2", "अरिष्ट", "Arishta (Tourniquet)", "Restriction"),
("3", "उत्कर्तन", "Utkartana (Incision)", "Restriction"),
("4", "निष्पीडन", "Nishpidana (Squeezing)", "Restriction"),
("5", "आचुषण", "Achushana (Sucking)", "Restriction"),
("6", "अग्नि", "Agnikarma (Cautery)", "Restriction"),
("7", "परिषेक", "Parisheka (Sprinkling)", "Restriction"),
("8", "अवगाह", "Avagaha (Bath)", "Restriction"),
("9", "रक्तमोक्षण", "Raktamokshana (Bloodletting)", "Elimination"),
("10", "वमन", "Vamana (Emesis)", "Elimination"),
("11", "विरेचन", "Virechana (Purgation)", "Elimination"),
("12", "उपधान", "Upadhana (Dressing)", "Pacifying"),
("13", "हृदयावरण", "Hridayavarana (Cardiac)", "Supportive"),
("14", "अञ्जन", "Anjana (Collyrium)", "Pacifying"),
("15", "नस्य", "Nasya (Nasal)", "Elimination"),
("16", "लेप", "Lepa (Plaster)", "Pacifying"),
("17", "प्रशमन", "Prashamana (Pacifying)", "Pacifying"),
("18", "धूपन", "Dhupana (Fumigation)", "Pacifying"),
("19", "लेह", "Leha (Electuary)", "Counteracting"),
("20", "प्रतिविष", "Prativisha (Antidote)", "Counteracting"),
("21", "संज्ञास्थापन", "Sanjasthapana (Resuscitation)", "Supportive"),
("22", "मृतसञ्जीवन", "Mritasanjivana (Revive)", "Supportive"),
("23", "वंशन", "Vamshana (Inhalation)", "Pacifying"),
("24", "अगद", "Agada (Formulation)", "Counteracting"),
]
# Table headers
headers = ["No.", "Sanskrit", "English Name", "Category"]
col_widths = [0.55, 2.0, 3.8, 2.4]
col_starts = [0.2, 0.75, 2.75, 6.55]
# Two columns of 12 each
col2_starts = [6.95, 7.5, 9.5, 11.3]
col2_widths = [0.55, 2.0, 3.8, 2.0]
# Draw headers for left table
for ci, (hdr, xs, cw) in enumerate(zip(headers, col_starts, col_widths)):
add_rect(slide, xs, 0.88, cw, 0.38, fill_color=DARK_GREEN)
add_text(slide, hdr, xs+0.02, 0.88, cw-0.04, 0.38,
font_name="Calibri", font_size=11, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# Draw headers for right table
for ci, (hdr, xs, cw) in enumerate(zip(headers, col2_starts, col2_widths)):
add_rect(slide, xs, 0.88, cw, 0.38, fill_color=DARK_GREEN)
add_text(slide, hdr, xs+0.02, 0.88, cw-0.04, 0.38,
font_name="Calibri", font_size=11, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
cat_colors = {
"Counteracting": RGBColor(0xE3, 0xF2, 0xFD),
"Restriction": RGBColor(0xF3, 0xE5, 0xF5),
"Elimination": RGBColor(0xFB, 0xE9, 0xE7),
"Pacifying": RGBColor(0xE8, 0xF5, 0xE9),
"Supportive": RGBColor(0xFF, 0xF8, 0xE1),
}
row_h = 0.28
for i, (no, skt, eng, cat) in enumerate(all_24):
if i < 12:
# Left side
ry = 1.28 + i * row_h
bg = cat_colors.get(cat, CREAM)
for ci, (xs, cw) in enumerate(zip(col_starts, col_widths)):
add_rect(slide, xs, ry, cw, row_h-0.02, fill_color=bg, line_color=LIGHT_GREEN, line_width=Pt(0.5))
vals = [no, skt, eng, cat]
fsizes = [11, 11, 11, 10]
for ci, (xs, cw, val, fs) in enumerate(zip(col_starts, col_widths, vals, fsizes)):
add_text(slide, val, xs+0.02, ry, cw-0.04, row_h-0.02,
font_name="Arial" if ci == 1 else "Calibri", font_size=fs,
color=DARK_GRAY, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
else:
# Right side
j = i - 12
ry = 1.28 + j * row_h
bg = cat_colors.get(cat, CREAM)
for ci, (xs, cw) in enumerate(zip(col2_starts, col2_widths)):
add_rect(slide, xs, ry, cw, row_h-0.02, fill_color=bg, line_color=LIGHT_GREEN, line_width=Pt(0.5))
vals = [no, skt, eng, cat]
fsizes = [11, 11, 10.5, 10]
for ci, (xs, cw, val, fs) in enumerate(zip(col2_starts, col2_widths, vals, fsizes)):
add_text(slide, val, xs+0.02, ry, cw-0.04, row_h-0.02,
font_name="Arial" if ci == 1 else "Calibri", font_size=fs,
color=DARK_GRAY, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# Legend
legends = [
("Restriction", RGBColor(0xF3, 0xE5, 0xF5)),
("Elimination", RGBColor(0xFB, 0xE9, 0xE7)),
("Pacifying", RGBColor(0xE8, 0xF5, 0xE9)),
("Counteracting", RGBColor(0xE3, 0xF2, 0xFD)),
("Supportive", RGBColor(0xFF, 0xF8, 0xE1)),
]
lx = 0.2
for lname, lcol in legends:
add_rect(slide, lx, 7.15, 0.2, 0.2, fill_color=lcol, line_color=DARK_GRAY, line_width=Pt(0.5))
add_text(slide, lname, lx+0.22, 7.15, 1.8, 0.22,
font_name="Calibri", font_size=9, color=DARK_GRAY)
lx += 2.5
# ════════════════════════════════════════════════════════
# SLIDE 9 – CLASSIFICATION OF UPKRAMAS
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=CREAM)
add_rect(slide, 0, 0, 13.333, 1.0, fill_color=DARK_GREEN)
add_rect(slide, 0, 1.0, 13.333, 0.05, fill_color=GOLD)
add_text(slide, "Classification of Chaturvinshati Upkramas", 0.3, 0.1, 12.5, 0.82,
font_name="Arial", font_size=28, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# Shloka
add_rect(slide, 0.5, 1.12, 12.333, 0.9, fill_color=RGBColor(0xE8, 0xF5, 0xE9), line_color=DARK_GREEN, line_width=Pt(1.5))
add_text(slide, "🕉 Reference Shloka (Charaka Samhita Chikitsa Sthana 23):", 0.7, 1.14, 11.0, 0.3,
font_name="Arial", font_size=10, bold=True, italic=True, color=DARK_GREEN)
add_text(slide, "\"शमनं प्रतिविषं रक्तमोक्षणं वमनविरेचने । अरिष्टादि सप्त मार्गेण विषव्यापत् निरोधयेत् ॥\"",
0.7, 1.45, 11.8, 0.5,
font_name="Arial", font_size=12.5, italic=True, color=DARK_GREEN, align=PP_ALIGN.CENTER)
classes = [
("🛡 Restricting Entry of Poison\n(Avaraka – 7 Upkramas)",
"1. Arishta (Tourniquet)\n2. Utkartana (Incision)\n3. Nishpidana (Squeezing)\n4. Achushana (Sucking)\n5. Agnikarma (Cautery)\n6. Parisheka (Sprinkling)\n7. Avagaha (Bath)",
DARK_GREEN),
("🔥 Elimination Therapy\n(Shodhana – 4 Upkramas)",
"8. Raktamokshana (Bloodletting)\n9. Vamana (Emesis)\n10. Virechana (Purgation)\n11. Nasya (Nasal drops)",
RGBColor(0xBF, 0x36, 0x0C)),
("🌿 Pacifying Measures\n(Prashamana – 7 Upkramas)",
"12. Upadhana (Dressing)\n13. Anjana (Collyrium)\n14. Lepa (Plaster)\n15. Prashamana\n16. Dhupana (Fumigation)\n17. Leha (Electuary)\n18. Vamshana",
MED_GREEN),
("⚕ Counteracting Agents\n(Prativisha – 3 Upkramas)",
"19. Mantra (Hymns)\n20. Prativisha (Antidote)\n21. Agada (Compound)",
RGBColor(0x1A, 0x23, 0x7E)),
("💓 Supportive / Vital Support\n(Vital – 3 Upkramas)",
"22. Hridayavarana (Cardiac)\n23. Sanjasthapana (Resuscitation)\n24. Mritasanjivana (Revive)",
RGBColor(0x4A, 0x14, 0x8C)),
]
bx = [0.25, 2.85, 5.45, 8.05, 10.65]
for i, (title, body, col) in enumerate(classes):
add_rect(slide, bx[i], 2.15, 2.5, 5.2, fill_color=col)
add_text(slide, title, bx[i]+0.08, 2.18, 2.34, 0.75,
font_name="Calibri", font_size=12, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, bx[i], 2.9, 2.5, 4.45, fill_color=LIGHT_GRAY, line_color=col, line_width=Pt(1))
add_text(slide, body, bx[i]+0.1, 2.95, 2.3, 4.35,
font_name="Calibri", font_size=12.5,
color=DARK_GRAY, v_anchor=MSO_ANCHOR.TOP)
# ════════════════════════════════════════════════════════
# SLIDE 10 – MODERN CORRELATION
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=CREAM)
add_rect(slide, 0, 0, 13.333, 1.0, fill_color=RGBColor(0x01, 0x57, 0x9B))
add_rect(slide, 0, 1.0, 13.333, 0.05, fill_color=GOLD)
add_text(slide, "Chaturvinshati Upkrama vs. Modern Toxicology", 0.3, 0.1, 12.5, 0.82,
font_name="Arial", font_size=26, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# Shloka
add_rect(slide, 0.5, 1.12, 12.333, 0.6, fill_color=RGBColor(0xE1, 0xF5, 0xFE), line_color=RGBColor(0x01, 0x57, 0x9B), line_width=Pt(1.5))
add_text(slide, "\"एतानि चतुर्विंशतिरुपक्रमाणि स्थावरजङ्गमयोः सामान्यतः प्रयोज्यानि\" – Charaka Samhita Chikitsa 23",
0.7, 1.15, 12.0, 0.55,
font_name="Arial", font_size=12, italic=True,
color=RGBColor(0x01, 0x57, 0x9B), align=PP_ALIGN.CENTER)
rows = [
("Arishta Bandhana", "Tourniquet", "Restrict venom spread into circulation"),
("Utkartana / Nishpidana / Achushana", "Wound excision + expression + suction", "Local venom removal"),
("Agnikarma", "Electrocautery / heat application", "Protein denaturation of venom"),
("Vamana", "Gastric lavage / induced emesis", "Remove unabsorbed oral poison"),
("Virechana", "Cathartics / laxatives", "GI decontamination"),
("Raktamokshana", "Hemodialysis / plasmapheresis", "Remove absorbed venom from blood"),
("Nasya", "Intranasal antidote delivery", "Rapid CNS-targeted route"),
("Prativisha / Agada", "Specific antiserum / antidote", "Neutralize venom activity"),
("Hridayavarana", "Cardiac monitoring + inotropes", "Prevent cardiotoxicity"),
("Sanjasthapana / Mritasanjivana", "CPR / ICU life support / ventilation", "Resuscitation"),
("Mantra", "Psychiatric counselling / hypnotherapy", "Psychosocial support"),
("Lepa / Parisheka / Avagaha", "Topical antidotes / hydrotherapy", "Local detoxification"),
]
hdrs = ["Upkrama (Ayurveda)", "Modern Equivalent", "Purpose"]
hw = [3.5, 4.8, 4.5]
hx = [0.3, 3.8, 8.6]
for ci, (hdr, xs, cw) in enumerate(zip(hdrs, hx, hw)):
add_rect(slide, xs, 1.82, cw, 0.35, fill_color=RGBColor(0x01, 0x57, 0x9B))
add_text(slide, hdr, xs+0.05, 1.82, cw-0.1, 0.35,
font_name="Calibri", font_size=12, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
for i, (ay, mod, purp) in enumerate(rows):
ry = 2.18 + i * 0.4
bg = LIGHT_GRAY if i % 2 == 0 else WHITE
vals = [ay, mod, purp]
for ci, (xs, cw, val) in enumerate(zip(hx, hw, vals)):
add_rect(slide, xs, ry, cw, 0.38, fill_color=bg, line_color=LIGHT_GREEN, line_width=Pt(0.4))
add_text(slide, val, xs+0.05, ry, cw-0.1, 0.38,
font_name="Calibri", font_size=11,
color=DARK_GRAY, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
# ════════════════════════════════════════════════════════
# SLIDE 11 – CLINICAL SIGNIFICANCE
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=CREAM)
add_rect(slide, 0, 0, 13.333, 1.0, fill_color=DARK_GREEN)
add_rect(slide, 0, 1.0, 13.333, 0.05, fill_color=GOLD)
add_text(slide, "Clinical Significance & Physician's Guidelines", 0.3, 0.1, 12.5, 0.82,
font_name="Arial", font_size=28, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
# Main shloka
add_rect(slide, 0.5, 1.15, 12.333, 1.2, fill_color=RGBColor(0xE8, 0xF5, 0xE9), line_color=DARK_GREEN, line_width=Pt(2))
add_text(slide, "🕉 Acharya Charaka's Guidance for Physician:", 0.7, 1.17, 12.0, 0.35,
font_name="Arial", font_size=11, bold=True, italic=True, color=DARK_GREEN)
add_multiline(slide, [
"\"विषप्रकृतिं सात्म्यं ऋतुं देशं वेगबलाबलम् ।",
"परीक्ष्य योज्याः उपक्रमाः कुशलेन चिकित्सकः ॥\" (च.चि. २३/९)",
"Translation: The wise physician should assess the type of visha, constitution, compatibility, season, place, stage of",
"poisoning and strength before selecting and applying the Upkramas."
], 0.7, 1.52, 12.0, 0.78,
font_name="Arial", font_size=12, italic=True, color=DARK_GREEN, align=PP_ALIGN.LEFT)
sig_points = [
("Universal Applicability", "These 24 Upkramas apply to ALL types of Visha:\nSthavara, Jangama, Gara & Dooshi Visha."),
("Sequential Priority", "Upkramas are arranged by urgency.\nLocal measures FIRST, then systemic measures."),
("Individualized Selection", "Physician must select based on:\nVisha type • Vega (stage) • Prakruti • Ritu • Desha"),
("Physician's Qualification", "Vaidya should have Mantra Siddhi,\nKnowledge of Dravya, and Kriya expertise."),
("Modern Validation", "All 5 principles of modern toxicology management\nare covered within these 24 Upkramas."),
("Prevention of Toxin Spread", "Time-sensitive application is key.\nDelay in Arishta (tourniquet) worsens prognosis."),
]
bx2 = [0.3, 4.55, 8.8]
by2 = [2.5, 5.0]
for i, (title, body) in enumerate(sig_points):
col = i % 3
row = i // 3
x = bx2[col]
y = by2[row]
add_rect(slide, x, y, 4.0, 2.2, fill_color=DARK_GREEN, line_color=GOLD, line_width=Pt(1))
add_text(slide, title, x+0.1, y+0.05, 3.8, 0.5,
font_name="Calibri", font_size=14, bold=True,
color=GOLD, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, x, y+0.55, 4.0, 1.65, fill_color=LIGHT_GRAY, line_color=DARK_GREEN, line_width=Pt(0.7))
add_text(slide, body, x+0.1, y+0.6, 3.8, 1.55,
font_name="Calibri", font_size=12.5,
color=DARK_GRAY, v_anchor=MSO_ANCHOR.MIDDLE, align=PP_ALIGN.CENTER)
# ════════════════════════════════════════════════════════
# SLIDE 12 – CONCLUSION
# ════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=DARK_GREEN)
add_rect(slide, 0, 0, 13.333, 0.1, fill_color=GOLD)
add_rect(slide, 0, 7.4, 13.333, 0.1, fill_color=GOLD)
add_text(slide, "Conclusion", 0.5, 0.2, 12.333, 0.8,
font_name="Arial", font_size=34, bold=True,
color=GOLD, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, 0.5, 1.05, 12.333, 2.1, fill_color=RGBColor(0x18, 0x52, 0x1A), line_color=GOLD, line_width=Pt(1.5))
add_multiline(slide, [
"🕉 Concluding Shloka (Charaka Samhita Chikitsa Sthana 23/14):",
"\"चतुर्विंशतिरुपक्रमाः सर्वविषेषु सामान्याः प्रयोज्याः ।",
" यथाबलं यथादेशं यथाकालं च वैद्यकम् ॥\"",
"Translation: These 24 treatment modalities are to be applied universally for all poisons,",
" according to the strength, place, and time – as judged by the wise physician."
], 0.7, 1.1, 12.0, 2.0,
font_name="Arial", font_size=13, italic=True, color=WHITE, align=PP_ALIGN.CENTER)
conc_points = [
"✔ Chaturvinshati Upkrama represents the world's first systematic toxicology treatment protocol.",
"✔ Acharya Charaka's 24 modalities cover the complete spectrum: local, systemic, supportive and antidotal care.",
"✔ The protocol is universal – applicable to all Sthavara, Jangama, Gara & Dooshi Visha.",
"✔ Modern toxicology's five-step protocol is fully contained within these ancient 24 Upkramas.",
"✔ Proper physician selection of Upkramas based on Visha type, Vega, and patient constitution is essential.",
"✔ This demonstrates the timeless genius of Ayurvedic toxicology (Agadtantra) in clinical practice.",
]
for i, pt in enumerate(conc_points):
add_rect(slide, 0.5, 3.3 + i*0.63, 12.333, 0.58,
fill_color=RGBColor(0x18, 0x52, 0x1A) if i%2==0 else RGBColor(0x1B, 0x5E, 0x20),
line_color=SAFFRON, line_width=Pt(0.5))
add_text(slide, pt, 0.7, 3.33 + i*0.63, 12.0, 0.55,
font_name="Calibri", font_size=13.5,
color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
# SAVE
out_path = "/tmp/workspace/agadtantra-ppt/Chaturvinshati_Upkrama_Agadtantra.pptx"
buf = BytesIO()
prs.save(buf)
with open(out_path, "wb") as f:
f.write(buf.getvalue())
print(f"Saved: {out_path}")
print(f"Total slides: {len(prs.slides)}")
cd /tmp/workspace/agadtantra-ppt && python create_ppt.py 2>&1
Chaturvinshati Upkrama Agadtantra
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title Slide - चतुर्विंशति उपक्रम with OM symbol, Ayurvedic green & gold design |
| 2 | Introduction to Agadtantra + foundation shloka (Ch.Chi. 23/3-4) |
| 3 | Overview of all 24 Upkramas with the complete shloka listing all 24 + 4 group classification boxes |
| 4 | Upkramas 1-6 (Mantra, Arishta, Utkartana, Nishpidana, Achushana, Agnikarma) – each with Sanskrit shloka + modern correlation |
| 5 | Upkramas 7-12 (Parisheka, Avagaha, Raktamokshana, Vamana, Virechana, Upadhana) – with shlokas |
| 6 | Upkramas 13-18 (Hridayavarana, Anjana, Nasya, Lepa, Prashamana, Dhupana) – with shlokas |
| 7 | Upkramas 19-24 (Leha, Prativisha, Sanjasthapana, Mritasanjivana, Vamshana, Agada) – with shlokas |
| 8 | Complete Quick Reference Table of all 24 Upkramas with categories & color coding |
| 9 | Classification into 5 groups (Restriction/Shodhana/Prashamana/Prativisha/Supportive) in column format |
| 10 | Modern Toxicology Correlation Table (Ayurveda vs Modern equivalents) |
| 11 | Clinical Significance – Physician's guidelines shloka + 6 key points |
| 12 | Conclusion with closing shloka (Ch.Chi. 23/14) |
Explain report
| Field | Detail |
|---|---|
| Patient | Ms. Komal Bhagwat Jarak, 23-year-old Female |
| Scan | MRI Neck - Plain + Contrast |
| Complaint | Swelling on left side of upper lip |
| Hospital | Bharati Hospital, Pune (05/07/2025) |
| Structure | Finding |
|---|---|
| Larynx & Pharynx | Normal |
| Neck spaces | Normal |
| Salivary glands | Normal bilaterally |
| Lymph nodes | No significant lymphadenopathy (no swollen lymph nodes - no cancer sign) |
| Bones | Normal marrow signal (no bone involvement) |
| Blood vessels | Normal |
| Floor of mouth | Normal |
| Supraclavicular fossae | Normal |
"Features are suggestive of slow flow malformation in the left buccal region and upper lip with a phlebolith."
| Option | Description |
|---|---|
| Observation | If asymptomatic and cosmetically acceptable, monitor only |
| Compression | External pressure garments to reduce size |
| Sclerotherapy | Injection of a sclerosing agent (alcohol-based or foam) directly into the lesion - most commonly used for craniofacial VMs; causes shrinkage |
| Surgery | Usually performed after sclerotherapy to remove residual lesion |
| Low-dose Aspirin | Sometimes used to prevent clot formation and pain inside the VM |