attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment

Describe pranasta shalya and nirharana upayafrom the above to be written in a university exam of 5 mark essay question

Here is a well-structured 5-mark university exam essay answer on Pranasta Shalya and Nirharana Upaya, based directly on the textbook pages you have shared:

Pranasta Shalya (Retained Foreign Body) and Nirharana Upaya (Methods of Removal)

Definition

The word shalya is derived from the verbal roots 'shal' and 'shval', meaning moving fast. Any object that quickly inserts into the body and causes himsa (tissue damage) or pain is known as shalya. When such a shalya remains retained inside the body, it is termed Pranasta Shalya (retained foreign body).

Types of Shalya

Shalyas are of two types:
  1. Sharirika (endogenous) - arising from deformed dosha, dhatu and mala, e.g., teeth, hair, nails, pus.
  2. Agantuja (exogenous) - made of external materials like wood, stone, metals, straws that forcefully enter the tissues.

Diagnosis of Pranasta Shalya

Diagnosis is made by three methods:
  1. History - Asking about what weapon/object hurt the patient, symptoms like pricking pain, numbness, heaviness, tenderness at a specific site, and whether pain appears during normal body functions (coughing, sneezing, belching, urination, defecation).
  2. Physical/Local examination - Presence of inflammation at a site indicates retained shalya.
  3. Specific methods - Site-specific techniques such as:
    • Skin: Application of ghrita or sandal paste; wherever it melts or dries due to local heat, shalya is present there.
    • Mamsa (muscle): Oleation and fomentation; wherever inflammation and pain arise, the shalya is located.
    • Sira, dhamani, srotasa, snayu: The patient is made to ride on a chariot with broken wheels on an uneven road; wherever inflammation appears, the shalya is present.
    • Bone and joints: Oleation, fomentation, bandaging and firm pressure (pidana) are applied.

Nirharana Upaya (Methods of Removal)

Acarya Sushruta has described 15 methods for removal of anavabaddha (non-embedded/loose) shalya:
No.MethodDescription
1Svabhava (Natural)Expelled through natural urges - sneezing, coughing, urine, flatus
2Pacana (Suppuration)Medicines applied to induce suppuration; shalya comes out with pus
3Bhedana (Incision)Abscess incised if it does not burst spontaneously
4Darana (Lepa application)Paste of darana group medicines applied to split skin and allow shalya to fall off
5Pidana (Pressure/squeezing)By hand or by pidana group medicines
6Pramarjana (Wiping)Very small particles wiped out with hair or cloth
7Nirdhmapana (Blowing)Medicated powder blown to induce sneezing and expel nasal foreign body
8Vamana (Emesis)Stomach content/foreign body expelled by induced vomiting
9Virecana (Purgation)For rectal foreign body with adhimana and udavarta
10Praksalana (Washing)Small shalyas in wounds washed out by decoction of sodhana medicines
11Pratimarsa (Rubbing)Shalya loosened and evacuated by finger rubbing
12Pravahana (Straining)Forceful straining to expel flatus, urine, feces or fetus
13Acusana (Sucking)Sucking by mouth or shringa (horn) to remove gas, fluids, vitiated milk
14Ayaskanta (Magnet)Iron foreign bodies removed with a magnet
15Harsa (Joy/happiness)For mental shalya (grief/soka located in heart), removed by creating happiness

Methods of Extraction Based on Direction

Two methods are described:
  • Pratiloma method - Extraction through the wound entrance (same way it entered); used for shalyas not deeply embedded, and for those in kukshi (abdomen), vaksa (thorax), kaksa (axilla).
  • Anuloma method - Extraction through the opposite side; used for shalyas deeply embedded.
Visible shalya is removed with the hand or simhamukha yantra; deep shalya is removed with kankamukha yantra.

Complications if Not Removed

If shalya is not removed, it causes sotha (inflammation), paka (suppuration), vaikalya (deformity), severe pain, and even death. (Su.Su. 27/26)

Conclusion

