Achalasia
achalasia diagnosis treatment
| Type | Features | Response to Therapy |
|---|---|---|
| Type I - Classic | Aperistalsis, minimal pressurization; dilated esophagus | Intermediate |
| Type II - With compression | Pan-esophageal pressurization ≥20% of swallows | Best (100% with pneumatic dilation in European trial) |
| Type III - Spastic | Premature/spastic contractions, preserved LES; distal spasm | Worst with dilation (40%); better with myotomy (86%) |
| Symptom | Notes |
|---|---|
| Dysphagia (100%) | Both solids and liquids; gradual onset, often years before diagnosis |
| Regurgitation (~70%) | Non-bilious, non-acid; food eaten hours or days earlier; mixed with saliva |
| Chest pain (~40-50%) | Early in disease; may mimic angina; often spontaneously improves with time |
| Heartburn (~40-50%) | Not true reflux - caused by fermentation of retained food in esophagus |
| Weight loss | Variable |
| Aspiration pneumonia | Up to 10% with advanced disease |
| Halitosis, hiccups | Due to food stasis |
The "heartburn" in achalasia is a diagnostic trap - patients are often treated for "refractory GERD" for years, delaying the correct diagnosis. Ambulatory pH studies show acidification from bacterial fermentation, not true GER events. - Sabiston Textbook of Surgery


