Give me mcq regarding toxic shock syndrome

Reading File
Now let me search the medical library for Toxic Shock Syndrome content.
Finding Sources
Finding Sources
Now let me read the detailed content from the most informative sources:
Reading File
Reading File
Reading File
Let me also read the Dermatology and Goldman-Cecil streptococcal TSS sections for complete coverage:
Reading File
Reading File
I now have comprehensive content from multiple authoritative textbooks to build high-quality MCQs. Here are the MCQs:

Multiple Choice Questions: Toxic Shock Syndrome


Q1. Which toxin is responsible for 100% of menstruation-associated cases of staphylococcal toxic shock syndrome?
A) Staphylococcal enterotoxin A (SEA) B) Toxic shock syndrome toxin-1 (TSST-1) C) Exfoliative toxin A D) Staphylococcal enterotoxin B (SEB)
Answer: B) TSST-1 TSST-1 is responsible for 100% of tampon/menstruation-associated TSS cases. SEB, SEA, and SEC account for nonmenstrual TSS cases. (Goldman-Cecil Medicine)

Q2. TSST-1 exerts its pathogenic effect primarily by acting as a:
A) Endotoxin that activates complement B) Superantigen that binds MHC class II molecules and causes massive T-cell stimulation C) Proteolytic enzyme destroying basement membranes D) Pore-forming toxin targeting red blood cells
Answer: B) Superantigen binding MHC class II TSST-1 binds MHC class II molecules, causing non-specific T-cell stimulation and massive cytokine release (TNF-α, IL-1). It is the prototypical superantigen. (Jawetz Medical Microbiology)

Q3. Which of the following is NOT a diagnostic criterion for staphylococcal toxic shock syndrome?
A) Temperature ≥38.9°C B) Systolic BP <90 mmHg C) Positive blood culture for S. aureus D) Diffuse macular erythroderma
Answer: C) Positive blood culture for S. aureus Diagnosis is clinical. Blood cultures are actually expected to be NEGATIVE in staphylococcal TSS (positive in only ~5-15% of cases). A positive blood culture would point more toward streptococcal TSS (~50% positive). (Dermatology 5e; Goldman-Cecil Medicine)

Q4. How many organ systems must be involved to fulfil the diagnostic criteria for staphylococcal TSS?
A) One or more B) Two or more C) Three or more D) Four or more
Answer: C) Three or more Diagnosis requires fever, hypotension, rash, AND involvement of at least three organ systems (GI, muscular, CNS, renal, hepatic, or hematologic). (Rosen's Emergency Medicine)

Q5. The rash of toxic shock syndrome characteristically:
A) Begins as petechiae on the wrists and ankles B) Is a diffuse, blanching macular erythroderma followed by full-thickness desquamation of palms and soles C) Presents as vesicles that rupture and crust D) Appears first on the trunk and spares the extremities
Answer: B) Diffuse macular erythroderma with later desquamation of palms and soles The rash is a diffuse blanching macular erythroderma; it fades within 3 days and is followed by full-thickness desquamation, most commonly of the hands and feet, 1-2 weeks after onset. (Rosen's Emergency Medicine; Dermatology 5e)

Q6. Approximately what percentage of TSS cases are associated with menstruation?
A) 10% B) 30% C) 50% D) 80%
Answer: C) 50% Approximately 50% of TSS cases are menstruation-associated. The remaining cases occur in the postoperative setting, burns, postpartum infection, osteomyelitis, sinusitis, and other foci. (Rosen's Emergency Medicine)

Q7. For streptococcal toxic shock syndrome, what is the preferred antibiotic regimen?
A) Vancomycin alone B) Penicillin G plus clindamycin C) Oxacillin plus gentamicin D) Metronidazole plus cefazolin
Answer: B) Penicillin G plus clindamycin Streptococcal TSS is treated empirically with clindamycin (900 mg IV q8h) PLUS penicillin G (4 million units IV q4h). Clindamycin suppresses toxin synthesis. (Goldman-Cecil Medicine)

Q8. The gene for TSST-1 is found in approximately what proportion of S. aureus isolates?
A) 5% B) 20% C) 50% D) 75%
Answer: B) 20% The gene for TSST-1 is found in about 20% of S. aureus isolates, including MRSA strains. (Jawetz Medical Microbiology)

Q9. Which of the following cytokines is primarily responsible for the fever and erythema in TSS?
A) IL-6 and IL-10 B) TNF-α and IL-1 C) IL-4 and IL-13 D) IFN-γ and IL-2
Answer: B) TNF-α and IL-1 The clinical manifestations of TSS result from massive release of TNF-α and IL-1, causing fever, diffuse macular erythema, and multiorgan involvement. (Goldman-Cecil Medicine)

Q10. Which feature distinguishes streptococcal TSS from staphylococcal TSS diagnostically?
A) Presence of desquamation B) Isolation of Group A Streptococcus from a normally sterile site (definite case) C) Hypotension D) Involvement of three organ systems
Answer: B) Isolation of Group A Streptococcus from a sterile site Definite streptococcal TSS requires isolation of GAS from a normally sterile site (blood, CSF, tissue biopsy). Additionally, blood cultures are positive in ~50% of streptococcal TSS vs. only 5-15% in staphylococcal TSS. (Dermatology 5e; Goldman-Cecil Medicine)

Q11. For staphylococcal TSS due to methicillin-resistant S. aureus (MRSA), the treatment of choice is:
A) Oxacillin + clindamycin B) Vancomycin + clindamycin C) Penicillin G + rifampin D) Doxycycline monotherapy
Answer: B) Vancomycin + clindamycin MRSA-related staphylococcal TSS is treated with vancomycin (15-20 mg/kg q8-12h, max 2g/dose) PLUS clindamycin (900 mg IV q8h). Clindamycin is added to suppress toxin production. (Goldman-Cecil Medicine)

Q12. TSS following nasal packing is most likely caused by which organism?
A) Streptococcus pneumoniae B) Staphylococcus aureus C) Pseudomonas aeruginosa D) Haemophilus influenzae
Answer: B) Staphylococcus aureus TSS cases related to nasal packing are caused by S. aureus. Prolonged nasal packing causes bacterial overgrowth leading to toxin production and systemic illness. (K.J. Lee's Essential Otolaryngology)

Q13. The mucous membrane findings in TSS may include all of the following EXCEPT:
A) Strawberry tongue B) Non-exudative conjunctivitis C) Pharyngitis D) Koplik spots
Answer: D) Koplik spots Koplik spots are pathognomonic of measles. TSS mucous membrane findings include strawberry tongue, non-exudative conjunctivitis, pharyngitis, and vaginitis. (Rosen's Emergency Medicine)

Q14. The TSST-1 and enterotoxin genes are located on which genetic element?
A) Plasmid B) Transposon C) Chromosomal pathogenicity island D) Bacteriophage genome
Answer: C) Chromosomal pathogenicity island The exfoliative toxins, TSST-1, and enterotoxin genes are carried on a chromosomal pathogenicity island, which interacts with bacteriophages to produce the toxins. (Jawetz Medical Microbiology)

Q15. What is the approximate mortality of staphylococcal toxic shock syndrome?
A) <1% B) 5-15% C) 30-40% D) >50%
Answer: B) 5-15% Staphylococcal TSS has a mortality of approximately 5-15%. Streptococcal TSS tends to have higher mortality. (Goldman-Cecil Medicine)

Sources:
  • Goldman-Cecil Medicine, International Edition
  • Rosen's Emergency Medicine, 9e
  • Jawetz, Melnick & Adelberg's Medical Microbiology, 28e
  • Dermatology, 2-Volume Set, 5e
  • K.J. Lee's Essential Otolaryngology

Create a study guide PDF comparing staphylococcal vs streptococcal TSS00% in the question?

I'll read the PDF skill first, then pull more detailed content from the textbooks to build a thorough comparison PDF.
Reading File
Good. Now let me pull more detailed textbook content on both types of TSS in parallel:
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Excellent data gathered. Now let me read a bit more streptococcal TSS clinical detail, then build the PDF:
Reading File
I have all the data needed. Now let me build the PDF:
Running Command

mkdir -p /home/daytona/workspace/tss-study-guide

Writing File

~/tss-study-guide/generate_tss_pdf.py

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

OUTPUT_PATH = "/home/daytona/workspace/tss-study-guide/TSS_Study_Guide.pdf"