Pranasta Shalya is a well-described surgical condition in Ayurveda. Acarya Sushruta's detailed diagnostic methods and 15 nirharana upayas (methods of removal) reflect an advanced understanding of surgical management of retained foreign bodies, which correlates with modern retained foreign body (R.F.B.) management principles.

Exam tip: This answer covers definition, types, diagnosis, all 15 removal methods, extraction directions, and complications - ideal for a structured 5-mark response. You may shorten the table to 6-8 key methods if word limit is strict.

Create a PDF study guide with all 15 nirharana methods for revision

Reading File
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace not found"

Writing File

~/pranasta_shalya_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

OUTPUT = "/home/daytona/workspace/Pranasta_Shalya_Study_Guide.pdf"

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=2*cm,
    leftMargin=2*cm,
    topMargin=2*cm,
    bottomMargin=2*cm
)

# --- Color Palette ---
SAFFRON   = colors.HexColor("#D4520A")
DEEP_TEAL = colors.HexColor("#0D5C63")
GOLD      = colors.HexColor("#C9A227")
CREAM     = colors.HexColor("#FFF8EE")
LIGHT_TEAL= colors.HexColor("#E0F4F5")
DARK_GRAY = colors.HexColor("#2C2C2C")
MID_GRAY  = colors.HexColor("#555555")
PALE_SAFFRON = colors.HexColor("#FDEBD0")

styles = getSampleStyleSheet()

# --- Custom Styles ---
title_style = ParagraphStyle(
    "MainTitle",
    parent=styles["Normal"],
    fontSize=22,
    textColor=colors.white,
    fontName="Helvetica-Bold",
    alignment=TA_CENTER,
    spaceAfter=4,
    leading=28,
)
subtitle_style = ParagraphStyle(
    "SubTitle",
    parent=styles["Normal"],
    fontSize=13,
    textColor=GOLD,
    fontName="Helvetica-BoldOblique",
    alignment=TA_CENTER,
    spaceAfter=2,
    leading=18,
)
chapter_style = ParagraphStyle(
    "ChapterHead",
    parent=styles["Normal"],
    fontSize=14,
    textColor=colors.white,
    fontName="Helvetica-Bold",
    alignment=TA_CENTER,
    spaceAfter=2,
    leading=20,
)
section_style = ParagraphStyle(
    "SectionHead",
    parent=styles["Normal"],
    fontSize=12,
    textColor=DEEP_TEAL,
    fontName="Helvetica-Bold",
    spaceBefore=10,
    spaceAfter=4,
    leading=16,
)
body_style = ParagraphStyle(
    "Body",
    parent=styles["Normal"],
    fontSize=10,
    textColor=DARK_GRAY,
    fontName="Helvetica",
    spaceAfter=4,
    leading=15,
    alignment=TA_JUSTIFY,
)
bullet_style = ParagraphStyle(
    "Bullet",
    parent=styles["Normal"],
    fontSize=9.5,
    textColor=MID_GRAY,
    fontName="Helvetica",
    leftIndent=14,
    spaceAfter=2,
    leading=14,
    bulletIndent=4,
)
small_bold = ParagraphStyle(
    "SmallBold",
    parent=styles["Normal"],
    fontSize=9,
    textColor=DARK_GRAY,
    fontName="Helvetica-Bold",
    spaceAfter=2,
    leading=13,
)
shloka_style = ParagraphStyle(
    "Shloka",
    parent=styles["Normal"],
    fontSize=9,
    textColor=DEEP_TEAL,
    fontName="Helvetica-Oblique",
    alignment=TA_CENTER,
    spaceBefore=2,
    spaceAfter=4,
    leading=13,
)
footer_style = ParagraphStyle(
    "Footer",
    parent=styles["Normal"],
    fontSize=8,
    textColor=colors.HexColor("#888888"),
    fontName="Helvetica",
    alignment=TA_CENTER,
)

# =================== CONTENT ===================
story = []