HRM is the gold standard for both establishing the diagnosis and defining the subtype for treatment planning. - Sabiston Textbook of Surgery
| Condition | Key Distinguishing Features |
|---|---|
| Pseudoachalasia | Age >50, symptoms <1 year, weight loss >7 kg; EGD, CT, or EUS shows tumor |
| Chagas disease | Endemic area (Brazil, Venezuela, Argentina); T. cruzi serology; additional organ involvement (megacolon, cardiomyopathy) |
| Distal Esophageal Spasm (DES) | Preserved LES relaxation (vs. type III achalasia) |
| Opioid-induced dysmotility | History of chronic opioid use |
| Post-surgical pseudoachalasia | After fundoplication or gastric banding |
| Subtype | Preferred Treatment |
|---|---|
| Type I | Pneumatic dilation or LHM |
| Type II | Pneumatic dilation (first-line) |
| Type III | LHM or POEM (preferred over dilation) |
| Elderly/frail | Botulinum toxin |
| End-stage/sigmoid | Consider esophagectomy |
Can u write it in one pdf
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"
mkdir -p /tmp/workspace/achalasia && cat > /tmp/workspace/achalasia/generate_pdf.py << '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, HRFlowable, KeepTogether) from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY from reportlab.platypus import Image as RLImage import urllib.request import os OUTPUT = "/tmp/workspace/achalasia/Achalasia.pdf" # Download images img_urls = { "barium_beak.png": "https://cdn.orris.care/cdss_images/88d75d9f2aa3f3c7e8542817eae9e19ad684b5f5dd3fd6efcf435fc91a822f03.png", "barium_dilated.png": "https://cdn.orris.care/cdss_images/9e70e075a3ba4803e3599df15266df04a5df8bf6ec841b04e87f2c30ae81e1ae.png", } for fname, url in img_urls.items(): fpath = f"/tmp/workspace/achalasia/{fname}" if not os.path.exists(fpath): urllib.request.urlretrieve(url, fpath) print(f"Downloaded {fname}") doc = SimpleDocTemplate( OUTPUT, pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm, title="Achalasia - Comprehensive Clinical Review", author="Orris Medical Library" ) W = A4[0] - 4*cm # usable width styles = getSampleStyleSheet() # Custom styles title_style = ParagraphStyle( "MainTitle", fontName="Helvetica-Bold", fontSize=22, textColor=colors.HexColor("#1a3a5c"), spaceAfter=4, spaceBefore=0, alignment=TA_CENTER, ) subtitle_style = ParagraphStyle( "Subtitle", fontName="Helvetica", fontSize=10, textColor=colors.HexColor("#555555"), spaceAfter=10, alignment=TA_CENTER, ) h1_style = ParagraphStyle( "H1", fontName="Helvetica-Bold", fontSize=13, textColor=colors.white, spaceAfter=6, spaceBefore=12, leftIndent=6, ) h2_style = ParagraphStyle( "H2", fontName="Helvetica-Bold", fontSize=11, textColor=colors.HexColor("#1a3a5c"), spaceAfter=4, spaceBefore=8, ) body_style = ParagraphStyle( "Body", fontName="Helvetica", fontSize=9.5, textColor=colors.HexColor("#222222"), spaceAfter=4, leading=14, alignment=TA_JUSTIFY, ) bullet_style = ParagraphStyle( "Bullet", fontName="Helvetica", fontSize=9.5, textColor=colors.HexColor("#222222"), spaceAfter=3, leading=13, leftIndent=14, bulletIndent=4, ) caption_style = ParagraphStyle( "Caption", fontName="Helvetica-Oblique", fontSize=8.5, textColor=colors.HexColor("#555555"), spaceAfter=6, alignment=TA_CENTER, ) source_style = ParagraphStyle( "Source", fontName="Helvetica-Oblique", fontSize=8, textColor=colors.HexColor("#777777"), spaceAfter=2, alignment=TA_RIGHT, ) callout_style = ParagraphStyle( "Callout", fontName="Helvetica-Oblique", fontSize=9, textColor=colors.HexColor("#1a3a5c"), leftIndent=10, rightIndent=10, spaceAfter=6, leading=13, borderPad=6, ) BLUE = colors.HexColor("#1a3a5c") LIGHT_BLUE = colors.HexColor("#dce8f5") TEAL = colors.HexColor("#1a7a7a") HEADER_BG = colors.HexColor("#1a3a5c") ALT_ROW = colors.HexColor("#f0f5fb") def section_header(text): """Returns a blue-background section header block.""" tbl = Table([[Paragraph(text, h1_style)]], colWidths=[W]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), BLUE), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 8), ("ROUNDEDCORNERS", [4,4,4,4]), ])) return tbl def make_table(headers, rows, col_widths=None): if col_widths is None: col_widths = [W / len(headers)] * len(headers) header_row = [Paragraph(f"<b>{h}</b>", ParagraphStyle("TH", fontName="Helvetica-Bold", fontSize=9, textColor=colors.white, alignment=TA_CENTER)) for h in headers] data = [header_row] for i, row in enumerate(rows): styled_row = [Paragraph(cell, ParagraphStyle("TD", fontName="Helvetica", fontSize=9, textColor=colors.HexColor("#222"), leading=12)) for cell in row] data.append(styled_row) tbl = Table(data, colWidths=col_widths, repeatRows=1) style = [ ("BACKGROUND", (0,0), (-1,0), BLUE), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.white, ALT_ROW]), ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#cccccc")), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "TOP"), ] tbl.setStyle(TableStyle(style)) return tbl def callout_box(text): tbl = Table([[Paragraph(text, callout_style)]], colWidths=[W]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), LIGHT_BLUE), ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("BOX", (0,0), (-1,-1), 1.5, BLUE), ])) return tbl story = [] # ── TITLE ────────────────────────────────────────────────────────────────── story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("ACHALASIA", title_style)) story.append(Paragraph("Comprehensive Clinical Review", subtitle_style)) story.append(HRFlowable(width=W, thickness=2, color=BLUE, spaceAfter=8)) # Sources line story.append(Paragraph( "Sources: Sleisenger & Fordtran's GI and Liver Disease · Harrison's Principles (22E) · Sabiston Textbook of Surgery · Current Surgical Therapy 14e", source_style )) story.append(Spacer(1, 0.3*cm)) # ── 1. DEFINITION & EPIDEMIOLOGY ─────────────────────────────────────────── story.append(section_header("1. Definition & Epidemiology")) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph( "Achalasia is an esophageal motility disorder defined by two cardinal physiologic abnormalities: " "<b>impaired lower esophageal sphincter (LES) relaxation with swallowing</b> and <b>aperistalsis in the smooth " "muscle esophagus</b>. When premature, spastic contractions occur in the esophageal body, the condition is " "referred to as <b>spastic (Type III) achalasia</b>.", body_style )) story.append(Paragraph( "It is a rare disease with a population incidence of <b>1–3 per 100,000</b>, presenting typically between " "ages 25 and 60. There is no clear sex predilection.", body_style )) story.append(Spacer(1, 0.2*cm)) # ── 2. PATHOPHYSIOLOGY ───────────────────────────────────────────────────── story.append(section_header("2. Pathophysiology")) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph( "The underlying defect is <b>loss of ganglion cells in the myenteric (Auerbach) plexus</b> of the " "esophageal smooth muscle and LES. Histological analysis shows mononuclear inflammatory infiltrates " "surrounding residual ganglion cells, predominantly <b>cytotoxic T cells</b>.", body_style )) story.append(Spacer(1, 0.1*cm)) for b in [ "Both <b>excitatory (cholinergic)</b> and <b>inhibitory (nitric oxide/VIP)</b> neurons are affected — inhibitory neuron loss is the earliest detectable abnormality", "Loss of NO synthase and VIP-staining neurons at the gastroesophageal junction is characteristic", "Increasing evidence implicates an <b>autoimmune process triggered by latent HSV-1 infection</b> in genetically susceptible individuals", "Disease likely progresses: EGJ outflow obstruction → Type II → Type I → end-stage dilated achalasia", "Type III has a distinct mechanism: plexus inflammation and altered function without frank destruction", "The degree of ganglion cell loss parallels disease duration", ]: story.append(Paragraph(f"• {b}", bullet_style)) story.append(Spacer(1, 0.2*cm)) # ── 3. CHICAGO CLASSIFICATION ────────────────────────────────────────────── story.append(section_header("3. Chicago Classification (HRM Subtypes)")) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph( "High-resolution manometry (HRM) subclassifies achalasia into 3 subtypes with distinct therapeutic implications:", body_style )) story.append(Spacer(1, 0.15*cm)) story.append(make_table( ["Type", "HRM Features", "Response to Treatment"], [ ["<b>Type I — Classic</b>", "Aperistalsis; minimal pressurization; dilated esophagus", "Intermediate; ~80–90%"], ["<b>Type II — With compression</b>", "Pan-esophageal pressurization ≥20% swallows; no dilatation", "Best — 100% with pneumatic dilation (European trial)"], ["<b>Type III — Spastic</b>", "Premature/spastic contractions; preserved LES; distal spasm", "Worst with dilation (40%); better with myotomy (86%)"], ], col_widths=[W*0.18, W*0.42, W*0.40] )) story.append(Spacer(1, 0.15*cm)) story.append(callout_box( "Types I and II represent a continuum (type II being earlier disease before esophageal dilatation). " "Type III is pathogenetically distinct and responds poorly to pneumatic dilation." )) story.append(Spacer(1, 0.2*cm)) # ── 4. CLINICAL FEATURES ─────────────────────────────────────────────────── story.append(section_header("4. Clinical Features")) story.append(Spacer(1, 0.2*cm)) story.append(make_table( ["Symptom", "Prevalence", "Notes"], [ ["Dysphagia", "100%", "Both solids AND liquids; gradual onset; often present years before diagnosis"], ["Regurgitation", "~70%", "Non-bilious, non-acid; food from hours/days prior; mixed with saliva"], ["Chest pain", "~40–50%", "Early in disease; pressure-like, may radiate; spontaneously improves with time"], ["Heartburn", "~40–50%", "NOT true reflux — caused by fermentation of retained food (diagnostic trap)"], ["Weight loss", "Variable", "Progressive with advanced disease"], ["Aspiration pneumonia", "Up to 10%", "With advanced disease; can be the presenting complaint"], ["Halitosis / hiccups", "Variable", "Due to food stasis in dilated esophagus"], ], col_widths=[W*0.22, W*0.16, W*0.62] )) story.append(Spacer(1, 0.15*cm)) story.append(callout_box( "<b>Diagnostic Trap:</b> Many achalasia patients complain of \"heartburn\" and are treated for refractory GERD for years. " "Ambulatory pH studies show esophageal acidification from bacterial fermentation of retained food — not true GER events. " "Lack of response to PPIs should prompt motility evaluation." )) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph("<b>Eckardt Score</b> (assesses severity and treatment response):", h2_style)) story.append(make_table( ["Symptom", "0", "1", "2", "3"], [ ["Dysphagia", "None", "Occasional", "Daily", "Each meal"], ["Regurgitation", "None", "Occasional", "Daily", "Each meal"], ["Chest pain", "None", "Occasional", "Daily", "Each meal"], ["Weight loss (kg)", "None", "<5", "5–10", ">10"], ], col_widths=[W*0.30, W*0.175, W*0.175, W*0.175, W*0.175] )) story.append(Paragraph("Score ≤3 = successful treatment. Total range: 0–12.", body_style)) story.append(Spacer(1, 0.2*cm)) # ── 5. DIAGNOSTIC WORKUP ─────────────────────────────────────────────────── story.append(section_header("5. Diagnostic Workup")) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph("5.1 Esophagogastroduodenoscopy (EGD)", h2_style)) story.append(Paragraph( "Performed first to <b>exclude pseudoachalasia</b> (tumor infiltration, stricture, malignancy). " "In idiopathic achalasia, the endoscope should 'pop through' the EGJ with only gentle pressure — " "resistance suggests pseudoachalasia.", body_style )) for b in [ "Up to <b>40% of cases are endoscopically normal</b>", "Other findings: retained food/saliva, stasis esophagitis, Candida esophagitis", "If pseudoachalasia is suspected: obtain CT, MRI, or EUS in addition to biopsy", ]: story.append(Paragraph(f"• {b}", bullet_style)) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph("5.2 Barium Swallow", h2_style)) story.append(Paragraph( "Provides anatomical information; normal in ~30% of early cases.", body_style )) # Images side by side img1 = RLImage("/tmp/workspace/achalasia/barium_beak.png", width=W*0.48, height=7.5*cm) img2 = RLImage("/tmp/workspace/achalasia/barium_dilated.png", width=W*0.38, height=7.5*cm) img_tbl = Table([[img1, img2]], colWidths=[W*0.52, W*0.48]) img_tbl.setStyle(TableStyle([ ("ALIGN", (0,0), (-1,-1), "CENTER"), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(img_tbl) story.append(Paragraph( "LEFT: Achalasia with dilated esophagus showing poor emptying and bird-beak tapering at LES (Harrison's, 22E). " "RIGHT: Barium swallow showing dilated esophagus with distal narrowing, air-fluid level, and slow contrast emptying (Sabiston).", caption_style )) for b in [ "<b>Bird-beak sign</b>: smooth, tapered narrowing at the LES", "<b>Air-fluid level</b> in the dilated esophagus", "Poor emptying of contrast into stomach", "Tertiary (non-peristaltic) contractions", "<b>Sigmoid esophagus</b> in advanced long-standing disease (massively dilated, S-shaped)", "Occasional epiphrenic diverticulum", ]: story.append(Paragraph(f"• {b}", bullet_style)) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph("5.3 High-Resolution Esophageal Manometry (HRM) — Gold Standard", h2_style)) story.append(Paragraph( "HRM is the gold standard for both establishing the diagnosis and defining the subtype for treatment planning. " "Diagnostic criteria require:", body_style )) for b in [ "<b>Absent peristalsis</b> in the smooth muscle esophagus (100% failed swallows)", "<b>Impaired LES relaxation</b> — elevated Integrated Relaxation Pressure (IRP) above the 4th percentile of normal", "Subtype classification (I, II, III) based on pressurization pattern", ]: story.append(Paragraph(f"• {b}", bullet_style)) story.append(Spacer(1, 0.2*cm)) # ── 6. DIFFERENTIAL DIAGNOSIS ────────────────────────────────────────────── story.append(section_header("6. Differential Diagnosis")) story.append(Spacer(1, 0.2*cm)) story.append(make_table( ["Condition", "Key Distinguishing Features"], [ ["<b>Pseudoachalasia</b>", "Age >50, symptoms <1 year, weight loss >7 kg; resistance on EGD; CT/EUS/biopsy shows tumor (accounts for ~5% of manometric achalasia cases)"], ["<b>Chagas disease</b>", "Endemic area (Brazil, Venezuela, Argentina); Trypanosoma cruzi serology; additional organs: megacolon, cardiomyopathy, megarectum"], ["<b>Distal Esophageal Spasm</b>", "Preserved LES relaxation distinguishes from Type III achalasia; corkscrew appearance on barium"], ["<b>Opioid-induced dysmotility</b>", "Chronic opioid use history; may mimic achalasia manometrically"], ["<b>Post-surgical pseudoachalasia</b>", "After fundoplication or gastric banding; identical manometric pattern"], ["<b>Paraneoplastic achalasia</b>", "Rare; circulating antineuronal antibodies (e.g., anti-Hu); no direct tumor infiltration"], ], col_widths=[W*0.28, W*0.72] )) story.append(Spacer(1, 0.2*cm)) # ── 7. TREATMENT ─────────────────────────────────────────────────────────── story.append(section_header("7. Treatment")) story.append(Spacer(1, 0.2*cm)) story.append(callout_box( "Since the underlying neuropathology cannot be corrected, treatment aims to reduce LES pressure, " "allowing gravity-assisted esophageal emptying. Options range from pharmacologic (temporizing) to " "endoscopic and surgical (definitive)." )) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph("7.1 Pharmacologic Therapy (Temporizing Only)", h2_style)) story.append(make_table( ["Agent", "Mechanism", "Dose / Notes"], [ ["Nifedipine (sublingual)", "Ca²⁺ channel blocker → smooth muscle relaxation → ↓ LES pressure", "30–40 mg/day before meals; side effects: flushing, orthostasis, edema"], ["Isosorbide dinitrate (sublingual)", "Nitrate → NO → smooth muscle relaxation", "Side effects: headache (common), tolerance develops"], ["Sildenafil", "PDE-5 inhibitor → ↑ cGMP (via NO) → ↓ LES pressure", "50 mg; effect peaks 15–20 min, lasts <1 hour; limited by cost/side effects"], ], col_widths=[W*0.24, W*0.42, W*0.34] )) story.append(Paragraph("All pharmacologic options are considered temporizing. Placebo-controlled evidence is minimal.", body_style)) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph("7.2 Botulinum Toxin Injection (Endoscopic)", h2_style)) for b in [ "80–100 units injected into <b>4 quadrants of the LES</b> via sclerotherapy catheter", "Mechanism: irreversibly blocks ACh release from presynaptic cholinergic terminals", "Initial response in ~66%; <b>minimal continued efficacy at 1 year</b>", "Repeat injections cause local fibrosis, ultimately limiting this approach", "Doses >100 units do not improve efficacy", "<b>Best reserved for elderly or frail patients</b> who are poor candidates for definitive treatment", ]: story.append(Paragraph(f"• {b}", bullet_style)) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph("7.3 Pneumatic Dilation (Endoscopic)", h2_style)) for b in [ "Uses <b>Rigiflex balloons</b> (3.0, 3.5, 4.0 cm) to mechanically disrupt LES circular muscle", "Requires dilation to ≥3 cm for lasting benefit; smaller dilations provide only temporary relief", "Fluoroscopic guidance; outpatient under conscious sedation", "Success rate <b>~90%</b> (comparable to LHM); perforation risk ~1%", "<b>Preferred initial therapy for Type II achalasia</b> (100% success in European Achalasia Trial)", "Only 40% success in Type III achalasia", "Can be performed sequentially (3.0 → 3.5 → 4.0 cm) if initial dilation insufficient", ]: story.append(Paragraph(f"• {b}", bullet_style)) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph("7.4 Laparoscopic Heller Myotomy (LHM)", h2_style)) for b in [ "Division of the LES circular muscle; combined with partial fundoplication (Dor or Toupet) to prevent post-procedure GERD", "Success rate <b>~87–92%</b>", "<b>Preferred for Type III achalasia</b> (86% success vs. 40% for dilation)", "European Achalasia Trial (200 patients, RCT): no significant difference between pneumatic dilation and LHM at 2 years (92% vs 87%)", ]: story.append(Paragraph(f"• {b}", bullet_style)) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph("7.5 Per Oral Endoscopic Myotomy (POEM)", h2_style)) for b in [ "Endoscopic technique: submucosal tunnel created in mid-esophagus → selective circular myotomy extending 2 cm onto gastric cardia", "Success rate <b>>90%</b>, comparable to or better than LHM", "Meta-analysis (POEM n=1,958 vs. LHM n=5,834): POEM more effective for dysphagia short-term, but <b>OR 9.31 for erosive esophagitis</b>", "RCT: 92% remission with POEM vs. 70% with pneumatic dilation at 1 year (p<0.01)", "<b>Key advantage for Type III</b>: myotomy length can be extended the full length of the spastic segment (avg 13.5 cm)", "Main disadvantage: significantly higher rate of post-procedure GERD/erosive esophagitis", ]: story.append(Paragraph(f"• {b}", bullet_style)) story.append(Spacer(1, 0.15*cm)) story.append(Paragraph("7.6 Treatment Selection by Subtype", h2_style)) story.append(make_table( ["Subtype / Patient", "Preferred Treatment", "Rationale"], [ ["Type I", "Pneumatic dilation or LHM", "Comparable efficacy; local expertise and patient preference guide choice"], ["Type II", "Pneumatic dilation (first-line)", "100% success in European trial; lower cost; comparable perforation risk to LHM"], ["Type III", "LHM or POEM (preferred)", "Poor response to dilation (40%); myotomy addresses spastic segment"], ["Elderly / frail", "Botulinum toxin injection", "Avoids procedural risk; repeat injections as needed"], ["End-stage / sigmoid esophagus", "Consider esophagectomy", "Massively dilated sigmoid esophagus may not respond to LES-reducing therapies"], ], col_widths=[W*0.24, W*0.30, W*0.46] )) story.append(Spacer(1, 0.2*cm)) # ── 8. COMPLICATIONS ─────────────────────────────────────────────────────── story.append(section_header("8. Complications")) story.append(Spacer(1, 0.2*cm)) story.append(make_table( ["Complication", "Details"], [ ["Aspiration pneumonia", "Up to 10% with advanced disease; can be the presenting complaint; results from nocturnal regurgitation"], ["Stasis esophagitis / Candida", "From retained food; esophageal acidification from bacterial fermentation"], ["Epiphrenic diverticulum", "Pulsion diverticulum from increased intraluminal pressure"], ["Squamous cell carcinoma", "17-fold increased risk vs. age-matched controls; absolute risk ~0.15%; develops in massively dilated esophagus after many years. ASGE does not recommend routine surveillance; if considered, begin 15 years after symptom onset"], ["Post-treatment GERD", "Particularly after POEM (OR 9.31 for erosive esophagitis) and LHM without fundoplication"], ["Esophageal perforation", "~1% risk with pneumatic dilation and LHM; requires immediate evaluation"], ], col_widths=[W*0.30, W*0.70] )) story.append(Spacer(1, 0.2*cm)) # ── 9. TREATMENT FAILURE ─────────────────────────────────────────────────── story.append(section_header("9. Evaluation of Treatment Failure")) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph( "Persistent dysphagia after treatment suggests treatment failure. Evaluate with:", body_style )) for b in [ "<b>Endoscopy</b> — esophagitis, stricture, paraesophageal hernia, anatomic deformity", "<b>High-resolution impedance manometry</b> — persistent sphincter dysfunction, distal spasm, esophageal pressurization", "<b>Functional luminal imaging probe (FLIP)</b> — assess distensibility of the EGJ", "<b>Fluoroscopic timed barium esophagogram</b> — quantify emptying and morphology", ]: story.append(Paragraph(f"• {b}", bullet_style)) story.append(Spacer(1, 0.3*cm)) story.append(HRFlowable(width=W, thickness=1, color=colors.HexColor("#aaaaaa"), spaceAfter=6)) story.append(Paragraph( "Sources: Sleisenger & Fordtran's Gastrointestinal and Liver Disease (10e) · Harrison's Principles of Internal Medicine (22E, 2025) · " "Sabiston Textbook of Surgery · Current Surgical Therapy (14e) · European Achalasia Trial (Lancet, 2014) · " "Chicago Classification v4.0 (Neurogastroenterol Motil, 2021)", source_style )) doc.build(story) print(f"PDF generated: {OUTPUT}") PYEOF python3 /tmp/workspace/achalasia/generate_pdf.py
~/achalasia/generate_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/achalasia/generate_pdf.py'
python3 /tmp/workspace/achalasia/generate_pdf.py
Achalasia
PDF Document · PDF
Al Grove Syndrome.
"Grove syndrome" acne keloidalis nuchae
Grove syndrome dermatology clinical features treatment
"transient acantholytic dermatosis" OR "Grover disease"
https://emedicine.medscape.com/article/1124347-clinical
Note on the query: "Al Grove Syndrome" appears to be a voice/autocorrect variation of Grover's Disease (Transient Acantholytic Dermatosis). The answer below covers this condition in full.
| Category | Examples |
|---|---|
| Sweating / heat | Febrile illness, bed confinement, hot weather, excessive exercise |
| Dry skin / cold | Winter flares in older men with xerosis |
| UV / ionizing radiation | Sun exposure, radiation therapy |
| Drugs | Cetuximab, chemotherapy agents, EGFR inhibitors; drug-induced cases reported |
| Inflammatory dermatoses | Atopic eczema (5x more common in TAD patients vs. controls), xerosis |
| Systemic illness | Renal failure, HIV infection, hematologic malignancies, solid carcinomas |
| Post-transplant | Kidney, liver, heart, bone marrow transplant recipients |
| Hospitalization | Strict bed rest is an independent risk factor |