# ── Colours ────────────────────────────────────────────────────────────────────
DARK_BLUE   = colors.HexColor("#1A3A5C")
MED_BLUE    = colors.HexColor("#2E6DA4")
LIGHT_BLUE  = colors.HexColor("#D6E8F7")
STAPH_COL   = colors.HexColor("#1A5276")   # deep blue for staph column header
STREP_COL   = colors.HexColor("#1D6A33")   # deep green for strep column header
STAPH_LIGHT = colors.HexColor("#D6EAF8")
STREP_LIGHT = colors.HexColor("#D5F5E3")
ALT_GREY    = colors.HexColor("#F2F3F4")
GOLD        = colors.HexColor("#D4AC0D")
WHITE       = colors.white
RED_DARK    = colors.HexColor("#922B21")
ORANGE      = colors.HexColor("#CA6F1E")

# ── Styles ─────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def s(name, **kw):
    base = styles[name] if name in styles else styles["Normal"]
    return ParagraphStyle(name + "_custom_" + str(id(kw)), parent=base, **kw)

TITLE_STYLE = s("Title",
    fontSize=26, textColor=WHITE, alignment=TA_CENTER,
    fontName="Helvetica-Bold", spaceAfter=4, leading=30)

SUBTITLE_STYLE = s("Normal",
    fontSize=13, textColor=colors.HexColor("#AED6F1"),
    alignment=TA_CENTER, fontName="Helvetica", spaceAfter=2)

SECTION_STYLE = s("Normal",
    fontSize=14, textColor=WHITE, fontName="Helvetica-Bold",
    alignment=TA_LEFT, leading=18, spaceAfter=2, spaceBefore=10)

SUBSECTION_STYLE = s("Normal",
    fontSize=11, textColor=DARK_BLUE, fontName="Helvetica-Bold",
    spaceAfter=4, spaceBefore=8)

BODY_STYLE = s("Normal",
    fontSize=9.5, textColor=colors.HexColor("#2C2C2C"),
    fontName="Helvetica", leading=14, spaceAfter=3, alignment=TA_JUSTIFY)

BULLET_STYLE = s("Normal",
    fontSize=9.5, textColor=colors.HexColor("#2C2C2C"),
    fontName="Helvetica", leading=13, leftIndent=14, spaceAfter=2)

TABLE_HEADER_STYLE = s("Normal",
    fontSize=9.5, textColor=WHITE, fontName="Helvetica-Bold",
    alignment=TA_CENTER, leading=12)

TABLE_CELL_STYLE = s("Normal",
    fontSize=9, textColor=colors.HexColor("#1C1C1C"),
    fontName="Helvetica", leading=12, alignment=TA_LEFT)

TABLE_CELL_CENTER = s("Normal",
    fontSize=9, textColor=colors.HexColor("#1C1C1C"),
    fontName="Helvetica", leading=12, alignment=TA_CENTER)

CAPTION_STYLE = s("Normal",
    fontSize=8, textColor=colors.HexColor("#7F8C8D"),
    fontName="Helvetica-Oblique", alignment=TA_CENTER)

MNEMONIC_STYLE = s("Normal",
    fontSize=10, textColor=DARK_BLUE, fontName="Helvetica-Bold",
    leading=15, leftIndent=10, spaceAfter=2)

WARNING_STYLE = s("Normal",
    fontSize=9, textColor=RED_DARK, fontName="Helvetica-BoldOblique",
    leading=13, leftIndent=10, spaceAfter=2)

NOTE_STYLE = s("Normal",
    fontSize=8.5, textColor=colors.HexColor("#7D6608"),
    fontName="Helvetica-Oblique", leading=12, alignment=TA_CENTER)

# ── Helper: section banner ─────────────────────────────────────────────────────
def section_banner(title, bg=DARK_BLUE):
    data = [[Paragraph(title, SECTION_STYLE)]]
    t = Table(data, colWidths=[17.5 * cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0, 0), (-1, -1), bg),
        ("TOPPADDING",    (0, 0), (-1, -1), 6),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 6),
        ("LEFTPADDING",   (0, 0), (-1, -1), 10),
        ("RIGHTPADDING",  (0, 0), (-1, -1), 10),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return t

def bullet(text):
    return Paragraph(f"• {text}", BULLET_STYLE)

def body(text):
    return Paragraph(text, BODY_STYLE)

def spacer(h=0.3):
    return Spacer(1, h * cm)

def hr(color=MED_BLUE, thickness=1):
    return HRFlowable(width="100%", thickness=thickness,
                      color=color, spaceAfter=4, spaceBefore=4)

# ── Main comparison table ──────────────────────────────────────────────────────
def build_comparison_table():
    col_w = [4.5 * cm, 6.5 * cm, 6.5 * cm]

    def hdr(txt, bg):
        return Paragraph(txt, TABLE_HEADER_STYLE)

    def c(txt):
        return Paragraph(txt, TABLE_CELL_STYLE)

    def cc(txt):
        return Paragraph(txt, TABLE_CELL_CENTER)

    rows = [
        # Header row
        [Paragraph("Feature", TABLE_HEADER_STYLE),
         Paragraph("Staphylococcal TSS", TABLE_HEADER_STYLE),
         Paragraph("Streptococcal TSS", TABLE_HEADER_STYLE)],

        # Causative organism
        [c("Causative Organism"),
         c("Staphylococcus aureus (incl. MRSA)"),
         c("Group A Streptococcus (S. pyogenes); rarely Group G")],

        # Toxins
        [c("Key Toxin(s)"),
         c("TSST-1 (menstrual TSS 100%)\nSEA, SEB, SEC (non-menstrual)"),
         c("Pyrogenic exotoxins A, B, C (SPE-A/B/C)\nStreptococcal superantigen (SSA)\nMitogenic exotoxin Z")],

        # Mechanism
        [c("Mechanism"),
         c("Superantigen → binds MHC class II + T-cell Vβ receptor → massive cytokine release (TNF-α, IL-1)"),
         c("Superantigen + SPE-B (cysteine protease) → cytokine storm (TNF-α, TNF-β, IL-1, IL-2, IL-6)")],

        # Risk Factors
        [c("Risk Factors"),
         c("Tampon use (menstrual); nasal packing; surgical wounds; burns; postpartum; osteomyelitis; abscess"),
         c("Invasive soft tissue infections (necrotizing fasciitis, myositis); bacteremia; pneumonia; skin disruption")],

        # Typical Age
        [c("Typical Age"),
         c("Previously healthy adults 20–50 yrs"),
         c("Adults 20–50 yrs; also children (mean ~5 yrs)")],

        # Bacteremia
        [c("Bacteremia"),
         c("Uncommon: ~5–15% blood culture +ve"),
         c("Common: ~50% blood culture +ve")],

        # Rash
        [c("Rash Character"),
         c("Diffuse blanching macular erythroderma (sunburn-like); very common"),
         c("Generalized blanching macular erythema; less common than staph TSS; blistering more likely")],

        # Desquamation
        [c("Desquamation"),
         c("Full-thickness; palms & soles; 1–2 weeks after onset; very prominent"),
         c("Occurs in ~20% of patients; palms & soles; less prominent")],

        # Soft Tissue Infection
        [c("Soft Tissue Involvement"),
         c("Usually occult; skin/mucous membrane portal"),
         c("Necrotizing fasciitis or myositis in many cases; violaceous hue/bullae/necrosis = worse prognosis")],

        # Mucous membranes
        [c("Mucous Membrane Findings"),
         c("Strawberry tongue; non-exudative conjunctivitis; pharyngitis; vaginitis"),
         c("Less prominent mucous membrane involvement compared to staphylococcal TSS")],

        # Onset
        [c("Onset / Progression"),
         c("Acute; rapid onset of fever, rash, hypotension"),
         c("May be insidious initially (flu-like); shock develops 48–72 h after onset")],

        # Diagnostic criteria
        [c("Diagnostic Criteria"),
         c("Fever ≥38.9°C + hypotension (SBP <90) + rash + ≥3 organ systems; negative blood / CSF cultures"),
         c("GAS from sterile site + hypotension + ≥2 organ systems (definite); or GAS non-sterile site + same")],

        # Organ systems
        [c("Organ Systems Involved"),
         c("GI, muscular, CNS, renal, hepatic, hematologic (≥3 required)"),
         c("Renal impairment, coagulopathy, liver impairment, ARDS, soft tissue necrosis (≥2 required)")],

        # Lab findings
        [c("Key Lab Findings"),
         c("↑Creatinine, ↑LFTs, thrombocytopenia (<100,000/mm³), negative cultures usually"),
         c("↑Creatinine (early), ↑CPK (necrotizing fasciitis), leukocytosis with left shift, DIC, ARDS")],

        # Treatment - antibiotics
        [c("Antibiotic Rx\n(MSSA)"),
         c("Oxacillin or Nafcillin (2g IV q4h) OR Cefazolin (2g IV q8h) + Clindamycin (900mg IV q8h)"),
         c("Penicillin G (4M units IV q4h) + Clindamycin (900mg IV q8h); alt: ceftriaxone or vancomycin")],

        # Treatment - MRSA
        [c("Antibiotic Rx\n(MRSA / resistant)"),
         c("Vancomycin (15–20 mg/kg q8–12h, max 2g/dose) + Clindamycin (900mg IV q8h)"),
         c("N/A for MRSA; alternatives: ceftriaxone, cefazolin, vancomycin, daptomycin (6mg/kg IV q24h)")],

        # Why clindamycin?
        [c("Role of Clindamycin"),
         c("Suppresses toxin synthesis; added to β-lactam regardless of MSSA or MRSA"),
         c("Suppresses SPE toxin production; first-line partner to penicillin G; linezolid is alternative")],

        # Surgery
        [c("Surgical Intervention"),
         c("Source control (drainage, debridement of focus)"),
         c("Early, aggressive surgical debridement / fasciotomy / amputation — often life-saving")],

        # Other supportive
        [c("Other Therapy"),
         c("IV fluids, vasopressors, ventilatory support; IVIg (may neutralize toxins)"),
         c("IV fluids, vasopressors, ventilatory support; IVIg to neutralize toxins (evidence supports)")],

        # Mortality
        [c("Mortality"),
         c("~5–15%"),
         c("30–60% (up to 5× higher than staphylococcal TSS)")],

        # Recurrence
        [c("Recurrence Risk"),
         c("Higher — menstrual TSS can recur with continued tampon use"),
         c("Lower recurrence risk; single invasive episode common")],
    ]

    tbl = Table(rows, colWidths=col_w, repeatRows=1)

    style = TableStyle([
        # Header
        ("BACKGROUND",    (0, 0), (0, 0), DARK_BLUE),
        ("BACKGROUND",    (1, 0), (1, 0), STAPH_COL),
        ("BACKGROUND",    (2, 0), (2, 0), STREP_COL),
        ("TEXTCOLOR",     (0, 0), (-1, 0), WHITE),
        ("FONTNAME",      (0, 0), (-1, 0), "Helvetica-Bold"),
        ("FONTSIZE",      (0, 0), (-1, 0), 9.5),
        ("ALIGN",         (0, 0), (-1, 0), "CENTER"),

        # Feature column
        ("BACKGROUND",    (0, 1), (0, -1), colors.HexColor("#EBF5FB")),
        ("FONTNAME",      (0, 1), (0, -1), "Helvetica-Bold"),
        ("FONTSIZE",      (0, 1), (0, -1), 8.5),

        # Alternating row colours
        *[("BACKGROUND", (1, i), (1, i), STAPH_LIGHT if i % 2 == 0 else WHITE)
          for i in range(1, len(rows))],
        *[("BACKGROUND", (2, i), (2, i), STREP_LIGHT if i % 2 == 0 else WHITE)
          for i in range(1, len(rows))],

        # Grid
        ("GRID",          (0, 0), (-1, -1), 0.5, colors.HexColor("#BDC3C7")),
        ("VALIGN",        (0, 0), (-1, -1), "TOP"),
        ("TOPPADDING",    (0, 0), (-1, -1), 5),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 5),
        ("LEFTPADDING",   (0, 0), (-1, -1), 5),
        ("RIGHTPADDING",  (0, 0), (-1, -1), 5),
        ("FONTSIZE",      (1, 1), (-1, -1), 8.5),
        ("ROWBACKGROUNDS",(0, 0), (-1, -1), [None]),
    ])
    tbl.setStyle(style)
    return tbl