# ---- COVER BAND ----
cover_data = [[
    Paragraph("PRANASTA SHALYA", title_style),
    Paragraph("Retained Foreign Body", subtitle_style),
    Paragraph("Nirharana Upaya - 15 Methods of Removal", subtitle_style),
    Paragraph("Shalya Vijnana | University Revision Guide", ParagraphStyle(
        "CoverSub2", parent=styles["Normal"],
        fontSize=10, textColor=colors.HexColor("#FFDD99"),
        fontName="Helvetica", alignment=TA_CENTER, leading=14
    )),
]]
cover_table = Table(cover_data, colWidths=[17*cm])
cover_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), DEEP_TEAL),
    ("TOPPADDING", (0,0), (-1,-1), 20),
    ("BOTTOMPADDING", (0,0), (-1,-1), 20),
    ("LEFTPADDING", (0,0), (-1,-1), 16),
    ("RIGHTPADDING", (0,0), (-1,-1), 16),
    ("ROUNDEDCORNERS", (0,0), (-1,-1), [8,8,8,8]),
]))
story.append(cover_table)
story.append(Spacer(1, 0.4*cm))

# ---- DEFINITION BLOCK ----
def_data = [[
    Paragraph("Definition of Shalya", section_style),
    Paragraph(
        "The word <i>shalya</i> is derived from verbal roots <b>'shal'</b> and <b>'shval'</b> meaning moving fast. "
        "Any object that quickly inserts into the body and causes <b>himsa</b> (tissue damage) or pain is <b>shalya</b>. "
        "When such a shalya remains retained inside the body, it is termed <b>Pranasta Shalya</b>.",
        body_style
    ),
    Paragraph(
        "\"Shalyan shaltyashu gachhati vegenaantah shariramanuprashititi shalyan\" (Dalhana Su.Su. 26/3)",
        shloka_style
    ),
]]
def_table = Table(def_data, colWidths=[17*cm])
def_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), CREAM),
    ("BOX", (0,0), (-1,-1), 1.2, GOLD),
    ("TOPPADDING", (0,0), (-1,-1), 8),
    ("BOTTOMPADDING", (0,0), (-1,-1), 8),
    ("LEFTPADDING", (0,0), (-1,-1), 12),
    ("RIGHTPADDING", (0,0), (-1,-1), 12),
]))
story.append(def_table)
story.append(Spacer(1, 0.3*cm))

# ---- TYPES OF SHALYA ----
story.append(Paragraph("Types of Shalya", section_style))
types_data = [
    [Paragraph("<b>1. Sharirika (Endogenous)</b>", small_bold),
     Paragraph("Arising from deformed <i>dosha, dhatu</i> and <i>mala</i>. Examples: teeth, hair, nails, pus, urine, ear wax.", bullet_style)],
    [Paragraph("<b>2. Agantuja (Exogenous)</b>", small_bold),
     Paragraph("Made of external materials: wood, stones, metals, straws, arrows, etc. that forcefully enter the tissues.", bullet_style)],
]
types_table = Table(types_data, colWidths=[4.5*cm, 12.5*cm])
types_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (0,-1), LIGHT_TEAL),
    ("BACKGROUND", (1,0), (1,-1), colors.white),
    ("BOX", (0,0), (-1,-1), 0.8, DEEP_TEAL),
    ("INNERGRID", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
    ("TOPPADDING", (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING", (0,0), (-1,-1), 8),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(types_table)
story.append(Spacer(1, 0.3*cm))

# ---- DIAGNOSIS BLOCK ----
story.append(Paragraph("Diagnosis of Pranasta Shalya", section_style))
diag_rows = [
    ["Method", "Description"],
    ["1. History", "Weapon/object type, site of pricking pain, numbness, heaviness, tenderness. Symptoms during coughing, sneezing, belching, urination, defecation indicate FB at that site."],
    ["2. Physical / Local Examination", "Presence of inflammation, induration and tenderness at a site indicates retained shalya."],
    ["3. Specific Methods\n(Site-based)", "Skin: Apply ghrita or sandal paste - melts/dries where shalya is.\nMamsa: Oleation + fomentation - inflammation reveals location.\nSira/Dhamani/Snayu: Chariot ride on uneven road.\nBone/Joints: Oleation, fomentation, bandaging, firm pressure (pidana)."],
]
diag_table = Table(diag_rows, colWidths=[4.8*cm, 12.2*cm])
diag_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), SAFFRON),
    ("TEXTCOLOR", (0,0), (-1,0), colors.white),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,0), 10),
    ("BACKGROUND", (0,1), (0,-1), PALE_SAFFRON),
    ("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
    ("FONTSIZE", (0,1), (-1,-1), 9),
    ("BOX", (0,0), (-1,-1), 1, SAFFRON),
    ("INNERGRID", (0,0), (-1,-1), 0.5, colors.HexColor("#DDDDDD")),
    ("TOPPADDING", (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING", (0,0), (-1,-1), 8),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(diag_table)
story.append(Spacer(1, 0.4*cm))

# ---- 15 NIRHARANA UPAYA - MAIN TABLE ----
banner_data = [[Paragraph("15 Nirharana Upaya (Methods of Removal of Shalya)", chapter_style)]]
banner_table = Table(banner_data, colWidths=[17*cm])
banner_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), SAFFRON),
    ("TOPPADDING", (0,0), (-1,-1), 10),
    ("BOTTOMPADDING", (0,0), (-1,-1), 10),
    ("LEFTPADDING", (0,0), (-1,-1), 12),
]))
story.append(banner_table)
story.append(Spacer(1, 0.2*cm))

