Nasya karma a ayuvedic procedure
Nasya karma Ayurvedic procedure types benefits indications
Nasya karma Ayurvedic nasal therapy procedure

This composite of three clinical photographs documents a Photodynamic Therapy (PDT) procedure for a skin lesion on the lateral aspect of the nose. Frame (a) demonstrates the initial stage: needle-free intradermal administration of 20% Aminolevulinic Acid (ALA) using a MadaJet medical injector. The injector's clear nozzle is positioned against the nasal alar region. Frame (b) shows the immediate post-injection tissue response, characterized by localized erythema and slight edema at the delivery site, indicating successful penetration of the ALA solution. Frame (c) illustrates the skin's appearance following the full PDT procedure (red LED light illumination at 630 nm). The treatment area exhibits marked inflammatory changes, including prominent focal erythema and small areas of petechiae or superficial crusting, which are typical acute reactions to the photochemical process. This sequence illustrates a dermatological protocol for managing localized skin lesions, highlighting the transition from drug delivery to the immediate inflammatory phase of treatment.

This composite educational graphic illustrates the fabrication process and comparative internal structures of nasal radiation therapy boluses. Panels (a) and (b) show the clinical procedure of creating a plaster facial impression using alginate and Plaster of Paris to ensure patient-specific anatomical fit. Panel (c) compares a hollow 3D-printed Polylactic Acid (PLA) shell (green) with a traditional manually manufactured solid wax bolus (red). Panel (d) displays diagnostic CT cross-sections showing the difference in internal density between an 18% infill and a 100% solid infill 3D-printed shell, highlighting technical variations in additive manufacturing. Panel (e) provides schematic illustrations of the finished bolus types: a solid wax bolus (grey), a 3D-printed shell with water fill (blue), and a 3D-printed shell with wax fill (red), each shown fitted to a facial contour. The content is designed for radiation oncology training, emphasizing the transition from manual molding to high-precision 3D-printed tissue-equivalent materials to optimize dose distribution and surface conformity during treatment.