# ── Diagnostic criteria box ────────────────────────────────────────────────────
def build_criteria_table():
    col_w = [8.5 * cm, 9 * cm]
    rows = [
        [Paragraph("STAPHYLOCOCCAL TSS CRITERIA", TABLE_HEADER_STYLE),
         Paragraph("STREPTOCOCCAL TSS CRITERIA", TABLE_HEADER_STYLE)],
        [
            Paragraph(
                "<b>ALL of the following:</b><br/>"
                "1. Fever: temperature ≥38.9°C (102°F)<br/>"
                "2. Rash: diffuse macular erythroderma<br/>"
                "3. Desquamation: 1–2 weeks after onset (palms &amp; soles)<br/>"
                "4. Hypotension: SBP &lt;90 mmHg (adults)<br/>"
                "5. Multisystem involvement (≥3 organ systems):<br/>"
                "   • GI  • Muscular  • CNS<br/>"
                "   • Renal  • Hepatic  • Hematologic<br/>"
                "6. Negative: Blood/CSF cultures, RMSF serology, leptospirosis, measles",
                TABLE_CELL_STYLE),
            Paragraph(
                "<b>DEFINITE case:</b> GAS from sterile site<br/>"
                "  (blood, CSF, tissue biopsy, surgical wound)<br/><br/>"
                "<b>PROBABLE case:</b> GAS from non-sterile site<br/>"
                "  (throat, sputum, vagina, superficial lesion)<br/><br/>"
                "<b>PLUS all of:</b><br/>"
                "• Hypotension: SBP &lt;90 mmHg (adults)<br/>"
                "• ≥2 of the following:<br/>"
                "   – Renal impairment<br/>"
                "   – Coagulopathy (plt &lt;100,000 or DIC)<br/>"
                "   – Liver impairment<br/>"
                "   – ARDS<br/>"
                "   – Erythematous rash ± desquamation<br/>"
                "   – Soft tissue necrosis",
                TABLE_CELL_STYLE),
        ]
    ]
    tbl = Table(rows, colWidths=col_w)
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0, 0), (0, 0), STAPH_COL),
        ("BACKGROUND",    (1, 0), (1, 0), STREP_COL),
        ("TEXTCOLOR",     (0, 0), (-1, 0), WHITE),
        ("FONTNAME",      (0, 0), (-1, 0), "Helvetica-Bold"),
        ("ALIGN",         (0, 0), (-1, 0), "CENTER"),
        ("BACKGROUND",    (0, 1), (0, 1), STAPH_LIGHT),
        ("BACKGROUND",    (1, 1), (1, 1), STREP_LIGHT),
        ("GRID",          (0, 0), (-1, -1), 0.5, colors.HexColor("#BDC3C7")),
        ("VALIGN",        (0, 0), (-1, -1), "TOP"),
        ("TOPPADDING",    (0, 0), (-1, -1), 7),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 7),
        ("LEFTPADDING",   (0, 0), (-1, -1), 7),
        ("RIGHTPADDING",  (0, 0), (-1, -1), 7),
        ("FONTSIZE",      (0, 1), (-1, -1), 8.5),
    ]))
    return tbl