# Reference shloka
story.append(Paragraph(
    "Acarya Sushruta described these 15 methods for removal of Anavabaddha (non-embedded/loose) shalya. (Su.Su. 27/4)",
    ParagraphStyle("Ref", parent=styles["Normal"], fontSize=9, textColor=MID_GRAY,
                   fontName="Helvetica-Oblique", alignment=TA_CENTER, spaceAfter=8)
))

methods = [
    # No, Sanskrit Name, Meaning, Description, Key Example/Indication
    ("1", "Svabhava", "Natural Phenomenon",
     "Small shalya in external channels expelled through natural urges.",
     "Tear, sneezing, coughing, urine, feces, flatus"),
    ("2", "Pacana", "Suppuration",
     "Medicines applied to induce suppuration. As putrefaction occurs, the shalya comes out with the flow of pus and blood or by its own gravity.",
     "FB in muscle with no visible suppuration"),
    ("3", "Bhedana", "Incision",
     "In spite of suppuration, if the abscess does not burst spontaneously, it should be incised.",
     "Persistent non-rupturing abscess"),
    ("4", "Darana", "Application of Lepa",
     "Paste of darana group medicines applied. After splitting the skin, the shalya falls off. Used when patient is unfit for surgery.",
     "Patient unfit for surgical removal"),
    ("5", "Pidana", "Pressure / Squeezing",
     "(A) By hand: Shalya squeezed out through torn skin.\n(B) By medicines: Paste of pidana group medicines applied to expel devitalized tissue/FB.",
     "Superficial FB; devitalized tissue as FB"),
    ("6", "Pramarjana", "Wiping Off",
     "Very small foreign bodies, e.g., dust particles, straws, etc., wiped out from the wound with the help of hair or cloth.",
     "Dust, fine particles in wound"),
    ("7", "Nirdhmapana", "Blowing",
     "Medicated powder (e.g., kalphala) is blown into the nasal cavity, inducing sneezing, which results in expulsion of FB.",
     "Small FB in nasal cavity (wheat grain, maize, gram)"),
    ("8", "Vamana", "Emesis / Vomiting",
     "Denatured food particles or FB in the stomach expelled by induced vomiting. Fingers inserted into throat to induce emesis.",
     "FB / denatured food in stomach; stomach wash in poisoning"),
    ("9", "Virecana", "Purgation",
     "For retained feces in rectum as shalya with features of adhimana (abdominal fullness) and udavarta, purgation is given to expel via rectal route. CONTRAINDICATED in intestinal obstruction.",
     "Retained feces/flatus in rectum; NOT in intestinal obstruction"),
    ("10", "Praksalana", "Washing",
     "Small shalyas situated in the wound are washed out by decoction of sodhana (purifying) group of medicines.",
     "Tiny FB inside wounds"),
    ("11", "Pratimarsa", "Rubbing",
     "Shalya is evacuated after making it loose from its place by rubbing with the fingers.",
     "Dry fecal matter in rectum; stuck nasal scum; baby during delivery"),
    ("12", "Pravahana", "Straining",
     "Means straining or forcefully expelling the shalya out. Straining is advised in case of obstructed flatus, urine, feces and fetus.",
     "Obstructed flatus, urine, feces, or fetus"),
    ("13", "Acusana", "Sucking",
     "Sucking through the mouth or shringa (horn) is known as acusana. Gas, fluids, poisonous blood and vitiated breast milk are sucked out.",
     "Gas, toxic fluids, vitiated breast milk"),
    ("14", "Ayaskanta", "Magnet",
     "Small and visible shalyas made of iron should be expelled out with the help of a magnet.",
     "Iron foreign bodies - visible and accessible"),
    ("15", "Harsa", "Joy / Happiness",
     "Used for removal of mental shalya. Mental grief (shoka) caused by various factors, located in the heart as shalya, should be removed by creating joy or happiness.",
     "Mental/psychic shalya - grief, sorrow, sadness"),
]

