Treatment of AA Main points based on iadvl rooks bolognia and fitzpatrick
IADVL guidelines alopecia areata treatment 2022 2023
https://pmc.ncbi.nlm.nih.gov/articles/PMC9650746
| Agent | Dose | Notes |
|---|---|---|
| Cyclosporine | 3-6 mg/kg/day | Used in severe cases; can combine with low-dose prednisone; high relapse on discontinuation; side effects limit use |
| Methotrexate | 15-20 mg/week (adults); ~0.4 mg/kg/week (children) | Steroid-sparing agent or monotherapy |
| Mycophenolate mofetil | - | Limited data |
| Azathioprine | - | Limited data |
| Sulfasalazine | Up to 1.5 g TDS | Some benefit |
| Dapsone | - | Limited data |
| Dupilumab | - | Effective in AA with concomitant atopic dermatitis |
Age < 10 years:
→ Topical CS ± anthralin → DPCP → (systemic with caution)
Adults, <50% scalp:
→ IL-TA q4-6 weeks ± topical CS → DPCP if no response at 4 months
Adults, >50% scalp / AT / AU:
→ Oral JAK inhibitor (baricitinib / ritlecitinib) as preferred
→ OR pulse systemic CS → cyclosporine or MTX as steroid-sparing
→ DPCP / PUVA for refractory cases
Note on Rook's: Rook's Textbook of Dermatology is not available in this textbook library. The content above draws on Fitzpatrick, Bolonga (Dermatology 2-Vol Set 5e), Andrews, and the IADVL SIG publication. Rook's positions on AA treatment are broadly similar - emphasizing IL-CS as first-line for limited disease, DPCP as the most effective option for extensive disease, and JAK inhibitors as the new standard for severe AA.
Make a flow chart of it
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && ls -la /tmp/workspace/
mkdir -p /tmp/workspace/aa-flowchart && python3 << 'EOF' import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import matplotlib.patches as mpatches from matplotlib.patches import FancyBboxPatch, FancyArrowPatch import numpy as np fig, ax = plt.subplots(1, 1, figsize=(22, 30)) ax.set_xlim(0, 22) ax.set_ylim(0, 30) ax.axis('off') fig.patch.set_facecolor('#F8F9FA') # ─── COLOR PALETTE ─────────────────────────────────────────────── C_TITLE = '#1A237E' # deep navy C_DIAG = '#283593' # diagnosis box C_MILD = '#1565C0' # mild/limited C_MODERATE = '#6A1B9A' # moderate C_SEVERE = '#B71C1C' # severe/AT/AU C_CHILD = '#2E7D32' # children C_LINE1 = '#0277BD' # 1st line C_LINE2 = '#EF6C00' # 2nd line C_LINE3 = '#C62828' # 3rd line C_JAK = '#4A148C' # JAK C_ARROW = '#37474F' C_PROG = '#004D40' # prognosis/counselling def box(ax, x, y, w, h, text, facecolor, textcolor='white', fontsize=9, bold=False, radius=0.3, alpha=1.0, ha='center', va='center'): fancy = FancyBboxPatch((x - w/2, y - h/2), w, h, boxstyle=f"round,pad=0.05,rounding_size={radius}", facecolor=facecolor, edgecolor='white', linewidth=1.5, alpha=alpha, zorder=3) ax.add_patch(fancy) weight = 'bold' if bold else 'normal' ax.text(x, y, text, ha=ha, va=va, fontsize=fontsize, color=textcolor, weight=weight, zorder=4, wrap=True, multialignment='center', transform=ax.transData) def arrow(ax, x1, y1, x2, y2, color=C_ARROW, lw=1.8, label=''): ax.annotate('', xy=(x2, y2), xytext=(x1, y1), arrowprops=dict(arrowstyle='->', color=color, lw=lw, connectionstyle='arc3,rad=0.0'), zorder=2) if label: mx, my = (x1+x2)/2, (y1+y2)/2 ax.text(mx+0.15, my, label, fontsize=7.5, color=color, ha='left', va='center', style='italic', zorder=5) def curved_arrow(ax, x1, y1, x2, y2, rad=0.2, color=C_ARROW, lw=1.5, label=''): ax.annotate('', xy=(x2, y2), xytext=(x1, y1), arrowprops=dict(arrowstyle='->', color=color, lw=lw, connectionstyle=f'arc3,rad={rad}'), zorder=2) # ─── TITLE ─────────────────────────────────────────────────────── ax.text(11, 29.3, 'TREATMENT OF ALOPECIA AREATA (AA)', ha='center', va='center', fontsize=16, color='white', weight='bold', bbox=dict(boxstyle='round,pad=0.4', facecolor=C_TITLE, edgecolor='none'), zorder=5) ax.text(11, 28.75, 'Based on: Fitzpatrick | Bolonga | Andrews | IADVL SIG', ha='center', va='center', fontsize=8.5, color='#546E7A', style='italic') # ─── DIAGNOSIS BOX ─────────────────────────────────────────────── box(ax, 11, 28.1, 9, 0.7, 'DIAGNOSIS CONFIRMED · Assess SALT Score · Exclude scarring alopecia', C_DIAG, fontsize=9, bold=True) arrow(ax, 11, 27.75, 11, 27.3) # ─── SPONTANEOUS REMISSION NOTE ────────────────────────────────── box(ax, 11, 27.05, 8.5, 0.55, 'Counsel on variable natural history · Spontaneous remission possible (esp. limited patchy AA)\n' 'Rule out triggers (stress, infection, medication) · Screen for associated autoimmune diseases', '#455A64', fontsize=8.2) arrow(ax, 11, 26.77, 11, 26.3) # ─── THREE COLUMNS: CHILD / LIMITED / SEVERE ───────────────────── # Column headers box(ax, 3.5, 26.05, 5.8, 0.65, 'CHILDREN (< 10 yrs)\nLimited patches', C_CHILD, fontsize=9, bold=True) box(ax, 11, 26.05, 5.8, 0.65, 'ADULTS — LIMITED AA\nSALT < 50 · < 50% scalp', C_MILD, fontsize=9, bold=True) box(ax, 18.5, 26.05, 5.8, 0.65, 'ADULTS — SEVERE AA\nSALT ≥ 50 · AT / AU / Ophiasis', C_SEVERE, fontsize=9, bold=True) # Vertical dividers for xv in [6.5, 14.5]: ax.plot([xv, xv], [10, 25.72], color='#B0BEC5', lw=1, ls='--', zorder=1) # BRANCH ARROWS from counseling box arrow(ax, 7.5, 26.77, 3.5, 26.37, color=C_CHILD) arrow(ax, 11, 26.77, 11, 26.37, color=C_MILD) arrow(ax, 14.5, 26.77, 18.5, 26.37, color=C_SEVERE) # ═══════════════════════════════════════════════════════════════════ # COLUMN 1 — CHILDREN # ═══════════════════════════════════════════════════════════════════ y = 25.3 box(ax, 3.5, y, 5.4, 0.55, '1st LINE: TOPICAL MONOTHERAPY', C_LINE1, fontsize=8.5, bold=True) arrow(ax, 3.5, y-0.28, 3.5, y-0.72) y -= 1.0 box(ax, 3.5, y, 5.4, 0.9, '• Superpotent / potent TCS (clobetasol 0.05%)\n' '• Anthralin 0.2-1% short-contact (20-60 min)\n' '• Topical minoxidil 5% (adjunct)', '#1B5E20', fontsize=8, alpha=0.92) arrow(ax, 3.5, y-0.46, 3.5, y-0.92) y -= 1.4 box(ax, 3.5, y, 5.4, 0.55, '2nd LINE: COMBINE 2-3 TOPICALS', C_LINE2, fontsize=8.5, bold=True) ax.text(3.5, y-0.4, '(e.g. TCS + minoxidil + anthralin)', ha='center', fontsize=7.5, color='#E65100', style='italic') arrow(ax, 3.5, y-0.65, 3.5, y-1.1) y -= 1.55 box(ax, 3.5, y, 5.4, 0.65, 'No response / Extensive / AT/AU ↓\n3rd LINE: DPCP (contact immunotherapy)', C_LINE3, fontsize=8, bold=False) arrow(ax, 3.5, y-0.34, 3.5, y-0.79) y -= 1.2 box(ax, 3.5, y, 5.4, 0.65, 'Systemic therapy (with caution in children)\n' 'Pulse steroids · MTX (~0.4 mg/kg/wk)\n' 'Cyclosporine 3-5 mg/kg/day', '#880E4F', fontsize=7.8) # IADVL label ax.text(3.5, y-0.48, '★ IADVL SIG framework', ha='center', fontsize=7.5, color=C_CHILD, weight='bold', style='italic') # ═══════════════════════════════════════════════════════════════════ # COLUMN 2 — ADULTS LIMITED # ═══════════════════════════════════════════════════════════════════ y = 25.3 box(ax, 11, y, 5.4, 0.55, '1st LINE: IL-TRIAMCINOLONE ACETONIDE', C_LINE1, fontsize=8.5, bold=True) arrow(ax, 11, y-0.28, 11, y-0.72) y -= 1.0 box(ax, 11, y, 5.4, 1.0, '• TA 2.5–5 mg/mL (Bolonga) / up to 10 mg/mL (Fitz)\n' '• 0.1 mL per site, 1 cm apart, mid-deep dermis\n' '• Repeat q 3-4 wks (Bolonga) / q 4-6 wks (Fitz)\n' '• Max: 10-20 mg/session · Initial response 4-8 wks\n' '• Use on scalp, eyebrows, beard', '#0D47A1', fontsize=7.8, alpha=0.92) arrow(ax, 11, y-0.51, 11, y-0.97) y -= 1.5 box(ax, 11, y, 5.4, 0.55, 'ADD: TOPICAL TCS ± MINOXIDIL 5%', '#1565C0', fontsize=8.5, bold=False) arrow(ax, 11, y-0.28, 11, y-0.72) y -= 1.1 box(ax, 11, y, 5.4, 0.55, 'NO RESPONSE at 4 months ↓\n2nd LINE: DPCP / SADBE', C_LINE2, fontsize=8.5, bold=True) arrow(ax, 11, y-0.28, 11, y-0.72) y -= 1.1 box(ax, 11, y, 5.4, 0.75, 'DPCP Protocol:\n' '• Sensitize: 2% DPCP on small area (week 0)\n' '• Start 0.0001%, weekly applications\n' '• Titrate to mild erythema + itch\n' '• Do not wash scalp 48h · Protect from UV\n' '• Success 17-75%; lowest in AT/AU', '#E65100', fontsize=7.5, alpha=0.92) arrow(ax, 11, y-0.38, 11, y-0.82) y -= 1.3 box(ax, 11, y, 5.4, 0.55, 'Consider: ANTHRALIN / PUVA (refractory)\nPlatelet-rich plasma (adjunct)', '#4E342E', fontsize=8) # ═══════════════════════════════════════════════════════════════════ # COLUMN 3 — ADULTS SEVERE # ═══════════════════════════════════════════════════════════════════ y = 25.3 box(ax, 18.5, y, 5.4, 0.55, '1st LINE: ORAL JAK INHIBITORS ★', C_JAK, fontsize=8.5, bold=True) arrow(ax, 18.5, y-0.28, 18.5, y-0.72) y -= 1.0 box(ax, 18.5, y, 5.4, 1.0, 'FDA-APPROVED:\n' '• Baricitinib (JAK1/2) — adults, SALT ≥50\n' '• Ritlecitinib (JAK3/TEC) — age ≥12, extensive AA\n\n' 'Off-label / Evidence:\n' '• Tofacitinib (JAK1/3) · Deuruxolitinib (JAK1/2)\n' '⚠ Maintenance required — high relapse on stopping', '#1A0040', fontsize=7.8, alpha=0.93) arrow(ax, 18.5, y-0.51, 18.5, y-0.97) y -= 1.5 box(ax, 18.5, y, 5.4, 0.55, 'OR: PULSE SYSTEMIC CORTICOSTEROIDS', C_SEVERE, fontsize=8.5, bold=True) arrow(ax, 18.5, y-0.28, 18.5, y-0.72) y -= 1.1 box(ax, 18.5, y, 5.4, 0.85, 'Pulse Regimens (preferred over daily):\n' '• Dexamethasone 0.1 mg/kg twice weekly\n' '• Prednisolone 200 mg weekly\n' '• Prednisolone 5 mg/kg (max 300 mg) monthly\n' '• Methylprednisolone 500 mg/day × 3 days/month\n' 'Daily pred: 0.4-0.6 mg/kg/day, taper ≥12 wks', '#7B1FA2', fontsize=7.6, alpha=0.92) arrow(ax, 18.5, y-0.43, 18.5, y-0.87) y -= 1.35 box(ax, 18.5, y, 5.4, 0.55, 'STEROID-SPARING AGENTS', C_LINE2, fontsize=8.5, bold=True) arrow(ax, 18.5, y-0.28, 18.5, y-0.72) y -= 1.1 box(ax, 18.5, y, 5.4, 0.75, '• Cyclosporine 3-5 mg/kg/day\n' '• Methotrexate 15-20 mg/week\n' '• Mycophenolate mofetil · Azathioprine\n' '• Sulfasalazine (up to 1.5 g TDS)\n' '• Dupilumab (if concomitant atopic dermatitis)', '#BF360C', fontsize=7.6, alpha=0.92) # ═══════════════════════════════════════════════════════════════════ # BOTTOM SECTION — CONVERGING SPECIAL TREATMENTS # ═══════════════════════════════════════════════════════════════════ y_bottom = 11.8 # Arrows from bottom of all 3 columns to special section arrow(ax, 3.5, 18.8, 3.5, 13.0, color='#546E7A', lw=1.2) arrow(ax, 11, 18.8, 11, 13.0, color='#546E7A', lw=1.2) arrow(ax, 18.5, 18.8, 18.5, 13.0, color='#546E7A', lw=1.2) # Horizontal connector ax.plot([3.5, 18.5], [13.0, 13.0], color='#546E7A', lw=1.5, zorder=2) arrow(ax, 11, 13.0, 11, 12.7, color='#546E7A') box(ax, 11, 12.4, 20, 0.55, 'ADJUNCT / SPECIAL SITUATIONS — applicable across all groups', '#37474F', fontsize=9, bold=True) # Sub-boxes for special situations specs = [ (3.5, 11.3, 5.2, 1.0, 'TOPICAL JAK INHIBITORS\n• 2% Tofacitinib\n• 1.5% Ruxolitinib\n(Less effective than oral; useful for eyebrows)', '#512DA8'), (9.5, 11.3, 5.2, 1.0, 'PROSTAGLANDIN ANALOGUES\n• Bimatoprost, Latanoprost\n(For eyelash/eyebrow AA only)\n⚠ Mixed efficacy; periocular pigmentation', '#00695C'), (15.5, 11.3, 5.2, 1.0, 'PLATELET-RICH PLASMA\n• Monotherapy or adjunct\n• One trial: superior to low-dose TA\n• Role not yet firmly established', '#558B2F'), ] for (sx, sy, sw, sh, st, sc) in specs: arrow(ax, 11, 12.12, sx, sy+sh/2+0.05, color='#78909C', lw=1.2) box(ax, sx, sy, sw, sh, st, sc, fontsize=7.8) # PUVA / PHOTOTHERAPY arrow(ax, 11, 12.12, 11, 10.3, color='#78909C', lw=1.2) box(ax, 11, 10.0, 10, 0.75, 'PHOTO(CHEMO)THERAPY — Refractory / Exceptional cases only\n' '• PUVA (topical or oral PUVA) · NB-UVB · 308-nm excimer laser\n' '⚠ High relapse on tapering · Long-term photocarcinogenesis risk', '#4E342E', fontsize=8) # ═══════════════════════════════════════════════════════════════════ # DPCP PROTOCOL SIDEBAR (left) # ═══════════════════════════════════════════════════════════════════ # (already embedded in columns above) # ═══════════════════════════════════════════════════════════════════ # MONITORING & COUNSELLING # ═══════════════════════════════════════════════════════════════════ arrow(ax, 11, 9.62, 11, 9.2) box(ax, 11, 8.85, 20, 0.65, 'MONITORING · COUNSELLING · SUPPORT', C_PROG, fontsize=9, bold=True) monitor_items = [ (3.2, 8.0, 5.0, 0.85, 'RESPONSE ASSESSMENT\n• Reassess at 4-6 weeks (IL) / 3 months (topical)\n• SALT score at each visit\n• If no response at 4 months → escalate', '#00695C'), (9.8, 8.0, 5.0, 0.85, 'SAFETY MONITORING\n• IL-TA: watch for atrophy (same site)\n• Cyclosporine: BP, renal, cholesterol\n• JAK inhibitors: CBC, LFTs, lipids, MACE\n• Steroids: glucose, BMD (long-term)', '#1A237E'), (16.4, 8.0, 5.0, 0.85, 'PATIENT COUNSELLING\n• Explain chronic/relapsing course\n• Discuss wigs/camouflage options\n• Psychological support / counselling\n• Refer: NAAF / support groups', '#4A148C'), ] for (mx, my, mw, mh, mt, mc) in monitor_items: arrow(ax, 11, 8.52, mx, my+mh/2+0.05, color=C_PROG, lw=1.2) box(ax, mx, my, mw, mh, mt, mc, fontsize=7.6) # ═══════════════════════════════════════════════════════════════════ # POOR PROGNOSIS BOX # ═══════════════════════════════════════════════════════════════════ box(ax, 11, 6.85, 20, 0.75, 'POOR PROGNOSIS MARKERS → Intensify treatment / Set realistic expectations', '#B71C1C', fontsize=8.5, bold=True) ax.text(11, 6.35, 'AT/AU · Ophiasis pattern · Duration > 1 year · Nail involvement · Onset < 5 years · Atopic history · Positive family history', ha='center', fontsize=8, color='#B71C1C', style='italic') # ═══════════════════════════════════════════════════════════════════ # LEGEND # ═══════════════════════════════════════════════════════════════════ legend_data = [ (C_LINE1, '1st Line'), (C_LINE2, '2nd Line'), (C_LINE3, '3rd Line / Refractory'), (C_JAK, 'JAK Inhibitors (FDA-approved)'), (C_CHILD, 'Children-specific (IADVL SIG)'), (C_PROG, 'Monitoring/Counselling'), ] lx, ly = 1.0, 5.5 ax.text(lx, ly+0.3, 'LEGEND', fontsize=8, color='#37474F', weight='bold') for i, (lc, lt) in enumerate(legend_data): rx = lx + (i % 3) * 6.5 ry = ly - 0.4 - (i // 3) * 0.55 fancy = FancyBboxPatch((rx, ry-0.15), 0.5, 0.3, boxstyle='round,pad=0.04', facecolor=lc, edgecolor='none', zorder=3) ax.add_patch(fancy) ax.text(rx+0.65, ry, lt, fontsize=7.8, va='center', color='#263238') # Source footnote ax.text(11, 0.4, 'Sources: Fitzpatrick\'s Dermatology 8e (Ch.87) · Bolonga\'s Dermatology 5e (Ch.69) · Andrews\' Diseases of the Skin · IADVL SIG Pediatric Dermatology Recommendations (IDOJ 2022)', ha='center', fontsize=7, color='#78909C', style='italic') plt.tight_layout(pad=0.5) plt.savefig('/tmp/workspace/aa-flowchart/AA_Treatment_Flowchart.png', dpi=180, bbox_inches='tight', facecolor=fig.get_facecolor()) plt.close() print("Saved successfully.") EOF
python3 -c " from PIL import Image img = Image.open('/tmp/workspace/aa-flowchart/AA_Treatment_Flowchart.png') print(f'Size: {img.size}, Mode: {img.mode}, File size: {__import__(\"os\").path.getsize(\"/tmp/workspace/aa-flowchart/AA_Treatment_Flowchart.png\")/1024:.1f} KB') "
AA Treatment Flowchart
Image · PNG