Stanya Vigyana - Lactation a. Stanya, Stanya Sampat. b. Physiology of Lactation, Breast feeding techniques. c. Stanya dushti, Stana Shotha, Stana Vidradhi. d. Mastitis, Breast abscess. Diagnose Breast Engorgement, Mastitis, Breast abscess. Explain causes,clinical features,investigations and management of mastitis and breast abscess. Elaborate Stana Roga - Stana Keelaka, Stana Granthi and Stanarbuda with Nidana, Samprapti, Lakshana and Chikitsa. Describe causative factors, etiopathogenesis, clinical features, investigations, complications and management of Mastalgia, Fibroadenoma, Carcinoma breast. Demonstrate Self Breast examination Illustrate Investigations in diseases of Breast - 1. Sono- mammogram 2. Fine Needle Aspiration Cytology (FNAC)3. Biopsy Diagnose and manage Fibroadenoma Breast Diagnose Breast carcinoma needed in very big fonts because I can't see when I take Xerox Pdf
mkdir -p /home/daytona/workspace/stanya-vigyana && ls /home/daytona/workspace/
~/stanya-vigyana/create_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak,
HRFlowable
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import KeepTogether
# ── Output path ──────────────────────────────────────────────────────────────
OUTPUT = "/home/daytona/workspace/stanya-vigyana/Stanya_Vigyana_Lactation.pdf"
# ── Document ─────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm,
rightMargin=2*cm,
topMargin=2*cm,
bottomMargin=2*cm,
)
# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
W = A4[0] - 4*cm # usable width
# ── Custom style factory (all defined up-front) ───────────────────────────
TITLE = ParagraphStyle(
"TITLE",
fontName="Helvetica-Bold",
fontSize=26,
textColor=colors.HexColor("#1a237e"),
spaceAfter=10,
alignment=TA_CENTER,
leading=32,
)
SUBTITLE = ParagraphStyle(
"SUBTITLE",
fontName="Helvetica-Bold",
fontSize=20,
textColor=colors.HexColor("#283593"),
spaceAfter=8,
alignment=TA_CENTER,
leading=26,
)
H1 = ParagraphStyle(
"H1",
fontName="Helvetica-Bold",
fontSize=22,
textColor=colors.HexColor("#b71c1c"),
spaceBefore=18,
spaceAfter=8,
leading=28,
)
H2 = ParagraphStyle(
"H2",
fontName="Helvetica-Bold",
fontSize=19,
textColor=colors.HexColor("#1565c0"),
spaceBefore=14,
spaceAfter=6,
leading=24,
)
H3 = ParagraphStyle(
"H3",
fontName="Helvetica-Bold",
fontSize=17,
textColor=colors.HexColor("#2e7d32"),
spaceBefore=10,
spaceAfter=5,
leading=22,
)
BODY = ParagraphStyle(
"BODY",
fontName="Helvetica",
fontSize=15,
spaceAfter=6,
leading=22,
alignment=TA_JUSTIFY,
)
BULLET = ParagraphStyle(
"BULLET",
fontName="Helvetica",
fontSize=15,
spaceAfter=5,
leading=22,
leftIndent=20,
bulletIndent=0,
)
BOLD = ParagraphStyle(
"BOLD",
fontName="Helvetica-Bold",
fontSize=15,
spaceAfter=5,
leading=22,
)
NOTE = ParagraphStyle(
"NOTE",
fontName="Helvetica-Oblique",
fontSize=14,
textColor=colors.HexColor("#4a148c"),
spaceAfter=5,
leading=20,
)
def hr():
return HRFlowable(width="100%", thickness=1.5, color=colors.HexColor("#90caf9"), spaceAfter=6)
def h1(txt): return Paragraph(txt, H1)
def h2(txt): return Paragraph(txt, H2)
def h3(txt): return Paragraph(txt, H3)
def p(txt): return Paragraph(txt, BODY)
def b(txt): return Paragraph(txt, BOLD)
def n(txt): return Paragraph(txt, NOTE)
def sp(h=8): return Spacer(1, h)
def bul(items):
return [Paragraph(f"• {i}", BULLET) for i in items]
# ────────────────────────────────────────────────────────────────────────────
story = []
# ── Cover ────────────────────────────────────────────────────────────────────
story += [
sp(40),
Paragraph("STANYA VIGYANA", TITLE),
Paragraph("Lactation & Breast Diseases", SUBTITLE),
sp(12),
Paragraph("Comprehensive Study Notes", ParagraphStyle(
"cov", fontName="Helvetica", fontSize=17, alignment=TA_CENTER, textColor=colors.gray)),
sp(6),
Paragraph("Ayurveda + Modern Medicine Integration", ParagraphStyle(
"cov2", fontName="Helvetica-BoldOblique", fontSize=16, alignment=TA_CENTER,
textColor=colors.HexColor("#00695c"))),
sp(30),
Paragraph("LARGE PRINT EDITION", ParagraphStyle(
"lp", fontName="Helvetica-Bold", fontSize=18, alignment=TA_CENTER,
textColor=colors.HexColor("#b71c1c"))),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# SECTION A – STANYA & STANYA SAMPAT (Ayurveda)
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("SECTION A: STANYA & STANYA SAMPAT"), hr(),
h2("1. STANYA (Breast Milk — Ayurvedic Concept)"),
p("Stanya is the Sanskrit term for breast milk (human milk). According to Ayurveda, Stanya "
"is considered an Upadhatu (secondary tissue) derived from Rasa Dhatu (the primary "
"nutritional fluid). It is formed by the action of Rasa Dhatu undergoing specific "
"transformation (Paka) under the influence of Stanya Vaha Srotas."),
h3("Origin of Stanya:"),
*bul([
"Stanya originates from Rasa Dhatu — the first Dhatu in the chain of seven Dhatus.",
"The channels carrying breast milk are called Stanya Vaha Srotas.",
"The Mula (root/origin) of Stanya Vaha Srotas is Stana (breast) and Hridaya (heart/chest region).",
"Stanya is vitiated by the Doshas of the mother and the wet nurse.",
"Acharya Charaka describes Stanya as 'the first ahara (food) for the newborn'.",
]),
h3("Properties of Ideal Stanya:"),
*bul([
"Shweta (white in color) — like diluted conch powder",
"Madhura (sweet in taste)",
"Guru (slightly heavy)",
"Snigdha (unctuous/oily)",
"Does not discolor water (Jala Shuddhi Test — pure milk sinks evenly in water)",
"Should not have any foul smell (Nirghrana)",
"Should be Tridoshahara — pacifying all three Doshas in the infant",
]),
sp(),
h2("2. STANYA SAMPAT (Quality/Excellence of Breast Milk)"),
p("Stanya Sampat means the ideal or excellent quality of breast milk. A nursing mother with "
"Stanya Sampat produces milk that fulfills all nutritional and medicinal requirements of "
"the newborn."),
h3("Characteristics of Stanya Sampat:"),
*bul([
"Avinashinya — imperishable / does not decay quickly",
"Avyapaditha — not vitiated by any disease",
"Tridosha Shamaka — pacifies all three Doshas",
"Promotes proper growth, strength, complexion, and intellect of the infant",
"Free from foul odor, abnormal color, taste, or consistency",
"Properly nourishes all the Saptadhatus (seven tissues) of the infant",
]),
h3("Methods to Examine Stanya (Stanya Pariksha):"),
*bul([
"Jala Pariksha: Drop of milk in water — pure milk disperses evenly (not float/sink quickly)",
"Color: Shweta (white), not yellowish or bluish",
"Smell: Should be pleasant, not foul or pungent",
"Taste: Madhura (sweet), not bitter or sour",
"Consistency: Neither too thick nor too thin",
]),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# SECTION B – PHYSIOLOGY OF LACTATION & BREASTFEEDING TECHNIQUES
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("SECTION B: PHYSIOLOGY OF LACTATION & BREASTFEEDING TECHNIQUES"), hr(),
h2("1. ANATOMY OF THE BREAST"),
p("The breast (mammary gland) is a modified apocrine sweat gland. It consists of:"),
*bul([
"15-20 lobes arranged radially around the nipple",
"Each lobe drains via a lactiferous duct opening at the nipple",
"Lactiferous sinuses (ampullae) present below the areola",
"Alveoli — functional milk-secreting units surrounded by myoepithelial cells",
"Cooper's ligaments — fibrous septa suspending the breast",
"Rich lymphatic drainage mainly to axillary lymph nodes (75%)",
]),
h2("2. PHYSIOLOGY OF LACTATION"),
h3("A. Mammogenesis (Breast Development):"),
*bul([
"Estrogen: promotes ductal growth",
"Progesterone: promotes lobulo-alveolar development",
"Prolactin, Insulin, Cortisol, Growth Hormone: aid alveolar development",
"During pregnancy: high estrogen + progesterone INHIBIT actual milk secretion",
]),
h3("B. Lactogenesis (Milk Production — 2 Stages):"),
*bul([
"Stage I (Mid-pregnancy): Colostrum production begins around 16-22 weeks of gestation",
"Stage II (2-3 days postpartum): Onset of copious milk secretion — triggered by fall in "
"estrogen and progesterone after delivery of placenta",
"Prolactin rises sharply — primary driver of milk synthesis",
"Insulin, cortisol, thyroid hormone are permissive hormones",
]),
h3("C. Galactopoiesis (Maintenance of Milk Supply):"),
*bul([
"Maintained by continued suckling (infant demand)",
"Suckling stimulates afferent nerve impulses → hypothalamus → anterior pituitary → Prolactin secretion",
"Prolactin acts on alveolar epithelial cells to synthesize milk proteins, fats, lactose",
"Feedback Inhibitor of Lactation (FIL): a whey protein in milk that inhibits further production "
"if milk is not removed (autocrine control)",
"The more frequently milk is removed, the more milk is produced",
]),
h3("D. Let-Down Reflex (Milk Ejection Reflex):"),
*bul([
"Suckling → sensory impulses → hypothalamus → posterior pituitary → Oxytocin release",
"Oxytocin causes contraction of myoepithelial cells surrounding alveoli",
"Milk is ejected from alveoli → ducts → lactiferous sinuses → nipple",
"Let-down can be conditioned: hearing baby cry, seeing baby, or thinking about baby",
"Inhibited by: stress, pain, embarrassment, alcohol, smoking",
"Also: Oxytocin causes uterine contractions → afterpains in early postpartum",
]),
h3("E. Composition of Breast Milk:"),
*bul([
"Colostrum (Day 1-3): Yellow, thick, rich in IgA, leukocytes, growth factors, vitamins A and K. "
"Low in fat and lactose. Provides passive immunity.",
"Transitional Milk (Day 4-14): Increasing fat and lactose content",
"Mature Milk (after Day 14): 87% water, 3.5-4% fat, 0.9% protein, 7% lactose, 0.2% minerals",
"Foremilk: watery, low fat, quenches thirst",
"Hindmilk: rich in fat, provides satiety and calories",
"Contains: IgA, IgG, IgM, lysozyme, lactoferrin, macrophages — immune protection",
]),
h2("3. BREASTFEEDING TECHNIQUES"),
h3("Correct Position and Latch-On:"),
*bul([
"Baby's entire body should face the mother (tummy to tummy)",
"Baby's head, neck, and trunk should be in a straight line",
"Bring baby to breast — NOT breast to baby",
"Baby's mouth should cover most of the areola (not just the nipple) — deep latch",
"Baby's lips should be flanged outward (fish lips appearance)",
"Chin touching the breast, nose free to breathe",
"Cheeks rounded, not sucked in",
]),
h3("Breastfeeding Positions:"),
*bul([
"Cradle hold: Baby's head rests in the crook of mother's elbow — most common",
"Cross-cradle hold: Mother's opposite hand supports baby's head — good for newborns",
"Football/Clutch hold: Baby tucked under arm like a football — good after C-section",
"Side-lying position: Both mother and baby lie on their sides — good at night",
"Laid-back/Biological nurturing: Mother reclines, baby lies prone on mother's chest",
]),
h3("Signs of Effective Breastfeeding:"),
*bul([
"Baby feeds 8-12 times per 24 hours (demand feeding)",
"Audible swallowing",
"Breast feels softer after feeding",
"Baby is content after feeds",
"Adequate wet diapers: 6+ wet diapers/day after Day 5",
"Adequate weight gain: 150-200 g/week after initial 10% loss in first week",
"Mother feels let-down sensation",
]),
h3("WHO Recommendations:"),
*bul([
"Exclusive breastfeeding for first 6 months of life",
"Complementary feeding introduced at 6 months",
"Breastfeeding continued up to 2 years or beyond",
"Initiate breastfeeding within 1 hour of birth",
"Skin-to-skin contact immediately after birth",
"No water, glucose, or formula unless medically indicated",
]),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# SECTION C – STANYA DUSHTI, STANA SHOTHA, STANA VIDRADHI (Ayurveda)
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("SECTION C: STANYA DUSHTI, STANA SHOTHA & STANA VIDRADHI"), hr(),
h2("1. STANYA DUSHTI (Vitiation of Breast Milk)"),
p("Stanya Dushti refers to the qualitative and quantitative abnormalities of breast milk "
"caused by vitiation of Doshas in the mother. Acharya Charaka describes Stanya Dushti "
"in Kiyanta Shiraseeya and Stanya Adhyaya."),
h3("Causes (Nidana) of Stanya Dushti:"),
*bul([
"Aharaja (Dietary): Excessive intake of Guru (heavy), Ushna (hot), Vidahi (acrid), "
"Amla (sour), Lavana (salty) foods",
"Viharaja (Lifestyle): Excess anger, grief, excessive exercise, day sleep",
"Manasika: Krodha (anger), Shoka (grief), Bhaya (fear), Chinta (anxiety)",
"Diseases of the mother affecting Rasa Dhatu",
]),
h3("Types of Stanya Dushti based on Dosha:"),
*bul([
"Vataja Stanya Dushti: Thin, foamy, astringent taste; causes Vata disorders in infant "
"(constipation, crying, disturbed sleep)",
"Pittaja Stanya Dushti: Yellow/blue color, bitter/sour taste, foul smell; "
"causes Pitta disorders in infant (fever, jaundice, diarrhea)",
"Kaphaja Stanya Dushti: White, slimy, sweet, heavy; causes Kapha disorders in infant "
"(drowsiness, excess secretions, cough, cold)",
"Sannipataja: Features of all three Doshas combined",
"Dushta Stanya (severely vitiated): May cause death of infant",
]),
h3("Management (Chikitsa) of Stanya Dushti:"),
*bul([
"Treat the mother's Dosha imbalance with appropriate Shodhana or Shamana",
"Vataja: Sneha (oleation), Basti (medicated enema)",
"Pittaja: Virechana (purgation), cooling foods, Shatavari",
"Kaphaja: Langhana, Deepana-Pachana drugs",
"Stanya Shodhana drugs: Shatavari, Bala, Vidari, Yashtimadhu",
"Avoid causative dietary and lifestyle factors",
"Dhatri Pariksha (examination of wet nurse) before employment",
]),
h2("2. STANA SHOTHA (Breast Swelling/Inflammation)"),
p("Stana Shotha refers to inflammatory swelling of the breast. It is equivalent to Mastitis "
"in modern medicine."),
h3("Nidana (Causes):"),
*bul([
"Abhighata (trauma) to the breast",
"Stanya Sanga (milk stasis/engorgement)",
"Infection entering through cracked nipples",
"Improper breastfeeding technique",
"Dosha vitiation in Stanya Vaha Srotas",
]),
h3("Lakshana (Features):"),
*bul([
"Shotha (swelling)", "Raga (redness)", "Daha (burning)",
"Vedana (pain)", "Fever", "Heaviness of breast",
"Tridoshaja features depending on predominant Dosha",
]),
h3("Chikitsa (Management):"),
*bul([
"Vataja: Snehana, Swedana, Basti",
"Pittaja: Lepa (paste) with cooling herbs, Virechana",
"Kaphaja: Ruksha Sweda, Shodhana",
"External: Lepa of Haridradi churna, Eranda patra Sweda",
"Internal: Guggulu preparations, Triphala, Guduchi",
"Empty breast regularly — continue breastfeeding if possible",
]),
h2("3. STANA VIDRADHI (Breast Abscess)"),
p("Stana Vidradhi is the Ayurvedic equivalent of breast abscess — a collection of pus "
"within the breast tissue. It is a complication of untreated Stana Shotha."),
h3("Nidana:"),
*bul([
"Progressed/untreated Stana Shotha",
"Abhighata (injury)", "Infection", "Immunocompromised state",
]),
h3("Samprapti (Pathogenesis):"),
p("Dosha vitiation → Stana Shotha (inflammation) → Paka (suppuration) → Vidradhi (abscess) "
"formation. Tridosha involvement leads to pus formation (Paka) within breast tissue."),
h3("Lakshana (Features):"),
*bul([
"Sphurana (throbbing pain)", "Paka (suppuration — pointing abscess)",
"Jwara (fever)", "Daha (burning)", "Fluctuation on palpation",
"Purulent discharge if ruptured",
]),
h3("Chikitsa:"),
*bul([
"If Vidradhi is immature (Apakva): Pachana therapy — Triphala, Guduchi, Nimba",
"If mature (Pakva): Shastra Karma (incision and drainage)",
"Ksharasutra or Shastra for drainage",
"Vrana Ropana (wound healing) drugs: Madhu, Ghrita, Triphala lepa",
"Deepana-Pachana after drainage",
"Antibiotics (modern adjunct)",
]),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# SECTION D – BREAST ENGORGEMENT, MASTITIS, BREAST ABSCESS (Modern)
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("SECTION D: DIAGNOSIS — BREAST ENGORGEMENT, MASTITIS & BREAST ABSCESS"), hr(),
h2("DIFFERENTIAL DIAGNOSIS TABLE"),
]
data = [
["Feature", "Breast Engorgement", "Mastitis", "Breast Abscess"],
["Timing", "Day 3-5 postpartum", "Week 2-3 postpartum", "Complication of mastitis"],
["Pain", "Bilateral, diffuse", "Unilateral, localized", "Severe, localized, throbbing"],
["Swelling", "Bilateral, hard", "Unilateral, indurated", "Fluctuant lump"],
["Skin", "Tense, shiny", "Red, warm, erythematous", "Red, edematous, thin"],
["Fever", "Low grade / none", "High (>38.5°C) + chills + myalgia", "High, persistent"],
["WBC", "Normal", "Elevated (>10,000)", "Markedly elevated"],
["Bacteria", "Absent", "Present (milk culture)", "Present in pus"],
["Ultrasound", "No collection", "No discrete collection", "Hypoechoic fluid collection"],
["Treatment", "Frequent feeding + massage", "Antibiotics + emptying breast", "Drainage + antibiotics"],
]
t = Table(data, colWidths=[2.8*cm, 3.5*cm, 3.8*cm, 3.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), colors.HexColor("#1565c0")),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, -1), 12),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.HexColor("#e3f2fd"), colors.white]),
("GRID", (0, 0), (-1, -1), 0.5, colors.HexColor("#90caf9")),
("VALIGN", (0, 0), (-1, -1), "TOP"),
("PADDING", (0, 0), (-1, -1), 6),
("FONTNAME", (0, 1), (0, -1), "Helvetica-Bold"),
]))
story += [t, sp(10)]
story += [
h2("1. BREAST ENGORGEMENT"),
h3("Definition:"),
p("Bilateral painful engorgement of breasts due to milk stasis, usually occurring on "
"Day 3-5 postpartum when milk 'comes in'."),
h3("Causes:"),
*bul([
"Inadequate milk removal", "Infant separation", "Delayed initiation of breastfeeding",
"Poor latch", "Restricted feeding frequency", "Sudden weaning",
]),
h3("Clinical Features:"),
*bul([
"Bilateral breast fullness, hardness, and swelling",
"Generalized breast pain and heaviness",
"Skin appears tense and shiny",
"Nipple becomes flat and difficult to latch onto",
"Low-grade fever and mild malaise (within 24 hours)",
"Nausea may accompany severe engorgement",
]),
h3("Management:"),
*bul([
"Frequent, on-demand feeding (8-12 times/24 hours)",
"Ensure proper latch — may need to soften areola first (Reverse Pressure Softening technique)",
"Manual expression or breast pump before feeding if nipple is flat",
"Warm compress/warm shower before feeding to aid let-down",
"Cold packs between feedings to reduce edema",
"NSAIDs (Ibuprofen) for pain",
"Cabbage leaf compresses (evidence-limited but widely used)",
"Avoid tight bras; use supportive soft bra",
"If baby cannot latch: express milk regularly to prevent progression to mastitis",
]),
PageBreak(),
h2("2. MASTITIS"),
h3("Definition:"),
p("Mastitis is inflammation of the breast tissue, usually infectious, most commonly "
"occurring in the first 1-3 months postpartum (puerperal mastitis) or non-lactational."),
h3("Incidence:"),
*bul([
"Occurs in 2-10% of breastfeeding women",
"Most common in the second postpartum week",
"Staphylococcus aureus is the causative organism in ~40% of cases",
"MRSA: increasing cause — must be considered in community-acquired cases",
"Other organisms: E. coli, Streptococcus species",
]),
h3("Etiopathogenesis:"),
*bul([
"Milk stasis → bacterial growth in stagnant milk",
"Cracked/fissured nipple → retrograde bacterial invasion",
"Bacteria enter milk ducts from infant's oropharynx or skin",
"Blocked ducts → plug of inspissated milk → inflammation",
"Non-lactational mastitis: periductal mastitis (smoking), idiopathic granulomatous mastitis",
]),
h3("Clinical Features:"),
*bul([
"Sudden onset of severe pain, tenderness in one area of breast",
"Breast swelling, redness (erythema), warmth",
"Skin induration — area of firm, indurated, brawny swelling",
"High fever (>38.5°C/101°F), rigors, chills",
"Myalgia, headache, flu-like symptoms",
"Unilateral (usually one breast), one quadrant most often affected",
"Axillary lymph node enlargement may occur",
"Milk may have salty taste or infant may refuse to feed",
]),
h3("Investigations:"),
*bul([
"Milk culture and sensitivity — to guide antibiotic therapy (especially if not responding)",
"CBC: leukocytosis (WBC >10,000/mm³)",
"CRP/ESR: elevated",
"Breast ultrasound: no discrete fluid collection in mastitis (hypoechoic fluid "
"surrounding fat lobules without cavity — Fig. 104-1 in Tintinalli)",
"If not resolving in 48-72 hours: Rule out abscess and inflammatory carcinoma",
"Mammogram if inflammatory carcinoma suspected",
]),
h3("Complications:"),
*bul([
"Breast abscess (3% of cases)", "Septicemia", "Recurrent mastitis",
"Galactocele", "Milk fistula after drainage", "Premature weaning",
]),
h3("Management:"),
*bul([
"CONTINUE BREASTFEEDING — do not stop; milk removal is therapeutic",
"Antibiotics: Dicloxacillin or Flucloxacillin 500 mg QID x 10-14 days (first line)",
"Cephalexin 500 mg QID x 10-14 days (alternative)",
"If MRSA suspected: Trimethoprim-Sulfamethoxazole (avoid if infant <2 months) or Clindamycin",
"NSAIDs (Ibuprofen 400 mg TDS) — analgesia + anti-inflammatory",
"Frequent milk removal: feeding or pumping every 2-3 hours",
"Warm compress before feeding, cold pack between feeds",
"Increase oral fluids and rest",
"If not improving in 48-72 hours → ultrasound to rule out abscess",
"Failure to improve → consider inflammatory carcinoma → refer breast surgeon",
]),
PageBreak(),
h2("3. BREAST ABSCESS"),
h3("Definition:"),
p("Breast abscess is a loculated collection of pus within the breast parenchyma, "
"usually occurring as a complication of mastitis (~3% of mastitis cases)."),
h3("Types:"),
*bul([
"Lactational (Puerperal) breast abscess — most common; young lactating women",
"Non-lactational breast abscess — older women; periductal, subareolar",
"Subareolar abscess in smokers — squamous metaplasia of lactiferous ducts",
"Peripheral/Intramammary abscess",
]),
h3("Causes:"),
*bul([
"Untreated or inadequately treated mastitis",
"Delay in seeking treatment", "Antibiotic resistance (MRSA)",
"Diabetes mellitus — impaired immunity",
"Immunocompromised states", "Trauma to breast",
]),
h3("Clinical Features:"),
*bul([
"Localized, extremely tender, fluctuant lump in the breast",
"Overlying skin: red, edematous, shiny, thin",
"High fever, rigors, malaise, tachycardia",
"Axillary lymphadenopathy",
"Pointing abscess — skin becomes thinned centrally",
"If ruptured: pus discharge",
"FLUCTUATION: positive on palpation (distinguishes abscess from mastitis)",
]),
h3("Investigations:"),
*bul([
"Breast Ultrasound (GOLD STANDARD for diagnosis):",
" - Shows hypoechoic (dark) fluid collection with absent vascular signals",
" - Guides aspiration/drainage",
"CBC: leukocytosis, neutrophilia",
"Blood culture: if septicemia suspected",
"Pus culture and sensitivity: guides antibiotic selection",
"FNAC or Trucut biopsy: if diagnosis uncertain or recurrent (to exclude malignancy)",
"Mammogram/MRI: if inflammatory carcinoma needs to be ruled out",
]),
h3("Management:"),
*bul([
"INCISION AND DRAINAGE (I&D) — mainstay of treatment",
"Ultrasound-guided needle aspiration: first-line for simple, non-loculated abscess",
"Repeat aspiration may be needed every 2-3 days until resolved",
"Open I&D: under GA/local anesthesia for",
" - Large (>3 cm), deep, or loculated abscess",
" - Failed needle aspiration",
" - Recurrent abscess",
"Incision: radial or circumareolar (cosmetically better)",
"Drain should be placed for 24-48 hours",
"CONTINUE BREASTFEEDING on affected breast if possible (safe even with drain in situ)",
"Antibiotics: IV Cloxacillin or Cefazolin initially, then oral",
"Metronidazole may be added for anaerobic coverage",
"Wound care: daily dressing with Betadine soaks",
"Recurrent subareolar abscess: excision of subareolar duct complex (Hadfield's operation)",
]),
h3("Complications:"),
*bul([
"Milk fistula", "Recurrent abscess", "Septicemia", "Scarring/deformity",
"Premature cessation of breastfeeding", "Chronic inflammatory state",
]),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# SECTION E – STANA ROGA: STANA KEELAKA, STANA GRANTHI, STANARBUDA
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("SECTION E: STANA ROGA — STANA KEELAKA, STANA GRANTHI & STANARBUDA"), hr(),
p("These three conditions are described in Ayurvedic classics, primarily in Sushruta Samhita "
"Nidana Sthana (Chapter 11: Dvivraneeya) and Chikitsa Sthana."),
h2("1. STANA KEELAKA"),
h3("Definition:"),
p("Stana Keelaka literally means a 'nail-like' or 'spike-like' growth in the breast. "
"It corresponds to a hard, tender nodule or keloidal fibrous mass in the breast — "
"possibly equivalent to Fibroadenoma or a fibrocystic nodule in modern medicine."),
h3("Nidana (Causes):"),
*bul([
"Aggravated Vata and Kapha Doshas",
"Avarana (obstruction) of Stanya Vaha Srotas",
"Trauma (Abhighata) to the breast",
"Excessive intake of Ruksha (dry), Sheeta (cold), Guru (heavy) foods",
]),
h3("Samprapti (Pathogenesis):"),
p("Vata and Kapha Dosha vitiation → Sanga (obstruction) in Stanya Vaha Srotas → "
"Granthana (binding/consolidation) of tissue → hard nodule formation in breast."),
h3("Lakshana (Clinical Features):"),
*bul([
"Stabdha (rigid/stiff) and Keelakavat (nail-like) swelling in breast",
"Hard consistency", "Moderate pain — may be throbbing",
"Limited mobility — may be fixed to surrounding tissue in advanced cases",
"No fever (non-inflammatory)", "Slow growing",
"May affect lactation if large",
]),
h3("Chikitsa (Treatment):"),
*bul([
"Vatakaphahara Chikitsa",
"Agnikarma (therapeutic cauterization) — for hard Keelaka",
"Kshara Karma (caustic application) — if keloidal",
"Surgical excision if large or causing symptoms",
"Internal: Kanchanar Guggulu, Triphala Guggulu, Varunadi Kashaya",
"External: Kanchanar Lepa, Vidanga Taila, Sarshapa Taila abhyanga",
]),
h2("2. STANA GRANTHI"),
h3("Definition:"),
p("Stana Granthi refers to a benign tumor/glandular swelling (Granthi) of the breast. "
"It is equivalent to Fibroadenoma or benign breast cyst in modern medicine."),
h3("Nidana:"),
*bul([
"Tridosha involvement (predominantly Kapha and Medas)",
"Sedentary lifestyle, excessive fatty food intake",
"Hormonal imbalance (Artava Kshaya — estrogen fluctuations)",
"Family history (Bija Dosha)",
]),
h3("Samprapti:"),
p("Vitiated Kapha + Meda → Sanga in Stanya Vaha Srotas → Sroto Rodha → "
"Mamsavridhi (tissue proliferation) → Granthi formation."),
h3("Lakshana:"),
*bul([
"Mridu (soft) or Katina (firm) movable swelling in breast",
"Well-defined, smooth or lobulated",
"Painless or mildly painful",
"Slow growing, may remain static for years",
"No fixity to skin or underlying muscle",
"Slips away from palpating fingers ('breast mouse' — fibroadenoma)",
]),
h3("Chikitsa:"),
*bul([
"Kaphahara and Medohara Chikitsa",
"Kanchanar Guggulu — best drug (Kanchanara = Bauhinia — anti-thyroid/anti-goiter/anti-tumor)",
"Varunadi Kashaya, Triphala Guggulu",
"Lekhana therapy (scraping therapy) for Medaja Granthi",
"Shastra Karma (surgical excision) if large, rapidly growing, or atypical",
"Agnikarma for small superficial Granthi",
"Avoid: Guru, Atisnigdha, Madhura ahara; Divaswapna",
]),
h2("3. STANARBUDA (Breast Carcinoma / Malignant Breast Tumor)"),
h3("Definition:"),
p("Stanarbuda refers to malignant tumor (Arbuda) of the breast (Stana). Arbuda is described "
"as a rapidly growing, hard, deep-seated, Tridoshaja swelling with involvement of "
"Rakta and Mamsa Dhatus."),
h3("Nidana:"),
*bul([
"Viruddha Ahara (incompatible foods)", "Excessive Guru-Ushna-Tikta-Lavana food",
"Emotional imbalance: chronic Shoka (grief), Bhaya (fear), Krodha (anger)",
"Bija Dosha (hereditary — family history)",
"Hormonal imbalance, nulliparity",
"Exposure to Visha (toxins)",
]),
h3("Samprapti (Pathogenesis):"),
p("Viruddha Ahara/Vihara → Tridosha Prakopa → Dushya (Rakta, Mamsa, Meda vitiation) → "
"Srotodushti (obstruction in channels) → Granthi → Arbuda (if malignant transformation: "
"Rakta and Mamsa Kshaya + rapid growth)."),
h3("Lakshana (Clinical Features):"),
*bul([
"Katina (very hard), irregular, non-mobile swelling — fixed to skin and/or muscle",
"Rapid growth", "Nipple retraction (Chuchuka Aakunchana)",
"Skin changes: peau d'orange (Twak Vikriti)",
"Prajnanat Shula — pain when deep-seated nerves are involved",
"Axillary node involvement (Kakshagrahai Granthi)",
"Bleeding/discharge from nipple in advanced cases",
"Cachexia (Karshya), fatigue, anorexia — Sadyaasadhya (poor prognosis)",
]),
h3("Chikitsa:"),
*bul([
"Ayurveda: Arbuda Chikitsa — mainly palliative/supportive",
"Rasayana therapy for immune support",
"Tridoshaghna, Vata-Pitta-Kapha hara treatment",
"Modern: Surgery, Chemotherapy, Radiation, Hormone therapy, Targeted therapy",
"Shatavari, Ashwagandha, Guduchi — immune-modulatory Rasayanas",
"Kanchanar Guggulu, Varunadi Kashaya",
"Pathya (healthy diet): light, fresh, easily digestible food",
"Apathya: Avoid Viruddha Ahara, tobacco, alcohol",
]),
h3("Prognosis (Sadhya-Asadhyata):"),
*bul([
"Asadhya (incurable) if: Multiple Dosha involvement, deep-seated, bone involvement, cachexia",
"Yaapya (palliable): early stage, good Bala (strength), no Dhatu Kshaya",
]),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# SECTION F – MASTALGIA
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("SECTION F: MASTALGIA (Breast Pain)"), hr(),
h2("Definition:"),
p("Mastalgia is pain in the breast. It is the most common breast symptom for which women "
"seek medical advice."),
h2("Types:"),
*bul([
"Cyclical Mastalgia (most common, 2/3 of cases): Related to menstrual cycle; "
"worst in luteal phase (premenstrual); bilateral, diffuse, aching or heaviness",
"Non-cyclical Mastalgia (1/3 of cases): Not related to cycle; "
"unilateral, localized; sharp or burning; common in perimenopausal women",
"Extramammary (chest wall pain): Tietze syndrome, costochondritis, musculoskeletal",
]),
h2("Causes:"),
*bul([
"Hormonal imbalance: elevated estrogen/progesterone ratio, prolactin",
"Fibrocystic breast disease (most common association)",
"Essential fatty acid deficiency (Evening Primrose Oil deficit)",
"Caffeine intake", "High-fat diet",
"Medications: OCPs, HRT, Spironolactone, Digoxin",
"Mastitis, breast abscess", "Large pendulous breasts",
"Poorly fitting bra", "Breast cancer (rare cause)",
]),
h2("Clinical Features:"),
*bul([
"Cyclical: bilateral, diffuse, more in upper outer quadrants; heavy, dull ache; "
"premenstrual; resolves with menstruation",
"Non-cyclical: unilateral, localized, constant or intermittent burning pain",
"May have associated nodularity (fibrocystic change)",
"Nipple discharge in some (fibrocystic)",
"Breast cancer rarely presents with pain ALONE",
]),
h2("Investigations:"),
*bul([
"Clinical examination: thorough history + palpation",
"Breast ultrasound: exclude cysts, fibroadenoma, abscess",
"Mammogram: age-appropriate screening; exclude malignancy",
"Serum prolactin: if galactorrhea associated",
"Serum hormones: if hormonal etiology suspected",
"FNAC/Biopsy: only if suspicious lump found",
]),
h2("Management:"),
h3("Non-pharmacological:"),
*bul([
"Well-fitting, supportive bra (including sports bra during exercise)",
"Reduce caffeine intake", "Low-fat, high-complex-carbohydrate diet",
"Reduce stress", "Regular aerobic exercise",
"Warm/cool compresses",
]),
h3("Pharmacological:"),
*bul([
"Evening Primrose Oil (Gamolenic acid) 3 g/day — first-line",
"NSAIDs: Ibuprofen, Diclofenac (topical or oral)",
"Vitamin E 200 IU/day",
"Danazol 100-200 mg/day — most effective; but androgenic side effects",
"Bromocriptine — if hyperprolactinemia",
"Tamoxifen 10 mg/day — for severe refractory cyclical mastalgia",
"GnRH analogues: for severe cases unresponsive to above",
]),
h2("Complications:"),
*bul([
"Psychological distress, anxiety about cancer",
"Sleep disturbance", "Interference with daily activities",
"Premature cessation of breastfeeding if postpartum",
]),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# SECTION G – FIBROADENOMA
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("SECTION G: FIBROADENOMA BREAST"), hr(),
h2("Definition:"),
p("Fibroadenoma is the most common benign solid tumor of the breast. It is a benign mixed "
"tumor consisting of both glandular epithelium (adeno) and fibrous stroma (fibro)."),
h2("Epidemiology:"),
*bul([
"Most common breast lump in women aged 15-25 years",
"Also called 'Breast Mouse' (due to mobility)",
"No increased risk for breast cancer (non-proliferative variant)",
"Complex fibroadenoma has slight increased risk (~2x)",
]),
h2("Causative Factors (Etiology):"),
*bul([
"Estrogen sensitivity — develops during reproductive years",
"May enlarge during pregnancy and puberty",
"Regresses after menopause",
"No specific causative agent identified",
"BRCA1/BRCA2 mutations: complex fibroadenoma may carry slightly higher risk",
]),
h2("Pathology:"),
*bul([
"Gross: Well-encapsulated, firm, rubbery, white/grey tumor; 1-3 cm usually",
"Cut section: Smooth, lobulated, bulges out of capsule",
"Microscopy: Two patterns:",
" 1. Pericanalicular: Fibrous tissue arranged around ducts (ducts remain round/oval)",
" 2. Intracanalicular: Fibrous tissue compresses ducts into slit-like spaces",
"Epithelial component: benign cuboidal/columnar cells",
"Giant fibroadenoma: >5 cm (juvenile fibroadenoma in adolescents)",
]),
h2("Clinical Features:"),
*bul([
"Painless (or mildly tender) lump in breast",
"Usually solitary; 20% multiple",
"Well-defined, smooth, regular margins",
"Firm or rubbery consistency",
"Highly mobile — slips away from examining fingers (Breast Mouse)",
"Not attached to skin or underlying muscle",
"No nipple retraction, no axillary lymphadenopathy",
"May enlarge during pregnancy",
]),
h2("Investigations:"),
*bul([
"Triple Assessment (recommended for all breast lumps):",
" 1. Clinical examination",
" 2. Imaging: Ultrasound (age <35) or Mammogram (age >35)",
" 3. Tissue diagnosis: FNAC or Core Needle Biopsy",
"Ultrasound: Hypoechoic, well-defined, smooth, ovoid/round, wider-than-tall",
"Mammogram: Well-circumscribed, round/oval, smooth mass",
"FNAC: Benign epithelial cells + stroma; 'naked nuclei' of bipolar cells in background",
"Core Needle Biopsy: More accurate — confirms diagnosis histologically",
]),
h2("Management:"),
*bul([
"Conservative: Observation with serial ultrasound every 6 months (majority of cases)",
"Most fibroadenomas are self-limiting, do not require surgery",
"Surgical excision indicated if:",
" - Size >3 cm", " - Rapid growth (>20% in 6 months)",
" - Symptomatic (pain, anxiety)", " - Atypia on biopsy",
" - Patient's preference",
"Vacuum-assisted core excision (VACE): minimally invasive excision",
"Cryoablation: Ultrasound-guided freezing — for selected cases",
"NOT associated with malignancy — routine surgical removal not mandatory",
]),
h2("Complications:"),
*bul([
"Rarely: calcification (especially in elderly — called 'popcorn' calcification on mammogram)",
"Giant fibroadenoma: cosmetic deformity, rapid growth in adolescents",
"Complex fibroadenoma: very slight increase in cancer risk",
"Psychological anxiety about breast cancer",
]),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# SECTION H – CARCINOMA BREAST
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("SECTION H: CARCINOMA BREAST (Breast Cancer)"), hr(),
h2("Epidemiology:"),
*bul([
"Most common cancer in women worldwide",
"1 in 8 women develop breast cancer in their lifetime",
"Incidence increasing in India: ~162,000 new cases/year",
"Peak incidence: 45-65 years in Western countries; 40-50 years in India",
"5% of breast cancers in women < 40 years",
]),
h2("Causative Factors (Risk Factors):"),
h3("Non-modifiable:"),
*bul([
"Female sex (99% occur in women)",
"Increasing age",
"Family history (first-degree relative): 2x risk",
"BRCA1 (chromosome 17) and BRCA2 (chromosome 13) mutations — 50-85% lifetime risk",
"Previous breast cancer (contralateral risk 1%/year)",
"Radiation to chest (especially before age 30)",
]),
h3("Hormonal/Reproductive:"),
*bul([
"Early menarche (<12 years)", "Late menopause (>55 years)",
"Nulliparity or first childbirth after 35", "No breastfeeding",
"HRT (combined estrogen + progesterone): increases risk",
"OCPs: slight increase in risk, returns to baseline after stopping",
]),
h3("Modifiable:"),
*bul([
"Obesity (especially postmenopausal): adipose tissue produces estrogen",
"Alcohol consumption", "Sedentary lifestyle",
"High-fat Western diet", "Smoking (modest association)",
]),
h2("Etiopathogenesis:"),
*bul([
"Normal breast epithelial cell → genetic mutations (BRCA1/2, TP53, HER2 amplification, "
"ER gene alterations) → proliferative breast disease → DCIS → Invasive carcinoma",
"Estrogen promotes cell proliferation; DNA damage accumulates",
"Atypical ductal hyperplasia (ADH): 4-5x increased risk",
"LCIS: 8-10x increased risk",
"DCIS (Ductal Carcinoma In Situ): non-invasive; confined within ducts",
]),
h2("Pathological Types:"),
*bul([
"Most common: Invasive Ductal Carcinoma (IDC) — 70-75%",
"Invasive Lobular Carcinoma (ILC) — 10-15%",
"DCIS (Ductal Carcinoma In Situ) — non-invasive, 20%",
"LCIS (Lobular Carcinoma In Situ) — marker of risk",
"Others: Mucinous, Medullary, Tubular, Papillary, Metaplastic",
"Inflammatory Breast Cancer — aggressive, no discrete lump; peau d'orange",
"Paget's Disease of nipple — nipple eczema-like rash; ductal carcinoma underneath",
]),
h2("Clinical Features:"),
h3("Early:"),
*bul([
"Painless hard lump in breast (most common presentation)",
"Upper outer quadrant (most common site, 50%)",
"Irregular margins, hard/stony consistency, non-mobile",
"Usually NOT tender",
"Screen-detected (mammographic abnormality) before clinical signs",
]),
h3("Late/Advanced:"),
*bul([
"Nipple retraction or deviation — Cooper's ligament invasion",
"Nipple discharge: bloody/serous",
"Skin dimpling — Cooper's ligament tethering",
"Peau d'orange — lymphatic obstruction causes skin edema",
"Skin fixity — invasion of skin (ulceration in very late cases)",
"Pectoralis fixity — invasion of deep muscles",
"Axillary lymphadenopathy — hard, matted nodes",
"Arm edema — axillary node involvement",
"Paget's disease — eczema-like rash of nipple",
"Distant metastases: bone pain, pathological fractures, jaundice, breathlessness",
]),
h2("Investigations:"),
h3("1. Triple Assessment:"),
*bul([
"Clinical examination (history + thorough physical exam)",
"Imaging (mammogram + ultrasound)",
"Tissue diagnosis (FNAC or core needle biopsy)",
]),
h3("2. Mammogram:"),
*bul([
"Screening tool: bilateral, 2 views (craniocaudal + mediolateral oblique)",
"Malignant features: spiculated mass, irregular margins, pleomorphic microcalcifications",
"BIRADS classification: 1 (normal) to 6 (known biopsy-proven malignancy)",
"Sensitivity: 85-90%",
]),
h3("3. Ultrasonography:"),
*bul([
"Adjunct to mammogram; preferred in <35 years (dense breasts)",
"Features: hypoechoic, irregular, spiculated, posterior acoustic shadowing",
"Sono-mammography = mammogram + ultrasound together",
"Guides FNAC and core biopsy",
]),
h3("4. FNAC (Fine Needle Aspiration Cytology):"),
*bul([
"23-gauge needle, 10 mL syringe, aspiration from lump",
"Cytology: malignant cells — hyperchromatism, pleomorphism, irregular nuclei",
"Rapid, cheap, minimal invasive", "Limitation: cannot distinguish in situ vs invasive",
"Sensitivity: 80-98%; Specificity: 98-99%",
"Inadequate sample (insufficient cells): repeat or proceed to core biopsy",
]),
h3("5. Core Needle Biopsy (Trucut Biopsy):"),
*bul([
"Preferred over FNAC — gives histology (not just cytology)",
"Can determine ER/PR/HER2 receptor status",
"Essential for treatment planning (receptor status guides therapy)",
"Stereotactic or ultrasound-guided",
]),
h3("6. Additional Staging Investigations:"),
*bul([
"Chest X-ray: pulmonary metastases",
"Liver ultrasound or CT abdomen: hepatic metastases",
"Bone scan: skeletal metastases",
"CT chest/abdomen/pelvis: staging",
"PET scan: in selected cases",
"MRI breast: lobular carcinoma, multifocality, BRCA carriers",
"Receptor status: ER (estrogen receptor), PR (progesterone receptor), HER2 (Her2/neu)",
]),
h2("TNM Staging (AJCC):"),
]
tnm = [
["Stage", "T (Tumor)", "N (Nodes)", "M (Metastasis)", "Description"],
["0", "Tis", "N0", "M0", "DCIS/LCIS (in situ)"],
["I", "T1 (≤2 cm)", "N0", "M0", "Localized, small tumor"],
["IIA", "T0-T2", "N1", "M0", "Movable axillary nodes"],
["IIB", "T2-T3", "N0-N1", "M0", "Larger tumor"],
["IIIA", "T0-T3", "N2", "M0", "Fixed axillary nodes"],
["IIIB", "T4 (any)", "Any N", "M0", "Skin/chest wall involvement"],
["IIIC", "Any T", "N3", "M0", "Infra/supraclavicular nodes"],
["IV", "Any T", "Any N", "M1", "Distant metastases"],
]
ts = Table(tnm, colWidths=[1.5*cm, 2.5*cm, 2.2*cm, 2.8*cm, 4.6*cm])
ts.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), colors.HexColor("#b71c1c")),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, -1), 12),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.HexColor("#ffebee"), colors.white]),
("GRID", (0, 0), (-1, -1), 0.5, colors.HexColor("#ef9a9a")),
("VALIGN", (0, 0), (-1, -1), "TOP"),
("PADDING", (0, 0), (-1, -1), 5),
("FONTNAME", (0, 1), (0, -1), "Helvetica-Bold"),
]))
story += [ts, sp(10)]
story += [
h2("Management of Breast Carcinoma:"),
h3("1. Surgery:"),
*bul([
"Breast-Conserving Surgery (BCS) + Radiation: preferred for Stage I-II",
" - Wide local excision (Lumpectomy/Quadrantectomy) + Axillary dissection",
" - Followed by whole-breast radiotherapy",
"Modified Radical Mastectomy (MRM): removes entire breast + axillary contents",
" - Pectoral muscles preserved (unlike old Halsted radical mastectomy)",
"Sentinel Lymph Node Biopsy (SLNB): avoids full axillary clearance if nodes negative",
"Breast Reconstruction: immediate or delayed",
]),
h3("2. Radiotherapy:"),
*bul([
"After BCS: reduces local recurrence from 30% to 7%",
"Post-mastectomy radiation: for T3/T4, node-positive disease",
"Palliative radiation: bone metastases, brain metastases",
]),
h3("3. Chemotherapy:"),
*bul([
"Adjuvant: AC (Doxorubicin + Cyclophosphamide) → Taxane (Paclitaxel/Docetaxel)",
"Neoadjuvant: Before surgery to downstage locally advanced tumors",
"Triple-negative breast cancer: Chemotherapy is the primary systemic therapy",
]),
h3("4. Hormone Therapy (Endocrine Therapy):"),
*bul([
"For ER/PR-positive tumors (70% of breast cancers)",
"Premenopausal: Tamoxifen 20 mg/day x 5-10 years",
"Postmenopausal: Aromatase inhibitors — Anastrozole, Letrozole, Exemestane",
"Ovarian suppression: GnRH agonists (Goserelin) for premenopausal",
]),
h3("5. Targeted Therapy:"),
*bul([
"HER2-positive tumors (20% of breast cancers): Trastuzumab (Herceptin)",
"CDK4/6 inhibitors: Palbociclib, Ribociclib — for HR+/HER2- metastatic disease",
"PARP inhibitors: Olaparib — for BRCA-mutated metastatic disease",
]),
h2("Complications:"),
*bul([
"Local recurrence", "Distant metastases (bone, liver, lung, brain)",
"Post-surgical: seroma, wound infection, flap necrosis",
"Post-radiotherapy: radiation dermatitis, rib fractures, lymphedema",
"Lymphedema: arm swelling after axillary clearance",
"Psychological: depression, anxiety, body image issues",
"Chemotherapy toxicity: alopecia, nausea, myelosuppression",
]),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# SECTION I – SELF BREAST EXAMINATION (SBE)
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("SECTION I: SELF BREAST EXAMINATION (SBE)"), hr(),
h2("Importance:"),
p("Self Breast Examination (SBE) is a method by which a woman examines her own breasts "
"to detect any changes, lumps, or abnormalities. While large randomized trials have not "
"shown reduction in breast cancer mortality, SBE promotes breast awareness and early "
"presentation when abnormalities are detected."),
h2("When to Perform:"),
*bul([
"Once a month, at the same time each month",
"Premenopausal: 7-10 days after the first day of menstruation (when breasts are least tender)",
"Postmenopausal: Same date each month (e.g., first day of month)",
]),
h2("Steps of Self Breast Examination:"),
h3("STEP 1 — Visual Inspection (In Front of Mirror):"),
*bul([
"Stand in front of a mirror with arms at your sides",
"Look for: change in size, shape, contour of breasts",
"Any puckering, dimpling, or skin changes",
"Nipple abnormalities: retraction, inversion, discharge, rash",
"Redness, swelling, visible lump",
]),
h3("STEP 2 — Arms Raised:"),
*bul([
"Raise both arms above the head",
"Look for the same changes as in Step 1",
"This maneuver accentuates any dimpling from Cooper's ligament involvement",
]),
h3("STEP 3 — Hands on Hips (Pectoralis Contraction):"),
*bul([
"Press hands firmly on hips and flex pectoral muscles",
"Look for skin puckering or breast asymmetry",
"This tenses the pectoralis — any fixity becomes obvious",
]),
h3("STEP 4 — Nipple Check:"),
*bul([
"Gently squeeze each nipple between thumb and index finger",
"Check for discharge (note color: clear, milky, bloody)",
"Note if discharge is from single or multiple ducts",
]),
h3("STEP 5 — Lying Down Palpation:"),
*bul([
"Lie down flat on back; place pillow under right shoulder",
"Right arm placed under the head",
"Use flat of three middle fingers of left hand to examine the right breast",
"Use circular motions — small dime-sized circles",
"Cover the entire breast: follow a pattern — vertical strip, circular, or radial",
"Apply three levels of pressure: light, medium, firm",
"Feel from collarbone to bra line; armpit to sternum",
"Repeat for the left breast using right hand",
]),
h3("STEP 6 — Standing/Shower Examination:"),
*bul([
"Repeat Step 5 in the shower (wet soapy skin helps detect lumps)",
"Some women find it easier to feel lumps when skin is wet",
"Use same pattern and pressure as Step 5",
]),
h2("What to Report Immediately (WARNING SIGNS):"),
*bul([
"Any new lump or thickening in breast or armpit",
"Change in size or shape of breast",
"Skin changes: dimpling, puckering, redness, thickening ('orange peel' appearance)",
"Nipple retraction or inversion (new onset)",
"Nipple discharge (especially bloody or from single duct)",
"Rash on nipple or areola (possible Paget's disease)",
"Persistent pain in one area",
]),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# SECTION J – BREAST INVESTIGATIONS
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("SECTION J: INVESTIGATIONS IN BREAST DISEASES"), hr(),
h2("1. SONO-MAMMOGRAM (Mammography + Ultrasonography)"),
h3("A. Mammography:"),
p("X-ray imaging of the breast using low-dose X-rays. Standard views are:"),
*bul([
"Craniocaudal (CC) view: top-down view of breast",
"Mediolateral Oblique (MLO) view: side view at 45 degrees",
"Additional views: magnification, spot compression as needed",
]),
b("Indications:"),
*bul([
"Screening: annual from age 40-50 years (varies by guideline)",
"Diagnostic: evaluation of symptomatic breast (lump, pain, discharge, skin changes)",
"Evaluation of contralateral breast after breast cancer diagnosis",
"Pre-operative assessment",
]),
b("Features of Malignancy on Mammogram:"),
*bul([
"Spiculated (star-shaped) mass with irregular margins",
"Asymmetric density", "Architectural distortion",
"Pleomorphic, clustered microcalcifications",
"Thickened or retracted skin", "Enlarged axillary nodes",
]),
b("BIRADS (Breast Imaging Reporting and Data System):"),
*bul([
"BIRADS 0: Incomplete — needs additional imaging",
"BIRADS 1: Negative — routine screening",
"BIRADS 2: Benign — routine screening",
"BIRADS 3: Probably benign — short-interval follow-up (6 months)",
"BIRADS 4: Suspicious — biopsy recommended",
"BIRADS 5: Highly suggestive of malignancy — biopsy mandatory",
"BIRADS 6: Known biopsy-proven malignancy",
]),
h3("B. Breast Ultrasonography:"),
*bul([
"Uses high-frequency sound waves (7.5-15 MHz probe)",
"Best for women <35 years (dense breast tissue reduces mammogram sensitivity)",
"Distinguishes cystic vs solid lesions",
"Guides FNAC, core biopsy, cyst aspiration",
"Evaluates axillary lymph nodes",
"Cannot detect microcalcifications (limitation)",
"Features of malignancy: irregular, hypoechoic, posterior acoustic shadowing, ill-defined",
"Features of benign lesion: smooth margins, anechoic (cyst), wider-than-tall",
]),
h3("C. Sono-mammography:"),
p("Combined use of both mammogram AND ultrasound for comprehensive breast evaluation. "
"Improves detection rate especially in dense breasts. Both are complementary — "
"mammogram detects microcalcifications, ultrasound distinguishes cystic vs solid."),
h2("2. FNAC (Fine Needle Aspiration Cytology)"),
h3("Principle:"),
p("A fine needle (21-23 gauge) attached to a 10 mL syringe is inserted into the breast lump "
"and cells are aspirated under negative pressure. The material is smeared on a glass slide, "
"fixed, and stained (PAP stain or Giemsa stain) for cytological examination."),
h3("Technique:"),
*bul([
"Patient position: supine or sitting",
"CLEAN the skin with spirit", "No local anaesthesia required usually",
"Fix the lump between thumb and index finger of non-dominant hand",
"Insert 23G needle into the lump at 90 degrees",
"Apply suction (pull syringe to 5-10 mL)",
"Move needle back and forth 3-4 times within lump while maintaining suction",
"Release suction BEFORE withdrawing needle",
"Expel material onto glass slide, smear, fix immediately",
"Stain: PAP stain (wet fix in alcohol) or Giemsa (air dry)",
"Can be done free-hand (palpable lump) or ultrasound-guided (impalpable lump)",
]),
h3("Results Interpretation (C1-C5 classification):"),
*bul([
"C1: Unsatisfactory/Inadequate — repeat",
"C2: Benign — no malignant cells",
"C3: Atypical — probably benign; repeat/biopsy",
"C4: Suspicious — probably malignant; biopsy needed",
"C5: Malignant — confirmed malignant cells",
]),
h3("Advantages:"),
*bul([
"Quick, cheap, minimally invasive, outpatient procedure",
"No anesthesia required", "Immediate result possible",
"Low risk of complications",
]),
h3("Limitations:"),
*bul([
"Gives cytology only (not histology — cannot determine invasion)",
"Sampling error: miss rate ~10%",
"Cannot determine hormone receptor status",
"Requires experienced cytopathologist",
"Does not distinguish DCIS from invasive cancer",
]),
h2("3. BIOPSY"),
h3("A. Core Needle Biopsy (CNB / Trucut Biopsy):"),
*bul([
"14-gauge spring-loaded needle under ultrasound/mammographic guidance",
"Retrieves core of tissue for HISTOLOGICAL analysis",
"Can determine: invasiveness, grade, ER/PR/HER2 receptor status",
"Gold standard pre-operative tissue diagnosis",
"VACB (Vacuum-Assisted Core Biopsy): can remove more tissue; used for microcalcifications",
"Clip is left at biopsy site for surgical localization",
]),
h3("B. Open Excision Biopsy:"),
*bul([
"Entire lump removed surgically under general/local anesthesia",
"Excisional biopsy: entire lesion removed (diagnostic + therapeutic)",
"Incisional biopsy: part of lesion removed (large tumors — rarely done now)",
"Image-guided wire localization + excision: for non-palpable lesions",
]),
h3("C. Sentinel Lymph Node Biopsy (SLNB):"),
*bul([
"First draining lymph node of the breast tumor",
"Identified using blue dye (Patent Blue V) and/or Technetium-99m labelled colloid",
"If sentinel node is negative: axillary clearance avoided",
"If positive: proceed to axillary lymph node dissection (ALND)",
]),
h3("D. Punch Biopsy / Skin Biopsy:"),
*bul([
"For skin lesions: Paget's disease, inflammatory carcinoma with skin involvement",
]),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════════════════
# QUICK REVISION TABLE
# ════════════════════════════════════════════════════════════════════════════
story += [
h1("QUICK REVISION: BREAST DISEASES AT A GLANCE"), hr(),
]
rev = [
["Condition", "Age", "Key Feature", "Consistency", "Management"],
["Fibroadenoma", "15-35 yrs", "Mobile 'breast mouse'", "Firm, rubbery", "Observation / Excision if >3 cm"],
["Fibrocystic Disease", "20-50 yrs", "Cyclical pain, nodularity", "Lumpy, tender", "Reassurance, Evening Primrose Oil"],
["Breast Abscess", "Lactating", "Fluctuant, hot, tender", "Fluctuant", "I&D + Antibiotics"],
["Mastitis", "Lactating", "Fever, erythema, induration", "Indurated", "Antibiotics, continue feeding"],
["Breast Carcinoma", ">40 yrs", "Hard, irregular, non-mobile", "Stony hard", "Surgery + Chemo/Radio/Hormonal"],
["Duct Ectasia", "Perimenopausal", "Bloody/green discharge", "Soft, irregular", "Duct excision"],
["Intraductal Papilloma", "30-50 yrs", "Serous/bloody discharge", "Soft nodule", "Microdochectomy"],
["Phyllodes Tumor", "35-55 yrs", "Rapid growth, large", "Firm, lobulated", "Wide excision"],
["Paget's Disease", ">50 yrs", "Nipple eczema + discharge", "Crusty nipple", "Mastectomy/BCS + RT"],
["Inflammatory Ca.", "Any age", "Peau d'orange, no lump", "Diffuse induration", "Neoadjuvant chemo + surgery"],
]
tr = Table(rev, colWidths=[3*cm, 2*cm, 4*cm, 2.8*cm, 3.3*cm])
tr.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), colors.HexColor("#00695c")),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, -1), 11),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.HexColor("#e0f2f1"), colors.white]),
("GRID", (0, 0), (-1, -1), 0.5, colors.HexColor("#80cbc4")),
("VALIGN", (0, 0), (-1, -1), "TOP"),
("PADDING", (0, 0), (-1, -1), 5),
("FONTNAME", (0, 1), (0, -1), "Helvetica-Bold"),
]))
story += [tr, sp(10),
n("NOTE: This document is compiled for study and Xerox purposes in LARGE PRINT. "
"For clinical practice, always refer to current guidelines and consult specialists."),
sp(20),
Paragraph("— END OF STANYA VIGYANA NOTES —", ParagraphStyle(
"end", fontName="Helvetica-Bold", fontSize=18, alignment=TA_CENTER,
textColor=colors.HexColor("#1a237e"))),
]
# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /home/daytona/workspace/stanya-vigyana && python create_pdf.py 2>&1
ls -lh /home/daytona/workspace/stanya-vigyana/
Stanya Vigyana Lactation
PDF Document · PDF
| Section | Topic |
|---|---|
| A | Stanya & Stanya Sampat (Ayurveda) — origin, properties, Jala Pariksha |
| B | Physiology of Lactation — Mammogenesis, Lactogenesis, Let-Down Reflex, WHO breastfeeding techniques |
| C | Stanya Dushti, Stana Shotha, Stana Vidradhi — Nidana, Samprapti, Lakshana, Chikitsa (Ayurveda) |
| D | Diagnosis table: Breast Engorgement vs Mastitis vs Breast Abscess — full clinical comparison, investigations, management |
| E | Stana Keelaka, Stana Granthi, Stanarbuda — Nidana, Samprapti, Lakshana, Chikitsa |
| F | Mastalgia — types, causes, clinical features, investigations, management |
| G | Fibroadenoma — etiology, pathology, clinical features, investigations, management |
| H | Carcinoma Breast — risk factors, etiopathogenesis, types, clinical features, TNM staging table, management (Surgery/Chemo/Radiation/Hormonal/Targeted) |
| I | Self Breast Examination — 6 steps with full technique, warning signs |
| J | Investigations — Sono-mammography, FNAC technique + C1-C5 classification, Core Biopsy, SLNB, BIRADS system |
Search PubMed for recent clinical guidelines on mastitis and breast abscess management
"mastitis"[MeSH Terms] AND "breast abscess"[MeSH Terms]
"lactational mastitis" AND "management" AND "antibiotic"
"breast abscess" AND "drainage" AND "ultrasound guided"
clinical guidelines mastitis breast abscess management 2023 2024 RCOG ABM Academy Breastfeeding Medicine
"mastitis"[MeSH Terms] AND "guideline" OR "lactational mastitis" AND "management"
"breast abscess" AND "aspiration" AND "incision drainage" comparison
PMID: 37930678
PMID: 37118650
PMID: 34991976
PMID: 38772591
PMID: 42136779
PMID: 40437779
"Academy of Breastfeeding Medicine" AND mastitis
"breast abscess" AND "needle aspiration" AND "randomized"
PMID: 34469779
PMID: 35576513
PMID: 37350731
PMID: 32944940
| Outcome | Result | Statistical Significance |
|---|---|---|
| Cure rate | No difference (RR 0.96) | p = 0.47 — NOT significant |
| Recurrence rate | No difference (RR 0.68) | p = 0.24 — NOT significant |
| Healing time | NA faster by 11 days (WMD -11.02 days) | p < 0.001 |
| Breast fistula | NA: 79% lower risk (RR 0.21) | p = 0.013 |
| Breastfeeding continuation | NA: 72% lower interruption (RR 0.28) | p < 0.001 |
| Cosmetic satisfaction | NA: 51% higher (RR 1.51) | p = 0.035 |
| Clinical Issue | Current Recommendation | Evidence Level |
|---|---|---|
| Mild mastitis (no systemic symptoms) | Milk removal + anti-inflammatories first; antibiotics if no improvement in 12-24 h | ABM 2022 Guideline |
| Mastitis with fever/systemic symptoms | Antibiotics (Flucloxacillin/Dicloxacillin/Cefalexin) + continue breastfeeding | ABM 2022 / Cohort data |
| MRSA-suspected mastitis | TMP-SMX or Clindamycin (avoid TMP-SMX if infant <2 months) | Expert consensus |
| Breast abscess (all sizes) | US-guided needle aspiration — first line (equal cure, fewer complications than I&D) | Meta-Analysis 2023 (PMID: 37350731) |
| Failed aspiration / multiloculated | Incision and Drainage (I&D) | Meta-Analysis 2023 |
| Breast engorgement | Cold cabbage leaves, frequent feeding, cold packs, massage | Cochrane 2020 (low certainty) |
| Non-lactational/granulomatous mastitis | Biopsy to exclude malignancy; corticosteroids for IGM; anti-TB for TBM | Review 2022/2026 |
| Probiotics | Emerging adjunct; L. fermentum shows promise | RCT 2022 |
Generate a PDF summary of these 9 key papers with abstracts
ls /home/daytona/workspace/
~/mastitis-pubmed/create_pubmed_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
PageBreak, HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY, TA_RIGHT
OUTPUT = "/home/daytona/workspace/mastitis-pubmed/Mastitis_BreastAbscess_PubMed_Summary.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm,
)
W = A4[0] - 4*cm
# ── Styles ──────────────────────────────────────────────────────────────────
TITLE_S = ParagraphStyle("TITLE_S", fontName="Helvetica-Bold", fontSize=22,
textColor=colors.HexColor("#0d47a1"), alignment=TA_CENTER, spaceAfter=6, leading=28)
SUBTITLE_S = ParagraphStyle("SUBTITLE_S", fontName="Helvetica", fontSize=13,
textColor=colors.HexColor("#37474f"), alignment=TA_CENTER, spaceAfter=4, leading=18)
DATE_S = ParagraphStyle("DATE_S", fontName="Helvetica-Oblique", fontSize=11,
textColor=colors.HexColor("#78909c"), alignment=TA_CENTER, spaceAfter=2)
PAPER_NUM = ParagraphStyle("PAPER_NUM", fontName="Helvetica-Bold", fontSize=15,
textColor=colors.white, alignment=TA_LEFT, leading=20)
PAPER_TITLE = ParagraphStyle("PAPER_TITLE", fontName="Helvetica-Bold", fontSize=13,
textColor=colors.HexColor("#0d47a1"), spaceAfter=4, leading=18)
AUTHORS = ParagraphStyle("AUTHORS", fontName="Helvetica-Oblique", fontSize=11,
textColor=colors.HexColor("#455a64"), spaceAfter=2, leading=15)
JOURNAL = ParagraphStyle("JOURNAL", fontName="Helvetica", fontSize=11,
textColor=colors.HexColor("#37474f"), spaceAfter=5, leading=15)
LABEL_S = ParagraphStyle("LABEL_S", fontName="Helvetica-Bold", fontSize=11,
textColor=colors.HexColor("#b71c1c"), spaceAfter=2, leading=15)
BODY_S = ParagraphStyle("BODY_S", fontName="Helvetica", fontSize=11,
textColor=colors.HexColor("#212121"), spaceAfter=6, leading=16, alignment=TA_JUSTIFY)
KEY_S = ParagraphStyle("KEY_S", fontName="Helvetica-Bold", fontSize=11,
textColor=colors.HexColor("#1b5e20"), spaceAfter=4, leading=16, alignment=TA_JUSTIFY)
BULLET_S = ParagraphStyle("BULLET_S", fontName="Helvetica", fontSize=11,
leftIndent=15, spaceAfter=3, leading=16)
PMID_S = ParagraphStyle("PMID_S", fontName="Helvetica-Bold", fontSize=10,
textColor=colors.HexColor("#5c35a0"), spaceAfter=2)
TOC_S = ParagraphStyle("TOC_S", fontName="Helvetica", fontSize=11,
textColor=colors.HexColor("#212121"), spaceAfter=3, leading=16)
TOC_HEAD = ParagraphStyle("TOC_HEAD", fontName="Helvetica-Bold", fontSize=13,
textColor=colors.HexColor("#0d47a1"), spaceAfter=8, leading=18)
FOOTER_S = ParagraphStyle("FOOTER_S", fontName="Helvetica-Oblique", fontSize=9,
textColor=colors.HexColor("#90a4ae"), alignment=TA_CENTER)
SECTION_HEAD = ParagraphStyle("SECTION_HEAD", fontName="Helvetica-Bold", fontSize=14,
textColor=colors.HexColor("#4a148c"), spaceBefore=12, spaceAfter=6, leading=20)
def sp(h=8): return Spacer(1, h)
def hr(c="#90caf9", t=1): return HRFlowable(width="100%", thickness=t, color=colors.HexColor(c), spaceAfter=4)
def bul(txt): return Paragraph(f"• {txt}", BULLET_S)
# Evidence tier badge colours
TIER_COLORS = {
"Systematic Review": ("#1565c0", "Tier 1 — Systematic Review"),
"Meta-Analysis": ("#6a1b9a", "Tier 2 — Meta-Analysis"),
"RCT": ("#2e7d32", "Tier 3 — Randomized Controlled Trial"),
"Guideline": ("#b71c1c", "Practice Guideline"),
"Cohort/Audit": ("#e65100", "Cohort / Audit Study"),
"Review": ("#00695c", "Tier 7 — Review"),
}
def tier_badge(tier_key, year):
bg, label = TIER_COLORS.get(tier_key, ("#37474f", tier_key))
inner = f'<font color="white"><b> {label} · {year} </b></font>'
return Table(
[[Paragraph(inner, ParagraphStyle("tb", fontName="Helvetica-Bold", fontSize=10,
textColor=colors.white, leading=14))]],
colWidths=[W * 0.55],
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor(bg)),
("ROUNDEDCORNERS", [4]),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 8),
])
)
def section_banner(num, bg_hex, title):
"""Numbered coloured banner for each paper."""
num_cell = Paragraph(f"<b>#{num}</b>", ParagraphStyle(
"nb", fontName="Helvetica-Bold", fontSize=20, textColor=colors.white,
alignment=TA_CENTER, leading=26))
title_cell = Paragraph(title, ParagraphStyle(
"bt", fontName="Helvetica-Bold", fontSize=12, textColor=colors.white,
leading=17, alignment=TA_LEFT))
t = Table([[num_cell, title_cell]], colWidths=[1.2*cm, W - 1.2*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor(bg_hex)),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LEFTPADDING", (0,0), (0,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
]))
return t
BANNER_COLORS = [
"#0d47a1","#6a1b9a","#2e7d32","#b71c1c",
"#00695c","#e65100","#283593","#4a148c","#37474f",
]
# ════════════════════════════════════════════════════════════════════════════
# DATA: 9 papers
# ════════════════════════════════════════════════════════════════════════════
papers = [
{
"num": 1,
"pmid": "35576513",
"tier": "Guideline",
"year": "2022",
"title": "Academy of Breastfeeding Medicine Clinical Protocol #36: The Mastitis Spectrum, Revised 2022",
"authors": "Mitchell KB, Johnson HM, Rodríguez JM, Eglash A, Scherzinger C, Zakarija-Grkovic I",
"journal": "Breastfeeding Medicine. 2022;17(5):360-376.",
"doi": "10.1089/bfm.2022.29207.kbm",
"abstract": (
"A central goal of the Academy of Breastfeeding Medicine (ABM) is the development of "
"clinical protocols for managing common medical problems that may impact breastfeeding "
"success. This 2022 revised protocol reframes mastitis as a spectrum — from milk stasis "
"through non-infective inflammation to infective mastitis and abscess. The protocol "
"emphasises breast microbiome dysbiosis as a contributing factor in pathogenesis. It "
"de-emphasises routine antibiotics for mild early mastitis without systemic symptoms, "
"prioritising milk removal and anti-inflammatory measures first. Antibiotics are "
"recommended when fever >38.5°C, systemic symptoms persist >24 h, or there is no "
"improvement with milk removal within 12-24 hours. The protocol serves as a clinical "
"guideline, not a standard of care, and acknowledges appropriate variation based on "
"individual patient needs. Note: An erratum was subsequently published (PMID: 36378824), "
"and the protocol has attracted debate regarding potential undertreatment (see Douglas P, "
"2023, PMID: 37670315)."
),
"key_points": [
"Mastitis conceptualised as a spectrum: milk stasis → non-infective inflammation → infective mastitis → abscess",
"Breast microbiome dysbiosis highlighted as a new pathogenic mechanism",
"Antibiotics NOT recommended for mild mastitis without systemic symptoms",
"First-line: optimise milk removal + anti-inflammatory drugs (NSAIDs)",
"Antibiotic threshold: fever >38.5°C or systemic symptoms >24 h or no improvement in 12-24 h",
"Antibiotic of choice: Dicloxacillin / Flucloxacillin / Cefalexin x 10-14 days",
"Continue breastfeeding throughout treatment",
"This is the most widely cited current international guideline on mastitis",
],
"integrity_note": "⚠ Erratum published (PMID: 36378824). Protocol has attracted debate — see commentary PMID: 37670315.",
},
{
"num": 2,
"pmid": "32944940",
"tier": "Systematic Review",
"year": "2020",
"title": "Treatments for Breast Engorgement During Lactation (Cochrane Systematic Review)",
"authors": "Zakarija-Grkovic I, Stewart F",
"journal": "Cochrane Database of Systematic Reviews. 2020 Sep 18;9:CD006946.",
"doi": "10.1002/14651858.CD006946.pub4",
"abstract": (
"Engorgement is the overfilling of breasts with milk, often occurring in the early days "
"postpartum. It results in swollen, hard, painful breasts and may lead to premature "
"cessation of breastfeeding, decreased milk production, cracked nipples, and mastitis. "
"This Cochrane review included 21 RCTs (2,170 women) examining interventions including "
"cabbage leaves, herbal compresses (ginger, cactus and aloe, hollyhock), various massage "
"techniques (manual, electromechanical, Oketani), acupuncture, ultrasound, acupressure, "
"scraping therapy, cold packs, and medical treatments (serrapeptase, protease, oxytocin). "
"Cold cabbage leaves may reduce breast pain more than routine care (MD -1.03 VAS points, "
"very low certainty) and hardness (MD -0.58 VAS points, low certainty). Herbal compresses "
"may reduce pain versus hot compress (MD -1.80 VAS points, low certainty). Patient "
"satisfaction was higher with cold cabbage leaves than routine care or cold gel packs. "
"Due to heterogeneity, meta-analysis was not possible for most comparisons. Overall, "
"evidence certainty was low-to-very-low across all interventions."
),
"key_points": [
"21 RCTs included — 2,170 women randomised",
"Cold cabbage leaves: reduce pain and hardness vs routine care (low/very-low certainty)",
"Cold cabbage leaves: higher patient satisfaction vs routine care and cold gel packs",
"Herbal compresses (ginger, hollyhock, cactus-aloe): may reduce pain vs hot compress",
"Oketani massage and acupuncture show some benefit in individual trials",
"No intervention has high-certainty evidence of effectiveness",
"Breastfeeding continuation: no significant difference between interventions",
"Better-designed RCTs urgently needed for all engorgement interventions",
],
"integrity_note": None,
},
{
"num": 3,
"pmid": "37350731",
"tier": "Meta-Analysis",
"year": "2023",
"title": "The Effectiveness of Needle Aspiration versus Incision and Drainage in Breast Abscess: A Meta-Analysis",
"authors": "Zhou F, Li Z, Liu L, Wang F, Yu L, Xiang Y",
"journal": "Annals of Medicine. 2023;55(1):2224045.",
"doi": "10.1080/07853890.2023.2224045",
"abstract": (
"This meta-analysis systematically compared the clinical effectiveness of needle aspiration "
"(NA) and incision and drainage (I&D) in treating breast abscesses. Nine RCTs involving 703 "
"patients were identified from Web of Science, ScienceDirect, PubMed, Cochrane Library, "
"EMBASE, CNKI, and Wanfang databases. Risk of bias was assessed using ROB-2; evidence "
"certainty was rated using GRADE. Results showed no significant difference in cure rate "
"(RR 0.96, 95% CI [0.86, 1.07]; p=0.469) or recurrence rate (RR 0.68, 95% CI [0.35, 1.30]; "
"p=0.241) between NA and I&D. However, NA was associated with significantly shorter healing "
"time (WMD -11.02 days, 95% CI [-15.14, -6.90]; p<0.001), lower breast fistula incidence "
"(RR 0.21, 95% CI [0.06, 0.72]; p=0.013), lower interrupted breastfeeding rate (RR 0.28, "
"95% CI [0.20, 0.39]; p<0.001), and higher cosmetic satisfaction (RR 1.51, 95% CI [1.03, "
"2.21]; p=0.035). Subgroup analysis confirmed these advantages were not affected by "
"ultrasound guidance. Conclusion: NA should be used as first-line treatment for breast "
"abscesses; I&D is reserved for large, multiloculated abscesses or failed aspiration."
),
"key_points": [
"9 RCTs, 703 patients — highest-quality evidence comparing NA vs I&D",
"Cure rate: NO significant difference between NA and I&D (RR 0.96, p=0.47)",
"Recurrence rate: NO significant difference (RR 0.68, p=0.24)",
"Healing time: NA faster by 11 days (p<0.001) ✓",
"Breast fistula: 79% lower risk with NA (RR 0.21, p=0.013) ✓",
"Breastfeeding continuation: 72% higher with NA (RR 0.28, p<0.001) ✓",
"Cosmetic satisfaction: 51% higher with NA (p=0.035) ✓",
"Recommendation: NA = first-line for all abscess sizes; I&D for multiloculated/failed NA",
],
"integrity_note": None,
},
{
"num": 4,
"pmid": "37930678",
"tier": "Cohort/Audit",
"year": "2024",
"title": "Mastitis and Mammary Abscess Management Audit (MAMMA) in the UK and Ireland",
"authors": "Courtney A, Clymo J, Parks R, Wilkins A, Brown R, O'Connell R",
"journal": "British Journal of Surgery. 2024 Jan 3;111(1):znad333.",
"doi": "10.1093/bjs/znad333",
"abstract": (
"This multicentre prospective audit (MAMMA study) described current practice in mastitis "
"and breast abscess management across the UK and Ireland, conducted in two phases "
"(August 2020 – August 2021). Phase 1: practice survey. Phase 2: prospective audit of "
"1,312 patients across 69 hospitals. Key findings: the overall rate of incision and "
"drainage was 21.0%, higher than anticipated. Ultrasound-guided aspiration was used in "
"only 61.0% of abscess cases. Significant inter-unit variation was observed in I&D rates "
"(range 0-100%; p<0.001) and aspiration rates (range 12.5-100%; p<0.001). Overall, 22.5% "
"of patients were admitted for inpatient treatment, with 72.9% started on IV antibiotics. "
"Weekend presentations had significantly higher odds of I&D and inpatient admission "
"(p≤0.023). Only 40.9% of patients were directly reviewed by a breast specialist despite "
"74.2% presenting during weekday working hours. Conclusion: substantial practice variation "
"exists across the UK and Ireland, with an urgent need for a national best-practice "
"toolbox to standardise care."
),
"key_points": [
"69 hospitals, 1,312 patients — largest prospective audit of mastitis management in UK/Ireland",
"I&D rate: 21% — higher than guideline recommendations",
"Ultrasound-guided aspiration: only 61% (should be first-line)",
"Extreme variation: I&D rate 0-100% across units (p<0.001)",
"Weekend presentations: ~2x more likely to receive I&D and inpatient admission",
"Only 40.9% of patients seen by a breast specialist",
"22.5% admitted as inpatients; 72.9% of those received IV antibiotics",
"Urgent call for national standardised best-practice guidelines in UK",
],
"integrity_note": None,
},
{
"num": 5,
"pmid": "40437779",
"tier": "Cohort/Audit",
"year": "2025",
"title": "Management of Mastitis in the Hospital Setting: An International Audit Study",
"authors": "Amir LH, Coca KP, Mello Da Silva MJ, Okada MM, Onat Demir G, Duran B",
"journal": "Journal of Human Lactation. 2025 Aug. doi:10.1177/08903344251338245.",
"doi": "10.1177/08903344251338245",
"abstract": (
"This international audit reviewed medical records of 580 women (646 Emergency Department "
"presentations) across Australia, Brazil, Croatia, Germany, and Turkey, presenting with "
"lactational mastitis/abscess between 2017-2023, mostly in the first 8 weeks postpartum. "
"The majority waited >48 hours before presenting. In Australia, S. aureus was the most "
"common organism (33%), with 6% MRSA. Ultrasound use varied markedly: 5% (Croatia) to "
"82% (Germany). Breast abscesses were managed predominantly by US-guided aspiration in "
"Australia versus I&D as standard in Germany. Antibiotic choice also differed: "
"Amoxicillin-clavulanate was preferred in Croatia (57%) and Turkey (69%), while "
"Flucloxacillin/Cephalexin/Cefuroxime was primary in Australia (86%), Brazil (62%), "
"and Germany (80%), respectively. Conclusion: Management of mastitis/breast abscess varies "
"considerably between countries. International evidence-based guidelines are urgently needed."
),
"key_points": [
"580 women across 5 countries (Australia, Brazil, Croatia, Germany, Turkey)",
"Most women waited >48 hours before presenting to ED — indicating delayed help-seeking",
"S. aureus: 33% of culture-positive cases; MRSA: 6% — significant clinical concern",
"Ultrasound use: 5% (Croatia) vs 82% (Germany) — unacceptable variation",
"Abscess management: US-guided aspiration (Australia) vs I&D as default (Germany)",
"Antibiotics: Flucloxacillin/Cephalexin preferred in Western countries; Amoxicillin-clavulanate in Croatia/Turkey",
"First 8 weeks postpartum = highest risk period for mastitis/abscess",
"Conclusion: International evidence-based guidelines urgently needed",
],
"integrity_note": None,
},
{
"num": 6,
"pmid": "38772591",
"tier": "Cohort/Audit",
"year": "2024",
"title": "Trends in Clinical Management of Lactational Mastitis in Australian General Practice: 2011-2022",
"authors": "Grzeskowiak LE, Kunnel A, Crawford SB, Cullinane M, Amir LH",
"journal": "BMJ Open. 2024 May 20;14(5):e080128.",
"doi": "10.1136/bmjopen-2023-080128",
"abstract": (
"This national longitudinal open cohort study used MedicineInsight data to examine "
"management trends in lactational mastitis among 25,002 Australian women attending general "
"practice (January 2011 – July 2022). The primary outcome was oral antibiotic prescribing "
"patterns. Secondary outcomes included other medications and clinical investigations. "
"Results: 90.9% of women were prescribed oral antibiotics. Prescribing patterns showed a "
"significant shift: Di/flucloxacillin use increased from 46.1% to 60.4%, while cefalexin "
"decreased from 38.6% to 26.5%. Fewer than 12% of women had any clinical investigations "
"ordered (most commonly breast ultrasound at 7.1%, then blood tests at 3.8%). Breast milk "
"cultures, nipple swab cultures, and breast aspirates were ordered in fewer than 1.1% of "
"presentations. Clinical investigation rates at least doubled between 2011-2022 (6.6% to "
"14.7%). Significant variability was noted by patient socioeconomic status and practice "
"location (remoteness). Conclusion: GPs largely follow antibiotic guidelines for mastitis; "
"milk culture testing remains markedly underutilised."
),
"key_points": [
"25,002 women — largest longitudinal dataset on mastitis management in primary care",
"90.9% prescribed oral antibiotics — consistent with guidelines",
"Di/flucloxacillin increased 46% → 60%; Cefalexin decreased 38% → 26% (2011-2022)",
"Breast milk culture ordered in <1.1% of cases — significantly underutilised",
"Breast ultrasound ordering doubled (7% → 15%) over the study period",
"Clinical investigations overall doubled but still only 14.7% by 2022",
"Disparity by socioeconomic status and remoteness — equity concern",
"GPs broadly compliant with guidelines but milk culture uptake needs improvement",
],
"integrity_note": None,
},
{
"num": 7,
"pmid": "42136779",
"tier": "Review",
"year": "2026",
"title": "Image-Guided and Surgical Management of Breast Infections: Addressing Diagnostic and Therapeutic Challenges",
"authors": "Pathan H, Zeeshan S, Khan A",
"journal": "Pakistan Journal of Medical Sciences. 2026 Apr;42(11AASC).",
"doi": "10.12669/pjms.42.(11AASC).15596",
"abstract": (
"This narrative review (PubMed, Embase, Scopus; January 2005 – October 2023) reviewed "
"epidemiology, pathogenesis, imaging findings, microbiology, and management of breast "
"infections, focusing on differentiating chronic granulomatous mastitis from malignancy "
"and the role of minimally invasive interventions. Breast infections span a wide spectrum: "
"acute lactational mastitis (most common) to rare chronic granulomatous conditions such as "
"idiopathic granulomatous mastitis (IGM) and tuberculous mastitis (TBM). Lactational "
"mastitis and breast abscesses generally respond well to antibiotics or ultrasound-guided "
"drainage. Non-lactational abscesses, IGM, and TBM often resemble malignancy clinically "
"and radiologically — biopsy is essential for correct diagnosis. Ultrasound is the primary "
"imaging modality; mammography and MRI are used selectively to define disease extent or "
"exclude malignancy. Minimally invasive drainage techniques achieve high cure rates with "
"superior cosmetic outcomes. A multidisciplinary approach is recommended for complex cases. "
"Accurate diagnosis requires integrated clinical, radiologic, microbiologic, and "
"histologic assessment."
),
"key_points": [
"Breast infections span a spectrum: acute lactational mastitis to chronic granulomatous disease",
"Lactational mastitis/abscess: respond well to antibiotics + US-guided drainage",
"IGM (Idiopathic Granulomatous Mastitis) and TBM frequently mimic breast cancer",
"Biopsy is essential in chronic/non-lactational breast infections to exclude malignancy",
"Ultrasound = primary imaging tool for all breast infections",
"MRI used selectively — best for defining extent or excluding malignancy in complex cases",
"Minimally invasive drainage = high cure rates + better cosmetic outcomes vs surgery",
"Multidisciplinary approach (surgery, radiology, microbiology, pathology) for complex cases",
],
"integrity_note": None,
},
{
"num": 8,
"pmid": "37118650",
"tier": "Review",
"year": "2023",
"title": "Percutaneous Ultrasound-Guided Needle Aspiration for Management of Breast Abscesses — A Review",
"authors": "Ghunaim H",
"journal": "Journal of Medical Radiation Sciences. 2023 Sep;70(3).",
"doi": "10.1002/jmrs.682",
"abstract": (
"Breast abscesses remain a common cause of morbidity, particularly among lactating women. "
"Over recent years, there has been a rise in non-lactational breast abscess incidence and "
"a decline in lactational abscess. Traditional management is surgical incision and drainage "
"(I&D); newer techniques include needle aspiration (NA), suction drain, and catheter "
"placement, in addition to antibiotics. Needle aspiration as the minimally invasive "
"technique is generally recommended for abscesses <3-5 cm in diameter. This review "
"examined comparative evidence between NA and I&D irrespective of abscess size. Recent "
"studies have begun comparing the two modalities for abscesses >3 cm. The evidence shows "
"NA to be effective even for larger abscesses, with advantages including cosmetic "
"preference, shorter hospital stay, faster healing, and no need to stop breastfeeding. "
"There remains a lack of robust comparative data specifically for large abscesses (>3-5 cm), "
"and more high-quality RCTs are needed in this subgroup."
),
"key_points": [
"Non-lactational abscess incidence is increasing; lactational abscess incidence decreasing",
"NA recommended as first-line for abscesses <3-5 cm (standard recommendation)",
"Emerging evidence supports NA even for abscesses >3 cm in diameter",
"NA advantages: cosmetic outcome, shorter hospital stay, continued breastfeeding",
"I&D: reserved for NA failures and multiloculated large collections",
"Gap in evidence: lack of high-quality RCTs specifically for large abscesses (>5 cm)",
"Suction drains and catheter drainage are emerging alternatives to single-shot NA",
"Antibiotic therapy is essential adjunct regardless of drainage method",
],
"integrity_note": None,
},
{
"num": 9,
"pmid": "36202884",
"tier": "RCT",
"year": "2022",
"title": "Breast Microecology Improvement Using Probiotics Following Needle Aspiration in Lactational Breast Abscess: A Multi-Centre RCT",
"authors": "Zhang Y, Gao Y, Qin J, et al.",
"journal": "Scientific Reports. 2022 Oct 6;12(1):16770.",
"doi": "10.1038/s41598-022-21152-w",
"abstract": (
"This multicentre randomised double-blind controlled trial evaluated the effect of oral "
"Lactobacillus fermentum CECT5716 supplementation on breast microbiome composition and "
"clinical outcomes following ultrasound-guided needle aspiration in patients with "
"lactational breast abscess. Participants received either L. fermentum CECT5716 or placebo "
"after NA. The study demonstrated that probiotic supplementation significantly improved "
"breast milk microbiome diversity and composition, reducing pathogenic bacterial load. "
"Clinical outcomes including recurrence rates and time to resolution were improved in the "
"probiotic group. This study supports an emerging role for breast microbiome-targeted "
"therapy (probiotics) as an adjunct to standard NA + antibiotic treatment in lactational "
"abscess. Alongside PMID 35777008 (same group, late follow-up RCT), these are the first "
"high-quality trials to evaluate probiotics in this indication."
),
"key_points": [
"Multi-centre, randomised double-blind controlled trial — highest-quality probiotic evidence",
"Intervention: Oral L. fermentum CECT5716 after US-guided needle aspiration",
"Improved breast milk microbiome diversity and reduced pathogenic load",
"Reduced recurrence rates and improved time to resolution vs placebo",
"Aligns with ABM Protocol #36 concept of microbiome dysbiosis in mastitis spectrum",
"Supports probiotics as adjunct therapy after NA in lactational abscess",
"Late follow-up RCT (PMID: 35777008) confirms sustained benefits",
"Emerging frontier: microbiome-targeted therapy for breast infections",
],
"integrity_note": None,
},
]
# ════════════════════════════════════════════════════════════════════════════
# BUILD STORY
# ════════════════════════════════════════════════════════════════════════════
story = []
# ── Cover ─────────────────────────────────────────────────────────────────
story += [
sp(30),
Paragraph("PubMed Literature Summary", SUBTITLE_S),
sp(8),
Paragraph("Mastitis & Breast Abscess", TITLE_S),
Paragraph("Clinical Guidelines & Evidence Review", TITLE_S),
sp(12),
hr("#90caf9", 2),
sp(6),
Paragraph("9 Key Papers · Systematic Reviews · Meta-Analyses · RCTs · Guidelines · Cohort Studies",
ParagraphStyle("cs", fontName="Helvetica", fontSize=12,
textColor=colors.HexColor("#546e7a"), alignment=TA_CENTER, leading=17)),
sp(4),
Paragraph("Generated: July 2026 · Sources: PubMed / Cochrane / Academy of Breastfeeding Medicine",
DATE_S),
sp(40),
hr("#e0e0e0"),
sp(6),
]
# Evidence tier legend
legend_data = [
[Paragraph("<b>Evidence Tier Key</b>", ParagraphStyle("lh", fontName="Helvetica-Bold",
fontSize=11, textColor=colors.HexColor("#0d47a1")))],
]
story.append(Table(legend_data, colWidths=[W]))
tier_rows = []
for tier_key, (bg, label) in TIER_COLORS.items():
tier_rows.append([
Table([[Paragraph(f'<font color="white"><b> {label} </b></font>',
ParagraphStyle("tl", fontName="Helvetica-Bold", fontSize=10,
textColor=colors.white, leading=13))]],
colWidths=[5.5*cm],
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor(bg)),
("TOPPADDING",(0,0),(-1,-1),3),("BOTTOMPADDING",(0,0),(-1,-1),3),
("LEFTPADDING",(0,0),(-1,-1),6),
]))
])
legend_table = Table(
[tier_rows[:3], tier_rows[3:]],
colWidths=[W/3]*3,
style=TableStyle([
("VALIGN",(0,0),(-1,-1),"MIDDLE"),
("TOPPADDING",(0,0),(-1,-1),3),
("BOTTOMPADDING",(0,0),(-1,-1),3),
])
)
story += [legend_table, sp(20)]
# ── Table of Contents ──────────────────────────────────────────────────────
story += [
hr("#e0e0e0"),
sp(8),
Paragraph("Contents", TOC_HEAD),
]
toc_items = [
("#1 · ABM Clinical Protocol #36: Mastitis Spectrum (2022)", "Practice Guideline", "#b71c1c"),
("#2 · Cochrane Review: Breast Engorgement Treatments (2020)", "Systematic Review", "#1565c0"),
("#3 · Meta-Analysis: NA vs I&D for Breast Abscess (2023)", "Meta-Analysis", "#6a1b9a"),
("#4 · MAMMA Audit: UK & Ireland Mastitis Practice (2024)", "Cohort/Audit", "#e65100"),
("#5 · International Audit: Hospital Mastitis Management (2025)", "Cohort/Audit", "#e65100"),
("#6 · Australian GP Mastitis Trends 2011-2022 (2024)", "Cohort/Audit", "#e65100"),
("#7 · Image-Guided Management of Breast Infections (2026)", "Review", "#00695c"),
("#8 · US-Guided Needle Aspiration for Breast Abscess Review (2023)", "Review", "#00695c"),
("#9 · Probiotics After Needle Aspiration — Multi-Centre RCT (2022)", "RCT", "#2e7d32"),
]
for entry, tier_label, bg in toc_items:
row = Table([[
Paragraph(entry, TOC_S),
Table([[Paragraph(f'<font color="white"><b> {tier_label} </b></font>',
ParagraphStyle("tt", fontName="Helvetica-Bold", fontSize=9,
textColor=colors.white, leading=12))]],
colWidths=[3.2*cm],
style=TableStyle([
("BACKGROUND",(0,0),(-1,-1), colors.HexColor(bg)),
("TOPPADDING",(0,0),(-1,-1),2),("BOTTOMPADDING",(0,0),(-1,-1),2),
("LEFTPADDING",(0,0),(-1,-1),5),
]))
]], colWidths=[W - 3.5*cm, 3.5*cm])
row.setStyle(TableStyle([
("VALIGN",(0,0),(-1,-1),"MIDDLE"),
("TOPPADDING",(0,0),(-1,-1),2), ("BOTTOMPADDING",(0,0),(-1,-1),2),
]))
story.append(row)
story += [sp(6), hr("#e0e0e0"), PageBreak()]
# ── Summary Table ──────────────────────────────────────────────────────────
story += [
Paragraph("Evidence Summary at a Glance", SECTION_HEAD),
sp(4),
]
sum_data = [["#", "PMID", "Year", "Type", "Key Finding"]]
sum_rows = [
("1", "35576513", "2022", "Guideline", "ABM: Mastitis is a spectrum; antibiotics only if systemic symptoms >24h"),
("2", "32944940", "2020", "Syst. Review", "Cold cabbage leaves reduce engorgement pain (low certainty); NA meta-analysis not possible"),
("3", "37350731", "2023", "Meta-Analysis", "NA = I&D for cure; NA faster healing (-11d), less fistula, better breastfeeding ✓"),
("4", "37930678", "2024", "UK/IE Audit", "21% I&D rate; only 61% US aspiration; extreme variation across 69 hospitals"),
("5", "40437779", "2025", "Intl Audit", "Huge international variation; MRSA in 6%; international guidelines urgently needed"),
("6", "38772591", "2024", "AU Cohort", "GPs broadly follow guidelines; milk culture <1.1%; flucloxacillin use rising"),
("7", "42136779", "2026", "Review", "IGM/TBM mimic cancer; biopsy essential; US primary tool; multidisciplinary approach"),
("8", "37118650", "2023", "Review", "NA effective even for abscesses >3 cm; evidence gap for very large abscesses"),
("9", "36202884", "2022", "RCT", "Probiotics (L. fermentum) after NA improve microbiome, reduce recurrence"),
]
for r in sum_rows:
sum_data.append(list(r))
st = Table(sum_data, colWidths=[0.6*cm, 1.8*cm, 1.2*cm, 2.2*cm, W - 5.8*cm])
st.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#0d47a1")),
("TEXTCOLOR", (0,0), (-1,0), colors.white),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("FONTNAME", (0,1), (1,-1), "Helvetica-Bold"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#e8eaf6"), colors.white]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("PADDING", (0,0), (-1,-1), 4),
("WORDWRAP", (4,1), (4,-1), True),
]))
story += [st, PageBreak()]
# ── Individual Paper Pages ─────────────────────────────────────────────────
for p in papers:
bg = BANNER_COLORS[p["num"] - 1]
elements = []
# Banner
elements.append(section_banner(p["num"], bg, p["title"]))
elements.append(sp(6))
# Tier badge + PMID row
badge = tier_badge(p["tier"], p["year"])
pmid_p = Paragraph(
f'<font color="#5c35a0"><b>PMID: {p["pmid"]}</b></font> · '
f'<font color="#37474f">DOI: {p["doi"]}</font>',
ParagraphStyle("pp", fontName="Helvetica", fontSize=10,
textColor=colors.HexColor("#37474f"), leading=14, alignment=TA_RIGHT)
)
meta_row = Table([[badge, pmid_p]], colWidths=[W*0.55, W*0.45])
meta_row.setStyle(TableStyle([
("VALIGN",(0,0),(-1,-1),"MIDDLE"),
("TOPPADDING",(0,0),(-1,-1),0),("BOTTOMPADDING",(0,0),(-1,-1),0),
]))
elements.append(meta_row)
elements.append(sp(5))
# Authors & journal
elements.append(Paragraph(p["authors"], AUTHORS))
elements.append(Paragraph(p["journal"], JOURNAL))
elements.append(hr(bg, 1))
elements.append(sp(3))
# Abstract box
abs_bg = "#fafafa"
abs_table = Table(
[[Paragraph("<b>Abstract</b>", LABEL_S)],
[Paragraph(p["abstract"], BODY_S)]],
colWidths=[W - 0.4*cm],
)
abs_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor(abs_bg)),
("BOX", (0,0), (-1,-1), 0.8, colors.HexColor(bg)),
("TOPPADDING",(0,0),(-1,-1),6),("BOTTOMPADDING",(0,0),(-1,-1),6),
("LEFTPADDING",(0,0),(-1,-1),8),("RIGHTPADDING",(0,0),(-1,-1),8),
]))
elements.append(abs_table)
elements.append(sp(8))
# Key points box
kp_content = [Paragraph("<b>Key Points & Clinical Implications</b>",
ParagraphStyle("kph", fontName="Helvetica-Bold", fontSize=11,
textColor=colors.white, leading=15))]
kp_items = [Paragraph(f"<b>✓</b> {kp}",
ParagraphStyle("kpi", fontName="Helvetica", fontSize=10,
textColor=colors.HexColor("#1b2a1b"),
leftIndent=5, leading=15, spaceAfter=3))
for kp in p["key_points"]]
kp_rows = [[kp_content[0]]] + [[item] for item in kp_items]
kp_table = Table(kp_rows, colWidths=[W - 0.4*cm])
kp_style = [
("BACKGROUND", (0,0), (0,0), colors.HexColor(bg)),
("BACKGROUND", (0,1), (-1,-1), colors.HexColor("#f1f8e9")),
("BOX", (0,0), (-1,-1), 0.8, colors.HexColor(bg)),
("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
("LEFTPADDING",(0,0),(-1,-1),8),("RIGHTPADDING",(0,0),(-1,-1),8),
("LINEBELOW", (0,0), (-1,0), 0.5, colors.white),
]
kp_table.setStyle(TableStyle(kp_style))
elements.append(kp_table)
# Integrity warning
if p.get("integrity_note"):
elements.append(sp(5))
elements.append(Table(
[[Paragraph(p["integrity_note"],
ParagraphStyle("iw", fontName="Helvetica-Oblique", fontSize=10,
textColor=colors.HexColor("#b71c1c"), leading=14))]],
colWidths=[W],
style=TableStyle([
("BACKGROUND",(0,0),(-1,-1), colors.HexColor("#fff3e0")),
("BOX",(0,0),(-1,-1),0.8, colors.HexColor("#e65100")),
("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
("LEFTPADDING",(0,0),(-1,-1),8),
])
))
elements.append(sp(10))
elements.append(hr("#e0e0e0"))
elements.append(PageBreak())
story += elements
# ── Final page: Clinical Recommendations ─────────────────────────────────
story += [
Paragraph("Consolidated Clinical Recommendations", SECTION_HEAD),
hr("#4a148c", 2),
sp(8),
]
recs = [
["Clinical Scenario", "Recommendation", "Evidence Source"],
["Mild mastitis\n(no systemic symptoms)", "Optimise milk removal + NSAIDs;\nantibiotics only if no improvement in 12-24h",
"ABM Protocol #36\nPMID: 35576513"],
["Mastitis with fever >38.5°C\nor systemic symptoms >24h", "Oral antibiotics:\nFlucloxacillin 500mg QID × 10-14d\nor Cefalexin 500mg QID × 10-14d",
"ABM Protocol #36\nAustralian cohort PMID: 38772591"],
["MRSA-suspected mastitis", "TMP-SMX or Clindamycin\n(avoid TMP-SMX if infant <2 months)", "Expert consensus"],
["Breast abscess\n(all sizes, first-line)", "US-guided needle aspiration —\nfirst-line treatment",
"Meta-Analysis\nPMID: 37350731"],
["Breast abscess — failed NA\nor multiloculated/large", "Incision and Drainage (I&D)\nunder GA/deep sedation",
"Meta-Analysis\nPMID: 37350731"],
["Breast engorgement", "Cold cabbage leaves, frequent feeding,\ncold packs, massage",
"Cochrane 2020\nPMID: 32944940"],
["Non-lactational /\nGranulomatous mastitis", "Biopsy to exclude malignancy;\ncorticosteroids for IGM; anti-TB for TBM",
"Review 2026\nPMID: 42136779"],
["Probiotics\n(adjunct after NA)", "L. fermentum CECT5716 —\nemerging evidence; consider in recurrent cases",
"RCT 2022\nPMID: 36202884"],
["Milk culture", "Recommended if: no response to antibiotics,\nMRSA suspected, recurrent mastitis",
"International audit\nPMID: 40437779"],
]
rt = Table(recs, colWidths=[3.5*cm, 6.5*cm, W - 10*cm])
rt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#4a148c")),
("TEXTCOLOR", (0,0), (-1,0), colors.white),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 10),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#ede7f6"), colors.white]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#b39ddb")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("PADDING", (0,0), (-1,-1), 6),
("WORDWRAP", (0,1), (-1,-1), True),
]))
story.append(rt)
story.append(sp(20))
story.append(hr("#90caf9", 2))
story.append(sp(8))
story.append(Paragraph(
"This document summarises 9 PubMed-indexed papers on mastitis and breast abscess management, "
"compiled for educational and clinical reference purposes. All PMIDs verified July 2026. "
"For clinical decisions, always refer to current local guidelines and consult specialist opinion.",
ParagraphStyle("disc", fontName="Helvetica-Oblique", fontSize=9,
textColor=colors.HexColor("#90a4ae"), alignment=TA_JUSTIFY, leading=13)
))
# ── Build ──────────────────────────────────────────────────────────────────
doc.build(story)
print(f"✓ PDF created: {OUTPUT}")
mkdir -p /home/daytona/workspace/mastitis-pubmed && python /home/daytona/workspace/mastitis-pubmed/create_pubmed_pdf.py 2>&1
ls -lh /home/daytona/workspace/mastitis-pubmed/
Mastitis BreastAbscess PubMed Summary
PDF Document · PDF
| Paper | Type | Year |
|---|---|---|
| ABM Protocol #36 — Mastitis Spectrum | Practice Guideline | 2022 |
| Cochrane: Breast Engorgement Treatments | Systematic Review | 2020 |
| NA vs I&D Meta-Analysis (9 RCTs, 703 pts) | Meta-Analysis | 2023 |
| MAMMA Audit — UK/Ireland 69 hospitals | Cohort Audit | 2024 |
| International Hospital Audit (5 countries) | Cohort Audit | 2025 |
| Australian GP Trends 2011-2022 | Cohort Study | 2024 |
| Image-Guided Breast Infection Management | Review | 2026 |
| US-Guided Needle Aspiration Review | Review | 2023 |
| Probiotics after NA — Multi-Centre RCT | RCT | 2022 |