This composite of three intraoperative clinical photographs demonstrates a ciliary muscle electrotransfection procedure in a rabbit model, showcasing a method for ocular gene therapy. Panel A illustrates the initial step where a clear, dedicated ocular stabilization device is placed on the nasal scleral surface. A syringe with a 29G needle is used to perform a precise injection of a plasmid solution (highlighted with blue tracer dye) into the ciliary muscle fibers. Panel B provides a close-up view of the eye following injection, showing the localized distribution of the blue tracer dye within the ocular tissue for demonstration of anatomical targeting. Panel C depicts the subsequent electrotransfection step; the ocular device is aligned with the limbus to guide the insertion of a metallic comb electrode into the ocular tissues. This electrode, connected via a black cable to a pulse generator, facilitates the delivery of square-wave electrical pulses to enhance cellular plasmid uptake. The images serve as an educational resource for non-viral gene delivery techniques and ocular surgical maneuvers.
Nasya karma Ayurveda nasal therapy clinical evidence
Nasya Ayurveda nasal drug delivery
https://www.iosrjournals.org/iosr-jpbs/papers/Vol20-issue4/S…
| Type | Primary Purpose | Drugs Used | Indications |
|---|---|---|---|
| Rechana / Virechana (Cleansing) | Detoxification and clearing | Strong herbal powders, pungent decoctions (e.g., Vacha/calamus) | Chronic sinusitis, allergic rhinitis, mental disorders |
| Brimhana (Nourishing) | Strengthening and nourishment | Medicated oils, ghee, shatavari ghee, ashwagandha ghee, medicated milk | Neurological disorders, memory, Vata conditions, emaciation |
| Shamana (Pacifying/Sedative) | Balancing aggravated Doshas | Mild herbal preparations, Brahmi ghee (Pitta), Vacha oil (Kapha/Vata) | Inflammatory conditions, chronic allergies, mild imbalances |
| Navana | Mixed decoctions + oils | Decoctions, fresh herbal juices, and oils combined | Pitta-Vata or Pitta-Kapha disorders |
| Marshya / Pratimarshya | Daily maintenance | Small amount of ghee or oil inserted with the little finger | Daily self-care, stress relief, deep tissue nourishment |
Expalkn this
| # | Type | Drug Form | Potency | Main Use |
|---|---|---|---|---|
| 1 | Navana | Juice + decoction + oil | Moderate | General head diseases |
| 2 | Avapida | Fresh pressed juice only | Strong | Epilepsy, severe disorders |
| 3 | Dhmapana | Dry powder blown in | Most intense | Emergency, Kapha excess |
| 4 | Dhuma | Medicated smoke | Moderate-strong | Kapha disorders, throat |
| 5 | Pratimarsha | 2 drops oil (finger) | Mildest | Daily prevention |
Give comparison with table
| Parameter | Charaka (Cha. Si. 9) | Sushruta (Su. Chi. 40) |
|---|---|---|
| Basis of classification | Drug form / route of delivery | Therapeutic purpose / action |
| Number of types | 5 | 5 |
| Focus | How the drug is given | Why the drug is given |
| Clinical relevance | Procedural/technical | Disease-targeted |
| # | Charaka's Type | Sushruta's Type | Common Ground |
|---|---|---|---|
| 1 | Navana | Navana | Same name, same concept - both describe liquid instillation |
| 2 | Avapida | Shodhana (Rechana) | Both are cleansing/purifying types using strong preparations |
| 3 | Dhmapana | Pradhamana | Same procedure - dry powder blown into nostril; Sushruta uses a different name |
| 4 | Dhuma | Shamana | Sushruta's Shamana = pacifying; Charaka's Dhuma is smoke-based and overlaps differently |
| 5 | Pratimarsha | Brimhana | Both are gentle, nourishing, maintenance-type applications |
| Feature | Navana (Both) | Avapida (Charaka) / Shodhana (Sushruta) | Dhmapana (Charaka) / Pradhamana (Sushruta) | Dhuma (Charaka) / Shamana (Sushruta) | Pratimarsha (Charaka) / Brimhana (Sushruta) |
|---|---|---|---|---|---|
| Drug form | Juice + decoction + oil | Fresh pressed juice / strong herbal decoctions | Dry herbal powder | Medicated smoke / mild decoctions or oils | 2 drops oil (finger) / medicated oils and ghee |
| Method | Drop instillation | Drop instillation | Powder blown in via tube | Inhalation of smoke / gentle drops | Self-application with little finger |
| Potency | Moderate | Strong | Most intense/forceful | Moderate (smoke) / Mild (Shamana) | Mildest |
| Dosage | 8-32 drops | 4-8 drops | Blown as needed | Inhaled as smoke | 2 drops only |
| Dominant Dosha | Vata + Pitta | Kapha excess, Vata | Kapha (acute) | Kapha (Dhuma) / all 3 Doshas (Shamana) | Vata (Pratimarsha) / Vata-Pitta (Brimhana) |
| Main conditions | General head diseases, sinusitis, migraine | Epilepsy, unconsciousness, poisoning | Emergency - stroke, seizures, coma | Rhinitis, hoarse voice, throat disorders | Daily prevention, anti-aging |
| Frequency | Therapeutic courses | As needed | Emergency/acute use | Periodic | Daily (every day) |
| Preparation needed | Yes (full Panchakarma prep) | Yes | Yes | Yes | No (can do independently) |
| Type | Sanskrit Meaning | Drug | Potency | Duration of Effect | Primary Target |
|---|---|---|---|---|---|
| Navana | To pour/instill | Juice + kwatha + oil | Moderate | 4-6 hours | General head diseases |
| Avapida | To press/squeeze | Fresh herb juice only | Strong | 2-4 hours | Acute neurological, Kapha |
| Dhmapana | To blow in | Dry herbal powder | Most intense | 1-2 hours (rapid) | Emergency, severe Kapha |
| Dhuma | Smoke/fume | Medicated smoke | Moderate-strong | 3-4 hours | Throat, nose, Kapha head |
| Pratimarsha | Daily/repeated | Oil - 2 drops only | Mildest | Ongoing/maintenance | Prevention, daily health |
| Type | Sanskrit Meaning | Drug | Potency | Dosha Target | Primary Purpose |
|---|---|---|---|---|---|
| Navana | To pour | Juice + decoction + oil | Moderate | Vata + Pitta | General therapeutic |
| Shodhana / Rechana | Cleansing/purifying | Strong herbal powders, pungent oils | Strong | Kapha excess | Detoxification |
| Pradhamana | To blow/propel | Dry powder blown in | Most intense | Kapha (acute) | Emergency cleansing |
| Shamana | Pacifying/balancing | Mild oils, medicated decoctions | Mild | All Doshas | Maintenance, balancing |
| Brimhana | Nourishing/strengthening | Medicated ghee, milk, nutritive oils | Mild-moderate | Vata depletion | Nourishment, anti-aging |
| Vagbhata's Type | Equivalent in Charaka | Equivalent in Sushruta |
|---|---|---|
| Virechana | Dhmapana + Avapida | Shodhana + Pradhamana |
| Brimhana | Pratimarsha (nourishing) | Brimhana |
| Shamana | Navana + Dhuma | Shamana + Navana |
| Condition | Navana | Avapida | Dhmapana | Dhuma | Pratimarsha |
|---|---|---|---|---|---|
| Pregnancy | Avoid | Avoid | Avoid | Avoid | Caution |
| After meals | Avoid | Avoid | Avoid | Avoid | Safe |
| Eye disease | Safe | Caution | Avoid | Contraindicated | Safe |
| Bleeding disorders | Caution | Avoid | Avoid | Contraindicated | Safe |
| Children | Avoid | Avoid | Avoid | Avoid | Safe |
| Old age (weak) | Caution | Avoid | Avoid | Caution | Safe |
| Daily use | No | No | No | No | Yes |
| Feature | Charaka | Sushruta |
|---|---|---|
| Classification basis | Drug form | Therapeutic action |
| Most unique type | Dhuma (smoke) | Brimhana (nourishing) |
| Overlapping types | Navana, Dhmapana | Navana, Pradhamana |
| Daily-use type | Pratimarsha | Shamana |
| Emergency type | Dhmapana | Pradhamana |
| Nourishing type | Pratimarsha (mild) | Brimhana (dedicated) |
| Cleansing type | Avapida | Shodhana/Rechana |
| Practical emphasis | Technical procedure | Disease management |
| Best for students | Understanding HOW to give | Understanding WHEN to give |
Can you turn this in a a4 size printable form
mkdir -p /tmp/workspace/nasya-karma && ls /tmp/workspace/nasya-karma/
~/nasya-karma/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph,
Spacer, HRFlowable, PageBreak
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import KeepTogether
OUTPUT = "/tmp/workspace/nasya-karma/Nasya_Karma_Comparison.pdf"
# ── Colours ──────────────────────────────────────────────────────────────────
DARK_GREEN = colors.HexColor("#1B4332")
MID_GREEN = colors.HexColor("#2D6A4F")
LIGHT_GREEN = colors.HexColor("#D8F3DC")
ACCENT = colors.HexColor("#40916C")
PALE = colors.HexColor("#F0FFF4")
HEADER_TEXT = colors.white
BODY_BG = colors.HexColor("#FAFFFE")
ALT_ROW = colors.HexColor("#EAF4EE")
BORDER = colors.HexColor("#74C69D")
# ── Document ──────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm,
title="Nasya Karma – Classification Comparison",
author="Orris | Dr. Brinda Kant Lecture Notes"
)
styles = getSampleStyleSheet()
# Custom paragraph styles
title_style = ParagraphStyle(
"Title", parent=styles["Title"],
fontSize=18, textColor=DARK_GREEN,
spaceAfter=4, spaceBefore=0,
alignment=TA_CENTER, fontName="Helvetica-Bold"
)
subtitle_style = ParagraphStyle(
"Subtitle", parent=styles["Normal"],
fontSize=9, textColor=ACCENT,
spaceAfter=10, alignment=TA_CENTER, fontName="Helvetica-Oblique"
)
section_style = ParagraphStyle(
"Section", parent=styles["Normal"],
fontSize=11, textColor=DARK_GREEN,
spaceBefore=12, spaceAfter=4,
fontName="Helvetica-Bold"
)
note_style = ParagraphStyle(
"Note", parent=styles["Normal"],
fontSize=7.5, textColor=colors.HexColor("#555555"),
spaceBefore=3, spaceAfter=6,
fontName="Helvetica-Oblique", alignment=TA_JUSTIFY
)
cell_style = ParagraphStyle(
"Cell", parent=styles["Normal"],
fontSize=7.5, leading=10, fontName="Helvetica"
)
cell_bold = ParagraphStyle(
"CellBold", parent=styles["Normal"],
fontSize=7.5, leading=10, fontName="Helvetica-Bold"
)
def P(text, style=None):
return Paragraph(text, style or cell_style)
def hdr(text):
return Paragraph(f"<b>{text}</b>", ParagraphStyle(
"Hdr", parent=styles["Normal"],
fontSize=8, leading=10,
textColor=HEADER_TEXT, fontName="Helvetica-Bold",
alignment=TA_CENTER
))
def make_table(data, col_widths, header_rows=1, alt_start=1):
t = Table(data, colWidths=col_widths, repeatRows=header_rows)
n = len(data)
style_cmds = [
# Header
("BACKGROUND", (0,0), (-1, header_rows-1), MID_GREEN),
("TEXTCOLOR", (0,0), (-1, header_rows-1), HEADER_TEXT),
("FONTNAME", (0,0), (-1, header_rows-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1, header_rows-1), 8),
("ALIGN", (0,0), (-1, header_rows-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
# Grid
("GRID", (0,0), (-1,-1), 0.4, BORDER),
("ROWBACKGROUND",(0, header_rows), (-1,-1),
[PALE, ALT_ROW] * ((n - header_rows)//2 + 1)),
("LEFTPADDING", (0,0), (-1,-1), 4),
("RIGHTPADDING", (0,0), (-1,-1), 4),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING",(0,0), (-1,-1), 3),
# First column accent
("BACKGROUND", (0, header_rows), (0,-1), LIGHT_GREEN),
("FONTNAME", (0, header_rows), (0,-1), "Helvetica-Bold"),
]
t.setStyle(TableStyle(style_cmds))
return t
# ─────────────────────────────────────────────────────────────────────────────
story = []
# ── PAGE HEADER ───────────────────────────────────────────────────────────────
story.append(Paragraph("NASYA KARMA", title_style))
story.append(Paragraph(
"Classification & Comparison — Charaka vs Sushruta vs Vagbhata",
subtitle_style
))
story.append(HRFlowable(width="100%", thickness=1.5, color=MID_GREEN, spaceAfter=6))
# ── TABLE 1 – Basic Difference ────────────────────────────────────────────────
story.append(Paragraph("1. Basis of Classification", section_style))
W = doc.width
t1_data = [
[hdr("Parameter"), hdr("Charaka (Cha. Si. 9)"), hdr("Sushruta (Su. Chi. 40)"), hdr("Vagbhata (A.H.)")],
[P("Basis"), P("Drug form / route of delivery"), P("Therapeutic purpose / action"), P("Therapeutic outcome")],
[P("No. of types"), P("5"), P("5"), P("3")],
[P("Focus"), P("HOW the drug is given"), P("WHY / for whom it is given"), P("Net clinical effect")],
[P("Approach"), P("Procedural / technical"), P("Disease-targeted"), P("Simplified / broad")],
]
story.append(make_table(t1_data, [W*0.18, W*0.28, W*0.28, W*0.26]))
story.append(Spacer(1, 8))
# ── TABLE 2 – Side-by-side type mapping ──────────────────────────────────────
story.append(Paragraph("2. Type-to-Type Mapping", section_style))
t2_data = [
[hdr("#"), hdr("Charaka's Type"), hdr("Sushruta's Type"), hdr("Vagbhata"), hdr("Overlap / Difference")],
[P("1"), P("Navana"), P("Navana"), P("Shamana"), P("Same name & concept — liquid instillation")],
[P("2"), P("Avapida"), P("Shodhana / Rechana"), P("Virechana"),P("Both cleansing; Charaka = fresh juice, Sushruta = strong decoctions")],
[P("3"), P("Dhmapana"), P("Pradhamana"), P("Virechana"),P("Identical procedure — dry powder blown in; only name differs")],
[P("4"), P("Dhuma"), P("Shamana"), P("Shamana"), P("Different: Charaka = smoke inhalation; Sushruta = mild balancing drops")],
[P("5"), P("Pratimarsha"), P("Brimhana"), P("Brimhana"), P("Both gentle/daily; Sushruta focuses on nourishment, Charaka on maintenance")],
]
story.append(make_table(t2_data, [W*0.05, W*0.16, W*0.18, W*0.14, W*0.47]))
story.append(Spacer(1, 8))
# ── TABLE 3 – Charaka detail ──────────────────────────────────────────────────
story.append(Paragraph("3. Charaka's 5 Types — Detailed", section_style))
t3_data = [
[hdr("Type"), hdr("Meaning"), hdr("Drug Form"), hdr("Potency"), hdr("Dosha"), hdr("Duration"), hdr("Primary Use")],
[P("Navana"), P("To pour"), P("Juice + kwatha + oil"), P("Moderate"), P("V+P"), P("4–6 h"), P("Sinusitis, migraine, head diseases")],
[P("Avapida"), P("To press/squeeze"),P("Fresh pressed herb juice"), P("Strong"), P("K, V"), P("2–4 h"), P("Epilepsy, unconsciousness, poisoning")],
[P("Dhmapana"), P("To blow in"), P("Dry herbal powder (blown)"), P("Strongest"),P("K acute"),P("1–2 h"), P("Emergency — stroke, seizures, coma")],
[P("Dhuma"), P("Smoke/fume"), P("Medicated smoke"), P("Mod–Strong"),P("K"), P("3–4 h"), P("Rhinitis, hoarseness, throat/Kapha")],
[P("Pratimarsha"), P("Daily/repeated"),P("2 drops oil (little finger)"), P("Mildest"), P("V"), P("Daily"), P("Prevention, anti-aging, daily health")],
]
story.append(make_table(t3_data, [W*0.13, W*0.12, W*0.20, W*0.10, W*0.08, W*0.09, W*0.28]))
story.append(Spacer(1, 8))
# ── TABLE 4 – Sushruta detail ─────────────────────────────────────────────────
story.append(Paragraph("4. Sushruta's 5 Types — Detailed", section_style))
t4_data = [
[hdr("Type"), hdr("Meaning"), hdr("Drug Form"), hdr("Potency"), hdr("Dosha Target"), hdr("Primary Purpose")],
[P("Navana"), P("To pour"), P("Juice + decoction + oil"), P("Moderate"), P("Vata + Pitta"), P("General therapeutic use")],
[P("Shodhana/Rechana"), P("Cleansing"), P("Strong herbal powders, pungent oils"), P("Strong"), P("Kapha excess"), P("Detoxification / purification")],
[P("Pradhamana"), P("To propel/blow"), P("Dry powder blown via tube"), P("Strongest"), P("Kapha acute"), P("Emergency cleansing")],
[P("Shamana"), P("Pacifying"), P("Mild decoctions, medicated oils"), P("Mild"), P("All Doshas"), P("Maintenance, balancing")],
[P("Brimhana"), P("Nourishing"), P("Medicated ghee, milk, nutritive oils"), P("Mild–Mod"), P("Vata depletion"), P("Nourishment, anti-aging, debility")],
]
story.append(make_table(t4_data, [W*0.18, W*0.12, W*0.23, W*0.11, W*0.14, W*0.22]))
story.append(Spacer(1, 8))
# ── PAGE 2 ─────────────────────────────────────────────────────────────────────
story.append(PageBreak())
story.append(Paragraph("NASYA KARMA — Continued", title_style))
story.append(HRFlowable(width="100%", thickness=1.5, color=MID_GREEN, spaceAfter=8))
# ── TABLE 5 – Dosage ──────────────────────────────────────────────────────────
story.append(Paragraph("5. Dosage Classification (Sushruta)", section_style))
t5_data = [
[hdr("Dose Type"), hdr("Sanskrit Term"), hdr("Drops per Nostril"), hdr("Used For")],
[P("Low dose"), P("Hina Matra"), P("8 drops"), P("Children, elderly, debilitated patients")],
[P("Medium dose"), P("Madhyama Matra"),P("16 drops"), P("Standard adult therapeutic dose")],
[P("High dose"), P("Uttama Matra"), P("32 drops"), P("Strong constitution, Kapha-dominant conditions")],
]
story.append(make_table(t5_data, [W*0.18, W*0.22, W*0.22, W*0.38]))
story.append(Spacer(1, 8))
# ── TABLE 6 – Contraindications ───────────────────────────────────────────────
story.append(Paragraph("6. Contraindications Comparison", section_style))
def ci(text, ok=False, warn=False):
if ok:
return Paragraph(f'<font color="#1B4332"><b>{text}</b></font>', cell_style)
if warn:
return Paragraph(f'<font color="#B5451B">{text}</font>', cell_style)
return P(text)
t6_data = [
[hdr("Condition"), hdr("Navana"), hdr("Avapida"), hdr("Dhmapana"), hdr("Dhuma"), hdr("Pratimarsha")],
[P("Pregnancy"), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True), P("Caution")],
[P("After meals"), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Safe",ok=True)],
[P("Eye disease"), ci("Safe",ok=True), P("Caution"), ci("Avoid",warn=True), ci("Contra-indicated",warn=True), ci("Safe",ok=True)],
[P("Bleeding disorders"), P("Caution"), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Contra-indicated",warn=True), ci("Safe",ok=True)],
[P("Children"), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Safe",ok=True)],
[P("Elderly / weak"), P("Caution"), ci("Avoid",warn=True), ci("Avoid",warn=True), P("Caution"), ci("Safe",ok=True)],
[P("Daily long-term use"), P("No"), P("No"), P("No"), P("No"), ci("YES",ok=True)],
[P("Indigestion"), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True)],
[P("Intoxication"), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True), ci("Avoid",warn=True), P("Caution")],
]
story.append(make_table(t6_data, [W*0.24, W*0.14, W*0.14, W*0.14, W*0.18, W*0.16]))
story.append(Spacer(1, 8))
# ── TABLE 7 – Summary ─────────────────────────────────────────────────────────
story.append(Paragraph("7. Key Differences at a Glance", section_style))
t7_data = [
[hdr("Feature"), hdr("Charaka"), hdr("Sushruta"), hdr("Vagbhata")],
[P("Classification basis"), P("Drug form / technique"), P("Therapeutic action"), P("Clinical outcome")],
[P("Most unique type"), P("Dhuma (smoke)"), P("Brimhana (nourishing)"), P("3-type simplification")],
[P("Daily-use type"), P("Pratimarsha"), P("Shamana"), P("Shamana")],
[P("Emergency type"), P("Dhmapana"), P("Pradhamana"), P("Virechana")],
[P("Nourishing type"), P("Pratimarsha (mild)"), P("Brimhana (dedicated)"), P("Brimhana")],
[P("Cleansing type"), P("Avapida"), P("Shodhana / Rechana"), P("Virechana")],
[P("Practical emphasis"), P("HOW to administer"), P("WHEN & for whom"), P("Broad therapeutic goal")],
[P("Best for students"), P("Technique mastery"), P("Disease management"), P("Quick clinical decision")],
]
story.append(make_table(t7_data, [W*0.24, W*0.26, W*0.26, W*0.24]))
story.append(Spacer(1, 10))
# ── Footer note ───────────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=0.8, color=ACCENT, spaceAfter=4))
story.append(Paragraph(
"<b>Clinical Pearl:</b> Charaka tells you <i>how</i> to administer Nasya (technique + drug form); "
"Sushruta tells you <i>why and for whom</i> (therapeutic goal + Dosha target). "
"In practice, use Charaka's technique with Sushruta's indication for a complete Nasya prescription. "
"Vagbhata's 3-type system is best for quick bedside decisions.",
note_style
))
story.append(Paragraph(
"Reference: Charaka Samhita – Siddhisthana Ch. 9 | Sushruta Samhita – Chikitsa Ch. 40 | "
"Ashtanga Hridayam – Sutrasthana Ch. 20 • Prepared for academic reference.",
ParagraphStyle("Footer", parent=styles["Normal"],
fontSize=6.5, textColor=colors.grey,
alignment=TA_CENTER, fontName="Helvetica-Oblique")
))
# ── Build ──────────────────────────────────────────────────────────────────────
doc.build(story)
print("PDF created:", OUTPUT)
cd /tmp/workspace/nasya-karma && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/nasya-karma/Nasya_Karma_Comparison.pdf
Nasya Karma Comparison
PDF Document · PDF
| Page | Content |
|---|---|
| Page 1 | Basis of classification table • Type-to-type mapping (Charaka vs Sushruta vs Vagbhata) • Charaka's 5 types detailed • Sushruta's 5 types detailed |
| Page 2 | Dosage classification (Hina/Madhyama/Uttama Matra) • Contraindications comparison • Key differences summary • Clinical pearl + references |
Similarly give abt dhumpana
Dhumapana Ayurvedic medicated smoke inhalation types procedure indications Charaka Sushruta
https://www.easyayurveda.com/dhumapana-ayurvedic-medicated-s…
Dhumapana Dhumavarti types Snigdha Madhyama Teekshna Charaka Samhita classification procedure
https://ijrap.net/admin/php/uploads/2186_pdf.pdf
~/nasya-karma/generate_dhumapana_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph,
Spacer, HRFlowable, PageBreak
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT = "/tmp/workspace/nasya-karma/Dhumapana_Complete_Reference.pdf"
# ── Colours ───────────────────────────────────────────────────────────────────
DARK = colors.HexColor("#3B1F0A") # dark brown
MID = colors.HexColor("#7B3F00") # warm brown
LIGHT = colors.HexColor("#FDF0E0") # light cream
ACCENT = colors.HexColor("#C47C2B") # amber
PALE = colors.HexColor("#FFFAF3")
ALT = colors.HexColor("#F5E6CF")
BORDER = colors.HexColor("#D4A05A")
HDR_TEXT = colors.white
GREEN_OK = colors.HexColor("#1B4332")
RED_WARN = colors.HexColor("#B5451B")
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm,
title="Dhumapana – Complete Ayurvedic Reference",
author="Orris Academic Reference"
)
styles = getSampleStyleSheet()
def PS(name, **kw):
return ParagraphStyle(name, parent=styles["Normal"], **kw)
title_s = PS("T", fontSize=18, textColor=DARK, alignment=TA_CENTER,
fontName="Helvetica-Bold", spaceAfter=3)
sub_s = PS("S", fontSize=9, textColor=ACCENT, alignment=TA_CENTER,
fontName="Helvetica-Oblique", spaceAfter=10)
sec_s = PS("Se", fontSize=11, textColor=DARK, fontName="Helvetica-Bold",
spaceBefore=10, spaceAfter=4)
cell_s = PS("C", fontSize=7.5, leading=10, fontName="Helvetica")
cell_b = PS("CB", fontSize=7.5, leading=10, fontName="Helvetica-Bold")
note_s = PS("N", fontSize=7.5, textColor=colors.HexColor("#555555"),
fontName="Helvetica-Oblique", alignment=TA_JUSTIFY,
spaceBefore=3, spaceAfter=5)
foot_s = PS("F", fontSize=6.5, textColor=colors.grey,
fontName="Helvetica-Oblique", alignment=TA_CENTER)
def P(t, s=None): return Paragraph(t, s or cell_s)
def PB(t): return Paragraph(f"<b>{t}</b>", cell_s)
def hdr(t, center=True):
return Paragraph(f"<b>{t}</b>", PS("H", fontSize=8, leading=10,
textColor=HDR_TEXT, fontName="Helvetica-Bold",
alignment=TA_CENTER if center else TA_LEFT))
def make_table(data, cw, hr=1):
t = Table(data, colWidths=cw, repeatRows=hr)
n = len(data)
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,hr-1), MID),
("TEXTCOLOR", (0,0),(-1,hr-1), HDR_TEXT),
("FONTNAME", (0,0),(-1,hr-1), "Helvetica-Bold"),
("FONTSIZE", (0,0),(-1,hr-1), 8),
("ALIGN", (0,0),(-1,hr-1), "CENTER"),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
("GRID", (0,0),(-1,-1), 0.4, BORDER),
("ROWBACKGROUND",(0,hr),(-1,-1),
[PALE, ALT]*((n-hr)//2+1)),
("LEFTPADDING", (0,0),(-1,-1), 4),
("RIGHTPADDING", (0,0),(-1,-1), 4),
("TOPPADDING", (0,0),(-1,-1), 3),
("BOTTOMPADDING",(0,0),(-1,-1), 3),
("BACKGROUND", (0,hr),(0,-1), LIGHT),
("FONTNAME", (0,hr),(0,-1), "Helvetica-Bold"),
]))
return t
def ci(t, ok=False, warn=False):
if ok: return Paragraph(f'<font color="#1B4332"><b>{t}</b></font>', cell_s)
if warn: return Paragraph(f'<font color="#B5451B">{t}</font>', cell_s)
return P(t)
story = []
W = doc.width
# ══ TITLE ════════════════════════════════════════════════════════════════════
story.append(Paragraph("DHUMAPANA", title_s))
story.append(Paragraph(
"Ayurvedic Medicated Smoke Inhalation – Complete Classification & Reference",
sub_s))
story.append(HRFlowable(width="100%", thickness=1.5, color=MID, spaceAfter=6))
# ══ TABLE 1 – Overview ═══════════════════════════════════════════════════════
story.append(Paragraph("1. Basic Overview", sec_s))
t1 = [
[hdr("Aspect"), hdr("Details")],
[PB("Etymology"), P("Dhuma (smoke) + Pana (to consume/inhale) = Inhalation of medicated smoke")],
[PB("Synonym"), P("Dhumra")],
[PB("Definition"), P("An Ayurvedic procedure where medicated herbal wicks (Dhumavarti) are ignited and the smoke is inhaled through nostrils/mouth for prevention and treatment of disease")],
[PB("Category"), P("Dinacharya (daily regimen) + Panchakarma (Purvakarma & Paschatkarma)")],
[PB("Primary site"),P("Head, neck, throat, sense organs, respiratory tract, psychosomatic disorders")],
[PB("References"), P("Ch.Sa. Sutrasthana 5/14–58 | Su.Sa. Chikitsa 40/4 | A.H. Sutrasthana 21")],
[PB("Route"), P("Inhalation through nostrils; exhalation ALWAYS through mouth")],
[PB("Frequency"), P("Prayogika type: up to 3 times daily | Others: as prescribed, part of therapy")],
]
story.append(make_table(t1, [W*0.22, W*0.78]))
story.append(Spacer(1, 8))
# ══ TABLE 2 – Classification comparison ══════════════════════════════════════
story.append(Paragraph("2. Classification by Acharya – Comparison", sec_s))
t2 = [
[hdr("#"), hdr("Charaka\n(Ch.Sa. Su. 5)"), hdr("Sushruta\n(Su.Sa. Chi. 40)"), hdr("Vagbhata\n(A.H. Su. 21)"), hdr("Common Ground")],
[P("1"), P("Prayogika\n(Shamana)"), P("Prayogika\n(Shamana)"), P("Snigdha"), P("Daily use / preventive / pacifying")],
[P("2"), P("Vairechanika"), P("Vairechanika"), P("Madhyama"), P("Cleansing / purgative type")],
[P("3"), P("Snaihika"), P("Snaihika"), P("Teekshna"), P("Unctuous / lubricating type")],
[P("4"), P("—"), P("Kashaghna"), P("Sodhanam"), P("Sushruta only: antitussive for cough")],
[P("5"), P("—"), P("Vamaniya"), P("Vranagna"), P("Sushruta only: emesis-inducing | Vagbhata: wound-healing")],
[P("6"), P("—"), P("Vranagna"), P("Brimhanam"), P("Sushruta: wound-healing | Vagbhata: nourishing")],
]
story.append(make_table(t2, [W*0.05, W*0.17, W*0.17, W*0.16, W*0.45]))
story.append(Spacer(1, 8))
# ══ TABLE 3 – Charaka's 3 types in detail ════════════════════════════════════
story.append(Paragraph("3. Charaka's 3 Types — Detailed (Ch.Sa. Sutrasthana 5)", sec_s))
t3 = [
[hdr("Type"), hdr("Meaning"), hdr("Key Herbs / Materials"), hdr("Potency"), hdr("Dosha"), hdr("Primary Indications")],
[P("Prayogika\n(Shamana)"), P("Daily use /\nPacifying"),
P("Ela (cardamom), Patra, Twak, Chandana, Agaru, Guggulu, Sarjarasa, Madhuka, Priyangu"),
P("Mild"), P("All Doshas\n(preventive)"),
P("Daily maintenance; post-bath, post-meals, after Nasya, after sleep; prevention of head/throat diseases")],
[P("Vairechanika"), P("Cleansing /\nPurgative"),
P("Aparajita (Clitoria ternatea), Jyotishmati, Hartal, Manah-shila, Gandha Agaru, Patra (Cinnamomum tamala)"),
P("Strong"), P("Kapha excess"),
P("Chronic sinusitis, excess Kapha in head, psychiatric disorders, epilepsy, skin diseases of face")],
[P("Snaihika"), P("Unctuous /\nLubricating"),
P("Vasa (fat), Ghrita (clarified butter), Madhuchhishta (beeswax) + Jeevaniya Gana drugs (Jeevaka, Meda, Kakoli, Jeevanti, Madhuka, etc.)"),
P("Moderate"), P("Vata"),
P("Neurological disorders, dryness of head/throat, Vata diseases, hoarseness, hair disorders, debility")],
]
story.append(make_table(t3, [W*0.12, W*0.11, W*0.29, W*0.09, W*0.10, W*0.29]))
story.append(Spacer(1, 8))
# ══ TABLE 4 – Sushruta's 5 types ═════════════════════════════════════════════
story.append(Paragraph("4. Sushruta's 5 Types — Detail (Su.Sa. Chikitsa 40)", sec_s))
t4 = [
[hdr("Type"), hdr("Meaning"), hdr("Potency"), hdr("Dosha"), hdr("Indications"), hdr("Special Feature")],
[P("Prayogika"), P("Daily / Preventive"), P("Mild"), P("All"), P("Daily health, Dinacharya, post-procedure care"), P("Safe for everyone; can be done daily up to 3×/day")],
[P("Vairechanika"),P("Cleansing"), P("Strong"), P("Kapha"), P("Sinusitis, mental disorders, epilepsy, skin"), P("Most commonly used in clinical Panchakarma")],
[P("Snaihika"), P("Lubricating"), P("Moderate"), P("Vata"), P("Vata diseases, neurological, dryness, hoarseness"), P("Contains Jeevaniya Gana — highly nourishing")],
[P("Kashaghna"), P("Cough-relieving"), P("Moderate"), P("Kapha+Vata"),P("Kasa (cough), respiratory disorders, asthma"), P("Unique to Sushruta — specific for respiratory use")],
[P("Vamaniya"), P("Emesis-inducing"), P("Strong"), P("Kapha"), P("Nausea, severe Kapha head accumulation, epilepsy"), P("Used before Vamana procedure or as standalone")],
]
story.append(make_table(t4, [W*0.13, W*0.14, W*0.10, W*0.11, W*0.28, W*0.24]))
# ══ PAGE 2 ════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(Paragraph("DHUMAPANA — Continued", title_s))
story.append(HRFlowable(width="100%", thickness=1.5, color=MID, spaceAfter=8))
# ══ TABLE 5 – Vagbhata's classification ══════════════════════════════════════
story.append(Paragraph("5. Vagbhata's Classification (A.H. Sutrasthana 21)", sec_s))
t5 = [
[hdr("Type"), hdr("Meaning"), hdr("Potency"), hdr("Drug Property"), hdr("Main Use")],
[P("Snigdha"), P("Unctuous / oily"), P("Mild"), P("Fatty, unctuous, smooth smoke"), P("Vata diseases, neurological, dryness")],
[P("Madhyama"), P("Moderate / balanced"), P("Moderate"), P("Balanced herbs, mixed potency"), P("General therapeutic and maintenance")],
[P("Teekshna"), P("Sharp / intense"), P("Strong"), P("Pungent, sharp, penetrating"), P("Kapha disorders, acute cleansing, psychiatric")],
]
story.append(make_table(t5, [W*0.15, W*0.20, W*0.13, W*0.27, W*0.25]))
story.append(Spacer(1, 8))
# ══ TABLE 6 – Procedure ═══════════════════════════════════════════════════════
story.append(Paragraph("6. Procedure of Dhumapana (Step-by-Step)", sec_s))
t6 = [
[hdr("Stage"), hdr("Step"), hdr("Details")],
[P("Pre-procedure"), P("1. Patient preparation"), P("Patient should not be hungry, intoxicated, or have just eaten")],
[P(""), P("2. Pre-treatment"), P("Snehana (oil massage) and Swedana (fomentation) of head, neck, face if part of Panchakarma")],
[P(""), P("3. Dhumavarti preparation"), P("Medicated wick prepared with appropriate herbs on Ishika (hay/bamboo reed) base; smear ghee, ignite for 30 seconds before use")],
[P("Procedure"), P("4. Posture"), P("Patient sits comfortably upright; breathes normally")],
[P(""), P("5. Setup"), P("Place lit Dhumavarti into Dhumanetra (special nozzle pipe with 3 curves — Trikosha)")],
[P(""), P("6. Inhalation"), P("Inhale smoke slowly through ONE nostril; ALWAYS exhale through mouth (never through nose)")],
[P(""), P("7. Rounds"), P("3 puffs per nostril = 1 round; repeat through other nostril; total 3 rounds normally")],
[P("Post-procedure"), P("8. After care"), P("Gargle with warm water; rest in comfortable position; avoid cold, wind, dust")],
[P(""), P("9. Observation"), P("Check for Samyak Yoga (proper signs) — lightness in chest, throat clarity, clear sense organs")],
]
story.append(make_table(t6, [W*0.16, W*0.22, W*0.62], hr=1))
story.append(Spacer(1, 8))
# ══ TABLE 7 – Dhumanetra ═════════════════════════════════════════════════════
story.append(Paragraph("7. Dhumanetra (Inhalation Pipe) — Specifications", sec_s))
t7 = [
[hdr("Feature"), hdr("Specification")],
[PB("Material"), P("Same as Bastinetra: Gold (Suvarna), Silver (Rajata), Tin (Ranga), Lead (Naga), Copper (Tamra), or Bronze")],
[PB("Structure"), P("Must have 3 Kosha (three curves/bends) — called Trikosha Dhumanetra")],
[PB("Base hole"), P("Width of Angushtha (thumb tip) at the base opening")],
[PB("Upper hole"), P("Width of Kolasthi (small bone/seed) at the upper mouthpiece")],
[PB("Length"), P("Approximately 24 Angula (finger widths) for standard adult use; shorter for children")],
[PB("Purpose"), P("The curves cool the smoke slightly and allow controlled inhalation; prevents direct flame/heat entry")],
]
story.append(make_table(t7, [W*0.20, W*0.80]))
story.append(Spacer(1, 8))
# ══ TABLE 8 – Samyak / Atiyoga / Ayoga ══════════════════════════════════════
story.append(Paragraph("8. Signs of Proper (Samyak), Excessive (Atiyoga) & Insufficient (Ayoga) Dhumapana", sec_s))
t8 = [
[hdr("Category"), hdr("Signs / Symptoms"), hdr("Management")],
[P("Samyak Yoga\n(Proper)"),
P("• Lightness in chest (Hrudaya) and throat (Kantha)\n• Clarity in all sense organs\n• Feeling of freshness and comfort\n• Clear nasal passages\n• Pleasant sensation in head"),
P("Continue; procedure was done correctly")],
[P("Atiyoga\n(Excessive)"),
P("• Burning sensation in throat\n• Excessive thirst\n• Bleeding (Raktapitta)\n• Giddiness / fainting\n• Dryness of mouth and nose\n• Pitta aggravation"),
P("Cold water gargling; Pitta-pacifying diet; ghee intake; rest; Chandana + milk decoction")],
[P("Ayoga\n(Insufficient)"),
P("• Heaviness in head and chest\n• Running nose / excess mucus\n• Lethargy and drowsiness\n• Kapha not expelled\n• Stiffness of neck"),
P("Repeat Dhumapana with stronger preparation; Teekshna (Vairechanika) type advised")],
]
story.append(make_table(t8, [W*0.15, W*0.45, W*0.40]))
story.append(Spacer(1, 8))
# ══ TABLE 9 – Indications ════════════════════════════════════════════════════
story.append(Paragraph("9. Indications of Dhumapana", sec_s))
t9 = [
[hdr("System"), hdr("Conditions")],
[PB("Respiratory"), P("Pinasa (rhinitis), Pratishyaya (common cold), Kasa (cough), Shwasa (asthma), Hiccups (Hikka)")],
[PB("Neurological"), P("Ardita (facial paralysis), Apasmara (epilepsy), Manyastambha (neck stiffness), Shirahshula (headache)")],
[PB("ENT"), P("Karnashula (earache), ear discharge, Galaganda (goitre/throat swelling), hoarseness of voice")],
[PB("Oral / Dental"), P("Mukhashosa (dry mouth), bad breath, Dantashula (toothache), excessive salivation")],
[PB("Psychiatric"), P("Unmada (insanity), Apasmara (epilepsy), Nidra (excessive sleep/drowsiness), anxiety")],
[PB("Hair & Skin"), P("Khalitya (hair loss), Palita (premature greying), facial skin disorders, Vyanga (pigmentation)")],
[PB("Eye"), P("Mild eye discomfort, heaviness of eyelids (NOT for acute eye inflammation)")],
[PB("Post-procedure"), P("After Nasya, Vamana, Danta-dhavana (tooth cleaning), Anjana (eye drops), sneezing, bathing, sleep")],
]
story.append(make_table(t9, [W*0.20, W*0.80]))
# ══ TABLE 10 – Contraindications ════════════════════════════════════════════
story.append(PageBreak())
story.append(Paragraph("DHUMAPANA — Continued", title_s))
story.append(HRFlowable(width="100%", thickness=1.5, color=MID, spaceAfter=8))
story.append(Paragraph("10. Contraindications (Apathya) of Dhumapana", sec_s))
t10 = [
[hdr("Category"), hdr("Specific Condition"), hdr("Reason")],
[PB("Pitta conditions"), P("Raktapitta (bleeding disorders), eye inflammation, fever"), P("Smoke aggravates Pitta and can cause burning, bleeding")],
[PB("After substances"), P("After consuming honey (Madhu), ghee (Ghrita), curd, milk, fish, alcohol, gruels"), P("These are incompatible with smoke; can cause Viruddha Ahara reaction")],
[PB("Pregnancy"), P("Garbhini (pregnant women)"), P("Can disturb Apana Vata and harm foetus")],
[PB("Head injury"), P("Shiro-abhighata (head trauma)"), P("Smoke pressure may worsen intracranial injury")],
[PB("Exhaustion"), P("Sramarta (physical fatigue), Kshudha (hungry), Pipasa (thirsty)"), P("Weak Agni cannot process the smoke properly")],
[PB("Eye diseases"), P("Acute eye infections, Timira (vision disorders with inflammation)"), P("Smoke directly irritates ocular mucosa")],
[PB("Intoxication"), P("Madya-pana (alcohol), drugs"), P("Combined effect can cause severe Pitta disturbance")],
[PB("Mental exhaustion"), P("Chinta (extreme grief/anxiety), Klama (mental fatigue)"), P("May worsen Vata-Pitta imbalance in mind")],
]
story.append(make_table(t10, [W*0.20, W*0.35, W*0.45]))
story.append(Spacer(1, 8))
# ══ TABLE 11 – Timing ════════════════════════════════════════════════════════
story.append(Paragraph("11. Appropriate Timing for Dhumapana (Kala)", sec_s))
t11 = [
[hdr("Time / Occasion"), hdr("Type Recommended"), hdr("Benefit")],
[P("After waking up"), P("Prayogika"), P("Clears Kapha accumulated during night; freshens sense organs")],
[P("After bathing (Snana)"), P("Prayogika"), P("Removes residual moisture/cold from nasal tract")],
[P("After meals (Bhojana)"), P("Prayogika"), P("Aids digestion; clears throat; prevents post-meal Kapha")],
[P("After Vamana"), P("Prayogika"), P("Paschatkarma — clears residual vomit material from upper tract")],
[P("After Nasya"), P("Prayogika"), P("Paschatkarma — helps clear nasally administered medicine residue")],
[P("After Anjana (eye drops)"), P("Prayogika"), P("Clears excess Kapha stimulated by eye drops")],
[P("After sneezing"), P("Prayogika"), P("Stabilises Prana Vata; prevents rebound congestion")],
[P("Therapeutic (diseased)"), P("Vairechanika/\nSnaihika per Dosha"), P("Used as main treatment for specific disorders")],
[P("Maximum daily dose"), P("All types"), P("3 times per day for Prayogika; 1–2× for Vairechanika/Snaihika")],
]
story.append(make_table(t11, [W*0.28, W*0.22, W*0.50]))
story.append(Spacer(1, 8))
# ══ TABLE 12 – Dhumapana vs Nasya vs Modern Inhalation ══════════════════════
story.append(Paragraph("12. Dhumapana vs Dhuma Nasya vs Modern Steam Inhalation", sec_s))
t12 = [
[hdr("Feature"), hdr("Dhumapana"), hdr("Dhuma Nasya\n(within Nasya)"), hdr("Modern Steam Inhalation")],
[PB("Route"), P("Mouth + Nostrils"), P("Nostrils only"), P("Mouth + Nostrils")],
[PB("Medium"), P("Medicated smoke (dry heat)"), P("Smoke as part of Nasya"), P("Water vapor (moist heat)")],
[PB("Drug delivery"), P("Through mucosa via smoke"), P("As one type of Nasya"), P("Dissolved in steam")],
[PB("CNS effect"), P("Moderate — via olfactory"), P("Strong — direct nasal route"), P("Minimal")],
[PB("Dosha action"), P("Kapha + Vata (mainly)"), P("All Doshas per drug"), P("Not classified by Dosha")],
[PB("Daily use"), P("Yes (Prayogika type)"), P("No — requires full prep"), P("Yes")],
[PB("Contraindication"), P("Eye disease, Pitta, bleeding"),P("Broader CI list"), P("Minimal CI")],
[PB("Classical basis"), P("Ch.Sa. Su.5 / Su.Chi.40"), P("Part of Nasya classification"), P("No classical basis")],
]
story.append(make_table(t12, [W*0.20, W*0.27, W*0.27, W*0.26]))
story.append(Spacer(1, 10))
# ══ Footer ════════════════════════════════════════════════════════════════════
story.append(HRFlowable(width="100%", thickness=0.8, color=ACCENT, spaceAfter=4))
story.append(Paragraph(
"<b>Clinical Pearl:</b> Prayogika Dhumapana is the safest type — it can be used by both healthy and diseased individuals as part of daily Dinacharya, "
"up to 3 times a day. Vairechanika (cleansing) is most powerful and used in clinical Panchakarma. "
"Inhalation is ALWAYS through the nose/mouth but exhalation MUST be through the mouth — never re-inhale through nostrils. "
"The Dhumanetra (pipe) must have 3 curves (Trikosha) to prevent direct heat from reaching the mucosa.",
note_s
))
story.append(Paragraph(
"References: Charaka Samhita – Sutrasthana 5/14–58 | Sushruta Samhita – Chikitsa 40/4 | "
"Ashtanga Hridayam – Sutrasthana 21 | IJRAP 10(1) 2019 (Prayogika Dhumavarti Standardization) • Academic reference only.",
foot_s
))
doc.build(story)
print("PDF created:", OUTPUT)
cd /tmp/workspace/nasya-karma && python generate_dhumapana_pdf.py 2>&1
Dhumapana Complete Reference
PDF Document · PDF
| Type | Meaning | Drugs Used | Potency | Dosha | Use |
|---|---|---|---|---|---|
| Prayogika (Shamana) | Daily / Pacifying | Ela, Patra, Twak, Chandana, Agaru, Guggulu, Sarjarasa, Madhuka | Mild | All (preventive) | Daily Dinacharya — after bath, meals, Nasya, sleep |
| Vairechanika | Cleansing / Purgative | Aparajita, Jyotishmati, Hartal, Manah-shila, Gandha Agaru, Patra | Strong | Kapha | Sinusitis, psychiatric disorders, epilepsy, facial skin |
| Snaihika | Unctuous / Lubricating | Vasa (fat), Ghrita, Madhuchhishta (beeswax) + entire Jeevaniya Gana | Moderate | Vata | Neurological disorders, dryness, hoarseness, hair disorders |
| Type | Added by | Potency | Specific Use |
|---|---|---|---|
| Prayogika | Both | Mild | Daily use |
| Vairechanika | Both | Strong | Kapha cleansing |
| Snaihika | Both | Moderate | Vata nourishing |
| Kashaghna | Sushruta only | Moderate | Cough, asthma, respiratory disorders |
| Vamaniya | Sushruta only | Strong | Emesis-inducing; before Vamana or for Kapha accumulation |
| Signs | Management | |
|---|---|---|
| Atiyoga | Burning throat, thirst, bleeding, giddiness, dry mouth | Cold gargling, ghee, Chandana+milk, Pitta diet |
| Ayoga | Heavy head, excess mucus, lethargy, Kapha not cleared | Repeat with stronger Teekshna/Vairechanika type |
"Inhale through the nose/mouth — ALWAYS exhale through the mouth." Exhaling through the nose is strictly forbidden as it pushes smoke back into deeper nasal passages.
Karnapurana
Karnapurana Ayurvedic ear therapy types procedure indications contraindications Charaka Sushruta classification
https://www.ijcrt.org/papers/IJCRT2606267.pdf
Karnapurana Karna Poorana medicated oils Bilva Nirgundi procedure Dinacharya Vata ear Ayurveda classical text
~/nasya-karma/generate_karnapurana_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph,
Spacer, HRFlowable, PageBreak
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_JUSTIFY
OUTPUT = "/tmp/workspace/nasya-karma/Karnapurana_Complete_Reference.pdf"
# ── Colours (deep blue-teal theme for ear/sound) ──────────────────────────────
DARK = colors.HexColor("#0D2B45")
MID = colors.HexColor("#1A5276")
LIGHT = colors.HexColor("#D6EAF8")
ACCENT = colors.HexColor("#2E86C1")
PALE = colors.HexColor("#F0F8FF")
ALT = colors.HexColor("#D9EDF7")
BORDER = colors.HexColor("#5DADE2")
HDR_TEXT = colors.white
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm,
title="Karnapurana – Complete Ayurvedic Reference",
author="Orris Academic Reference"
)
styles = getSampleStyleSheet()
def PS(name, **kw):
return ParagraphStyle(name, parent=styles["Normal"], **kw)
title_s = PS("T", fontSize=18, textColor=DARK, alignment=TA_CENTER, fontName="Helvetica-Bold", spaceAfter=3)
sub_s = PS("S", fontSize=9, textColor=ACCENT, alignment=TA_CENTER, fontName="Helvetica-Oblique", spaceAfter=10)
sec_s = PS("Se",fontSize=11, textColor=DARK, fontName="Helvetica-Bold", spaceBefore=10, spaceAfter=4)
cell_s = PS("C", fontSize=7.5, leading=10, fontName="Helvetica")
note_s = PS("N", fontSize=7.5, textColor=colors.HexColor("#444444"),
fontName="Helvetica-Oblique", alignment=TA_JUSTIFY, spaceBefore=3, spaceAfter=5)
foot_s = PS("F", fontSize=6.5, textColor=colors.grey, fontName="Helvetica-Oblique", alignment=TA_CENTER)
def P(t, s=None): return Paragraph(t, s or cell_s)
def PB(t): return Paragraph(f"<b>{t}</b>", cell_s)
def hdr(t):
return Paragraph(f"<b>{t}</b>", PS("H", fontSize=8, leading=10,
textColor=HDR_TEXT, fontName="Helvetica-Bold", alignment=TA_CENTER))
def make_table(data, cw, hr=1):
t = Table(data, colWidths=cw, repeatRows=hr)
n = len(data)
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,hr-1), MID),
("TEXTCOLOR", (0,0),(-1,hr-1), HDR_TEXT),
("ALIGN", (0,0),(-1,hr-1), "CENTER"),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
("GRID", (0,0),(-1,-1), 0.4, BORDER),
("ROWBACKGROUND",(0,hr),(-1,-1), [PALE, ALT]*((n-hr)//2+1)),
("LEFTPADDING", (0,0),(-1,-1), 4),
("RIGHTPADDING", (0,0),(-1,-1), 4),
("TOPPADDING", (0,0),(-1,-1), 3),
("BOTTOMPADDING",(0,0),(-1,-1), 3),
("BACKGROUND", (0,hr),(0,-1), LIGHT),
("FONTNAME", (0,hr),(0,-1), "Helvetica-Bold"),
]))
return t
def ci(t, ok=False, warn=False):
if ok: return Paragraph(f'<font color="#1B4332"><b>{t}</b></font>', cell_s)
if warn: return Paragraph(f'<font color="#B5451B">{t}</font>', cell_s)
return P(t)
story = []
W = doc.width
# ══ TITLE ════════════════════════════════════════════════════════════════════
story.append(Paragraph("KARNAPURANA", title_s))
story.append(Paragraph("Ayurvedic Medicated Ear Oil Therapy – Complete Classification & Reference", sub_s))
story.append(HRFlowable(width="100%", thickness=1.5, color=MID, spaceAfter=6))
# ══ TABLE 1 – Overview ═══════════════════════════════════════════════════════
story.append(Paragraph("1. Basic Overview", sec_s))
t1 = [
[hdr("Aspect"), hdr("Details")],
[PB("Etymology"), P("Karna (ear) + Purana (to fill) = Filling the ear with medicated substances")],
[PB("Synonyms"), P("Karna Poorana, Karna Taila, Karna Sneha")],
[PB("Definition"), P("An Ayurvedic procedure where lukewarm medicated oil (Taila), ghee (Ghrita), or herbal juice (Swarasa) is instilled into the ear canal and retained for a specific duration to prevent and treat diseases of the ear, neck and head")],
[PB("Category"), P("Dinacharya (daily regimen) + Sthanika Snehana (localised oleation) + Shalakya Tantra (ENT branch)")],
[PB("Primary Dosha"),P("Vata — the ear has predominance of Akasha Mahabhuta; all Karnarogas are mainly due to vitiation of Vata")],
[PB("Related organ"),P("Karna (ear) — connected to Asthi Dhatu (bone tissue), Majja Dhatu (nerve/marrow tissue) and Prana Vata")],
[PB("References"), P("A.H. Sutrasthana 22 | Ch.Sa. Sutrasthana 5 | Su.Sa. Chikitsa 40 | Sha.Sa.")],
[PB("Drug form"), P("Taila (oil) most common; also Ghrita (ghee), Swarasa (fresh juice), Kwatha (decoction), Dugdha (milk)")],
]
story.append(make_table(t1, [W*0.20, W*0.80]))
story.append(Spacer(1, 8))
# ══ TABLE 2 – Types ═══════════════════════════════════════════════════════════
story.append(Paragraph("2. Classification / Types of Karnapurana", sec_s))
t2 = [
[hdr("Basis"), hdr("Type"), hdr("Description"), hdr("Frequency")],
[PB("By Purpose\n(Classical)"), P("Swastha\n(Preventive)"),
P("Done in healthy individuals as part of Dinacharya; uses plain sesame oil or Prayogika medicated oils; maintains ear health, prevents dryness and Vata disorders"),
P("Daily or periodically (every 7–15 days)")],
[P(""), P("Chikitsa\n(Therapeutic)"),
P("Done in disease conditions; uses specifically indicated medicated oils per Dosha and disease; stronger, disease-targeted formulations"),
P("As prescribed per course of treatment")],
[PB("By Drug Used"), P("Taila Karnapurana"), P("Medicated oils — most common; Snigdha (unctuous), Vatahara properties"), P("Daily to periodic")],
[P(""), P("Ghrita Karnapurana"), P("Medicated ghee — for Pitta conditions, burning, inflammatory ear disorders"), P("Therapeutic courses")],
[P(""), P("Swarasa Karnapurana"), P("Fresh herbal juice — e.g. Nirgundi swarasa; for infections, pain, discharge"), P("Therapeutic")],
[P(""), P("Kshara Karnapurana"), P("Alkaline preparations — for chronic suppurative otitis, worm infestations in ear"), P("Therapeutic only")],
[PB("By Condition"), P("Karnaroga\n(Ear disease)"), P("Specific disease-targeted; duration 100 Matra"), P("Per disease course")],
[P(""), P("Kantharoga\n(Throat disease)"), P("Oil retained longer — 500 Matra; acts on throat via absorption and reflex pathways"), P("Per disease course")],
[P(""), P("Shiroroga\n(Head disease)"), P("Longest retention — 1000 Matra; influences head, brain, nervous system via ear canal"), P("Per disease course")],
[P(""), P("Shoola\n(Pain)"), P("Retained until pain is relieved — flexible duration"), P("Until relief")],
]
story.append(make_table(t2, [W*0.15, W*0.17, W*0.47, W*0.21]))
story.append(Spacer(1, 8))
# ══ TABLE 3 – Medicated Oils ══════════════════════════════════════════════════
story.append(Paragraph("3. Medicated Oils (Taila) Used in Karnapurana", sec_s))
t3 = [
[hdr("Oil / Preparation"), hdr("Key Ingredients"), hdr("Dosha"), hdr("Indications")],
[PB("Bilva Taila"), P("Bilva (Aegle marmelos), sesame oil base"), P("Vata"), P("Ear pain (Karnashoola), Vata-dominant disorders, stiffness")],
[PB("Dashamoola Taila"), P("10 roots (Bilva, Syonaka, Patala, Kashmari, etc.)"), P("Vata, Kapha"), P("Anti-inflammatory, analgesic; pain, inflammation, hearing loss")],
[PB("Narayana Taila"), P("Ashwagandha, Bala, Shatavari, Sesame oil"), P("Vata"), P("Degenerative conditions, neurological, chronic hearing impairment")],
[PB("Apamarga Kshara Taila"),P("Apamarga (Achyranthes aspera) kshara"), P("Kapha, Vata"), P("Chronic suppurative otitis media, discharge, wax accumulation")],
[PB("Lasuna Taila"), P("Garlic (Allium sativum), sesame oil"), P("Kapha, Vata"), P("Ear infections, Karnanada (tinnitus), bacterial/fungal ear conditions")],
[PB("Nirgundi Swarasa"), P("Vitex negundo leaf juice"), P("Vata, Kapha"), P("Ear pain, swelling, discharge, anti-inflammatory")],
[PB("Anu Taila"), P("Polyherbal — Sesame, Bala, Ashwagandha, etc."), P("All"), P("General preventive; can be used in both ear and nose")],
[PB("Sesame Oil (plain)"), P("Tila Taila — plain sesame"), P("Vata"), P("Daily Dinacharya; plain lubrication and maintenance")],
[PB("Go-Ghrita"), P("Cow's ghee"), P("Pitta, Vata"), P("Burning sensation in ear, Pitta disorders, dryness")],
]
story.append(make_table(t3, [W*0.22, W*0.28, W*0.12, W*0.38]))
# ══ PAGE 2 ════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(Paragraph("KARNAPURANA — Continued", title_s))
story.append(HRFlowable(width="100%", thickness=1.5, color=MID, spaceAfter=8))
# ══ TABLE 4 – Step-by-step procedure ═════════════════════════════════════════
story.append(Paragraph("4. Procedure of Karnapurana (Step-by-Step)", sec_s))
t4 = [
[hdr("Stage"), hdr("Step"), hdr("Details")],
[P("Purvakarma\n(Pre-procedure)"),
P("1. Positioning"),
P("Patient lies on lateral decubitus (side-lying) position; the hand of the same side placed under the head; other hand rests on the trunk")],
[P(""),
P("2. Pinna massage"),
P("Gentle massage with lukewarm medicated oil around the pinna (external ear), mastoid region, and lateral neck below the ear — improves circulation and tissue absorption")],
[P(""),
P("3. Fomentation\n(Swedana)"),
P("Mild local heat applied around the ear using a warm towel (not hot) — softens the wax, relaxes muscles, opens channels (Srotas)")],
[P("Pradhanakarma\n(Main procedure)"),
P("4. Oil warming"),
P("Medicated oil is warmed to lukewarm (body temperature ~37°C) — test on inner wrist before instillation; never use hot oil")],
[P(""),
P("5. Instillation"),
P("Oil is gently poured into the ear canal using a dropper/thin vessel until the canal is fully filled — patient should not feel pain; watch for any discomfort")],
[P(""),
P("6. Retention\n(Dharana)"),
P("Oil retained as per condition: Karnaroga = 100 Matra | Kantharoga = 500 Matra | Shiroroga = 1000 Matra | Pain = until relieved. Patient remains in lateral position throughout")],
[P(""),
P("7. Gentle plugging"),
P("A small clean cotton plug may be placed at the ear opening to prevent oil spillage during retention — not pushed deep inside")],
[P("Paschatkarma\n(Post-procedure)"),
P("8. Drainage"),
P("Patient turns head to allow oil to drain naturally; excess oil gently wiped with sterile dry cotton — never use cotton buds/Q-tips inside the canal")],
[P(""),
P("9. Repeat\nother ear"),
P("Patient turns to the other side; same procedure repeated for the fellow ear")],
[P(""),
P("10. Post-care"),
P("Avoid cold water, cold wind, and dust on ears after the procedure; keep ear dry; avoid swimming or head bath immediately")],
]
story.append(make_table(t4, [W*0.17, W*0.18, W*0.65], hr=1))
story.append(Spacer(1, 8))
# ══ TABLE 5 – Duration (Matra) ════════════════════════════════════════════════
story.append(Paragraph("5. Duration of Retention (Matra) — Classical Reference", sec_s))
t5 = [
[hdr("Condition"), hdr("Retention Duration"), hdr("Rationale")],
[PB("Karnaroga (Ear disease)"), P("100 Matra"), P("Short retention — sufficient for local ear conditions; prevents saturation")],
[PB("Kantharoga (Throat disease)"),P("500 Matra"), P("Medium retention — allows oil to act on deeper throat channels via ear")],
[PB("Shiroroga (Head disease)"), P("1000 Matra"), P("Longest retention — oil penetrates deeply to influence brain and cranial structures")],
[PB("Shoola (Pain)"), P("Until pain subsides"), P("Flexible duration — pain is the clinical endpoint; stop when relief achieved")],
[PB("Swastha (Healthy/Prevention)"),P("100 Matra"), P("Same as Karnaroga dose; preventive, not therapeutic intensity")],
]
note_matra = P("Note: 1 Matra = approximately 1 second (duration of a snap of fingers). 100 Matra ≈ 2 minutes | 500 Matra ≈ 8–10 minutes | 1000 Matra ≈ 15–20 minutes.")
story.append(make_table(t5, [W*0.28, W*0.22, W*0.50]))
story.append(note_matra)
story.append(Spacer(1, 8))
# ══ TABLE 6 – Samyak / Atiyoga / Ayoga ═══════════════════════════════════════
story.append(Paragraph("6. Signs of Proper, Excessive & Insufficient Karnapurana", sec_s))
t6 = [
[hdr("Category"), hdr("Signs / Symptoms"), hdr("Management")],
[P("Samyak Yoga\n(Proper outcome)"),
P("• Lightness in ear and head\n• Reduced pain and discomfort\n• Clear hearing\n• Feeling of comfort and relaxation\n• No discharge or irritation"),
P("Procedure was done correctly; continue as prescribed")],
[P("Atiyoga\n(Excessive)"),
P("• Heaviness in ear\n• Giddiness / vertigo\n• Sensation of fullness / blockage\n• Reduced hearing temporarily\n• Oil enters middle ear (if perforation present)"),
P("Stop immediately; tilt head to drain; dry ear with gentle warm air; if symptoms persist, seek evaluation; avoid in perforated TM")],
[P("Ayoga\n(Insufficient)"),
P("• Persistent pain unchanged\n• Dryness remains\n• Stiffness not relieved\n• Tinnitus persists\n• No sense of relief"),
P("Increase retention time; use stronger medicated oil specific to Dosha; combine with Nasya or Abhyanga")],
]
story.append(make_table(t6, [W*0.15, W*0.45, W*0.40]))
story.append(Spacer(1, 8))
# ══ TABLE 7 – Indications ════════════════════════════════════════════════════
story.append(Paragraph("7. Indications of Karnapurana", sec_s))
t7 = [
[hdr("System / Category"), hdr("Condition"), hdr("Classical Name")],
[PB("Ear (Primary)"), P("Ear pain"), P("Karnashoola")],
[P(""), P("Tinnitus / ringing in ear"), P("Karnanada")],
[P(""), P("Hearing impairment"), P("Badhirya")],
[P(""), P("Dryness / itching in ear"), P("Karnakandu / Karnashushkta")],
[P(""), P("Earwax accumulation"), P("Karnamedata")],
[P(""), P("Ear stiffness"), P("Karnagraha")],
[PB("Head & Neck"), P("Headache, migraine"), P("Shirahshula, Ardhavabhedaka")],
[P(""), P("Neck stiffness"), P("Manyastambha")],
[P(""), P("Jaw pain / TMJ"), P("Hanustambha")],
[PB("Neurological"), P("Vertigo / dizziness"), P("Bhrama")],
[P(""), P("Balance disorders"), P("Related to Vata in Karna")],
[P(""), P("Poor sleep, anxiety"), P("Anidra, Chinta (Vata in mind)")],
[PB("Preventive"), P("Daily ear maintenance"), P("Dinacharya (healthy persons)")],
[P(""), P("Prevention of ear infections"),P("6-monthly preventive Karnapurana")],
[PB("Modern equiv."), P("Mild conductive hearing loss"),P("Badhirya")],
[P(""), P("Tinnitus"), P("Karnanada")],
[P(""), P("Otitis externa (mild)"), P("Karnashoola with Kapha/Pitta")],
]
story.append(make_table(t7, [W*0.20, W*0.40, W*0.40]))
# ══ PAGE 3 ════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(Paragraph("KARNAPURANA — Continued", title_s))
story.append(HRFlowable(width="100%", thickness=1.5, color=MID, spaceAfter=8))
# ══ TABLE 8 – Contraindications ══════════════════════════════════════════════
story.append(Paragraph("8. Contraindications of Karnapurana", sec_s))
t8 = [
[hdr("Condition"), hdr("Reason"), hdr("Risk")],
[PB("Perforated tympanic membrane"),
P("Oil enters middle ear cavity directly"),
ci("ABSOLUTE CI — risk of otitis media, ossicular damage", warn=True)],
[PB("Acute suppurative otitis media\n(ASOM)"),
P("Active infection + oil = worsening of infection and pain"),
ci("Contraindicated — may seal in infection", warn=True)],
[PB("Active bleeding from ear"),
P("Oil can trap blood, increase pressure in canal"),
ci("Absolute contraindication", warn=True)],
[PB("Severe ear trauma"),
P("Unknown integrity of ear canal or drum"),
ci("Avoid until assessed", warn=True)],
[PB("High-grade fever with ear infection"),
P("Systemic infection needs medical treatment first"),
ci("Postpone until fever resolved", warn=True)],
[PB("Foreign body in ear"),
P("Oil may cause foreign body to swell or be pushed deeper"),
ci("Remove foreign body first", warn=True)],
[PB("Known hypersensitivity"),
P("Allergy to specific oil ingredients"),
ci("Patch test; switch oil", warn=True)],
[PB("After ear surgery"),
P("Surgical sites need medical clearance"),
ci("Consult surgeon first", warn=True)],
]
story.append(make_table(t8, [W*0.27, W*0.38, W*0.35]))
story.append(Spacer(1, 8))
# ══ TABLE 9 – Benefits ═══════════════════════════════════════════════════════
story.append(Paragraph("9. Benefits of Karnapurana (Classical & Contemporary)", sec_s))
t9 = [
[hdr("Benefit"), hdr("Classical Explanation"), hdr("Modern Understanding")],
[PB("Reduces ear pain"), P("Snigdha (unctuous) properties pacify Vata — the primary cause of Karnashoola"), P("Anti-inflammatory & analgesic oils (Dashamoola, Bilva) reduce prostaglandin-mediated pain")],
[PB("Relieves tinnitus"), P("Vata in Karna causes abnormal sound — oil grounds Vata, restores normal nerve function"), P("Nourishes acoustic nerve; may modulate auditory nerve hypersensitivity")],
[PB("Improves hearing"), P("Nourishes Asthi and Majja Dhatu — the ear bones and auditory nerve"), P("Lubricates ear canal; removes cerumen; improves sound conduction")],
[PB("Prevents infections"), P("Creates protective oil layer; prevents Kapha and Krimi (micro-organisms) from settling"), P("Antimicrobial properties of garlic oil, sesame; creates hostile environment for pathogens")],
[PB("Reduces vertigo"), P("Balance is governed by Prana Vata in the ear — oil stabilises Prana Vata"), P("May reduce vestibular hypersensitivity; improves inner ear circulation")],
[PB("Calms nervous system"), P("Ears connected to Manas (mind) via Prana Vata — ear oiling settles Vata-driven anxiety"), P("Vagal stimulation via auricular nerve; activates parasympathetic response — reduces cortisol")],
[PB("Jaw/neck relief"), P("Vata in Karna spreads to adjacent Manya (neck) and Hanu (jaw) regions"), P("Oil penetrates periauricular fascia; reduces TMJ and cervical muscle tension")],
[PB("Better sleep"), P("Grounding Vata through Karna reduces Anidra (sleeplessness)"), P("Relaxation response; melatonin regulation may improve via parasympathetic activation")],
]
story.append(make_table(t9, [W*0.18, W*0.42, W*0.40]))
story.append(Spacer(1, 8))
# ══ TABLE 10 – Comparison with related therapies ════════════════════════════
story.append(Paragraph("10. Karnapurana vs Related Ayurvedic Ear Therapies", sec_s))
t10 = [
[hdr("Feature"), hdr("Karnapurana"), hdr("Karnadhupana\n(Ear Fumigation)"), hdr("Karnaseka\n(Ear Stream pour)"), hdr("Karna Basti\n(Ear oil pool)")],
[PB("Method"), P("Oil instilled & retained"), P("Medicated smoke blown into ear"), P("Continuous stream of oil poured"), P("Dough ring on ear, filled with oil")],
[PB("Medium"), P("Oil, ghee, juice"), P("Medicated smoke"), P("Oil stream (continuous)"), P("Oil pooled in dough container")],
[PB("Duration"), P("100–1000 Matra"), P("Brief inhalation"), P("Continuous flow, 5–10 min"), P("30–45 min retention")],
[PB("Primary Dosha"), P("Vata (primary)"), P("Kapha, Vata"), P("Vata, Pitta"), P("Vata (intense)")],
[PB("Depth of action"), P("External canal"), P("Surface only"), P("External canal + local"), P("Deep penetration via prolonged contact")],
[PB("Common use"), P("Daily & therapeutic"), P("Ear infections, insects in ear"), P("Acute pain, inflammation"), P("Chronic Vata disorders, tinnitus, hearing loss")],
[PB("Daily safe?"), ci("Yes (Prayogika)", ok=True), P("No"), P("No"), P("No — therapeutic only")],
]
story.append(make_table(t10, [W*0.17, W*0.20, W*0.21, W*0.20, W*0.22]))
story.append(Spacer(1, 10))
# ══ Footer ════════════════════════════════════════════════════════════════════
story.append(HRFlowable(width="100%", thickness=0.8, color=ACCENT, spaceAfter=4))
story.append(Paragraph(
"<b>Clinical Pearls:</b> (1) ALWAYS warm the oil to body temperature before instillation — cold oil aggravates Vata and can cause pain. "
"(2) NEVER perform Karnapurana if the tympanic membrane is perforated — this is an absolute contraindication. "
"(3) The ear has predominance of Akasha Mahabhuta — all ear diseases are primarily Vata in origin; oil is the ideal antidote. "
"(4) For daily preventive use, plain sesame oil or Anu Taila are safe choices. "
"(5) Karnapurana can be combined with Nasya for comprehensive head region therapy.",
note_s
))
story.append(Paragraph(
"References: Ashtanga Hridayam – Sutrasthana 22 | Charaka Samhita – Sutrasthana 5 | Sushruta Samhita – Chikitsa 40 | "
"IJCRT 2026 | Semantic Scholar (Karnapurana Kriya in Karnarogas) • Academic reference only.",
foot_s
))
doc.build(story)
print("PDF created:", OUTPUT)
cd /tmp/workspace/nasya-karma && python generate_karnapurana_pdf.py 2>&1
Karnapurana Complete Reference
PDF Document · PDF
| Type | Use | Frequency |
|---|---|---|
| Swastha (Preventive) | Healthy individuals, Dinacharya | Daily or every 7–15 days |
| Chikitsa (Therapeutic) | Disease conditions, targeted formulations | Per treatment course |
| Type | Medium | Dosha |
|---|---|---|
| Taila Karnapurana | Medicated oil (most common) | Vata |
| Ghrita Karnapurana | Medicated ghee | Pitta, Vata |
| Swarasa Karnapurana | Fresh herbal juice (e.g. Nirgundi) | Kapha, Vata |
| Kshara Karnapurana | Alkaline preparations | Kapha (chronic) |
| Condition | Retention | Approx. Time |
|---|---|---|
| Karnaroga (Ear disease) | 100 Matra | ~2 min |
| Kantharoga (Throat disease) | 500 Matra | ~8–10 min |
| Shiroroga (Head disease) | 1000 Matra | ~15–20 min |
| Shoola (Pain) | Until pain subsides | Flexible |
1 Matra = approx. 1 second (duration of one finger-snap)
| Oil | Key Herbs | Best For |
|---|---|---|
| Bilva Taila | Bilva (Aegle marmelos) | Karnashoola, Vata ear disorders |
| Dashamoola Taila | 10 roots combination | Inflammation, pain, hearing loss |
| Narayana Taila | Ashwagandha, Bala, Shatavari | Neurological, degenerative hearing |
| Lasuna Taila | Garlic + sesame | Infections, tinnitus, Karnanada |
| Nirgundi Swarasa | Vitex negundo juice | Pain, discharge, swelling |
| Apamarga Kshara Taila | Apamarga alkaline prep | Chronic suppurative otitis, wax |
| Sesame oil (plain) | Tila Taila | Daily preventive Dinacharya |
| Go-Ghrita | Cow's ghee | Burning, Pitta disorders |
| Category | Signs | Management |
|---|---|---|
| Samyak Yoga (Proper) | Lightness in ear & head, reduced pain, clear hearing, relaxation | Procedure done correctly |
| Atiyoga (Excessive) | Heaviness, vertigo, fullness, temporary hearing reduction | Drain immediately; warm, dry the ear |
| Ayoga (Insufficient) | Persistent pain, dryness, tinnitus unchanged | Increase retention; stronger medicated oil |
| Condition | Type |
|---|---|
| Perforated tympanic membrane | Absolute - oil enters middle ear |
| Acute suppurative otitis media | Absolute - worsens infection |
| Active ear bleeding | Absolute |
| Severe ear trauma | Avoid until assessed |
| Foreign body in ear | Remove first |
| Post-ear surgery | Medical clearance needed |
| High-grade fever with ear infection | Postpone |
| Therapy | Method | Duration | Best Use |
|---|---|---|---|
| Karnapurana | Oil retained in canal | 100–1000 Matra | General ear care + therapeutic |
| Karnadhupana | Smoke blown into ear | Brief | Ear infections, insects in ear |
| Karnaseka | Continuous oil stream poured | 5–10 min | Acute pain, inflammation |
| Karna Basti | Dough ring + oil pool on ear | 30–45 min | Chronic Vata, tinnitus, severe hearing loss |