# ── Treatment comparison table ─────────────────────────────────────────────────
def build_treatment_table():
    col_w = [3.5 * cm, 7 * cm, 7 * cm]
    rows = [
        [Paragraph("", TABLE_HEADER_STYLE),
         Paragraph("STAPHYLOCOCCAL TSS", TABLE_HEADER_STYLE),
         Paragraph("STREPTOCOCCAL TSS", TABLE_HEADER_STYLE)],

        [Paragraph("Supportive", TABLE_CELL_STYLE),
         Paragraph("IV fluids, vasopressors, ventilatory support", TABLE_CELL_STYLE),
         Paragraph("Aggressive IV fluids, vasopressors, ventilatory support", TABLE_CELL_STYLE)],

        [Paragraph("MSSA\n(1st line)", TABLE_CELL_STYLE),
         Paragraph("Oxacillin/Nafcillin 2g IV q4h\nOR Cefazolin 2g IV q8h\n+ Clindamycin 900mg IV q8h", TABLE_CELL_STYLE),
         Paragraph("Penicillin G 4 million units IV q4h\n+ Clindamycin 900mg IV q8h", TABLE_CELL_STYLE)],

        [Paragraph("MRSA", TABLE_CELL_STYLE),
         Paragraph("Vancomycin 15–20mg/kg IV q8–12h (max 2g/dose)\n+ Clindamycin 900mg IV q8h", TABLE_CELL_STYLE),
         Paragraph("Not applicable (GAS penicillin-sensitive)\nAlternatives: Ceftriaxone, Vancomycin, Daptomycin 6mg/kg IV q24h", TABLE_CELL_STYLE)],

        [Paragraph("Toxin suppression", TABLE_CELL_STYLE),
         Paragraph("Clindamycin (blocks ribosomal 50S → inhibits toxin synthesis)", TABLE_CELL_STYLE),
         Paragraph("Clindamycin; alternatively Linezolid\n(both block toxin production)", TABLE_CELL_STYLE)],

        [Paragraph("IVIg", TABLE_CELL_STYLE),
         Paragraph("May be considered to neutralize TSST-1", TABLE_CELL_STYLE),
         Paragraph("IVIg beneficial — neutralizes streptococcal superantigens; recommended in severe/refractory cases", TABLE_CELL_STYLE)],

        [Paragraph("Surgery", TABLE_CELL_STYLE),
         Paragraph("Source control: drain/debride focus of infection", TABLE_CELL_STYLE),
         Paragraph("Early aggressive surgical debridement / fasciotomy / amputation — often life-saving in necrotizing fasciitis", TABLE_CELL_STYLE)],

        [Paragraph("Source removal", TABLE_CELL_STYLE),
         Paragraph("Remove tampon / nasal packing / foreign body", TABLE_CELL_STYLE),
         Paragraph("Identify and treat portal of entry", TABLE_CELL_STYLE)],
    ]
    tbl = Table(rows, colWidths=col_w, repeatRows=1)
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0, 0), (0, 0), DARK_BLUE),
        ("BACKGROUND",    (1, 0), (1, 0), STAPH_COL),
        ("BACKGROUND",    (2, 0), (2, 0), STREP_COL),
        ("TEXTCOLOR",     (0, 0), (-1, 0), WHITE),
        ("FONTNAME",      (0, 0), (-1, 0), "Helvetica-Bold"),
        ("ALIGN",         (0, 0), (-1, 0), "CENTER"),
        ("BACKGROUND",    (0, 1), (0, -1), colors.HexColor("#EBF5FB")),
        ("FONTNAME",      (0, 1), (0, -1), "Helvetica-Bold"),
        ("FONTSIZE",      (0, 1), (0, -1), 8),
        *[("BACKGROUND", (1, i), (1, i), STAPH_LIGHT if i % 2 == 1 else WHITE)
          for i in range(1, len(rows))],
        *[("BACKGROUND", (2, i), (2, i), STREP_LIGHT if i % 2 == 1 else WHITE)
          for i in range(1, len(rows))],
        ("GRID",          (0, 0), (-1, -1), 0.5, colors.HexColor("#BDC3C7")),
        ("VALIGN",        (0, 0), (-1, -1), "TOP"),
        ("TOPPADDING",    (0, 0), (-1, -1), 5),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 5),
        ("LEFTPADDING",   (0, 0), (-1, -1), 5),
        ("RIGHTPADDING",  (0, 0), (-1, -1), 5),
        ("FONTSIZE",      (1, 1), (-1, -1), 8.5),
    ]))
    return tbl

# ── High-yield facts box ───────────────────────────────────────────────────────
def high_yield_box():
    staph_items = [
        "TSST-1 is responsible for <b>100%</b> of menstrual/tampon-associated TSS",
        "TSST-1 gene found in only ~<b>20%</b> of S. aureus isolates (incl. MRSA)",
        "Blood cultures positive in only <b>5–15%</b> of cases",
        "Desquamation of palms &amp; soles occurs <b>1–2 weeks</b> after onset",
        "Strawberry tongue + non-exudative conjunctivitis = classic mucous membrane findings",
        "Recurrence can occur with continued tampon use",
        "Mortality: <b>5–15%</b>",
        "Rash fades within <b>3 days</b>, desquamation follows",
    ]
    strep_items = [
        "Most cases associated with <b>necrotizing fasciitis</b> or myositis",
        "Blood cultures positive in ~<b>50%</b> of cases (much higher than staph TSS)",
        "Shock develops <b>48–72 hours</b> after symptom onset",
        "CPK elevation indicates necrotizing fasciitis / myonecrosis",
        "Rash and desquamation <b>less prominent</b> than in staphylococcal TSS",
        "NSAIDs can <b>mask early signs</b> — delay diagnosis and worsen outcome",
        "Mortality: <b>30–60%</b> (up to 5× that of staph TSS)",
        "Early surgery is often <b>life-saving</b>",
    ]

    col_w = [8.5 * cm, 9 * cm]
    rows = [
        [Paragraph("⭐ HIGH-YIELD: STAPHYLOCOCCAL TSS", TABLE_HEADER_STYLE),
         Paragraph("⭐ HIGH-YIELD: STREPTOCOCCAL TSS", TABLE_HEADER_STYLE)],
        [
            "\n".join([f"• {i}" for i in staph_items]),
            "\n".join([f"• {i}" for i in strep_items]),
        ]
    ]

    # Build cell content as Paragraphs
    body_rows = [rows[0]]
    cell_staph = [Paragraph(f"• {item}", ParagraphStyle("hy", parent=styles["Normal"],
        fontSize=8.5, fontName="Helvetica", leading=14, spaceAfter=2,
        textColor=colors.HexColor("#1A2F45"))) for item in staph_items]
    cell_strep = [Paragraph(f"• {item}", ParagraphStyle("hy2", parent=styles["Normal"],
        fontSize=8.5, fontName="Helvetica", leading=14, spaceAfter=2,
        textColor=colors.HexColor("#145A32"))) for item in strep_items]

    from reportlab.platypus import ListFlowable, ListItem
    body_rows.append([cell_staph, cell_strep])

    tbl = Table(body_rows, colWidths=col_w)
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0, 0), (0, 0), STAPH_COL),
        ("BACKGROUND",    (1, 0), (1, 0), STREP_COL),
        ("TEXTCOLOR",     (0, 0), (-1, 0), WHITE),
        ("FONTNAME",      (0, 0), (-1, 0), "Helvetica-Bold"),
        ("ALIGN",         (0, 0), (-1, 0), "CENTER"),
        ("BACKGROUND",    (0, 1), (0, 1), STAPH_LIGHT),
        ("BACKGROUND",    (1, 1), (1, 1), STREP_LIGHT),
        ("GRID",          (0, 0), (-1, -1), 0.5, colors.HexColor("#BDC3C7")),
        ("VALIGN",        (0, 0), (-1, -1), "TOP"),
        ("TOPPADDING",    (0, 0), (-1, -1), 7),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 7),
        ("LEFTPADDING",   (0, 0), (-1, -1), 7),
        ("RIGHTPADDING",  (0, 0), (-1, -1), 7),
    ]))
    return tbl

# ── Title page header ──────────────────────────────────────────────────────────
def title_block():
    data = [[
        Paragraph("TOXIC SHOCK SYNDROME", TITLE_STYLE),
        Paragraph("Staphylococcal vs Streptococcal — Comprehensive Study Guide", SUBTITLE_STYLE),
        Paragraph("Sources: Goldman-Cecil Medicine · Rosen's Emergency Medicine · Dermatology 5e · Jawetz Medical Microbiology · Tietz Laboratory Medicine", CAPTION_STYLE),
    ]]
    # stack vertically in one column
    inner = [[Paragraph("TOXIC SHOCK SYNDROME", TITLE_STYLE)],
             [Paragraph("Staphylococcal vs Streptococcal — Comprehensive Study Guide", SUBTITLE_STYLE)],
             [Spacer(1, 0.2 * cm)],
             [Paragraph("Sources: Goldman-Cecil Medicine · Rosen's Emergency Medicine · Dermatology 5e · Jawetz Medical Microbiology · Tietz Laboratory Medicine", CAPTION_STYLE)]]
    t = Table(inner, colWidths=[17.5 * cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0, 0), (-1, -1), DARK_BLUE),
        ("TOPPADDING",    (0, 0), (-1, -1), 10),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 8),
        ("LEFTPADDING",   (0, 0), (-1, -1), 14),
        ("RIGHTPADDING",  (0, 0), (-1, -1), 14),
    ]))
    return t