| Pattern | Features | What it resembles |
|---|---|---|
| Darier-like (most common) | Acantholytic dyskeratosis; corps ronds and grains | Darier disease |
| Pemphigus vulgaris-like | Suprabasal acantholytic cleavage | PV |
| Pemphigus foliaceus-like | Subcorneal/superficial acantholysis | PF |
| Hailey-Hailey-like | Extensive "dilapidated brick wall" acantholysis | Hailey-Hailey disease |
| Spongiotic | Spongiosis with variable acantholysis | Eczema |
| Condition | Key distinguishing features |
|---|---|
| Darier disease | Autosomal dominant (ATP2A2 mutation); family history; nail changes (red/white streaks, V-shaped nicks); mucosal involvement; childhood onset; no spontaneous resolution |
| Hailey-Hailey disease | Autosomal dominant (ATP8A1); intertriginous distribution; maceration; blistering in flexures |
| Pemphigus vulgaris/foliaceus | Positive DIF; circulating anti-desmoglein antibodies (ELISA); mucosal erosions (PV) |
| Scabies | Burrows; interdigital spaces; household contacts affected |
| Folliculitis | Perifollicular; gram stain/culture positive |
| Miliaria rubra (heat rash) | Associated with fever/sweat occlusion; no acantholysis on histology |
| Papular eczema / prurigo | No acantholysis; responds to topical steroids more reliably |
| Galli-Galli disease | Acantholytic variant of Dowling-Degos; reticulate pigmentation; family history |
| Insect bites | Grouping; exposure history; eosinophils on biopsy |
| Dermatitis herpetiformis | Extensor distribution; positive IgA DIF; celiac association |
| Agent | Notes |
|---|---|
| Emollients / moisturizers (camphor, menthol) | First-line; soothing, reduce xerosis trigger |
| Topical corticosteroids (mid-potency) | ~50% of patients respond; reduce inflammation and pruritus |
| Topical calcipotriol/tacalcitol | Multiple reports of efficacy; alters keratinocyte differentiation |
| Topical retinoids | Reduce epidermal dyskeratosis |
| Antipruritic agents (pramoxine, menthol) | Symptomatic relief |
| Topical antibiotics | Some benefit reported |
| Agent | Notes |
|---|---|
| Oral retinoids (acitretin, isotretinoin) | Most evidence for persistent disease; acitretin + phototherapy combination reported |
| Systemic corticosteroids | Sustained remission reported; short courses for acute flares |
| Methotrexate | Used for recalcitrant disease |
| Dapsone | Successful in some patients |
Hospitalization-associated Grover disease often improves simply with hospital discharge, fever control, and resuming normal activity. This is an important and often overlooked treatment "intervention."