header_row = [
    Paragraph("<b>No.</b>", ParagraphStyle("TH", parent=styles["Normal"], fontSize=9,
              textColor=colors.white, fontName="Helvetica-Bold", alignment=TA_CENTER)),
    Paragraph("<b>Sanskrit Name</b>", ParagraphStyle("TH", parent=styles["Normal"], fontSize=9,
              textColor=colors.white, fontName="Helvetica-Bold", alignment=TA_CENTER)),
    Paragraph("<b>Meaning</b>", ParagraphStyle("TH", parent=styles["Normal"], fontSize=9,
              textColor=colors.white, fontName="Helvetica-Bold", alignment=TA_CENTER)),
    Paragraph("<b>Description</b>", ParagraphStyle("TH", parent=styles["Normal"], fontSize=9,
              textColor=colors.white, fontName="Helvetica-Bold", alignment=TA_CENTER)),
    Paragraph("<b>Key Indication / Example</b>", ParagraphStyle("TH", parent=styles["Normal"], fontSize=9,
              textColor=colors.white, fontName="Helvetica-Bold", alignment=TA_CENTER)),
]

table_rows = [header_row]
alt = False
for m in methods:
    bg = colors.HexColor("#F0FBF7") if not alt else colors.white
    alt = not alt
    row = [
        Paragraph(f"<b>{m[0]}</b>", ParagraphStyle("Num", parent=styles["Normal"], fontSize=11,
                  textColor=SAFFRON, fontName="Helvetica-Bold", alignment=TA_CENTER)),
        Paragraph(f"<b>{m[1]}</b>", ParagraphStyle("SN", parent=styles["Normal"], fontSize=9.5,
                  textColor=DEEP_TEAL, fontName="Helvetica-Bold")),
        Paragraph(m[2], ParagraphStyle("Mn", parent=styles["Normal"], fontSize=9,
                  textColor=MID_GRAY, fontName="Helvetica-Oblique")),
        Paragraph(m[3], ParagraphStyle("Desc", parent=styles["Normal"], fontSize=9,
                  textColor=DARK_GRAY, fontName="Helvetica", leading=13)),
        Paragraph(m[4], ParagraphStyle("Ind", parent=styles["Normal"], fontSize=8.5,
                  textColor=colors.HexColor("#4A4A4A"), fontName="Helvetica", leading=12)),
    ]
    table_rows.append(row)