# ── Mnemonic box ──────────────────────────────────────────────────────────────
def mnemonic_box():
    items = [
        ["F", "Fever (≥38.9°C / 102°F)"],
        ["R", "Rash — diffuse macular erythroderma"],
        ["A", "And Hypotension (SBP <90 mmHg)"],
        ["S", "Skin Desquamation (palms & soles, 1–2 weeks later)"],
        ["H", "Hypotension (multiorgan ≥3 systems in staph; ≥2 in strep)"],
    ]
    note = "Mnemonic: F-R-A-S-H for Staphylococcal TSS diagnostic features"
    rows = []
    for letter, meaning in items:
        rows.append([
            Paragraph(f"<b>{letter}</b>", ParagraphStyle("ml", parent=styles["Normal"],
                fontSize=14, textColor=GOLD, fontName="Helvetica-Bold", alignment=TA_CENTER)),
            Paragraph(meaning, ParagraphStyle("mm", parent=styles["Normal"],
                fontSize=9.5, textColor=DARK_BLUE, fontName="Helvetica", leading=13)),
        ])
    tbl = Table(rows, colWidths=[1.2 * cm, 16 * cm])
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0, 0), (-1, -1), colors.HexColor("#FEF9E7")),
        ("GRID",          (0, 0), (-1, -1), 0.3, colors.HexColor("#F9E79F")),
        ("VALIGN",        (0, 0), (-1, -1), "MIDDLE"),
        ("TOPPADDING",    (0, 0), (-1, -1), 4),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 4),
        ("LEFTPADDING",   (0, 0), (-1, -1), 6),
    ]))
    return [Paragraph(note, NOTE_STYLE), spacer(0.2), tbl]

# ── Quick differentiator box ───────────────────────────────────────────────────
def quick_diff_box():
    rows = [
        [Paragraph("KEY DIFFERENTIATORS", TABLE_HEADER_STYLE)],
        [Paragraph(
            "• <b>Blood culture positive</b>: ~50% in Strep TSS vs 5–15% in Staph TSS<br/>"
            "• <b>Necrotizing fasciitis</b>: characteristic of Strep TSS, not Staph TSS<br/>"
            "• <b>Mortality</b>: Strep TSS (30–60%) is 5× higher than Staph TSS (5–15%)<br/>"
            "• <b>Rash prominence</b>: more diffuse and reliable in Staph TSS; less common in Strep TSS<br/>"
            "• <b>Tampon/nasal packing</b>: classic risk factor for Staph TSS only<br/>"
            "• <b>TSST-1</b> = 100% of menstrual TSS (staph); <b>SPE A/B/C</b> = strep toxins<br/>"
            "• <b>Desquamation</b>: 100% in staph TSS; ~20% in strep TSS<br/>"
            "• <b>IVIg</b>: stronger evidence in strep TSS than staph TSS",
            ParagraphStyle("kd", parent=styles["Normal"], fontSize=9.5,
                           fontName="Helvetica", leading=15, textColor=DARK_BLUE)
        )]
    ]
    tbl = Table(rows, colWidths=[17.5 * cm])
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0, 0), (-1, 0), MED_BLUE),
        ("BACKGROUND",    (0, 1), (-1, 1), colors.HexColor("#EBF5FB")),
        ("TEXTCOLOR",     (0, 0), (-1, 0), WHITE),
        ("FONTNAME",      (0, 0), (-1, 0), "Helvetica-Bold"),
        ("ALIGN",         (0, 0), (-1, 0), "CENTER"),
        ("GRID",          (0, 0), (-1, -1), 0.5, MED_BLUE),
        ("TOPPADDING",    (0, 0), (-1, -1), 7),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 7),
        ("LEFTPADDING",   (0, 0), (-1, -1), 10),
        ("RIGHTPADDING",  (0, 0), (-1, -1), 10),
    ]))
    return tbl

# ── Pathogenesis table ─────────────────────────────────────────────────────────
def pathogenesis_table():
    col_w = [8.5 * cm, 9 * cm]
    rows = [
        [Paragraph("STAPHYLOCOCCAL TSS — Pathogenesis", TABLE_HEADER_STYLE),
         Paragraph("STREPTOCOCCAL TSS — Pathogenesis", TABLE_HEADER_STYLE)],
        [
            Paragraph(
                "<b>Organism:</b> S. aureus (coagulase +ve)<br/><br/>"
                "<b>Toxin:</b> TSST-1 (= enterotoxin F) — the prototypical superantigen<br/><br/>"
                "<b>Superantigen mechanism:</b> Binds MHC class II molecules on APCs without intracellular processing + binds Vβ region of TCR → massive non-specific T cell proliferation (5–30% of circulating T cells vs 0.01% for conventional antigen)<br/><br/>"
                "<b>Cytokine storm:</b> TNF-α, IL-1 — mediate fever, erythema, shock, organ dysfunction<br/><br/>"
                "<b>Gene location:</b> Chromosomal pathogenicity island (interacts with bacteriophages)",
                TABLE_CELL_STYLE),
            Paragraph(
                "<b>Organism:</b> Group A Streptococcus (S. pyogenes; M types 1 &amp; 3 virulent)<br/><br/>"
                "<b>Toxins:</b> SPE-A, B, C (pyrogenic exotoxins); streptococcal superantigen (SSA); mitogenic exotoxin Z; SPE-B (cysteine protease cleaves pre-IL-1β)<br/><br/>"
                "<b>Superantigen mechanism:</b> Same Vβ/MHC II binding → 5–30% T cell activation → cytokine storm<br/><br/>"
                "<b>Cytokine storm:</b> TNF-α, TNF-β, IL-1, IL-2, IL-6 — also upregulates TLR-2 &amp; TLR-4 → amplifies endotoxin effects<br/><br/>"
                "<b>Streptolysin O:</b> Acts synergistically with SPE-A",
                TABLE_CELL_STYLE),
        ]
    ]
    tbl = Table(rows, colWidths=col_w)
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0, 0), (0, 0), STAPH_COL),
        ("BACKGROUND",    (1, 0), (1, 0), STREP_COL),
        ("TEXTCOLOR",     (0, 0), (-1, 0), WHITE),
        ("FONTNAME",      (0, 0), (-1, 0), "Helvetica-Bold"),
        ("ALIGN",         (0, 0), (-1, 0), "CENTER"),
        ("BACKGROUND",    (0, 1), (0, 1), STAPH_LIGHT),
        ("BACKGROUND",    (1, 1), (1, 1), STREP_LIGHT),
        ("GRID",          (0, 0), (-1, -1), 0.5, colors.HexColor("#BDC3C7")),
        ("VALIGN",        (0, 0), (-1, -1), "TOP"),
        ("TOPPADDING",    (0, 0), (-1, -1), 7),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 7),
        ("LEFTPADDING",   (0, 0), (-1, -1), 7),
        ("RIGHTPADDING",  (0, 0), (-1, -1), 7),
        ("FONTSIZE",      (0, 1), (-1, 1), 8.5),
    ]))
    return tbl

# ── Footer ─────────────────────────────────────────────────────────────────────
def add_page_number(canvas, doc):
    canvas.saveState()
    canvas.setFont("Helvetica", 7.5)
    canvas.setFillColor(colors.HexColor("#7F8C8D"))
    canvas.drawString(2 * cm, 1.2 * cm, "TSS Comparison Study Guide  |  Orris Medical Education")
    canvas.drawRightString(19 * cm, 1.2 * cm, f"Page {doc.page}")
    canvas.restoreState()

