1)Cholera. Etiology, epidemiology. Features of pathogenesis. Cholera. Clinical presentation. Degrees of dehydration. Emergency therapy for dehydratic shock. Cholera. Diagnosis and differential diagnosis of cholera. Principles of treatment. 2) Malaria. Etiology. Epidemiology. Risk groups.Malaria. Life cycle of the malaria parasite. Features of the asexual phase of development of the causative agents of different forms of malaria. Origin of febrile paroxysm. Malaria. Prevention. Pathogenesis of relapses in malaria. Complications of malaria. Malaria. Diagnosis of malaria. Treatment of different forms of malaria (indicate drug groups and main representatives 3)Viral hepatitis A and E. Etiology, epidemiology. Clinical classification. Clinical presentation of various forms. Diagnosis. Treatment
95% of reported cases come from Africa and Asia; true burden estimated at 1-4 million cases/year with 20,000-140,000 deaths annually
| Degree | Clinical Findings |
|---|---|
| None/Mild | Thirst in some; <5% loss of body weight |
| Moderate | Thirst, postural hypotension, weakness, tachycardia, decreased skin turgor, dry mouth/tongue, no tears; 5-10% body weight loss |
| Severe | Unconsciousness/lethargy/"floppiness"; weak or absent pulse; inability to drink; sunken eyes (and fontanelles in infants); >10% body weight loss |
| Age/Weight | ORS volume |
|---|---|
| <4 months (<5 kg) | 200-400 mL |
| 4-11 months (5-<8 kg) | 400-600 mL |
| 12-23 months (8-<11 kg) | 600-800 mL |
| 2-4 years (11-<16 kg) | 800-1200 mL |
| 5-14 years (16-<30 kg) | 1200-2200 mL |
| ≥15 years (≥30 kg) | 2200-4000 mL |
| Species | Key Features |
|---|---|
| P. falciparum | Most dangerous; infects all ages of RBCs; high parasitemia; sequestration; 36-48 h cycle |
| P. vivax | Infects young RBCs; dormant hypnozoites; 44-48 h cycle; temperate regions too |
| P. ovale | Similar to vivax; dormant hypnozoites; 48 h cycle; mainly West Africa |
| P. malariae | Infects old RBCs; low parasitemia; 72 h cycle (quartan); can persist decades |
| P. knowlesi | Zoonotic (macaques); Southeast Asia; 24 h cycle; can cause severe disease |
| Feature | P. falciparum | P. malariae | P. vivax | P. ovale |
|---|---|---|---|---|
| RBC preference | All ages (high parasitemia) | Old RBCs | Young RBCs (reticulocytes) | Young RBCs |
| Merozoites/schizont | 8-24 | 6-12 | 12-24 | 4-16 |
| Fever cycle | Irregular/36-48 h (tertian) | 72 h (quartan) | 44-48 h (tertian) | 48 h (tertian) |
| Hypnozoites | No | No | Yes | Yes |
| Schüffner's dots | No | No | Yes | Yes |
| RBC enlargement | No | No | Yes | Yes (oval/fimbriated) |
| Maurer's clefts | Yes | No | No | No |
| Sequestration | Yes (to endothelium, placenta) | No | No | No |
| Complication | Mechanism |
|---|---|
| Cerebral malaria | Sequestration of infected RBCs in cerebral microvasculature → ring hemorrhages, local hypoxia, cytokine storm; coma, seizures |
| Severe anemia | RBC destruction, dyserythropoiesis, hypersplenism; Hgb <7 g/dL |
| Hypoglycemia | Parasite glucose consumption + quinine-stimulated insulin secretion |
| ARDS/pulmonary edema | Inflammatory/cytokine-mediated alveolar damage |
| Acute kidney injury | Hemoglobinuria (blackwater fever), renal tubular damage, hypovolemia |
| Blackwater fever | Massive intravascular hemolysis → hemoglobinuria (dark "cola-colored" urine) |
| Algid malaria | Circulatory collapse/septic shock from Gram-negative bacteremia |
| Hyperparasitemia | >5-10% parasitized RBCs - indicator of severe disease |
| Placental malaria | P. falciparum cytoadherence to syncytiotrophoblasts → intrauterine growth restriction, low birth weight, maternal anemia |
| Splenic rupture | Especially P. vivax; massive splenomegaly |
| Tropical splenomegaly (hyperreactive malarial splenomegaly) | Chronic immune stimulation → massive spleen |
| Group | Representatives | Mechanism |
|---|---|---|
| 4-aminoquinolines | Chloroquine, amodiaquine | Inhibit heme polymerization in parasite food vacuole |
| Artemisinins | Artesunate, artemether, dihydroartemisinin | Rapid-acting; free radical damage to parasite proteins; no resistance yet (but partner drug resistance emerging) |
| 8-aminoquinolines | Primaquine, tafenoquine | Eradicate hypnozoites; active against gametocytes; mechanism involves oxidative stress |
| Antifolates | Pyrimethamine, proguanil, sulfadoxine-pyrimethamine | Inhibit DHFR/DHPS in folate synthesis |
| Aryl aminoalcohols | Quinine, mefloquine, lumefantrine, halofantrine | Inhibit heme polymerization |
| Naphthoquinones | Atovaquone | Inhibits mitochondrial electron transport chain (complex III) |
| Form | Description |
|---|---|
| Inapparent (subclinical) | No symptoms; detected only by serology (common in young children with HAV) |
| Anicteric | Symptoms (fatigue, nausea, myalgia) without jaundice |
| Icteric (typical acute) | Full clinical picture: prodrome + jaundice |
| Cholestatic | Prolonged jaundice (weeks-months); HAV-associated; usually self-resolves |
| Relapsing | HAV: 10% of patients; secondary rise in enzymes and symptoms; self-limited; HAV is the most common cause of relapsing cholestatic hepatitis |
| Fulminant hepatic failure | Rare (<0.1% for HAV; 0.5-4% for HEV; up to 20% for HEV in pregnant women) |
| Chronic | Does NOT occur with HAV or HEV (both are exclusively acute in immunocompetent patients) |
| Chronic HEV | Can occur in immunocompromised patients (transplant recipients, HIV) with genotype 3/4 |
| Marker | Interpretation |
|---|---|
| IgM anti-HAV | Acute infection (appears 2-3 weeks after infection; persists 3-6 months) - diagnostic of acute hepatitis A |
| IgG anti-HAV | Past infection or vaccination; appears 1-2 weeks after IgM; lifelong protective immunity |
| Total anti-HAV | Detects both IgM + IgG; used for seroprevalence studies |
| HAV RNA (PCR) | Present in stool and plasma during incubation and early acute phase; useful in outbreak investigation |
| Marker | Interpretation |
|---|---|
| IgM anti-HEV | Recent/current infection |
| IgG anti-HEV | Current or past infection |
| Note: frequent false positives depending on assay antigens; confirmatory testing needed |
Pdf format
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace not found"
mkdir -p /home/daytona/workspace/medical-notes
~/medical-notes/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
OUTPUT = "/home/daytona/workspace/medical-notes/Infectious_Diseases_Notes.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm,
topMargin=2.5*cm, bottomMargin=2.5*cm,
title="Infectious Diseases: Cholera, Malaria, Viral Hepatitis A & E",
author="Orris Medical"
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
'MainTitle', parent=styles['Title'],
fontSize=20, textColor=colors.HexColor('#1a3a5c'),
spaceAfter=6, fontName='Helvetica-Bold', alignment=TA_CENTER
)
h1_style = ParagraphStyle(
'H1', parent=styles['Heading1'],
fontSize=15, textColor=colors.white,
backColor=colors.HexColor('#1a3a5c'),
spaceBefore=14, spaceAfter=6,
fontName='Helvetica-Bold',
leftIndent=-0.3*cm, rightIndent=-0.3*cm,
borderPad=5
)
h2_style = ParagraphStyle(
'H2', parent=styles['Heading2'],
fontSize=12, textColor=colors.HexColor('#1a3a5c'),
spaceBefore=10, spaceAfter=4,
fontName='Helvetica-Bold',
borderPad=2
)
h3_style = ParagraphStyle(
'H3', parent=styles['Heading3'],
fontSize=10.5, textColor=colors.HexColor('#2c5f8a'),
spaceBefore=8, spaceAfter=3,
fontName='Helvetica-Bold',
)
body_style = ParagraphStyle(
'Body', parent=styles['Normal'],
fontSize=9.5, leading=14,
spaceAfter=4, alignment=TA_JUSTIFY,
fontName='Helvetica'
)
bullet_style = ParagraphStyle(
'Bullet', parent=styles['Normal'],
fontSize=9.5, leading=13,
leftIndent=14, firstLineIndent=-10,
spaceAfter=2, fontName='Helvetica',
bulletText='•'
)
sub_bullet_style = ParagraphStyle(
'SubBullet', parent=styles['Normal'],
fontSize=9, leading=12,
leftIndent=28, firstLineIndent=-10,
spaceAfter=2, fontName='Helvetica',
bulletText='–'
)
caption_style = ParagraphStyle(
'Caption', parent=styles['Normal'],
fontSize=8, textColor=colors.HexColor('#555555'),
spaceAfter=6, fontName='Helvetica-Oblique', alignment=TA_CENTER
)
source_style = ParagraphStyle(
'Source', parent=styles['Normal'],
fontSize=7.5, textColor=colors.HexColor('#777777'),
spaceAfter=2, fontName='Helvetica-Oblique'
)
def h1(text):
return Paragraph(f" {text}", h1_style)
def h2(text):
return Paragraph(text, h2_style)
def h3(text):
return Paragraph(text, h3_style)
def p(text):
return Paragraph(text, body_style)
def b(text):
return Paragraph(f"<bullet>•</bullet>{text}", bullet_style)
def sb(text):
return Paragraph(f"<bullet>–</bullet>{text}", sub_bullet_style)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#cccccc'), spaceAfter=4, spaceBefore=4)
def spacer(h=6):
return Spacer(1, h)
def make_table(headers, rows, col_widths=None):
data = [headers] + rows
if col_widths is None:
n = len(headers)
col_widths = [16*cm/n] * n
tbl = Table(data, colWidths=col_widths, repeatRows=1)
style = TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 8.5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#eef3fa')]),
('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,1), (-1,-1), 8),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
])
tbl.setStyle(style)
return tbl
story = []
# ─── COVER ──────────────────────────────────────────────────────────────────
story.append(spacer(40))
story.append(Paragraph("Infectious Diseases", title_style))
story.append(Paragraph("Study Notes", ParagraphStyle('sub', parent=styles['Normal'],
fontSize=14, alignment=TA_CENTER, textColor=colors.HexColor('#2c5f8a'),
fontName='Helvetica', spaceAfter=4)))
story.append(spacer(8))
story.append(HRFlowable(width="60%", thickness=2, color=colors.HexColor('#1a3a5c'), spaceAfter=12))
story.append(Paragraph("Cholera | Malaria | Viral Hepatitis A & E",
ParagraphStyle('topics', parent=styles['Normal'], fontSize=11, alignment=TA_CENTER,
textColor=colors.HexColor('#444444'), fontName='Helvetica-Oblique', spaceAfter=6)))
story.append(spacer(20))
story.append(Paragraph("Sources: Harrison's Principles of Internal Medicine 22E (2025) · Goldman-Cecil Medicine ·<br/>Tietz Textbook of Laboratory Medicine 7th Ed. · Henry's Clinical Diagnosis & Management",
ParagraphStyle('src', parent=styles['Normal'], fontSize=8.5, alignment=TA_CENTER,
textColor=colors.HexColor('#666666'), fontName='Helvetica-Oblique')))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 1 – CHOLERA
# ═══════════════════════════════════════════════════════════════════════════
story.append(h1("1. CHOLERA"))
story.append(spacer(4))
story.append(h2("Etiology"))
story.append(p("Cholera is caused by <b>Vibrio cholerae</b>, a comma-shaped, Gram-negative, motile facultative anaerobe. It is classified into >200 serogroups based on LPS O-antigens; only <b>serogroups O1 and O139</b> have epidemic potential."))
story.append(b("<b>Serogroup O1</b> – two serotypes: <b>Inaba</b> and <b>Ogawa</b>; two biotypes: <b>Classic</b> (thought extinct) and <b>El Tor</b> (current 7th-pandemic strain)"))
story.append(b("<b>Serogroup O139</b> – emerged 1992 in southeastern India; derivative of El Tor O1 with a distinct capsule; clinically indistinguishable from O1 but cross-immunity does NOT occur"))
story.append(b("Natural habitat: coastal salt water and brackish estuaries (in association with plankton); can also survive in freshwater with adequate nutrients"))
story.append(b("No known animal reservoir"))
story.append(spacer())
story.append(h2("Epidemiology"))
story.append(b("Native to the <b>Ganges delta</b> of the Indian subcontinent; seven global pandemics since 1817"))
story.append(b("Current (7th) pandemic: began in Indonesia in <b>1961</b> (El Tor biotype); >95% of reported cases from <b>Africa and Asia</b>"))
story.append(b("True burden: estimated <b>1–4 million cases/year</b> (only ~400,000 reported to WHO); <b>20,000–140,000 deaths/year</b>"))
story.append(b("<b>Transmission</b>: primarily fecally contaminated water; contaminated food and person-to-person spread also contribute"))
story.append(b("Infectious dose is relatively high; markedly reduced in <b>hypochlorhydric persons</b>, antacid users, and when gastric acid is buffered by a meal"))
story.append(b("In <b>endemic areas</b>: predominantly a pediatric disease; seasonal peaks with warm temperatures, heavy rainfall, flooding"))
story.append(b("In <b>newly affected populations</b>: all ages equally affected; outbreaks precipitated by war, displacement, breakdown of public health (Haiti 2010, Yemen 2016)"))
story.append(spacer())
story.append(h2("Features of Pathogenesis"))
story.append(p("Cholera is fundamentally a <b>toxin-mediated disease</b>. Death results from hypovolemic shock due to massive fluid loss."))
story.append(spacer(4))
story.append(h3("Step 1 – Colonization"))
story.append(b("Ingested V. cholerae survives gastric acid and colonizes the <b>small intestine</b>"))
story.append(b("The <b>toxin-coregulated pilus (TCP)</b> is essential for colonization; its synthesis is co-regulated with cholera toxin by the master regulator <b>ToxR</b> (a cascade responding to environmental signals and quorum sensing)"))
story.append(spacer(4))
story.append(h3("Step 2 – Cholera Toxin (CT) Action"))
story.append(b("<b>B subunit (pentamer)</b>: binds to <b>GM1 ganglioside</b> on the surface of intestinal epithelial cells → delivers A subunit intracellularly"))
story.append(b("<b>A1 subunit</b>: irreversibly <b>ADP-ribosylates the Gs-alpha protein</b> of adenylate cyclase → locks it in active (GTP-bound) state"))
story.append(b("Constitutively active adenylate cyclase → massive ↑ intracellular <b>cAMP</b> → PKA activation → phosphorylation of CFTR (Cl⁻ secretion) + inhibition of Na⁺/H⁺ exchangers"))
story.append(b("Net secretion of Na⁺, Cl⁻, K⁺, HCO₃⁻, and water into intestinal lumen → profuse watery diarrhea"))
story.append(spacer(4))
story.append(h3("Key Point: Basis for ORS"))
story.append(p("The <b>hexose-Na⁺ co-transport (SGLT1)</b> mechanism remains fully intact despite CT activity. This allows glucose-coupled Na⁺ (and water) absorption to continue, forming the physiological basis for oral rehydration solution (ORS)."))
story.append(spacer())
story.append(h2("Clinical Presentation"))
story.append(b("<b>Incubation period</b>: hours to 5 days (usually 1–2 days)"))
story.append(b("~75% of infections: <b>asymptomatic</b> (important reservoir for spread)"))
story.append(b("~20%: mild-moderate diarrhea; ~5%: <b>cholera gravis</b> (severe, life-threatening)"))
story.append(spacer(4))
story.append(h3("Progression in Severe (Gravis) Disease"))
story.append(b("Sudden-onset painless, profuse watery diarrhea – characteristic <b>\"rice-water\" stool</b> (colorless, odorless, containing mucus flecks); up to 1 L/hr in severe cases"))
story.append(b("<b>Vomiting</b>: effortless, without preceding nausea"))
story.append(b("<b>Rapid dehydration</b>: intense thirst, dry mouth/tongue, sunken eyes (sunken fontanelles in infants), decreased skin turgor, oliguria, muscle cramps (hypokalemia)"))
story.append(b("<b>Hypovolemic shock</b>: hypotension, tachycardia, weak/absent pulse, cyanosis, altered consciousness"))
story.append(b("<b>Metabolic derangements</b>: metabolic acidosis (HCO₃⁻ loss), hypokalemia, hyponatremia"))
story.append(spacer(4))
story.append(h3("Degrees of Dehydration"))
story.append(make_table(
["Degree", "Clinical Findings"],
[
["None / Mild", "Thirst in some cases; <5% loss of total body weight"],
["Moderate", "Thirst, postural hypotension, weakness, tachycardia, decreased skin turgor, dry mouth/tongue, no tears; 5–10% body weight loss"],
["Severe", "Unconsciousness, lethargy, or 'floppiness'; weak or absent pulse; inability to drink; sunken eyes (and fontanelles in infants); >10% body weight loss"],
],
col_widths=[4*cm, 12*cm]
))
story.append(Paragraph("Table adapted from Harrison's Principles of Internal Medicine 22E, Table 173-1", source_style))
story.append(spacer())
story.append(h2("Emergency Therapy for Dehydration / Hypovolemic Shock"))
story.append(h3("Severe Dehydration – Immediate IV Resuscitation"))
story.append(b("<b>Ringer's lactate</b> (preferred) or normal saline if unavailable"))
story.append(b("<b>100 mL/kg</b> in the first <b>3 hours</b> (6 hours for infants <12 months); start rapidly, then slow"))
story.append(b("Total <b>200 mL/kg</b> in the first 24 hours"))
story.append(b("Continue until strong pulse, normal BP, and normal mental status restored"))
story.append(b("Then transition to oral rehydration solution (ORS)"))
story.append(spacer(4))
story.append(h3("Moderate Dehydration – ORS Volumes"))
story.append(make_table(
["Age / Weight", "ORS Volume"],
[
["<4 months (<5 kg)", "200–400 mL"],
["4–11 months (5–<8 kg)", "400–600 mL"],
["12–23 months (8–<11 kg)", "600–800 mL"],
["2–4 years (11–<16 kg)", "800–1200 mL"],
["5–14 years (16–<30 kg)", "1200–2200 mL"],
["≥15 years (≥30 kg)", "2200–4000 mL"],
],
col_widths=[7*cm, 9*cm]
))
story.append(Paragraph("Table adapted from Harrison's Principles of Internal Medicine 22E, Table 173-2", source_style))
story.append(spacer(4))
story.append(p("<b>WHO ORS formula:</b> Na⁺ 75 mmol/L · Cl⁻ 65 mmol/L · K⁺ 20 mmol/L · citrate 10 mmol/L · glucose 75 mmol/L · osmolarity 245 mOsm/L"))
story.append(spacer())
story.append(h2("Diagnosis"))
story.append(b("<b>Clinical</b>: acute profuse rice-water diarrhea with rapid dehydration in epidemic context – sufficient for immediate treatment"))
story.append(b("<b>Dark-field microscopy</b>: rapid darting \"shooting-star\" motility of vibrios; immobilized by O1 or O139 antiserum"))
story.append(b("<b>Culture</b>: TCBS agar (O1 = yellow colonies); alkaline peptone water pH 8.5 for enrichment; serotyping with O1/O139 antisera"))
story.append(b("<b>PCR</b>: rapid confirmation and epidemiologic typing"))
story.append(b("<b>Rapid antigen tests</b>: available in field settings"))
story.append(b("<b>Other labs</b>: serum electrolytes (hyponatremia, hypokalemia, metabolic acidosis), BUN/creatinine (prerenal azotemia)"))
story.append(spacer(4))
story.append(h3("Differential Diagnosis"))
story.append(make_table(
["Condition", "Key Differentiating Features"],
[
["ETEC", "Similar profuse watery diarrhea; heat-labile toxin also elevates cAMP; distinguished by culture"],
["Rotavirus / Norovirus", "Vomiting often precedes diarrhea; less voluminous; mainly children (Rota)"],
["Cryptosporidium", "Immunocompromised patients; persistent course"],
["V. parahaemolyticus", "Seafood-associated; self-limited; no O1/O139 agglutination"],
["Non-cholera secretory diarrhea", "VIPoma, carcinoid – no epidemic context; hormonal markers elevated"],
],
col_widths=[4.5*cm, 11.5*cm]
))
story.append(spacer())
story.append(h2("Principles of Treatment"))
story.append(b("<b>1. Fluid and electrolyte replacement</b> (primary treatment) – reduces mortality from ~50% to <1%"))
story.append(sb("Severity-based: ORS for mild-moderate; IV Ringer's lactate for severe"))
story.append(sb("Monitor and continuously replace ongoing losses"))
story.append(b("<b>2. Antibiotics</b> (adjunct – reduce duration and volume of diarrhea by ~50%)"))
story.append(sb("<b>Doxycycline</b>: 300 mg single dose (adults) – first choice where susceptible"))
story.append(sb("<b>Azithromycin</b>: 1 g single dose (adults); 20 mg/kg (children) – preferred in pregnancy and resistant strains"))
story.append(sb("<b>Ciprofloxacin</b>: 1 g single dose (adults) – fluoroquinolone resistance emerging"))
story.append(sb("<b>Tetracycline</b>: 500 mg QID × 3 days"))
story.append(b("<b>3. Nutritional support</b>: early refeeding after rehydration (especially children)"))
story.append(b("<b>4. Zinc supplementation</b> (children): 20 mg/day × 10–14 days – reduces severity and recurrence"))
story.append(b("<b>5. Public health</b>: safe water supply, sanitation, oral cholera vaccines (Shanchol, OCV)"))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 2 – MALARIA
# ═══════════════════════════════════════════════════════════════════════════
story.append(h1("2. MALARIA"))
story.append(spacer(4))
story.append(h2("Etiology"))
story.append(p("Malaria is a hematogenous, mosquito-transmitted infection caused by apicomplexan parasites of the genus <b><i>Plasmodium</i></b>. Five species cause human disease:"))
story.append(make_table(
["Species", "Key Features"],
[
["P. falciparum", "Most dangerous; infects RBCs of all ages → high parasitemia; sequestration in microvasculature; 36–48 h erythrocytic cycle; banana-shaped gametocytes"],
["P. vivax", "Infects young RBCs (reticulocytes); dormant hypnozoites → true relapses; 44–48 h cycle; Schüffner's dots; extends to temperate regions"],
["P. ovale", "Infects young RBCs; dormant hypnozoites; 48 h cycle; oval/fimbriated RBCs; mainly West Africa"],
["P. malariae", "Infects old RBCs; low parasitemia; 72 h quartan cycle; band-form trophozoites; can persist decades"],
["P. knowlesi", "Zoonotic (macaques); Southeast Asia; 24 h cycle; can cause severe disease"],
],
col_widths=[3.5*cm, 12.5*cm]
))
story.append(spacer())
story.append(h2("Epidemiology"))
story.append(b("~<b>3.2 billion people</b> at risk worldwide; ~228 million cases/year; ~405,000 deaths/year"))
story.append(b("<b>94% of deaths</b> in WHO African Region; <b>67% of all deaths</b> in children <5 years"))
story.append(b("Endemic in tropical and subtropical regions; <i>P. vivax</i> also found in some temperate zones"))
story.append(b("<b>Vector</b>: female <i>Anopheles</i> mosquito (>30 implicated species)"))
story.append(b("In non-endemic countries: mainly imported in <b>immigrants and travelers</b> (especially VFRs – visiting friends and relatives)"))
story.append(spacer(4))
story.append(h3("Risk Groups"))
story.append(b("Children <5 years in endemic areas (lack acquired immunity)"))
story.append(b("Non-immune adults (travelers, first-time exposures)"))
story.append(b("Pregnant women (impaired immunity; risk of placental malaria with P. falciparum)"))
story.append(b("HIV-positive individuals"))
story.append(b("Asplenic individuals (functional or anatomic)"))
story.append(b("Travelers from non-endemic countries visiting endemic areas"))
story.append(spacer(4))
story.append(h3("Protective Genetic Traits (Evolutionary Adaptations)"))
story.append(p("Sickle cell trait (HbS), HbC, HbE, alpha/beta-thalassemia, G6PD deficiency, hereditary spherocytosis – all confer partial protection against severe malaria."))
story.append(spacer())
story.append(h2("Life Cycle of the Malaria Parasite"))
story.append(h3("A. Human Asexual Phase"))
story.append(b("<b>Exo-erythrocytic schizogony (liver stage):</b>"))
story.append(sb("Infected female Anopheles injects <b>sporozoites</b> during blood meal → sporozoites travel to liver, invade hepatocytes"))
story.append(sb("Over 5–15 days: asexual replication → <b>hepatic schizonts</b> → rupture, releasing thousands of <b>merozoites</b> into bloodstream"))
story.append(sb("<i>P. vivax</i> and <i>P. ovale</i> ONLY: some sporozoites become dormant <b>hypnozoites</b> → basis for true relapses"))
story.append(b("<b>Erythrocytic schizogony (blood stage – produces all symptoms):</b>"))
story.append(sb("Merozoites invade RBCs via specific receptors (Duffy antigen for P. vivax; glycophorins for P. falciparum)"))
story.append(sb("Ring trophozoite → mature trophozoite → schizont → <b>rupture</b> → merozoites re-infect new RBCs"))
story.append(sb("Some trophozoites differentiate into <b>gametocytes</b> (male microgametocytes, female macrogametocytes)"))
story.append(spacer(4))
story.append(h3("B. Mosquito Sexual Phase"))
story.append(b("Mosquito ingests gametocytes → microgametes undergo <b>exflagellation</b> → fertilize macrogametes → <b>ookinete</b>"))
story.append(b("Ookinete penetrates mosquito midgut → <b>oocyst</b> → ruptures over 8–15 days releasing thousands of <b>sporozoites</b>"))
story.append(b("Sporozoites migrate to salivary glands → ready to infect new human host"))
story.append(spacer(4))
story.append(h3("Features of Asexual Phase by Species"))
story.append(make_table(
["Feature", "P. falciparum", "P. malariae", "P. vivax", "P. ovale"],
[
["RBC preference", "All ages", "Old RBCs", "Young (reticulocytes)", "Young RBCs"],
["Merozoites/schizont", "8–24", "6–12", "12–24", "4–16"],
["Fever cycle", "36–48 h (tertian)", "72 h (quartan)", "44–48 h (tertian)", "48 h (tertian)"],
["Hypnozoites", "No", "No", "YES", "YES"],
["Schüffner's dots", "No", "No", "Yes", "Yes"],
["RBC enlargement", "No", "No", "Yes", "Yes (oval/fimbriated)"],
["Maurer's clefts", "Yes", "No", "No", "No"],
["Sequestration", "Yes", "No", "No", "No"],
],
col_widths=[3.8*cm, 3.2*cm, 3*cm, 3*cm, 3*cm]
))
story.append(spacer(4))
story.append(h3("Origin of the Febrile Paroxysm"))
story.append(p("The febrile paroxysm is triggered by <b>synchronous rupture of schizonts</b> at the end of erythrocytic schizogony. Rupture releases merozoites, <b>hemozoin</b> (malaria pigment – a byproduct of Hb degradation), and parasite metabolic products/GPI anchors. These stimulate macrophages/monocytes to release <b>TNF-α, IL-1, IL-6, IL-8</b> → systemic inflammatory response → <b>classic triad: chills (rigors, 15–60 min) → high fever (39–41°C, 2–6 h) → profuse sweating with defervescence.</b>"))
story.append(p("Periodicity reflects the synchrony of the intraerythrocytic cycle: <b>48 h (tertian)</b> for P. vivax, P. ovale, P. falciparum; <b>72 h (quartan)</b> for P. malariae. Early in infection, paroxysms may be irregular until synchrony is established."))
story.append(spacer())
story.append(h2("Prevention"))
story.append(h3("Personal Protective Measures"))
story.append(b("Insecticide-treated bed nets (ITNs / LLINs)"))
story.append(b("Indoor residual spraying (IRS)"))
story.append(b("Insect repellents (DEET, picaridin) on exposed skin; protective clothing"))
story.append(spacer(4))
story.append(h3("Chemoprophylaxis (for Travelers)"))
story.append(make_table(
["Drug", "Dose / Schedule", "Notes"],
[
["Chloroquine", "Weekly", "Only for chloroquine-sensitive areas (C. America west of Panama Canal, Haiti, parts of Middle East)"],
["Atovaquone-proguanil (Malarone)", "Daily; start 1–2 days before travel; continue 7 days after", "Preferred; few side effects"],
["Doxycycline", "Daily; start 1–2 days before; continue 4 weeks after", "Cheap; also protects against Rickettsiae"],
["Mefloquine", "Weekly; start ≥2 weeks before; continue 4 weeks after", "Neuropsychiatric side effects"],
["Primaquine", "Daily; requires G6PD screening", "Terminal prophylaxis for P. vivax/ovale"],
],
col_widths=[4*cm, 5.5*cm, 6.5*cm]
))
story.append(spacer(4))
story.append(h3("Vaccines"))
story.append(b("<b>RTS,S/AS01 (Mosquirix)</b>: first approved malaria vaccine; targets P. falciparum circumsporozoite protein; ~30–40% efficacy; WHO-recommended for children in endemic Africa"))
story.append(b("<b>R21/Matrix-M</b>: newer; ~75% efficacy in trials; WHO prequalified 2023"))
story.append(spacer())
story.append(h2("Pathogenesis of Relapses in Malaria"))
story.append(b("<b>Recrudescence</b> (all species): re-emergence from persisting blood-stage parasites due to inadequate treatment or drug resistance"))
story.append(b("<b>True relapse</b> (P. vivax and P. ovale ONLY): re-emergence from dormant <b>hypnozoites</b> in hepatocytes"))
story.append(sb("Hypnozoite = quiescent, metabolically inactive liver-stage parasite"))
story.append(sb("P. vivax: relapses 3 weeks to 8+ months after primary infection; temperate strains may have longer latency"))
story.append(sb("P. ovale: typically 1–4 months after primary infection"))
story.append(sb("Reactivation stimuli unclear (possibly stress, febrile illness, immune changes)"))
story.append(b("<b>Radical cure (prevention of relapse)</b>: requires <b>primaquine</b> 0.5 mg base/kg/day × 14 days, or <b>tafenoquine</b> 300 mg single dose"))
story.append(b("Both drugs require <b>G6PD screening</b> before use – risk of hemolytic anemia in G6PD-deficient patients"))
story.append(spacer())
story.append(h2("Complications of Malaria"))
story.append(p("Primarily with <i>P. falciparum</i>; some complications may occur with other species:"))
story.append(make_table(
["Complication", "Mechanism / Features"],
[
["Cerebral malaria", "Sequestration of infected RBCs in cerebral microvasculature → ring hemorrhages, local hypoxia, cytokine storm; unarousable coma, seizures; mortality ~15–25%"],
["Severe anemia", "RBC destruction, dyserythropoiesis, hypersplenism; Hgb <7 g/dL"],
["Hypoglycemia", "Parasite glucose consumption + quinine-stimulated insulin secretion; frequent in children and pregnant women"],
["ARDS / Pulmonary edema", "Inflammatory/cytokine-mediated alveolar damage"],
["Acute kidney injury", "Hemoglobinuria, renal tubular damage, hypovolemia"],
["Blackwater fever", "Massive intravascular hemolysis → hemoglobinuria ('cola-colored' urine); associated with G6PD deficiency + quinine use"],
["Algid malaria", "Circulatory collapse / septic shock from concurrent Gram-negative bacteremia"],
["Hyperparasitemia", ">5–10% parasitized RBCs; indicator of severity"],
["Placental malaria", "P. falciparum cytoadherence to syncytiotrophoblasts → IUGR, low birth weight, maternal anemia"],
["Splenic rupture", "Especially P. vivax; massive splenomegaly → spontaneous rupture"],
],
col_widths=[4.5*cm, 11.5*cm]
))
story.append(spacer())
story.append(h2("Diagnosis of Malaria"))
story.append(h3("Microscopy (Gold Standard)"))
story.append(b("<b>Thick blood film</b>: concentrated; more sensitive for detecting low-parasitemia infections; allows species identification with Giemsa or Field's stain"))
story.append(b("<b>Thin blood film</b>: monolayer; accurate species morphology identification; determines % parasitemia"))
story.append(b("Must be performed <b>urgently</b>, 7 days/week, 24 hours/day – malaria is life-threatening"))
story.append(spacer(4))
story.append(h3("Species Differentiation on Blood Smear"))
story.append(make_table(
["Species", "Smear Characteristics"],
[
["P. falciparum", "Small delicate rings; double chromatin dots; appliqué (accolé) forms at RBC margin; Maurer's clefts; banana-shaped gametocytes; no RBC enlargement"],
["P. vivax", "Enlarged RBCs; ameboid trophozoites; Schüffner's dots (James' stippling)"],
["P. ovale", "Oval/fimbriated RBCs; Schüffner's dots; compact trophozoites"],
["P. malariae", "Normal-sized RBCs; band-form trophozoites; rosette schizonts"],
],
col_widths=[3.5*cm, 12.5*cm]
))
story.append(spacer(4))
story.append(h3("Rapid Diagnostic Tests (RDTs)"))
story.append(b("Detect parasite antigens: <b>HRP-2</b> for P. falciparum; <b>pLDH/aldolase</b> for all species"))
story.append(b("Point-of-care; no microscopy needed; cannot quantify parasitemia; false negatives with pfhrp2/3 gene deletions"))
story.append(spacer(4))
story.append(h3("PCR"))
story.append(b("Most sensitive and specific; differentiates species; detects mixed infections; used when microscopy/RDT is inconclusive"))
story.append(spacer())
story.append(h2("Treatment of Malaria"))
story.append(h3("P. falciparum (and Unknown Species)"))
story.append(b("<b>Uncomplicated, chloroquine-sensitive areas</b> (rare): Chloroquine 25 mg base/kg over 3 days"))
story.append(b("<b>Uncomplicated, chloroquine-resistant areas (= most of the world)</b>: Artemisinin-based Combination Therapies (ACTs)"))
story.append(sb("<b>Artemether-lumefantrine (Coartem)</b>: 3-day course; most widely available ACT"))
story.append(sb("Artesunate-amodiaquine; Artesunate-mefloquine (SE Asia); Dihydroartemisinin-piperaquine"))
story.append(sb("Alternative: Atovaquone-proguanil, Quinine + doxycycline, Quinine + clindamycin (in pregnancy)"))
story.append(b("<b>Severe malaria</b>: IV/IM <b>artesunate</b> (drug of choice; superior to quinine); IV quinine + doxycycline if artesunate unavailable; exchange transfusion for parasitemia >10% (ASFA guidelines)"))
story.append(spacer(4))
story.append(h3("P. vivax / P. ovale"))
story.append(b("Chloroquine (if sensitive) + <b>Primaquine</b> 0.5 mg base/kg/day × 14 days OR <b>Tafenoquine</b> 300 mg single dose – to eradicate hypnozoites"))
story.append(b("Chloroquine-resistant P. vivax (Indonesia, Oceania): ACT or mefloquine + primaquine"))
story.append(b("Always screen for <b>G6PD deficiency</b> before primaquine/tafenoquine"))
story.append(spacer(4))
story.append(h3("P. malariae"))
story.append(b("Chloroquine alone (no hypnozoites; no radical cure needed)"))
story.append(spacer(4))
story.append(h3("Drug Groups Summary"))
story.append(make_table(
["Drug Group", "Main Representatives", "Mechanism"],
[
["4-Aminoquinolines", "Chloroquine, amodiaquine", "Inhibit heme polymerization in parasite food vacuole"],
["Artemisinins", "Artesunate, artemether, dihydroartemisinin", "Rapid-acting; free radical damage to parasite proteins"],
["8-Aminoquinolines", "Primaquine, tafenoquine", "Eradicate hypnozoites and gametocytes; oxidative stress mechanism; G6PD-sensitive"],
["Antifolates", "Pyrimethamine, proguanil, sulfadoxine-pyrimethamine", "Inhibit DHFR/DHPS in parasite folate synthesis"],
["Aryl aminoalcohols", "Quinine, mefloquine, lumefantrine", "Inhibit heme polymerization"],
["Naphthoquinones", "Atovaquone", "Inhibits mitochondrial electron transport chain (complex III)"],
],
col_widths=[4*cm, 5.5*cm, 6.5*cm]
))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# SECTION 3 – VIRAL HEPATITIS A & E
# ═══════════════════════════════════════════════════════════════════════════
story.append(h1("3. VIRAL HEPATITIS A AND E"))
story.append(spacer(4))
story.append(h2("Etiology"))
story.append(h3("Hepatitis A Virus (HAV)"))
story.append(b("Family <b>Picornaviridae</b>, genus <i>Hepatovirus</i>"))
story.append(b("<b>27-nm nonenveloped icosahedral nucleocapsid</b>"))
story.append(b("Positive-sense single-stranded RNA genome, ~7.5 kb; single open reading frame"))
story.append(b("Three genotypes in humans (I, II, III); <b>genotype I predominates worldwide</b> (subtypes A and B)"))
story.append(b("Highly stable in environment; resistant to acid and detergents; destroyed by boiling (1 min) or autoclaving"))
story.append(spacer(4))
story.append(h3("Hepatitis E Virus (HEV)"))
story.append(b("Family <b>Hepeviridae</b>, genus <i>Orthohepevirus</i>"))
story.append(b("Non-enveloped, positive-sense ssRNA, ~7.2 kb"))
story.append(b("<b>5 genotypes</b>:"))
story.append(sb("<b>Genotypes 1 and 2</b>: exclusively human; cause large waterborne epidemics in developing countries; affect younger populations"))
story.append(sb("<b>Genotypes 3 and 4</b>: zoonotic (humans and swine/boar/deer); responsible for sporadic cases in developed countries; affect older/immunocompromised"))
story.append(sb("<b>Genotype 5</b>: avian HEV (chickens)"))
story.append(spacer())
story.append(h2("Epidemiology"))
story.append(h3("Hepatitis A"))
story.append(b("<b>Worldwide distribution</b>; seroprevalence reflects sanitation standards"))
story.append(b("Developing countries: near-universal childhood exposure; seroprevalence approaches 100% in adults"))
story.append(b("Developed countries: US incidence declined from 12/100,000 in 1995 to 0.5/100,000 by 2012; subsequently rose to 3.8/100,000 in 2018 (outbreaks in drug users and homeless persons)"))
story.append(b("<b>Route</b>: primarily <b>fecal-oral</b> (person-to-person, contaminated water/food); rarely blood transfusion or perinatal"))
story.append(b("<b>High-risk groups</b>: travelers to developing countries · children in day-care centers and their parents · MSM · injection drug users · homeless persons · hemophilia patients receiving plasma products · persons in institutions"))
story.append(spacer(4))
story.append(h3("Hepatitis E"))
story.append(b("Common in <b>parts of Asia (India, Central Asia), Africa, and Mexico</b>"))
story.append(b("Rare in US except in returned travelers and, increasingly, via zoonotic routes (genotypes 3/4)"))
story.append(b("<b>Route</b>: primarily <b>fecal-oral via contaminated water</b>; waterborne epidemic pattern; person-to-person transmission is uncommon"))
story.append(b("<b>Zoonotic route</b>: uncooked boar, deer, or pork (genotypes 3/4)"))
story.append(b("<b>Special risk – Pregnant women</b>: fatality rate ~20% with genotype 1 infection (especially 3rd trimester); general fatality rate 0.5–4%"))
story.append(spacer())
story.append(h2("Clinical Classification"))
story.append(make_table(
["Clinical Form", "Description"],
[
["Inapparent (subclinical)", "No symptoms; detected only by serology; common in young children with HAV"],
["Anicteric", "Symptoms (fatigue, nausea, myalgia) without jaundice"],
["Icteric (typical acute)", "Full clinical picture: prodrome + jaundice; see below"],
["Cholestatic", "Prolonged jaundice (weeks–months); mainly HAV; usually self-resolves"],
["Relapsing", "HAV: 10% of patients; secondary rise in enzymes and symptoms; self-limited; HAV is the most common cause of relapsing cholestatic hepatitis"],
["Fulminant hepatic failure", "<0.1% for HAV; 0.5–4% for HEV; up to 20% for HEV in pregnant women"],
["Chronic", "Does NOT occur with HAV or HEV in immunocompetent patients. Chronic HEV CAN occur in immunocompromised (transplant, HIV) with genotype 3/4"],
],
col_widths=[4.5*cm, 11.5*cm]
))
story.append(spacer())
story.append(h2("Clinical Presentation"))
story.append(h3("Incubation Period"))
story.append(b("<b>HAV</b>: 15–45 days (mean ~28–30 days); depends on inoculum size"))
story.append(b("<b>HEV</b>: 15–60 days (mean ~40 days)"))
story.append(spacer(4))
story.append(h3("Phase 1 – Prodrome (Pre-icteric Phase, 1–2 Weeks)"))
story.append(b("Fatigue, malaise, anorexia"))
story.append(b("Nausea, vomiting (more prominent in HAV)"))
story.append(b("Low-grade fever, myalgia, arthralgia, headache"))
story.append(b("Right upper quadrant discomfort/pain (tender hepatomegaly)"))
story.append(spacer(4))
story.append(h3("Phase 2 – Icteric Phase (1–4 Weeks)"))
story.append(b("<b>Jaundice</b> (scleral icterus precedes skin jaundice)"))
story.append(b("<b>Dark urine</b> (bilirubinuria – conjugated bilirubin; appears before clinical jaundice)"))
story.append(b("<b>Pale/clay-colored stools</b> (acholic – reduced bile in intestine)"))
story.append(b("<b>Pruritus</b> (especially in cholestatic forms)"))
story.append(b("Hepatomegaly (tender), sometimes splenomegaly"))
story.append(b("Constitutional symptoms often <b>improve</b> with onset of jaundice"))
story.append(b("<b>ALT/AST markedly elevated</b>: often >1000 IU/L; ALT > AST typically"))
story.append(spacer(4))
story.append(h3("Phase 3 – Convalescence"))
story.append(b("Gradual resolution of jaundice over 2–8 weeks; full recovery the rule in immunocompetent patients"))
story.append(b("Residual fatigue may persist months"))
story.append(b("HAV prolonged course (6–9 months) reported in 10% of adult patients; hospitalization required in up to 13% of adults"))
story.append(spacer())
story.append(h2("Diagnosis"))
story.append(h3("Hepatitis A – Serology"))
story.append(make_table(
["Marker", "Interpretation"],
[
["IgM anti-HAV", "DIAGNOSTIC of acute infection; appears 2–3 weeks after infection; persists 3–6 months. Only test symptomatic individuals (false positives exist)"],
["IgG anti-HAV", "Past infection or vaccination; appears 1–2 weeks after IgM; lifelong protective immunity"],
["Total anti-HAV", "Detects IgM + IgG; used for seroprevalence studies"],
["HAV RNA (PCR)", "Present in stool and plasma during incubation and early acute phase; useful in outbreak investigation"],
],
col_widths=[4.5*cm, 11.5*cm]
))
story.append(spacer(4))
story.append(h3("Hepatitis E – Serology and Molecular"))
story.append(make_table(
["Marker", "Interpretation"],
[
["IgM anti-HEV", "Recent or current infection"],
["IgG anti-HEV", "Current or past infection"],
["HEV RNA (PCR)", "Definitive indicator of acute infection; gold standard; detection window 2–7 weeks after infection; tested in serum, plasma, bile, or feces"],
["HEV antigen (ELISA)", "Newer test; detects viral antigen with higher sensitivity than IgM or HEV RNA; antigen detectable ~3 weeks longer than previously thought"],
],
col_widths=[4.5*cm, 11.5*cm]
))
story.append(p("<i>Note: HEV serology has frequent false positives depending on assay antigens; confirmatory PCR testing is required.</i>"))
story.append(spacer(4))
story.append(h3("Liver Function Tests (Both HAV and HEV)"))
story.append(b("<b>ALT and AST</b>: markedly elevated (often 1000–5000 IU/L); peaks before or at onset of jaundice"))
story.append(b("<b>Serum bilirubin</b>: elevated (both direct and indirect)"))
story.append(b("<b>ALP/GGT</b>: elevated, especially in cholestatic variants"))
story.append(b("<b>PT/INR</b>: elevated in severe/fulminant cases – marker of synthetic liver function"))
story.append(spacer(4))
story.append(h3("Differential Diagnosis – Other Causes to Exclude"))
story.append(b("Hepatitis B (HBsAg, anti-HBc IgM), Hepatitis C (anti-HCV, HCV RNA)"))
story.append(b("CMV hepatitis, EBV (infectious mononucleosis)"))
story.append(b("Drug-induced liver injury (DILI) – detailed drug history essential"))
story.append(b("Autoimmune hepatitis, Wilson's disease (in younger patients with fulminant presentation)"))
story.append(spacer())
story.append(h2("Treatment"))
story.append(p("<b>No specific antiviral therapy</b> is available for acute hepatitis A or uncomplicated acute hepatitis E. Treatment is <b>supportive</b>:"))
story.append(b("<b>Rest</b>: activity restriction proportional to symptoms"))
story.append(b("<b>Diet</b>: low-fat, high-carbohydrate diet (reduces nausea); adequate caloric intake; no fasting"))
story.append(b("<b>Avoid hepatotoxins</b>: strict alcohol abstinence; avoid paracetamol in large doses and NSAIDs"))
story.append(b("<b>Antiemetics</b>: metoclopramide or ondansetron for severe nausea/vomiting"))
story.append(b("<b>Antipruritics</b>: antihistamines or cholestyramine for cholestatic pruritus"))
story.append(b("<b>IV glucose</b>: for severe anorexia/vomiting with hypoglycemia risk"))
story.append(spacer(4))
story.append(h3("Indications for Hospitalization"))
story.append(b("Inability to maintain oral intake"))
story.append(b("INR >1.5, encephalopathy, or hypoglycemia"))
story.append(b("Signs of fulminant hepatic failure"))
story.append(spacer(4))
story.append(h3("Fulminant Hepatic Failure"))
story.append(b("Transfer to <b>liver transplant center</b>"))
story.append(b("Lactulose/rifaximin for encephalopathy; FFP for coagulopathy; N-acetylcysteine (NAC); liver transplant evaluation"))
story.append(b("<b>HEV in immunocompromised patients</b> (chronic genotype 3/4): <b>ribavirin</b> has been used with some benefit (off-label); dose reduction of immunosuppression"))
story.append(spacer(4))
story.append(h3("Prevention"))
story.append(make_table(
["Measure", "HAV", "HEV"],
[
["Vaccine", "Inactivated vaccine (2-dose schedule); >95% effective; recommended for all children ≥1 year, travelers, MSM, IDU, homeless, CLD", "HEV 239 (Hecolin) – approved in China; not yet globally available"],
["Post-exposure prophylaxis", "HAV vaccine (preferred) or immunoglobulin within 2 weeks of exposure", "No proven PEP available"],
["Public health", "Safe water, proper sewage disposal, handwashing, food hygiene", "Safe water supply especially during floods; avoid raw boar/pork meat (genotypes 3/4)"],
],
col_widths=[3.5*cm, 6.5*cm, 6*cm]
))
story.append(spacer(12))
story.append(hr())
story.append(Paragraph(
"<i>Sources: Harrison's Principles of Internal Medicine 22E (2025) · Goldman-Cecil Medicine (Int'l Ed.) · "
"Tietz Textbook of Laboratory Medicine 7th Ed. · Henry's Clinical Diagnosis & Management by Laboratory Methods</i>",
source_style
))
doc.build(story)
print("PDF generated:", OUTPUT)
cd /home/daytona/workspace/medical-notes && python generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/medical-notes/Infectious_Diseases_Notes.pdf
Infectious Diseases Notes
PDF Document · PDF