main_table = Table(table_rows, colWidths=[1.1*cm, 2.8*cm, 2.8*cm, 6.5*cm, 3.8*cm])
main_table.setStyle(TableStyle([
    # Header
    ("BACKGROUND", (0,0), (-1,0), DEEP_TEAL),
    ("TEXTCOLOR", (0,0), (-1,0), colors.white),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,0), 9),
    ("ALIGN", (0,0), (-1,0), "CENTER"),
    ("VALIGN", (0,0), (-1,0), "MIDDLE"),
    ("TOPPADDING", (0,0), (-1,0), 8),
    ("BOTTOMPADDING", (0,0), (-1,0), 8),
    # Alternating rows
    ("BACKGROUND", (0,1), (-1,1), colors.HexColor("#E8F6F3")),
    ("BACKGROUND", (0,2), (-1,2), colors.white),
    ("BACKGROUND", (0,3), (-1,3), colors.HexColor("#E8F6F3")),
    ("BACKGROUND", (0,4), (-1,4), colors.white),
    ("BACKGROUND", (0,5), (-1,5), colors.HexColor("#E8F6F3")),
    ("BACKGROUND", (0,6), (-1,6), colors.white),
    ("BACKGROUND", (0,7), (-1,7), colors.HexColor("#E8F6F3")),
    ("BACKGROUND", (0,8), (-1,8), colors.white),
    ("BACKGROUND", (0,9), (-1,9), colors.HexColor("#E8F6F3")),
    ("BACKGROUND", (0,10), (-1,10), colors.white),
    ("BACKGROUND", (0,11), (-1,11), colors.HexColor("#E8F6F3")),
    ("BACKGROUND", (0,12), (-1,12), colors.white),
    ("BACKGROUND", (0,13), (-1,13), colors.HexColor("#E8F6F3")),
    ("BACKGROUND", (0,14), (-1,14), colors.white),
    ("BACKGROUND", (0,15), (-1,15), colors.HexColor("#E8F6F3")),
    # Grid
    ("BOX", (0,0), (-1,-1), 1.2, DEEP_TEAL),
    ("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
    # Padding
    ("TOPPADDING", (0,1), (-1,-1), 5),
    ("BOTTOMPADDING", (0,1), (-1,-1), 5),
    ("LEFTPADDING", (0,0), (-1,-1), 6),
    ("RIGHTPADDING", (0,0), (-1,-1), 6),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ALIGN", (0,1), (0,-1), "CENTER"),
    ("VALIGN", (0,1), (0,-1), "MIDDLE"),
]))
story.append(main_table)
story.append(Spacer(1, 0.5*cm))

# ---- EXTRACTION METHODS BLOCK ----
ext_banner = [[Paragraph("Methods of Extraction Based on Direction", chapter_style)]]
ext_banner_t = Table(ext_banner, colWidths=[17*cm])
ext_banner_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), DEEP_TEAL),
    ("TOPPADDING", (0,0), (-1,-1), 8),
    ("BOTTOMPADDING", (0,0), (-1,-1), 8),
    ("LEFTPADDING", (0,0), (-1,-1), 12),
]))
story.append(ext_banner_t)
story.append(Spacer(1, 0.2*cm))