# ── Build document ─────────────────────────────────────────────────────────────
def build():
    doc = SimpleDocTemplate(
        OUTPUT_PATH,
        pagesize=A4,
        topMargin=1.5 * cm,
        bottomMargin=2 * cm,
        leftMargin=2 * cm,
        rightMargin=2 * cm,
        title="Toxic Shock Syndrome — Staphylococcal vs Streptococcal Study Guide",
        author="Orris Medical Education",
    )

    story = []

    # ── TITLE ──────────────────────────────────────────────────────────────────
    story.append(title_block())
    story.append(spacer(0.5))

    # ── OVERVIEW ───────────────────────────────────────────────────────────────
    story.append(section_banner("1.  OVERVIEW"))
    story.append(spacer(0.3))
    story.append(body(
        "Toxic Shock Syndrome (TSS) is an acute, life-threatening febrile illness caused by the systemic effects "
        "of bacterial exotoxins acting as superantigens. Two distinct forms exist, caused by different organisms "
        "with overlapping but distinguishable presentations. Both types trigger a massive cytokine storm through "
        "non-specific T-cell stimulation, leading to fever, rash, hypotension, and multiorgan dysfunction."
    ))
    story.append(spacer(0.2))

    # ── PATHOGENESIS ───────────────────────────────────────────────────────────
    story.append(section_banner("2.  PATHOGENESIS"))
    story.append(spacer(0.3))
    story.append(pathogenesis_table())
    story.append(spacer(0.4))

    # ── MASTER COMPARISON TABLE ────────────────────────────────────────────────
    story.append(section_banner("3.  MASTER COMPARISON TABLE"))
    story.append(spacer(0.3))
    story.append(build_comparison_table())
    story.append(spacer(0.5))
    story.append(Paragraph("Table sources: Goldman-Cecil Medicine, Rosen's Emergency Medicine, Dermatology 5e, Jawetz Medical Microbiology, Tietz Laboratory Medicine", CAPTION_STYLE))
    story.append(spacer(0.5))

    # ── DIAGNOSTIC CRITERIA ────────────────────────────────────────────────────
    story.append(section_banner("4.  FORMAL DIAGNOSTIC CRITERIA"))
    story.append(spacer(0.3))
    story.append(build_criteria_table())
    story.append(spacer(0.4))

    # Mnemonic
    story.append(section_banner("5.  MNEMONIC (Staph TSS)", bg=colors.HexColor("#7D6608")))
    story.append(spacer(0.3))
    for item in mnemonic_box():
        story.append(item)
    story.append(spacer(0.4))

    # ── TREATMENT ──────────────────────────────────────────────────────────────
    story.append(section_banner("6.  TREATMENT"))
    story.append(spacer(0.3))
    story.append(build_treatment_table())
    story.append(spacer(0.3))
    story.append(Paragraph(
        "⚠  Clindamycin is added in BOTH types to suppress toxin synthesis (ribosomal 50S inhibitor). "
        "Do NOT use clindamycin as sole antibiotic — always combine with a cell-wall active agent.",
        ParagraphStyle("warn", parent=styles["Normal"], fontSize=9, fontName="Helvetica-BoldOblique",
                       textColor=RED_DARK, leading=13, leftIndent=8, spaceAfter=4)
    ))
    story.append(spacer(0.4))

    # ── HIGH YIELD ─────────────────────────────────────────────────────────────
    story.append(section_banner("7.  HIGH-YIELD EXAM FACTS", bg=colors.HexColor("#117A65")))
    story.append(spacer(0.3))
    story.append(high_yield_box())
    story.append(spacer(0.4))

    # ── KEY DIFFERENTIATORS ────────────────────────────────────────────────────
    story.append(section_banner("8.  KEY DIFFERENTIATORS AT A GLANCE"))
    story.append(spacer(0.3))
    story.append(quick_diff_box())
    story.append(spacer(0.5))

    # ── QUICK REFERENCE SUMMARY ────────────────────────────────────────────────
    story.append(section_banner("9.  QUICK REFERENCE SUMMARY", bg=colors.HexColor("#4A235A")))
    story.append(spacer(0.3))

    summary_rows = [
        [Paragraph("", TABLE_HEADER_STYLE),
         Paragraph("STAPH TSS", TABLE_HEADER_STYLE),
         Paragraph("STREP TSS", TABLE_HEADER_STYLE)],
        [Paragraph("Organism", TABLE_CELL_STYLE), Paragraph("S. aureus", TABLE_CELL_STYLE), Paragraph("S. pyogenes (GAS)", TABLE_CELL_STYLE)],
        [Paragraph("Key Toxin", TABLE_CELL_STYLE), Paragraph("TSST-1", TABLE_CELL_STYLE), Paragraph("SPE-A/B/C, SSA", TABLE_CELL_STYLE)],
        [Paragraph("Bacteremia", TABLE_CELL_STYLE), Paragraph("5–15%", TABLE_CELL_STYLE), Paragraph("~50%", TABLE_CELL_STYLE)],
        [Paragraph("Mortality", TABLE_CELL_STYLE), Paragraph("5–15%", TABLE_CELL_STYLE), Paragraph("30–60%", TABLE_CELL_STYLE)],
        [Paragraph("Classic Risk", TABLE_CELL_STYLE), Paragraph("Tampon / nasal packing", TABLE_CELL_STYLE), Paragraph("Necrotizing fasciitis", TABLE_CELL_STYLE)],
        [Paragraph("Rash", TABLE_CELL_STYLE), Paragraph("Very prominent macular erythroderma", TABLE_CELL_STYLE), Paragraph("Less common; blistering more likely", TABLE_CELL_STYLE)],
        [Paragraph("Desquamation", TABLE_CELL_STYLE), Paragraph("Prominent (palms & soles)", TABLE_CELL_STYLE), Paragraph("Only ~20%", TABLE_CELL_STYLE)],
        [Paragraph("Antibiotics", TABLE_CELL_STYLE), Paragraph("Oxacillin/Nafcillin + Clindamycin\n(MRSA: Vancomycin + Clinda)", TABLE_CELL_STYLE), Paragraph("Penicillin G + Clindamycin", TABLE_CELL_STYLE)],
        [Paragraph("Surgery", TABLE_CELL_STYLE), Paragraph("Source control", TABLE_CELL_STYLE), Paragraph("Early aggressive debridement", TABLE_CELL_STYLE)],
    ]
    sumtbl = Table(summary_rows, colWidths=[3.5 * cm, 7 * cm, 7 * cm], repeatRows=1)
    sumtbl.setStyle(TableStyle([
        ("BACKGROUND",    (0, 0), (0, 0), colors.HexColor("#4A235A")),
        ("BACKGROUND",    (1, 0), (1, 0), STAPH_COL),
        ("BACKGROUND",    (2, 0), (2, 0), STREP_COL),
        ("TEXTCOLOR",     (0, 0), (-1, 0), WHITE),
        ("FONTNAME",      (0, 0), (-1, 0), "Helvetica-Bold"),
        ("ALIGN",         (0, 0), (-1, 0), "CENTER"),
        ("BACKGROUND",    (0, 1), (0, -1), colors.HexColor("#EBF5FB")),
        ("FONTNAME",      (0, 1), (0, -1), "Helvetica-Bold"),
        ("FONTSIZE",      (0, 1), (0, -1), 8),
        *[("BACKGROUND", (1, i), (1, i), STAPH_LIGHT if i % 2 == 1 else WHITE) for i in range(1, 11)],
        *[("BACKGROUND", (2, i), (2, i), STREP_LIGHT if i % 2 == 1 else WHITE) for i in range(1, 11)],
        ("GRID",          (0, 0), (-1, -1), 0.5, colors.HexColor("#BDC3C7")),
        ("VALIGN",        (0, 0), (-1, -1), "TOP"),
        ("TOPPADDING",    (0, 0), (-1, -1), 5),
        ("BOTTOMPADDING", (0, 0), (-1, -1), 5),
        ("LEFTPADDING",   (0, 0), (-1, -1), 5),
        ("RIGHTPADDING",  (0, 0), (-1, -1), 5),
        ("FONTSIZE",      (1, 1), (-1, -1), 8.5),
    ]))
    story.append(sumtbl)
    story.append(spacer(0.5))

    # ── REFERENCES ─────────────────────────────────────────────────────────────
    story.append(hr())
    story.append(Paragraph(
        "<b>References:</b> Goldman-Cecil Medicine (International Ed.) · Rosen's Emergency Medicine 9e · "
        "Dermatology 2-Volume Set 5e (Elsevier) · Jawetz, Melnick &amp; Adelberg's Medical Microbiology 28e · "
        "Tietz Textbook of Laboratory Medicine 7e · Medical Microbiology 9e",
        CAPTION_STYLE
    ))

    doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number)
    print(f"PDF saved to: {OUTPUT_PATH}")

if __name__ == "__main__":
    build()
Running Command

cd /home/daytona/workspace/tss-study-guide && python generate_tss_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/tss-study-guide/TSS_Study_Guide.pdf

19KB seems small - let me verify the PDF has proper pages:
Running Command

cd /home/daytona/workspace/tss-study-guide && python -c "from pypdf import PdfReader; r=PdfReader('TSS_Study_Guide.pdf'); print(f'Pages: {len(r.pages)}'); [print(f'Page {i+1}: {len(r.pages[i].extract_text())} chars') for i in range(len(r.pages))]"

5 pages, good content. Let me verify the file size looks reasonable - 19KB for a pure-text PDF with tables is fine (no embedded images). Let me do a quick content check on what's in the pages:
Running Command

cd /home/daytona/workspace/tss-study-guide && python -c " from pypdf import PdfReader r = PdfReader('TSS_Study_Guide.pdf') for i, page in enumerate(r.pages): print(f'=== PAGE {i+1} ===') print(page.extract_text()[:400]) print() "

PDF is complete with all 9 sections across 5 pages. Your study guide PDF is ready:

TSS Study Guide

