include relevant diagrams to this answer for university theory exam
cd /home/daytona/workspace/attachments/5d3b1164-af54-4efa-801b-3fac5ed0aaa4 && python3 -c " import pdfplumber with pdfplumber.open('ai inflammation answer.pdf') as pdf: for i, page in enumerate(pdf.pages): print(f'=== PAGE {i+1} ===') print(page.extract_text()) print() "
grep -n "cdn.orris.care" /textbooks/9780323790185/9780323790185_block1.md | head -60
"cdn.orris.care" in /textbooks/9780323790185
cd /home/daytona/workspace && mkdir -p inflammation_enhanced && python3 << 'PYEOF' import urllib.request import os # Download all images base_url = "https://cdn.orris.care/cdss_images/" images = { "fig2_2_exudate_transudate.png": "a1924ecccbe88b3ca4a3795a0f651231df9f94ad3fd8f9512c24b20a216a684c.png", "fig2_3_leukocyte_recruitment.png": "d4069a4483fcff36a49f18326da169ba066843649b884f86865e3d6e15d1d0f5.png", "efig2_1_leukocyte_activation.png": "f0ee479847cd1e265c2c454bd7d557c5fb90987086bc0cbe3fcafefbb2ec086a.png", "fig2_5_phagocytosis.png": "8c9b2b5266078658b8fc321edfd4c63d9d4718e80af200fe33d5382449103ad4.png", "fig2_8_complement.png": "6220b1c11b421b1dd0a27ee74dd6d15d8a1b0e138451f7f29aadf152da5f3d5f.png", } img_dir = "/home/daytona/workspace/inflammation_enhanced/imgs" os.makedirs(img_dir, exist_ok=True) headers = {'User-Agent': 'Mozilla/5.0'} for name, hash_file in images.items(): url = base_url + hash_file dest = os.path.join(img_dir, name) try: req = urllib.request.Request(url, headers=headers) with urllib.request.urlopen(req, timeout=15) as r, open(dest, 'wb') as f: f.write(r.read()) print(f"Downloaded {name}: {os.path.getsize(dest)} bytes") except Exception as e: print(f"FAILED {name}: {e}") PYEOF
python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm, mm from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, Image, PageBreak, HRFlowable, KeepTogether) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.platypus.flowables import BalancedColumns import os IMG_DIR = "/home/daytona/workspace/inflammation_enhanced/imgs" OUT = "/home/daytona/workspace/inflammation_enhanced/Inflammation_Enhanced_with_Diagrams.pdf" doc = SimpleDocTemplate( OUT, pagesize=A4, leftMargin=2*cm, rightMargin=2*cm, topMargin=2.2*cm, bottomMargin=2.2*cm, title="Inflammation – Comprehensive Theory Answer with Diagrams", author="PG University Exam Preparation" ) styles = getSampleStyleSheet() # Custom styles TITLE = ParagraphStyle('TITLE', parent=styles['Title'], fontSize=20, textColor=colors.HexColor('#1a237e'), spaceAfter=6, alignment=TA_CENTER, fontName='Helvetica-Bold') SUBTITLE = ParagraphStyle('SUBTITLE', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#455a64'), spaceAfter=14, alignment=TA_CENTER, fontName='Helvetica-Oblique') H1 = ParagraphStyle('H1', parent=styles['Heading1'], fontSize=14, textColor=colors.HexColor('#0d47a1'), spaceBefore=16, spaceAfter=6, fontName='Helvetica-Bold', borderPad=4, borderColor=colors.HexColor('#0d47a1'), borderWidth=0, leading=18) H2 = ParagraphStyle('H2', parent=styles['Heading2'], fontSize=12, textColor=colors.HexColor('#1565c0'), spaceBefore=12, spaceAfter=4, fontName='Helvetica-Bold', leading=16) H3 = ParagraphStyle('H3', parent=styles['Heading3'], fontSize=11, textColor=colors.HexColor('#1976d2'), spaceBefore=8, spaceAfter=3, fontName='Helvetica-BoldOblique', leading=14) BODY = ParagraphStyle('BODY', parent=styles['Normal'], fontSize=10, leading=14, spaceAfter=6, alignment=TA_JUSTIFY, fontName='Helvetica') BULLET = ParagraphStyle('BULLET', parent=styles['Normal'], fontSize=10, leading=13, leftIndent=18, spaceAfter=3, bulletIndent=8, fontName='Helvetica') CAPTION = ParagraphStyle('CAPTION', parent=styles['Normal'], fontSize=8.5, textColor=colors.HexColor('#546e7a'), alignment=TA_CENTER, fontName='Helvetica-Oblique', spaceAfter=10, leading=11) BOX_TEXT = ParagraphStyle('BOX_TEXT', parent=styles['Normal'], fontSize=9.5, leading=13, fontName='Helvetica', textColor=colors.HexColor('#1a237e')) DIAGRAM_LABEL = ParagraphStyle('DIAGRAM_LABEL', parent=styles['Normal'], fontSize=9, textColor=colors.white, alignment=TA_CENTER, fontName='Helvetica-Bold', backColor=colors.HexColor('#1565c0')) def section_bar(text, color='#0d47a1'): data = [[Paragraph(text, ParagraphStyle('SB', fontName='Helvetica-Bold', fontSize=13, textColor=colors.white))]] t = Table(data, colWidths=[17*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), colors.HexColor(color)), ('TOPPADDING', (0,0), (-1,-1), 6), ('BOTTOMPADDING', (0,0), (-1,-1), 6), ('LEFTPADDING', (0,0), (-1,-1), 10), ])) return t def img_block(fname, width_cm, caption_text): path = os.path.join(IMG_DIR, fname) if not os.path.exists(path): return [] # Get aspect ratio from PIL import Image as PILImage with PILImage.open(path) as im: w, h = im.size aspect = h / w w_pt = width_cm * cm h_pt = w_pt * aspect # Cap height max_h = 9.5*cm if h_pt > max_h: h_pt = max_h w_pt = h_pt / aspect img = Image(path, width=w_pt, height=h_pt) img.hAlign = 'CENTER' cap = Paragraph(caption_text, CAPTION) return [Spacer(1, 4), img, cap, Spacer(1, 4)] def simple_table(headers, rows, col_widths=None): if col_widths is None: n = len(headers) col_widths = [17*cm / n] * n header_style = ParagraphStyle('TH', fontName='Helvetica-Bold', fontSize=9, textColor=colors.white, alignment=TA_CENTER) cell_style = ParagraphStyle('TD', fontName='Helvetica', fontSize=9, leading=12, alignment=TA_LEFT) data = [[Paragraph(h, header_style) for h in headers]] for row in rows: data.append([Paragraph(str(c), cell_style) for c in row]) t = Table(data, colWidths=col_widths, repeatRows=1) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')), ('BACKGROUND', (0,1), (-1,-1), colors.HexColor('#e3f2fd')), ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#90caf9')), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING', (0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (-1,-1), 6), ('VALIGN', (0,0), (-1,-1), 'TOP'), ])) return t story = [] # ── TITLE PAGE ────────────────────────────────────────────────────────────── story.append(Spacer(1, 1*cm)) story.append(Paragraph("INFLAMMATION", TITLE)) story.append(Paragraph("Comprehensive Theory Answer with Diagrams — PG University Exam Standard", SUBTITLE)) story.append(Paragraph( "Sources: Robbins & Cotran Pathologic Basis of Disease 10th Ed. | " "Robbins & Kumar Basic Pathology 10th Ed. | " "Review of Pathology & Genetics 10th Ed.", ParagraphStyle('src', fontName='Helvetica-Oblique', fontSize=9, textColor=colors.HexColor('#78909c'), alignment=TA_CENTER))) story.append(HRFlowable(width="100%", thickness=1.5, color=colors.HexColor('#1565c0'), spaceAfter=12)) # DEFINITION story.append(section_bar("DEFINITION")) story.append(Spacer(1,6)) story.append(Paragraph( "Inflammation is a <b>protective response of vascularized tissues</b> to injury, infection, or any " "stimulus that damages cells and tissues. It is designed to <i>eliminate the cause of injury</i>, " "clear necrotic cells and debris, and initiate tissue repair. " "The word derives from the Latin <i>inflammare</i> (to set on fire).", BODY)) # CARDINAL SIGNS story.append(Spacer(1,8)) story.append(Paragraph("Cardinal Signs of Inflammation", H2)) story.append(Paragraph("First described by Celsus; Loss of function (<i>functio laesa</i>) added by Virchow:", BODY)) story.append(Spacer(1,4)) story.append(simple_table( ["Latin", "English", "Mechanism"], [ ["Rubor", "Redness", "Vasodilation → increased blood flow"], ["Calor", "Heat", "Increased blood flow + metabolic activity"], ["Tumor", "Swelling", "Exudation of fluid into interstitium"], ["Dolor", "Pain", "PGE₂, bradykinin stimulate nerve endings"], ["Functio laesa", "Loss of function", "Combined effect of all above (Virchow)"], ], col_widths=[3*cm, 3.5*cm, 10.5*cm] )) # TYPES story.append(Spacer(1,8)) story.append(Paragraph("Types of Inflammation", H2)) for txt in [ "<b>1. Acute:</b> Short duration (minutes to days); exudation of fluid, plasma proteins, and neutrophil emigration.", "<b>2. Chronic:</b> Prolonged (weeks to months); mononuclear cell infiltration, tissue destruction, and repair occurring simultaneously.", "<b>3. Granulomatous:</b> Special form of chronic inflammation; focal aggregates of activated macrophages (epithelioid cells) ± Langhans giant cells.", ]: story.append(Paragraph(txt, BULLET)) story.append(PageBreak()) # ── PART I: ACUTE INFLAMMATION ─────────────────────────────────────────────── story.append(section_bar("PART I: ACUTE INFLAMMATION", color='#0d47a1')) story.append(Spacer(1,8)) story.append(Paragraph("A. Vascular Reactions", H2)) story.append(Paragraph( "Acute inflammation has <b>three major components</b> (Robbins & Cotran 10th Ed.):", BODY)) for txt in [ "Dilation of small blood vessels leading to increased blood flow", "Increased permeability of the microvasculature — enabling plasma proteins and leukocytes to leave the circulation", "Emigration of leukocytes from the microcirculation, their accumulation at the focus of injury, and activation", ]: story.append(Paragraph("• " + txt, BULLET)) story.append(Spacer(1,6)) story.append(Paragraph("<b>Vasodilation:</b> Induced by histamine and nitric oxide acting on vascular smooth muscle. " "Affects mainly postcapillary venules. Causes increased blood flow = heat and redness.", BODY)) story.append(Paragraph( "<b>Increased vascular permeability:</b> Outpouring of protein-rich fluid (exudate) into extravascular tissues. " "Main mechanisms: endothelial cell contraction (histamine, bradykinin, leukotrienes), direct injury, " "leukocyte-mediated injury, transcytosis, and angiogenesis.", BODY)) # FIG 2.2 story += img_block("fig2_2_exudate_transudate.png", 13, "FIG. 2.2 — Formation of exudates and transudates (Robbins & Kumar Basic Pathology 10th Ed.).\n" "(A) Normal: no net fluid flux. (B) Exudate — vascular permeability ↑, protein-rich fluid escapes. " "(C) Transudate — hydrostatic/osmotic imbalance, protein-poor.") # Exudate vs Transudate table story.append(Paragraph("Exudate vs Transudate", H3)) story.append(simple_table( ["Feature", "Exudate", "Transudate"], [ ["Protein content", "High", "Low (mostly albumin)"], ["Specific gravity", ">1.020", "<1.012"], ["Cause", "Inflammation (↑ permeability)", "Hydrostatic / osmotic imbalance"], ["Cellular content", "May contain leukocytes, debris", "Sparse"], ], col_widths=[4*cm, 6.5*cm, 6.5*cm] )) story.append(PageBreak()) # LEUKOCYTE RECRUITMENT story.append(Paragraph("B. Leukocyte Recruitment (Cellular Events)", H2)) story.append(Paragraph( "Leukocyte recruitment is a <b>multistep process</b> controlled by adhesion molecules and cytokines:", BODY)) # FIG 2.3 story += img_block("fig2_3_leukocyte_recruitment.png", 16, "FIG. 2.3 — The multistep process of leukocyte migration through blood vessels (Robbins & Kumar 10th Ed.). " "Selectins mediate rolling; integrins mediate firm adhesion; PECAM-1 (CD31) mediates transmigration. " "TNF and IL-1 upregulate endothelial adhesion molecules.") story.append(simple_table( ["Step", "Process", "Key Molecules"], [ ["1", "Margination & Rolling", "P-selectin, E-selectin (endothelium); L-selectin (leukocyte); PSGL-1, sialyl-Lewis X"], ["2", "Firm Adhesion", "LFA-1/ICAM-1; VLA-4/VCAM-1; upregulated by TNF, IL-1"], ["3", "Transmigration (Diapedesis)", "PECAM-1 (CD31); leukocytes migrate through interendothelial junctions"], ["4", "Chemotaxis", "C5a, LTB₄, IL-8/CXCL8, PAF, N-formyl methionine peptides (bacterial)"], ], col_widths=[1.5*cm, 4*cm, 11.5*cm] )) story.append(Paragraph( "<b>Neutrophils predominate at 6–24 h</b>; monocytes/macrophages predominate at <b>24–48 h onward</b>, " "because neutrophils are short-lived and later chemokines are monocyte-specific.", BODY)) story.append(Spacer(1,8)) story.append(Paragraph("C. Leukocyte Activation and Phagocytosis", H2)) # eFIG 2.1 story += img_block("efig2_1_leukocyte_activation.png", 12, "eFIG. 2.1 — Leukocyte activation. Various receptors (TLRs, G-protein coupled, cytokine receptors) " "trigger responses: phagocytosis, ROS production, cytokine secretion, and degranulation. " "(Robbins & Kumar 10th Ed.)") story.append(Paragraph("<b>Phagocytosis — Three Steps:</b>", BODY)) story.append(simple_table( ["Step", "Process", "Detail"], [ ["1", "Recognition & Attachment", "Opsonins: IgG (Fc receptor) and C3b (CR1/CR3) enhance binding"], ["2", "Engulfment", "Pseudopod extension → phagosome → fusion with lysosome → phagolysosome"], ["3", "Killing & Degradation", "Oxygen-dependent (NADPH oxidase → O₂⁻ → H₂O₂ → HOCl via myeloperoxidase) and Oxygen-independent (lysozyme, defensins, lactoferrin, BPI)"], ], col_widths=[1.5*cm, 4*cm, 11.5*cm] )) # FIG 2.5 story += img_block("fig2_5_phagocytosis.png", 13, "FIG. 2.5 — Phagocytosis and intracellular destruction of microbes. " "Opsonized microbes bind Fc/complement receptors, are engulfed into a phagosome, " "then fused with lysosomes. ROS and lysosomal enzymes mediate killing. (Robbins & Kumar 10th Ed.)") story.append(PageBreak()) # CHEMICAL MEDIATORS story.append(Paragraph("D. Chemical Mediators of Inflammation", H2)) story.append(simple_table( ["Mediator", "Source", "Action"], [ ["Histamine", "Mast cells, basophils, platelets", "Vasodilation, ↑ vascular permeability, endothelial activation (rapid, early)"], ["Serotonin (5-HT)", "Platelets", "Vasodilation, ↑ vascular permeability"], ["Prostaglandins (PGE₂, PGI₂)", "Mast cells/leukocytes via COX", "Vasodilation, pain, fever"], ["Leukotrienes (LTB₄, LTC₄, LTD₄)", "Mast cells/leukocytes via LOX", "↑ permeability, chemotaxis (LTB₄), bronchoconstriction"], ["PAF", "Leukocytes, mast cells", "↑ permeability, leukocyte adhesion, chemotaxis"], ["TNF + IL-1", "Macrophages, endothelium", "Local: endothelial activation; Systemic: fever, shock"], ["IL-8 (CXCL8)", "Leukocytes, macrophages", "Chemotaxis, leukocyte activation"], ["Complement (C3a, C5a, C5b-9)", "Plasma (liver)", "Chemotaxis (C5a), opsonization (C3b), membrane attack (C5b-9)"], ["Bradykinin", "Plasma via kallikrein", "↑ permeability, vasodilation, pain, smooth muscle contraction"], ["Nitric Oxide", "Endothelium, macrophages", "Vasodilation, microbicidal"], ], col_widths=[4.5*cm, 5*cm, 7.5*cm] )) story.append(Spacer(1,8)) story.append(Paragraph("Arachidonic Acid Pathway", H3)) # Arachidonic acid pathway as a styled flowchart text box aa_data = [[Paragraph( "<b>Membrane phospholipids</b><br/>" "↓ (Phospholipase A₂) — <i>blocked by corticosteroids (via lipocortin)</i><br/>" "<b>Arachidonic acid</b><br/>" "↙ ↘<br/>" "<b>COX pathway</b> <b>LOX pathway</b><br/>" "(Cyclooxygenase) (Lipoxygenase)<br/>" "↓ ↓<br/>" "Prostaglandins Leukotrienes (LTA₄, LTB₄, LTC₄, LTD₄, LTE₄)<br/>" "Thromboxanes Lipoxins (anti-inflammatory)<br/>" "Prostacyclin<br/><br/>" "<i>NSAIDs block COX → ↓ PGs; Steroids block phospholipase A₂ → block both pathways</i>", BOX_TEXT)]] aa_t = Table(aa_data, colWidths=[17*cm]) aa_t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#e8eaf6')), ('BOX', (0,0), (-1,-1), 1.5, colors.HexColor('#3949ab')), ('TOPPADDING', (0,0), (-1,-1), 10), ('BOTTOMPADDING', (0,0), (-1,-1), 10), ('LEFTPADDING', (0,0), (-1,-1), 14), ])) story.append(aa_t) story.append(PageBreak()) # COMPLEMENT story.append(Paragraph("E. Complement System", H2)) story += img_block("fig2_8_complement.png", 13, "FIG. 2.8 — Activation and functions of the complement system. " "Three pathways (classical, alternative, lectin) converge on C3 convertase → C3a + C3b. " "C5a causes chemotaxis and mast cell degranulation; C3b opsonizes; C5b-9 forms the membrane attack complex. " "(Robbins & Kumar 10th Ed.)") story.append(simple_table( ["Pathway", "Trigger", "Common Step"], [ ["Classical", "Antibody (IgG/IgM) + antigen", "C3 convertase → C3a + C3b"], ["Alternative", "Microbial surfaces (LPS, polysaccharides)", "C3 convertase → C3a + C3b"], ["Lectin", "Mannose-binding lectin + carbohydrates on microbes", "C3 convertase → C3a + C3b"], ], col_widths=[3.5*cm, 7.5*cm, 6*cm] )) story.append(Spacer(1,8)) story.append(Paragraph("F. Morphologic Patterns of Acute Inflammation", H2)) story.append(simple_table( ["Pattern", "Features", "Example"], [ ["Serous", "Watery fluid, few cells", "Pleural effusion, skin blisters"], ["Fibrinous", "Large amounts of fibrin in exudate", "Pericarditis ('bread and butter')"], ["Suppurative (Purulent)", "Pus — neutrophils + liquefactive necrosis", "Abscess, empyema"], ["Ulcerative", "Loss of epithelial surface", "Peptic ulcer, aphthous ulcers"], ], col_widths=[4*cm, 7*cm, 6*cm] )) story.append(Spacer(1,8)) story.append(Paragraph("G. Outcomes of Acute Inflammation", H2)) for txt in [ "<b>Complete resolution:</b> When injury is limited; debris cleared by macrophages, edema drained by lymphatics, tissue regenerated.", "<b>Healing by scarring (fibrosis):</b> When tissue destruction is substantial, or tissue cannot regenerate; connective tissue replaces damaged area.", "<b>Progression to chronic inflammation:</b> Acute response cannot resolve — persistence of injurious agent or interference with healing.", ]: story.append(Paragraph("• " + txt, BULLET)) story.append(Spacer(1,8)) story.append(Paragraph("H. Systemic Effects — Acute Phase Response", H2)) story.append(simple_table( ["Effect", "Mediator / Mechanism"], [ ["Fever", "IL-1, IL-6, TNF → hypothalamus → PGE₂ → raised thermostat"], ["Leukocytosis", "IL-1, TNF → ↑ BM production/release; neutrophilia (bacterial), lymphocytosis (viral), eosinophilia (parasitic)"], ["Acute phase proteins", "CRP, fibrinogen, SAA — produced by liver; ESR rises due to fibrinogen"], ["Septic shock", "Systemic vasodilation, DIC, metabolic disturbances with overwhelming infection"], ], col_widths=[5*cm, 12*cm] )) story.append(PageBreak()) # ── PART II: CHRONIC INFLAMMATION ──────────────────────────────────────────── story.append(section_bar("PART II: CHRONIC INFLAMMATION", color='#1b5e20')) story.append(Spacer(1,8)) story.append(Paragraph( "<b>Definition:</b> A response of prolonged duration (weeks or months) in which inflammation, " "tissue injury, and attempts at repair coexist, in varying combinations (Robbins & Cotran 10th Ed.).", BODY)) story.append(Paragraph("A. Causes", H2)) for txt in [ "<b>Persistent infections:</b> mycobacteria, fungi, parasites, certain viruses; often with granulomatous reactions", "<b>Autoimmune/hypersensitivity diseases:</b> RA, MS, IBD, bronchial asthma", "<b>Toxic agents:</b> silica (silicosis), endogenous cholesterol (atherosclerosis)", ]: story.append(Paragraph("• " + txt, BULLET)) story.append(Paragraph("B. Morphologic Features", H2)) for txt in [ "Infiltration by <b>mononuclear cells</b>: macrophages, lymphocytes, plasma cells", "<b>Tissue destruction</b> by the persistent offending agent or inflammatory cells", "Attempts at healing via <b>connective tissue replacement</b> (angiogenesis + fibrosis)", ]: story.append(Paragraph("• " + txt, BULLET)) story.append(Paragraph("C. Cells of Chronic Inflammation", H2)) story.append(simple_table( ["Cell", "Characteristics", "Function"], [ ["Macrophages (dominant)", "Derived from blood monocytes; tissue forms = Kupffer cells, microglia, alveolar macrophages\n" "Activated by: IFN-γ (Th1), bacterial endotoxin\n" "M1 (classical): antimicrobial, pro-inflammatory\n" "M2 (alternative): anti-inflammatory, tissue repair, fibrosis", "Phagocytosis; cytokine secretion (TNF, IL-1, IL-6, IL-12); growth factors (PDGF, TGF-β); MMPs; NO production"], ["Lymphocytes", "CD4+ Th1 → IFN-γ (macrophage activation)\nCD4+ Th2 → IL-4, IL-5, IL-13 (eosinophils, IgE)\nCD4+ Th17 → IL-17 (neutrophil recruitment)\nCD8+ cytotoxic T cells", "Activate macrophages, direct killing, antibody production (via B cells → plasma cells)"], ["Eosinophils", "Parasitic infections, allergic reactions", "Major basic protein — toxic to helminths"], ["Plasma cells", "Differentiated B lymphocytes", "Antibody production; predominate in established lesions"], ["Mast cells", "Widespread in tissues", "Produce cytokines amplifying inflammation"], ], col_widths=[4*cm, 7*cm, 6*cm] )) story.append(Spacer(1,8)) story.append(Paragraph("D. Systemic Effects of Chronic Inflammation", H2)) for txt in [ "Amyloidosis (AA type) — sustained SAA production", "Weight loss, anemia of chronic disease", "Cancer risk: H. pylori → gastric cancer; HBV/HCV → hepatocellular carcinoma; Crohn disease → colorectal cancer", ]: story.append(Paragraph("• " + txt, BULLET)) story.append(PageBreak()) # ── PART III: GRANULOMATOUS INFLAMMATION ──────────────────────────────────── story.append(section_bar("PART III: GRANULOMATOUS INFLAMMATION", color='#4a148c')) story.append(Spacer(1,8)) story.append(Paragraph( "<b>Definition:</b> A form of chronic inflammation characterized by <b>focal aggregates of activated " "macrophages (epithelioid cells)</b>, often with T lymphocytes, and sometimes necrosis.", BODY)) story.append(Paragraph("A. Types", H2)) story.append(simple_table( ["Type", "Mechanism", "Examples"], [ ["Foreign body granuloma", "Reaction to inert foreign material; no T-cell immune response", "Talc, sutures, fibers — too large to phagocytose"], ["Immune (hypersensitivity) granuloma", "Persistent T-cell-mediated immune response (Th1/IFN-γ → macrophage activation)", "TB, sarcoidosis, Crohn's disease, schistosomiasis"], ], col_widths=[5*cm, 7*cm, 5*cm] )) story.append(Paragraph("B. Morphology", H2)) for txt in [ "<b>Epithelioid cells:</b> Activated macrophages with pink granular cytoplasm, indistinct cell borders; resemble epithelial cells", "<b>Langhans giant cells:</b> 40–50 μm; formed by fusion of activated macrophages; nuclei in horseshoe/peripheral pattern", "<b>Foreign body giant cells:</b> Nuclei scattered randomly", "<b>Lymphocyte cuff</b> surrounding the epithelioid aggregate", "<b>Caseous necrosis:</b> Central amorphous eosinophilic granular debris — characteristic of TB; due to hypoxia + free radical injury", ]: story.append(Paragraph("• " + txt, BULLET)) story.append(Spacer(1,6)) story.append(Paragraph("C. Common Causes", H2)) story.append(simple_table( ["Disease", "Key Feature"], [ ["Tuberculosis", "Caseating granuloma; Langhans giant cells; AFB on ZN stain"], ["Sarcoidosis", "Non-caseating 'naked granuloma'; no infectious agent identified"], ["Crohn's disease", "Non-caseating; transmural granulomas in bowel wall"], ["Leprosy", "Type depends on immunological status (tuberculoid vs lepromatous)"], ["Cat scratch disease", "Suppurative granuloma; Bartonella henselae"], ["Schistosomiasis", "Th2-mediated, eosinophil-rich granuloma around ova"], ["Foreign body", "Foreign material visible (refractile under polarized light)"], ], col_widths=[5*cm, 12*cm] )) story.append(PageBreak()) # ── PERIODONTOLOGY ──────────────────────────────────────────────────────────── story.append(section_bar("PART IV: INFLAMMATION IN PERIODONTOLOGY", color='#b71c1c')) story.append(Spacer(1,8)) story.append(Paragraph( "Periodontitis is an inflammatory process affecting the supporting structures of the teeth — " "periodontal ligament, alveolar bone, and cementum. It is the most common chronic inflammatory " "condition worldwide and a major cause of tooth loss in adults.", BODY)) story.append(Paragraph("A. Microbiology — Initiating Stimulus", H2)) story.append(Paragraph( "<b>Dental plaque</b> is the initiating factor. Key periodontal pathogens ('red complex'):", BODY)) story.append(simple_table( ["Organism", "Association"], [ ["Aggregatibacter actinomycetemcomitans", "Aggressive (juvenile) periodontitis"], ["Porphyromonas gingivalis", "Major pathogen in chronic adult periodontitis; produces gingipains (proteases)"], ["Prevotella intermedia", "Pregnancy gingivitis, chronic periodontitis"], ["Treponema denticola + Tannerella forsythia", "Red complex with P. gingivalis — most pathogenic triad"], ], col_widths=[7*cm, 10*cm] )) story.append(Paragraph("B. Pathogenesis — Page & Schroeder Classification", H2)) story.append(simple_table( ["Stage", "Timing", "Features", "Dominant Cells"], [ ["Initial Lesion", "2–4 days", "Acute vascular response; ↑ GCF; PMN migration into JE", "Neutrophils (PMNs)"], ["Early Lesion", "4–7 days", "Collagen loss begins; altered fibroblasts; still reversible", "Lymphocytes (T-cells)"], ["Established Lesion", "Weeks–months", "Dense infiltrate; Ig production; pocket formation begins; reversible", "Plasma cells, B-lymphocytes"], ["Advanced Lesion", "Chronic", "Alveolar bone resorption; true pocket; irreversible", "Plasma cells, macrophages"], ], col_widths=[3.5*cm, 3*cm, 7.5*cm, 3*cm] )) story.append(Paragraph("C. Mechanisms of Tissue Destruction", H2)) story.append(Paragraph("<b>Direct bacterial mechanisms:</b>", BODY)) for txt in [ "Bacterial enzymes (collagenases, proteases, hyaluronidase) destroy ECM", "LPS activates complement, stimulates cytokine release", "P. gingivalis gingipains cleave complement components and immunoglobulins", ]: story.append(Paragraph("• " + txt, BULLET)) story.append(Paragraph("<b>Host-mediated (dominant mechanism):</b>", BODY)) story.append(simple_table( ["Mediator", "Role in Periodontitis"], [ ["IL-1β + TNF-α", "Key drivers; stimulate PGE₂ production; activate osteoclasts via RANKL upregulation"], ["PGE₂", "Major mediator of bone resorption; stimulates osteoclastogenesis via RANKL"], ["MMPs (MMP-1, -8, -13)", "Degrade collagen and connective tissue; produced by PMNs, macrophages, fibroblasts"], ["RANKL/OPG axis", "RANKL ↑ by inflammatory mediators → osteoclast activation → bone resorption; OPG (decoy receptor) ↓ in periodontitis"], ["ROS", "Generated by PMN respiratory burst; tissue damage when released extracellularly"], ["Complement (C3a, C5a)", "↑ vascular permeability; recruit more PMNs; amplify inflammation"], ], col_widths=[5*cm, 12*cm] )) story.append(Paragraph("D. Gingivitis vs Periodontitis", H2)) story.append(simple_table( ["Feature", "Gingivitis", "Periodontitis"], [ ["Inflammation", "Limited to gingiva", "Involves all supporting structures"], ["Bone loss", "Absent", "Present"], ["Attachment loss", "Absent", "Present"], ["Pocket", "Pseudo-pocket (gingival enlargement)", "True pocket (apical migration of JE)"], ["Reversibility", "Yes (with plaque removal)", "No — bone/attachment loss irreversible"], ["Dominant cells", "Lymphocytes (T-cells)", "Plasma cells, B-lymphocytes"], ["Stage (Page & Schroeder)", "Stages 1–3", "Stage 4"], ], col_widths=[5*cm, 6*cm, 6*cm] )) story.append(Spacer(1,8)) story.append(Paragraph("E. Systemic Associations of Periodontitis", H2)) story.append(simple_table( ["Condition", "Relationship"], [ ["Diabetes mellitus", "Bidirectional: periodontitis ↑ worsens glycemic control; hyperglycemia promotes periodontal inflammation via AGEs"], ["Cardiovascular disease", "P. gingivalis can enter bloodstream; chronic ↑ CRP and IL-6 contribute to atherogenesis"], ["Preterm / low birth weight", "PGE₂ and TNF-α from periodontal lesion may trigger premature labor"], ["Respiratory disease", "Aspiration of periodontal pathogens can cause pneumonia"], ["Infective endocarditis", "Bacteremia from periodontal manipulation can seed cardiac valves"], ], col_widths=[5*cm, 12*cm] )) story.append(PageBreak()) # ── SUMMARY TABLE ───────────────────────────────────────────────────────────── story.append(section_bar("SUMMARY: ACUTE vs CHRONIC INFLAMMATION")) story.append(Spacer(1,8)) story.append(simple_table( ["Feature", "Acute", "Chronic"], [ ["Duration", "Days to weeks", "Weeks to months"], ["Onset", "Rapid", "Slow, insidious"], ["Primary cells", "Neutrophils", "Macrophages, lymphocytes, plasma cells"], ["Tissue injury", "Usually mild", "Can be severe, progressive"], ["Vasculature", "Dilation, exudation", "Angiogenesis"], ["Fibrosis", "Rare", "Common"], ["Systemic effects", "Fever, leukocytosis (neutrophilia)", "Anemia of chronic disease, amyloidosis"], ["Examples", "Appendicitis, lobar pneumonia", "TB, RA, periodontitis, atherosclerosis"], ], col_widths=[5*cm, 6*cm, 6*cm] )) story.append(Spacer(1,12)) story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#90caf9'))) story.append(Paragraph( "References: Robbins & Cotran Pathologic Basis of Disease, 10th Ed., Chapter 3 | " "Robbins & Kumar Basic Pathology, 10th Ed. | Review of Pathology & Genetics, 10th Ed. | " "Diagrams: Robbins & Kumar Basic Pathology 10th Ed. (via Orris Medical Library)", ParagraphStyle('ref', fontName='Helvetica-Oblique', fontSize=8.5, textColor=colors.HexColor('#546e7a'), alignment=TA_CENTER, spaceAfter=0))) doc.build(story) print(f"PDF created: {OUT}") import os; print(f"Size: {os.path.getsize(OUT)/1024:.1f} KB") PYEOF
provide images pdf only i will add to answer myself
python3 << 'PYEOF' import urllib.request, os base = "https://cdn.orris.care/cdss_images/" imgs = { "fig2_1_acute_inflammation_overview": None, # need URL - let me check "fig2_2_exudate_transudate": "a1924ecccbe88b3ca4a3795a0f651231df9f94ad3fd8f9512c24b20a216a684c.png", "fig2_3_leukocyte_recruitment": "d4069a4483fcff36a49f18326da169ba066843649b884f86865e3d6e15d1d0f5.png", "efig2_1_leukocyte_activation": "f0ee479847cd1e265c2c454bd7d557c5fb90987086bc0cbe3fcafefbb2ec086a.png", "fig2_5_phagocytosis": "8c9b2b5266078658b8fc321edfd4c63d9d4718e80af200fe33d5382449103ad4.png", "fig2_6_arachidonic_acid": "969f154801a65c5261cff41216d7938b85dbeca7c59c992758b8dad5b59b9545.png", "fig2_8_complement": "6220b1c11b421b1dd0a27ee74dd6d15d8a1b0e138451f7f29aadf152da5f3d5f.png", } img_dir = "/home/daytona/workspace/inflammation_enhanced/imgs" os.makedirs(img_dir, exist_ok=True) headers = {'User-Agent': 'Mozilla/5.0'} for name, fn in imgs.items(): if fn is None: continue dest = os.path.join(img_dir, name + ".png") if os.path.exists(dest): print(f"Exists: {name}") continue try: req = urllib.request.Request(base + fn, headers=headers) with urllib.request.urlopen(req, timeout=15) as r, open(dest, 'wb') as f: f.write(r.read()) print(f"Downloaded {name}: {os.path.getsize(dest)//1024} KB") except Exception as e: print(f"FAILED {name}: {e}") # list what we have print("\nAvailable images:") for f in sorted(os.listdir(img_dir)): print(f" {f}: {os.path.getsize(os.path.join(img_dir,f))//1024} KB") PYEOF
python3 << 'PYEOF' import urllib.request, os from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import ParagraphStyle from reportlab.lib.units import cm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image, HRFlowable from reportlab.lib.enums import TA_CENTER, TA_LEFT from PIL import Image as PILImage base = "https://cdn.orris.care/cdss_images/" img_dir = "/home/daytona/workspace/inflammation_enhanced/imgs" os.makedirs(img_dir, exist_ok=True) headers = {'User-Agent': 'Mozilla/5.0'} new_imgs = { "fig2_4_leukocyte_kinetics": "4bc122e9d6e0f434659b424799cac5bd77fb3bf50162522d5d76e312fd8624c1.png", "fig2_14_chronic_inflammation_lung": "0a1521d04fdbe38a81d55440194dde423e8c8f395203b7be93b67a03c9195518.png", "fig2_17_macrophage_M1_M2": "782db0bb1b2fdcdad0706e93cc73adccbed5e7e69a77253f01827939ec33dac8.png", "fig2_16_macrophage_maturation": "9010c4de2b9fe657ca52be805243e95adeb8ca1ac28cd9696a791dd0c87e7ba5.png", } for name, fn in new_imgs.items(): dest = os.path.join(img_dir, name + ".png") if os.path.exists(dest): print(f"Exists: {name}") continue try: req = urllib.request.Request(base + fn, headers=headers) with urllib.request.urlopen(req, timeout=15) as r, open(dest, 'wb') as f: f.write(r.read()) print(f"Downloaded {name}: {os.path.getsize(dest)//1024} KB") except Exception as e: print(f"FAILED {name}: {e}") # Also check for granuloma - read from previously truncated output # We need to also get granuloma image - let's check what we got print("\nAll images available:") for f in sorted(os.listdir(img_dir)): print(f" {f}: {os.path.getsize(os.path.join(img_dir,f))//1024} KB") PYEOF
python3 << 'PYEOF' import urllib.request, os from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import ParagraphStyle from reportlab.lib.units import cm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image, HRFlowable, KeepTogether from reportlab.lib.enums import TA_CENTER from PIL import Image as PILImage base = "https://cdn.orris.care/cdss_images/" img_dir = "/home/daytona/workspace/inflammation_enhanced/imgs" headers = {'User-Agent': 'Mozilla/5.0'} # Download remaining images extra = { "fig2_18_eosinophils": "9f0af38dea9869e85bcebe37ea61fba63a585b67530ef3a23d8daccc55d032e9.png", "fig2_19_granuloma_TB": "8f3f35ff14031c5158b8b4e377ed55c99f67dddaccf666d5058f7dd46b2bdcf6.png", } for name, fn in extra.items(): dest = os.path.join(img_dir, name + ".png") if os.path.exists(dest): print(f"Exists: {name}") continue try: req = urllib.request.Request(base + fn, headers=headers) with urllib.request.urlopen(req, timeout=15) as r, open(dest, 'wb') as f: f.write(r.read()) print(f"Downloaded {name}: {os.path.getsize(dest)//1024} KB") except Exception as e: print(f"FAILED {name}: {e}") # ── BUILD IMAGES-ONLY PDF ─────────────────────────────────────────────────── OUT = "/home/daytona/workspace/inflammation_enhanced/Inflammation_Diagrams.pdf" doc = SimpleDocTemplate( OUT, pagesize=A4, leftMargin=1.8*cm, rightMargin=1.8*cm, topMargin=2*cm, bottomMargin=2*cm, title="Inflammation – Diagrams (Robbins & Kumar Basic Pathology 10th Ed.)" ) TITLE_S = ParagraphStyle('T', fontName='Helvetica-Bold', fontSize=16, textColor=colors.HexColor('#0d47a1'), alignment=TA_CENTER, spaceAfter=4) SUB_S = ParagraphStyle('S', fontName='Helvetica-Oblique', fontSize=9, textColor=colors.HexColor('#546e7a'), alignment=TA_CENTER, spaceAfter=14) SECTION_S = ParagraphStyle('SEC', fontName='Helvetica-Bold', fontSize=11, textColor=colors.white, alignment=TA_CENTER) CAPTION_S = ParagraphStyle('CAP', fontName='Helvetica-Oblique', fontSize=8.5, textColor=colors.HexColor('#37474f'), alignment=TA_CENTER, spaceAfter=6, leading=12) LABEL_S = ParagraphStyle('LBL', fontName='Helvetica-Bold', fontSize=10, textColor=colors.HexColor('#1565c0'), alignment=TA_CENTER, spaceBefore=4, spaceAfter=2) def section_banner(text, color='#1565c0'): from reportlab.platypus import Table, TableStyle t = Table([[Paragraph(text, SECTION_S)]], colWidths=[17.4*cm]) t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,-1),colors.HexColor(color)), ('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5), ])) return t def add_image(story, filename, label, caption, width_cm=14.5): path = os.path.join(img_dir, filename) if not os.path.exists(path): story.append(Paragraph(f"[Image not available: {filename}]", CAPTION_S)) return with PILImage.open(path) as im: w, h = im.size aspect = h / w w_pt = width_cm * cm h_pt = w_pt * aspect if h_pt > 11.5*cm: h_pt = 11.5*cm w_pt = h_pt / aspect img = Image(path, width=w_pt, height=h_pt) img.hAlign = 'CENTER' story.append(KeepTogether([ Paragraph(label, LABEL_S), Spacer(1, 3), img, Spacer(1, 4), Paragraph(caption, CAPTION_S), HRFlowable(width="80%", thickness=0.5, color=colors.HexColor('#b0bec5'), spaceAfter=12), ])) story = [] # TITLE story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("INFLAMMATION — KEY DIAGRAMS", TITLE_S)) story.append(Paragraph( "Source: Robbins & Kumar Basic Pathology, 10th Edition (Elsevier) | " "For PG University Exam Preparation", SUB_S)) story.append(HRFlowable(width="100%", thickness=1.5, color=colors.HexColor('#1565c0'), spaceAfter=12)) # ── ACUTE INFLAMMATION ──────────────────────────────────────────────────── story.append(section_banner("ACUTE INFLAMMATION", "#0d47a1")) story.append(Spacer(1, 8)) add_image(story, "fig2_2_exudate_transudate.png", "FIG. 2.2 — Exudate vs Transudate", "(A) Normal: balanced hydrostatic & osmotic pressures — no net fluid leak.\n" "(B) Exudate: ↑ vascular permeability → protein-rich fluid escapes (inflammation).\n" "(C) Transudate: hydrostatic ↑ or osmotic ↓ → protein-poor fluid leaks (no inflammation).") add_image(story, "fig2_3_leukocyte_recruitment.png", "FIG. 2.3 — Multistep Leukocyte Recruitment", "Steps: Margination → Rolling (selectins: P/E-selectin on endothelium, L-selectin on leukocyte) → " "Firm adhesion (integrins: LFA-1/ICAM-1, VLA-4/VCAM-1; induced by TNF, IL-1) → " "Transmigration/diapedesis (PECAM-1/CD31) → Chemotaxis (C5a, LTB₄, IL-8, bacterial peptides).") add_image(story, "fig2_4_leukocyte_kinetics.png", "FIG. 2.4 — Leukocyte Kinetics in Acute Inflammation", "(A) Early (6–24 h): Neutrophil-predominant infiltrate. (B) Late (24–48 h+): Mononuclear cell infiltrate (macrophages).\n" "(C) Graph showing kinetics of edema and neutrophil/monocyte infiltration over time.\n" "Neutrophils predominate early → short-lived; monocytes arrive later → become dominant macrophages.") add_image(story, "efig2_1_leukocyte_activation.png", "eFIG. 2.1 — Leukocyte Activation", "Receptors on leukocytes (TLRs, G-protein-coupled receptors for chemokines, cytokine receptors, opsonin receptors) " "trigger functional responses: adhesion, chemotaxis, phagocytosis, ROS production, cytokine secretion, and degranulation.") add_image(story, "fig2_5_phagocytosis.png", "FIG. 2.5 — Phagocytosis and Intracellular Killing", "Step 1: Recognition — opsonins (IgG via Fc receptor; C3b via CR1/CR3) enhance attachment.\n" "Step 2: Engulfment — pseudopod extension → phagosome → fusion with lysosome → phagolysosome.\n" "Step 3: Killing — Oxygen-dependent: NADPH oxidase → O₂⁻ → H₂O₂ → HOCl (myeloperoxidase). " "Oxygen-independent: lysozyme, defensins, lactoferrin, BPI.") add_image(story, "fig2_6_arachidonic_acid.png", "FIG. 2.6 — Arachidonic Acid Metabolites Pathway", "Stimulus → Phospholipase A₂ (blocked by corticosteroids/lipocortin) → Arachidonic acid.\n" "COX pathway (blocked by NSAIDs/aspirin) → Prostaglandins (PGE₂, PGI₂, PGD₂), Thromboxane A₂.\n" "LOX pathway → Leukotrienes (LTB₄: chemotaxis; LTC₄/LTD₄/LTE₄: bronchoconstriction, ↑ permeability) + Lipoxins (anti-inflammatory).") add_image(story, "fig2_8_complement.png", "FIG. 2.8 — Complement Activation Pathways", "Three pathways converge on C3 convertase → C3a + C3b.\n" "Classical: antibody (IgG/IgM) + antigen → C1 activation.\n" "Alternative: microbial surfaces (LPS) — no antibody required.\n" "Lectin: mannose-binding lectin + microbial carbohydrates.\n" "Products: C3a/C5a (anaphylatoxins — mast cell degranulation, chemotaxis); C3b (opsonin); C5b-9 (membrane attack complex).") # ── CHRONIC INFLAMMATION ──────────────────────────────────────────────────── story.append(section_banner("CHRONIC INFLAMMATION", "#1b5e20")) story.append(Spacer(1, 8)) add_image(story, "fig2_14_chronic_inflammation_lung.png", "FIG. 2.14 — Chronic Inflammation (Lung)", "(A) Chronic inflammation in lung: three hallmarks — (1) mononuclear cell infiltrate (*), " "(2) parenchymal destruction (normal alveoli replaced by cuboidal epithelium, arrowheads), " "(3) fibrosis/connective tissue replacement (arrows).\n" "(B) Acute bronchopneumonia for comparison: neutrophil-filled alveolar spaces + congested vessels.") add_image(story, "fig2_16_macrophage_maturation.png", "FIG. 2.16 — Macrophage Maturation and Distribution", "Bone marrow HSCs → monocytes (blood) → tissue macrophages (inflammatory reactions).\n" "Tissue-resident macrophages (Kupffer cells, microglia, alveolar macrophages, osteoclasts) " "arise from embryonic yolk sac/fetal liver precursors — long-lived, replenished by local proliferation.") add_image(story, "fig2_17_macrophage_M1_M2.png", "FIG. 2.17 — Classical (M1) vs Alternative (M2) Macrophage Activation", "M1 (Classical): Activated by IFN-γ (Th1 cells), LPS/endotoxin → pro-inflammatory; produce ROS, NO, TNF, IL-1, IL-12.\n" "M2 (Alternative): Activated by IL-4, IL-13 (Th2 cells) → anti-inflammatory; tissue repair, fibrosis, " "produce TGF-β, PDGF, IL-10. M2 macrophages promote angiogenesis and wound healing.") # ── GRANULOMATOUS INFLAMMATION ───────────────────────────────────────────── story.append(section_banner("GRANULOMATOUS INFLAMMATION", "#4a148c")) story.append(Spacer(1, 8)) add_image(story, "fig2_19_granuloma_TB.png", "FIG. 2.19 — Tuberculous Granuloma (H&E)", "Central caseous necrosis (amorphous eosinophilic debris — loss of all architecture) due to hypoxia + free radical injury.\n" "Surrounded by: Epithelioid cells (activated macrophages — pink granular cytoplasm, indistinct borders) + " "Langhans giant cells (multinucleate, 40–50 μm; nuclei in horseshoe/peripheral pattern) + " "Lymphocyte cuff. Outer rim of fibroblasts in older lesions.\n" "Prototype: Mycobacterium tuberculosis. Non-caseating granulomas: sarcoidosis, Crohn's disease, foreign body.") add_image(story, "fig2_18_eosinophils.png", "FIG. 2.18 — Eosinophilic Inflammation", "Dense eosinophilic infiltrate. Eosinophils recruited by eotaxin and IL-5 (Th2 response).\n" "Granules contain major basic protein (toxic to helminths but also injures host epithelium).\n" "Seen in: parasitic infections, IgE-mediated allergic reactions, Th2-driven chronic inflammation.") # FOOTER story.append(Spacer(1, 0.5*cm)) story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#90caf9'))) story.append(Paragraph( "All diagrams from: Robbins & Kumar Basic Pathology, 10th Edition (Kumar, Abbas, Aster — Elsevier, 2023). " "For educational use in PG University Exam preparation.", ParagraphStyle('foot', fontName='Helvetica-Oblique', fontSize=8, textColor=colors.HexColor('#78909c'), alignment=TA_CENTER))) doc.build(story) print(f"\nPDF created: {OUT}") import os; print(f"Size: {os.path.getsize(OUT)/1024:.1f} KB") PYEOF
Inflammation Diagrams
PDF Document · PDF
| # | Figure | Topic |
|---|---|---|
| 1 | Fig 2.2 | Exudate vs Transudate formation |
| 2 | Fig 2.3 | Leukocyte recruitment - multistep process (rolling, adhesion, transmigration) |
| 3 | Fig 2.4 | Leukocyte kinetics - neutrophil then monocyte infiltration over time |
| 4 | eFig 2.1 | Leukocyte activation - receptor types and functional responses |
| 5 | Fig 2.5 | Phagocytosis and intracellular killing (O₂-dependent and independent) |
| 6 | Fig 2.6 | Arachidonic acid pathway - COX and LOX branches, drug targets |
| 7 | Fig 2.8 | Complement activation - classical/alternative/lectin pathways |
| # | Figure | Topic |
|---|---|---|
| 8 | Fig 2.14 | Chronic inflammation in lung - 3 hallmarks histologically |
| 9 | Fig 2.16 | Macrophage maturation and tissue distribution |
| 10 | Fig 2.17 | M1 vs M2 macrophage activation |
| # | Figure | Topic |
|---|---|---|
| 11 | Fig 2.19 | Tuberculous granuloma - H&E with caseous necrosis, Langhans giant cells |
| 12 | Fig 2.18 | Eosinophilic infiltrate |