ext_rows = [
    [Paragraph("<b>Method</b>", small_bold), Paragraph("<b>Description</b>", small_bold), Paragraph("<b>Indication</b>", small_bold)],
    [Paragraph("<b>Pratiloma</b>\n(Extraction in opposite direction)", ParagraphStyle("PN", parent=styles["Normal"], fontSize=9.5, textColor=SAFFRON, fontName="Helvetica-Bold", leading=13)),
     Paragraph("Shalya extracted through the wound entrance - the same way it entered.", body_style),
     Paragraph("Shalyas NOT deeply embedded. Also used for shalya in kukshi (abdomen), vaksa (thorax), kaksa (axilla), vankshana (groin) and intercostal spaces.", bullet_style)],
    [Paragraph("<b>Anuloma</b>\n(Extraction in same direction of entry)", ParagraphStyle("AN", parent=styles["Normal"], fontSize=9.5, textColor=SAFFRON, fontName="Helvetica-Bold", leading=13)),
     Paragraph("Shalya extracted from the opposite side to its entrance, in the direction of its entry.", body_style),
     Paragraph("Shalyas deeply embedded in tissues.", bullet_style)],
]
ext_table = Table(ext_rows, colWidths=[3.8*cm, 7*cm, 6.2*cm])
ext_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), SAFFRON),
    ("TEXTCOLOR", (0,0), (-1,0), colors.white),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 9),
    ("BOX", (0,0), (-1,-1), 1, SAFFRON),
    ("INNERGRID", (0,0), (-1,-1), 0.5, colors.HexColor("#DDDDDD")),
    ("BACKGROUND", (0,1), (-1,1), PALE_SAFFRON),
    ("BACKGROUND", (0,2), (-1,2), colors.white),
    ("TOPPADDING", (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING", (0,0), (-1,-1), 8),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(ext_table)
story.append(Spacer(1, 0.4*cm))

# ---- INSTRUMENTS ----
story.append(Paragraph("Instruments for Extraction", section_style))
instr_data = [
    [Paragraph("<b>Simhamukha Yantra</b>", small_bold),
     Paragraph("Used for visible shalya (foreign bodies) in superficial structures.", bullet_style)],
    [Paragraph("<b>Kankamukha Yantra</b>", small_bold),
     Paragraph("Used for shalya located in deeper structures.", bullet_style)],
    [Paragraph("<b>Shalaka (rod)</b>", small_bold),
     Paragraph("Used to free shalya entrapped by vessels (sira) and ligaments (snayu).", bullet_style)],
]
instr_table = Table(instr_data, colWidths=[5*cm, 12*cm])
instr_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (0,-1), LIGHT_TEAL),
    ("BACKGROUND", (1,0), (1,-1), colors.white),
    ("BOX", (0,0), (-1,-1), 0.8, DEEP_TEAL),
    ("INNERGRID", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
    ("TOPPADDING", (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING", (0,0), (-1,-1), 8),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(instr_table)
story.append(Spacer(1, 0.4*cm))

# ---- COMPLICATIONS ----
story.append(Paragraph("Complications if Shalya is Not Removed", section_style))
story.append(Paragraph(
    "\"Shotha-paka-rujashchograah kuryaacchhalyamnaahritam | Vaikalam maranam chaapi "
    "tasmaadyatlaadinirharet\" (Su.Su. 27/26)",
    shloka_style
))
comp_data = [
    ["Sotha", "Inflammation"],
    ["Paka", "Suppuration"],
    ["Vaikalya", "Deformity"],
    ["Severe Pain", "Intense, unrelenting pain at site"],
    ["Marana", "Death (in severe cases)"],
]
comp_table = Table(comp_data, colWidths=[4*cm, 13*cm])
comp_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (0,-1), PALE_SAFFRON),
    ("FONTNAME", (0,0), (0,-1), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 9),
    ("BOX", (0,0), (-1,-1), 1, SAFFRON),
    ("INNERGRID", (0,0), (-1,-1), 0.5, colors.HexColor("#DDDDDD")),
    ("TOPPADDING", (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING", (0,0), (-1,-1), 10),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(comp_table)
story.append(Spacer(1, 0.4*cm))

# ---- NISHALYA FEATURES ----
story.append(Paragraph("Features of Nishalya (Successful Removal - Free from FB)", section_style))
nishalya = [
    "Very mild pain",
    "Absence of inflammation",
    "No painful movements of the affected part",
    "No further complications",
    "Patient looks happy",
    "Wound margins are neither hard nor elevated",
    "Examination with a probe cannot detect any part of shalya",
    "Unrestricted extension and flexion of the neighbouring joints",
]
for item in nishalya:
    story.append(Paragraph(f"• {item}", bullet_style))
story.append(Spacer(1, 0.4*cm))

# ---- QUICK RECALL BOX ----
recall_banner = [[Paragraph("Quick Recall: The 15 Methods at a Glance", chapter_style)]]
recall_banner_t = Table(recall_banner, colWidths=[17*cm])
recall_banner_t.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), GOLD),
    ("TOPPADDING", (0,0), (-1,-1), 8),
    ("BOTTOMPADDING", (0,0), (-1,-1), 8),
    ("LEFTPADDING", (0,0), (-1,-1), 12),
]))
story.append(recall_banner_t)
story.append(Spacer(1, 0.2*cm))