PDF Document · PDF


Here's what's inside the 5-page PDF (sourced from Goldman-Cecil Medicine, Rosen's Emergency Medicine, Dermatology 5e, Jawetz Medical Microbiology, and Tietz Laboratory Medicine):
Section 1 - Overview - Brief intro to the shared superantigen mechanism
Section 2 - Pathogenesis - Side-by-side comparison of TSST-1 vs SPE-A/B/C toxin mechanisms, MHC class II binding, cytokine storm differences
Section 3 - Master Comparison Table (22 rows) covering organism, toxins, risk factors, bacteremia rates, rash, desquamation, soft tissue involvement, lab findings, mucous membranes, onset, and more
Section 4 - Formal Diagnostic Criteria - Complete CDC/clinical criteria for both types side by side
Section 5 - Mnemonic - F-R-A-S-H for Staphylococcal TSS features
Section 6 - Treatment - Antibiotic dosing for MSSA, MRSA, streptococcal; role of clindamycin, IVIg, surgery
Section 7 - High-Yield Exam Facts - 8 bullet points per type (mortality, bacteremia %, TSST-1 %, desquamation timing, etc.)
Section 8 - Key Differentiators - The most commonly tested distinctions in a single box
Section 9 - Quick Reference Summary - Condensed 10-row cheat sheet for last-minute review

I have one patient saying when she is working in wanted has a watery tiny blister in between the finger toes

Reading File
This is a clinical scenario - a patient developing watery tiny blisters between finger/toe webs during water-related work. This suggests dyshidrotic eczema, tinea pedis (vesicular type), or scabies. Let me search the library comprehensively in parallel.
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Reading File
Reading File
Now let me also read the dyshidrotic eczema treatment section and tinea pedis interdigital treatment detail, and fetch a clinical image:
Reading File
Reading File
I have a comprehensive picture now. Let me also fetch the dyshidrotic eczema clinical image to include for the user:
Loading Image
That image is just a label placeholder. I have enough textbook data. Here is the full clinical analysis:

Clinical Assessment: Watery Blisters Between the Fingers/Toes in a Water-Exposed Worker

Based on the history - a woman who develops small watery blisters between her finger/toe web spaces specifically when working in water - this presentation fits two leading diagnoses that must be distinguished, plus important differentials.

Top Two Diagnoses

1. Dyshidrotic Eczema (Pompholyx) - Most Likely

This is the most likely diagnosis given the occupational water exposure trigger.
Key features (Dermatology 5e):
  • Firm, deep-seated, pruritic vesicles on the palms, soles, and lateral and medial aspects of the fingers and toes
  • Vesicles contain clear fluid initially (can become purulent if superinfected)
  • Vesicles are intact due to the thick stratum corneum - they don't rupture easily ("tear-proof horny layer")
  • When clustered, small vesicles resemble tapioca pudding in appearance
  • Eventually resolves via desquamation of thick scales
  • Chronic, relapsing course
Why water exposure triggers it:
  • Irritant contact dermatitis from prolonged wet work is a classic trigger
  • Hyperhidrosis (sweating) worsens it
  • Hot climates and emotional stress can also flare it
  • Repeated wetting and drying damages the skin barrier
Epidemiology: Women are affected twice as often as men (Textbook of Family Medicine 9e)

2. Interdigital Tinea Pedis (Athlete's Foot) - Important to Exclude

Key features (Dermatology 5e):
  • Most common type of tinea pedis
  • Erythema, scaling, fissures, and maceration in the web spaces - especially the two lateral web spaces
  • Caused by: T. interdigitale, T. rubrum, E. floccosum, Candida spp.
  • The inflammatory (vesicular) type caused by T. mentagrophytes produces vesicles and bullae, particularly on the medial foot
  • Moist, warm environments (occlusive shoes, wet work) are major risk factors
  • Can progress to "dermatophytosis complex" - bacterial superinfection of the fungal lesions
Distinguishing from dyshidrotic eczema:
FeatureDyshidrotic EczemaTinea Pedis
LocationFingers AND toes equallyMostly toes/foot web spaces
ItchingVery prominentPresent
ScalingThick after vesicles burstFine white maceration
KOH testNegativePositive (hyphae)
NailsUsually normalOften co-existing onychomycosis
TreatmentTopical steroidsTopical antifungal

Differential Diagnoses to Consider

ConditionDistinguishing Feature
ScabiesBurrows between fingers (not just blisters); intensely pruritic especially at night; other family members affected
Allergic contact dermatitisHistory of latex/rubber glove use, soap, or cleaning product exposure
Palmoplantar pustular psoriasisSterile pustules, not clear vesicles; involves palms/soles more diffusely
Pompholyx (large-blister variant)Same as dyshidrotic eczema but vesicles coalesce into large bullae
The differential diagnosis listed in Dermatology 5e specifically includes: inflammatory tinea, scabies, palmoplantar pustular psoriasis, dyshidrosiform pemphigoid, and fixed drug eruption.

What to Ask / Examine

These questions will clinch the diagnosis:
  1. Is there itching? - Dyshidrotic eczema is intensely pruritic, often burning before vesicles appear
  2. Are the nails thickened or discoloured? - Onychomycosis = points to tinea
  3. Does anyone at home have similar lesions? - Yes = think scabies
  4. What type of work? - Does she wear rubber/latex gloves? (allergic contact dermatitis)
  5. Does she have eczema or atopy elsewhere? - Supports dyshidrotic eczema
  6. Do lesions occur ONLY during wet work or persist after stopping? - Tinea persists; dyshidrotic eczema may improve with avoidance
On examination: Check for KOH scraping of the blister roof (fungal hyphae = tinea), burrow tracks (scabies), nail changes, and involvement of palms vs. only web spaces.

Management

If Dyshidrotic Eczema:

  • First line: High-potency topical corticosteroids (e.g., clobetasol) + cold compresses for burning (Family Medicine 9e)
  • Emollients: Greasy emollients to prevent fissures; cyanoacrylate ("superglue") to seal any fissures that form
  • Trigger avoidance: Protective gloves during wet work (cotton-lined), reduce soap contact
  • Acute flares: Short course of oral corticosteroids
  • Refractory/chronic: Topical calcineurin inhibitors (tacrolimus), PUVA, retinoids, cyclosporine (Dermatology 5e)
  • Treat hyperhidrosis if present (botulinum toxin A can help)

If Tinea Pedis (vesicular/interdigital):

  • Topical antifungal: Terbinafine 1% cream or clotrimazole to web spaces for 2-4 weeks
  • Keep feet dry; wear breathable footwear
  • Treat co-existing onychomycosis if present (oral terbinafine)
  • If secondary bacterial infection: add topical or oral antibiotics

Bottom Line

This patient most likely has dyshidrotic eczema triggered by occupational wet work. The occupation (water exposure) is the key trigger. A KOH scrape of the vesicle roof will rule out tinea. If negative, start high-potency topical steroids and advise barrier protection during water work.
Sources: Dermatology 2-Volume Set 5e (Elsevier); Textbook of Family Medicine 9e

I think it is dyshidrotic eczema

A reasonable working diagnosis given the wet-work trigger and location. Let me pull the full management detail from the textbooks.
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Good call. Here is a focused deep-dive on dyshidrotic eczema for this patient:

Dyshidrotic Eczema (Pompholyx) - Full Clinical Guide

What It Is

Dyshidrotic eczema is a chronic, relapsing palmoplantar eczematous dermatosis characterised by firm, pruritic vesicles. The name is misleading - it has nothing to do with sweat gland dysfunction. The vesicles stay intact because the stratum corneum on palms/soles is very thick ("tear-proof"). (Dermatology 5e)

Why Her Water Work Triggers It

The condition is commonly a manifestation of irritant contact dermatitis from repeated wet work. Repeated wetting and drying damages the skin barrier, triggering vesicle formation. Additional aggravating factors include:
  • Hyperhidrosis (sweating)
  • Hot climates
  • Emotional stress
  • Exposure to known irritants (soaps, detergents, cleaning products)
  • Ingestants: nickel and cobalt (in sensitised patients)
  • Rarely: sunlight

What to Tell the Patient

Important to explain clearly:
"The name suggests a sweat problem - it is not. Your skin barrier breaks down with prolonged water exposure, causing fluid to build up in small pockets within the skin layers. The thick skin on fingers keeps these trapped as firm tiny blisters."
  • The blisters initially contain clear fluid, but can become purulent if infected - tell her to watch for this
  • After vesicles resolve, she will notice thick peeling/desquamation of the skin - this is normal and expected
  • The condition is chronic and relapsing - she should expect repeat episodes if she continues wet work without protection
  • Women are affected twice as often as men (Family Medicine 9e)

Management Plan

1. Barrier Protection (most important in an occupational case)

  • Cotton-lined gloves under rubber/nitrile gloves during wet work - reduces direct water and irritant contact
  • Avoid harsh soaps/detergents; use mild pH-neutral cleansers (e.g. Dove, Cetaphil)
  • Pat dry (do not rub) hands and feet after water exposure
  • Apply emollient immediately after drying to lock in moisture

2. Active Lesions - First Line

TreatmentDetails
High-potency topical corticosteroidClobetasol 0.05% ointment or mometasone - applied to vesicles BD; ointment preferred over cream (better penetration)
Cold compressesProvide immediate relief for burning and itching
Greasy emollientsPetroleum jelly, Aquaphor - apply liberally to moisturise and protect
Cyanoacrylate ("superglue")If fissures develop after vesicles dry out - seals cracks and dramatically reduces pain (Family Medicine 9e)

3. Acute Flares (severe cases)

  • Short course of oral corticosteroids (prednisolone 0.5mg/kg/day tapering over 2 weeks)

4. Chronic / Refractory Cases

(Dermatology 5e)
  • Topical calcineurin inhibitors - tacrolimus 0.1% ointment or pimecrolimus (good for long-term use, avoids steroid side effects)
  • PUVA (bath PUVA preferred over systemic)
  • Retinoids (alitretinoin - particularly effective for chronic hand eczema)
  • Cyclosporine or other immunosuppressants in severe, refractory disease
  • Botulinum toxin A injections - if hyperhidrosis is a significant aggravating factor (reduces sweating, ameliorates eczema)

5. If Nickel Sensitivity Suspected

  • Patch test for nickel
  • If positive + oral provocation test positive: low-nickel diet can reduce flares

Watch Out For: Superinfection

The vesicles can become secondarily infected (typically S. aureus):
  • Signs: vesicles turn cloudy/yellow/purulent, surrounding redness, warmth, increased pain
  • Treatment: topical mupirocin, or oral flucloxacillin/cefalexin if widespread

Differential Still Worth Excluding

Even if this is your working diagnosis, it is worth doing a KOH scrape of the blister roof on the first visit. If negative for hyphae - confirmed not tinea, proceed with dyshidrotic eczema treatment. This is a quick, cheap test that avoids misdiagnosis.

Summary Card for This Patient

DiagnosisDyshidrotic eczema (occupational irritant-triggered)
TriggerWet work - repeated water exposure
Acute RxHigh-potency topical steroid + cold compress + emollient
PreventionCotton-lined gloves during wet work, emollient routine
PrognosisChronic relapsing - controllable but not curable with current exposure
Red flagPurulent vesicles = superinfection, needs antibiotics
Sources: Dermatology 2-Volume Set 5e (Elsevier); Textbook of Family Medicine 9e

Any Homoeopathic management for this

Searching the Web

homeopathic remedies dyshidrotic eczema pompholyx clinical evidence

Searching PubMed

homeopathy eczema dyshidrotic treatment

Searching PubMed

homeopathy eczema randomized controlled trial

Reading Web Page

https://wjpr.s3.ap-south-1.amazonaws.com/article_issue/d4780…

Here is an honest and thorough answer on homoeopathic management:

Homoeopathic Management of Dyshidrotic Eczema

Honest Evidence Statement First

PubMed has zero RCTs specifically on homoeopathy for dyshidrotic eczema. The only available evidence is:
  • One small RCT on classical homoeopathy for atopic eczema (not dyshidrotic specifically) - showed no significant benefit over placebo (PMID: 19887810)
  • Case reports and case series (low-quality evidence) from homoeopathic journals
This means the remedies below are based on classical homoeopathic materia medica and clinical case reports, not controlled trials. Share this context with your patient so she can make an informed decision.

Commonly Indicated Homoeopathic Remedies

Homoeopathy is always individualised - remedy selection depends on the totality of the patient's symptoms (mental, general, and local). Below are the most frequently indicated remedies for dyshidrotic eczema/pompholyx:

1. Graphites - Most Often Prescribed

Keynotes:
  • Thick, honey-like or sticky discharge from vesicles after they rupture
  • Skin that is rough, hard, and prone to cracking/fissuring
  • Burning and itching of the affected skin
  • Worse from warmth, better in open air
  • Tendency to obesity; timid, hesitant personality
  • Often considered the first-choice remedy for pompholyx with sticky discharge

2. Sulphur - Very Commonly Used

Keynotes:
  • Intense burning and itching, worse from washing and water (highly relevant to this patient's case)
  • Vesicles that become worse from contact with water - classic for wet-work aggravation
  • Scratching gives temporary relief but then burns intensely
  • Skin looks dirty/unhealthy even when clean
  • Worse at night, worse from heat of bed
  • Often used as an opener/intercurrent remedy in chronic skin conditions

3. Petroleum

Keynotes:
  • Deep cracks and fissures in the web spaces of fingers/toes
  • Skin is very dry, rough, and thickened between episodes
  • Worse in winter; better in summer
  • Vesicles with itching that is violent and spreads
  • Profuse sweating of hands (relevant to hyperhidrosis aggravating dyshidrosis)
  • Suppuration tendency

4. Rhus Toxicodendron

Keynotes:
  • Intensely itchy vesicles with burning and stinging
  • Restlessness - the patient cannot keep the hands/feet still
  • Better from warmth, worse from cold and rest
  • Vesicles on a red, inflamed base
  • Useful in the acute/inflammatory phase

5. Natrum Muriaticum

Keynotes:
  • Vesicles with watery, clear fluid (matching this patient's description exactly)
  • Especially on fingers, palms, and between toes
  • Worse from sun/heat exposure
  • The patient tends to be emotionally reserved, dislikes consolation
  • Often indicated when the condition is linked to grief or emotional suppression

6. Arsenicum Album

Keynotes:
  • Burning vesicles that are better from warm applications (paradoxically)
  • Restlessness and anxiety accompanying the skin symptoms
  • Scaly, dry, rough skin between eruptions
  • Worse after midnight; fastidious, anxious personality type

7. Mezereum

Keynotes:
  • Vesicles that burst and form thick crusts with pus underneath
  • Itching that changes location when scratched
  • Violent burning after scratching
  • Useful when secondary infection is a recurring feature

8. Kali Sulphuricum

Keynotes:
  • Yellow, flaking desquamation after vesicles resolve
  • Condition worse in warm rooms, better in cool open air
  • Often used after Sulphur as a follow-up remedy

Remedy Selection Guide for This Patient

Since she is a woman who gets clear watery vesicles specifically from water exposure:
FeatureSuggests
Clear watery blistersNatrum Mur, Rhus Tox
Triggered/worsened by waterSulphur strongly
Burning + itchingSulphur, Arsenicum, Rhus Tox
Sticky discharge after ruptureGraphites
Deep cracks between fingers/toesPetroleum
Yellow flaking after healingKali Sulph
Emotional trigger involvedNatrum Mur, Graphites
A qualified homoeopathic physician would assess her mental and general symptoms alongside these local symptoms to finalise the remedy and potency.

Typical Potencies and Dosing (General Guidance)

SituationPotencyFrequency
Acute flare30C3-4 times daily until improvement
Chronic/constitutional200C or 1MOnce weekly or single dose
Intercurrent / anti-miasmatic200CAs directed by physician
Note: Potency selection in homoeopathy is individualised. These are general guidelines, not prescriptions.

Can It Be Combined with Conventional Treatment?

Yes - homoeopathic remedies are generally safe alongside topical steroids and emollients. Many practitioners use homoeopathy to:
  • Reduce frequency of flares (long-term constitutional treatment)
  • Reduce steroid dependence over time
  • Address the underlying susceptibility/trigger (e.g. stress, atopic tendency)
The conventional approach (barrier protection, topical steroids during flares) remains the evidence-backed standard, especially for acute, severe, or infected episodes.

Bottom Line

Homoeopathy has no high-quality RCT evidence for dyshidrotic eczema specifically. However, it is widely practised and individualised remedies - particularly Sulphur, Graphites, Natrum Mur, and Petroleum - are most commonly reported in clinical cases of pompholyx. It is reasonable to offer as an adjunct or for patients who prefer it, alongside conventional management for flares and barrier protection for prevention.
This is a shared conversation. Sign in to Orris to start your own chat.