# Mnemonic-style 3-column layout
recall_items = [
    ("1", "Svabhava", "Natural expulsion"),
    ("2", "Pacana", "Suppuration"),
    ("3", "Bhedana", "Incision"),
    ("4", "Darana", "Lepa/Paste"),
    ("5", "Pidana", "Squeezing"),
    ("6", "Pramarjana", "Wiping"),
    ("7", "Nirdhmapana", "Blowing"),
    ("8", "Vamana", "Emesis"),
    ("9", "Virecana", "Purgation"),
    ("10", "Praksalana", "Washing"),
    ("11", "Pratimarsa", "Rubbing"),
    ("12", "Pravahana", "Straining"),
    ("13", "Acusana", "Sucking"),
    ("14", "Ayaskanta", "Magnet"),
    ("15", "Harsa", "Joy/Happiness"),
]

recall_rows = []
# 5 rows x 3 columns (each column has No + Name + Meaning)
for i in range(0, 15, 3):
    row = []
    for j in range(3):
        if i + j < 15:
            it = recall_items[i+j]
            row.append(Paragraph(
                f"<b>{it[0]}. {it[1]}</b><br/><font size='8' color='#555555'>{it[2]}</font>",
                ParagraphStyle("RC", parent=styles["Normal"], fontSize=9.5, fontName="Helvetica-Bold",
                               textColor=DEEP_TEAL, leading=14, alignment=TA_CENTER)
            ))
        else:
            row.append(Paragraph("", body_style))
    recall_rows.append(row)

recall_table = Table(recall_rows, colWidths=[5.67*cm, 5.67*cm, 5.67*cm])
recall_table.setStyle(TableStyle([
    ("BOX", (0,0), (-1,-1), 1, GOLD),
    ("INNERGRID", (0,0), (-1,-1), 0.5, colors.HexColor("#E0D0A0")),
    ("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#FFFBEE")),
    ("TOPPADDING", (0,0), (-1,-1), 8),
    ("BOTTOMPADDING", (0,0), (-1,-1), 8),
    ("ALIGN", (0,0), (-1,-1), "CENTER"),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(recall_table)
story.append(Spacer(1, 0.5*cm))

# ---- FOOTER ----
story.append(HRFlowable(width="100%", thickness=1, color=DEEP_TEAL))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph(
    "Pranasta Shalya Study Guide | Based on Shalya Vijnana (Illustrated) | Reference: Su.Su. 26-27 | For University Revision",
    footer_style
))

# ---- BUILD ----
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /home/daytona/workspace && python pranasta_shalya_pdf.py

Running Command

ls -lh /home/daytona/workspace/Pranasta_Shalya_Study_Guide.pdf

Your PDF study guide is ready! Download it here:

Pranasta Shalya Study Guide

PDF Document · PDF


Here is what the guide contains, section by section:
1. Cover Banner - Title in deep teal with gold subtitle (Pranasta Shalya + Nirharana Upaya)
2. Definition - Etymology of shalya with the Sanskrit shloka from Dalhana (Su.Su. 26/3)
3. Types of Shalya - Sharirika (endogenous) vs Agantuja (exogenous) in a two-column table
4. Diagnosis - All 3 methods: History, Physical examination, and site-specific Specific Methods (skin, mamsa, sira/snayu, bone, joints)
5. All 15 Nirharana Upaya - Main Table - Full 5-column table with:
  • Number | Sanskrit Name | Meaning | Detailed Description | Key Indication/Example
  • Reference shloka (Su.Su. 27/4) included
6. Extraction Direction Methods - Pratiloma vs Anuloma with indications
7. Instruments - Simhamukha yantra, Kankamukha yantra, Shalaka (rod)
8. Complications - Sotha, Paka, Vaikalya, Pain, Marana with Sanskrit shloka (Su.Su. 27/26)
9. Nishalya Features - 8 signs confirming successful removal
10. Quick Recall Grid - All 15 methods in a compact 3-column grid for last-minute revision
This is a shared conversation. Sign in to Orris to start your own chat.