Grades of acne vulgaris with images and management
acne vulgaris grades classification comedones papules pustules nodules
acne vulgaris classification management
acne vulgaris comedonal papular pustular nodular cystic skin
| Lesion | Description |
|---|---|
| Closed comedo (whitehead) | 1-2 mm pebbly white papule; contents not easily expressed; precursor to inflammatory lesions |
| Open comedo (blackhead) | Dilated follicular orifice filled with oxidized, darkened, oily debris; rarely causes inflammatory lesions |
| Papule | 1-5 mm erythematous, edematous elevation due to inflammation |
| Pustule | Papule with visible purulent content |
| Nodule | >5 mm, deep, indurated inflammatory lesion |
| Cyst/Sinus tract | Fluctuant nodules that coalesce, form tracts, and discharge serosanguineous pus |

Acne Fulminans (rare, severe variant): Abrupt onset of severe ulcerative nodular acne with systemic symptoms (fever, arthralgia, leukocytosis) - requires systemic corticosteroids + isotretinoin.
| Agent | Mechanism | Grade | Notes |
|---|---|---|---|
| Tretinoin | Normalizes follicular keratinization | Mild-Mod | Start low, night use |
| Adapalene | Retinoid receptor agonist | Mild-Mod | OTC 0.1%; light-stable |
| Tazarotene | Retinoid receptor agonist | Mild-Mod | Strongest retinoid; Preg X |
| Benzoyl peroxide | Bactericidal; free radical release | All | No resistance; wash OK for trunk |
| Clindamycin/Erythromycin | Bacteriostatic topical | Mild-Mod | Always combine with BPO |
| Azelaic acid | Anti-inflam; normalizes keratinization | Mild-Mod | Safe in pregnancy; reduces PIH |
| Clascoterone cream | Topical antiandrogen receptor | Mod | FDA-approved; male & female |
| Dapsone | Anti-inflammatory | Mod | Gel formulation |
| Agent | Use | Key Notes |
|---|---|---|
| Doxycycline | Moderate acne | 100 mg BID; photosensitivity |
| Minocycline | Moderate acne | 100 mg BID; extended-release forms available |
| Spironolactone | Women, moderate-severe | 50-200 mg/day; antiandrogen |
| OCP | Women, moderate-severe | Multiple FDA-approved formulations |
| Isotretinoin | Severe/nodulocystic | Cumulative dose-based; iPLEDGE program |
| Scar Type | Description | Location |
|---|---|---|
| Ice-pick | Deep, narrow | Temples, cheeks |
| Atrophic/canyon | Wide, shallow depression | Face |
| Hypertrophic | Raised, firm | Neck, trunk |
| Keloidal | Elevated, proliferative | Neck, trunk |
| Post-inflammatory hyperpigmentation | Dark macules (especially in darker skin) | Face |
Doxycycline oral management duration for acne vulgaris
doxycycline acne vulgaris duration treatment
| Population | Dose | Frequency |
|---|---|---|
| Adults (standard) | 50-100 mg | Once or twice daily, depending on severity |
| Adults (severe) | 100 mg | Twice daily (BID) |
| Extended-release formulation | 100-200 mg | Once daily |
| Adolescents ≥8 yr | 50-100 mg | BID PO, or 150 mg once daily PO |
| Children <8 yr | Avoid | Risk of tooth enamel hypoplasia and discoloration |
Start at a higher dose to achieve control, then step down or discontinue once inflammatory lesions resolve. - Andrews' Diseases of the Skin, p. 281
"Recent guidelines recommend limiting the duration of oral antibiotic therapy in acne to 3 to 6 months to reduce risk of resistance." - Fitzpatrick's Dermatology, p. 1435
| Always Combine With | Reason |
|---|---|
| Benzoyl peroxide (BPO) | Prevents development of Cutibacterium acnes resistance; use even as short 2-7 day pulses |
| Topical retinoid | Hastens response; allows faster discontinuation of the antibiotic; addresses comedonal component |
"Concomitant use with a topical retinoid will hasten the response and allow for more rapid discontinuance of the antibiotic." - Andrews' Diseases of the Skin, p. 281
| Side Effect | Notes |
|---|---|
| Photosensitivity | Can be dramatic; advise sun protection and avoidance of prolonged sun exposure |
| GI symptoms (nausea, esophagitis) | Take upright with water; do not take at bedtime; enteric-coated formulation available |
| Candidal vaginitis/perianal itch | Occurs in ~5% of patients |
| Pseudotumor cerebri | Increased intracranial pressure - rare but serious; presents with headache/visual changes |
| Tooth discoloration | Avoid in children <8 years and in pregnancy |
| TEN, DRESS, SJS, erythema multiforme | Rare but reported |
Create a quick-reference protocol PDF for doxycycline + topical therapy
ls -la /tmp/workspace/ 2>/dev/null || echo "workspace empty or missing"
mkdir -p /tmp/workspace/acne-protocol && python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import mm, cm from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether) from reportlab.platypus import ListFlowable, ListItem from reportlab.graphics.shapes import Drawing, Rect, String from reportlab.graphics import renderPDF # ── colours ────────────────────────────────────────────────────────────────── NAVY = colors.HexColor("#1A3558") TEAL = colors.HexColor("#0D7A8C") AMBER = colors.HexColor("#D97706") RED = colors.HexColor("#B91C1C") GREEN = colors.HexColor("#15803D") LGREY = colors.HexColor("#F1F5F9") MGREY = colors.HexColor("#CBD5E1") WHITE = colors.white BLACK = colors.black W, H = A4 OUT = "/tmp/workspace/acne-protocol/Doxycycline_Acne_Protocol.pdf" doc = SimpleDocTemplate( OUT, pagesize=A4, leftMargin=18*mm, rightMargin=18*mm, topMargin=22*mm, bottomMargin=18*mm, title="Doxycycline + Topical Therapy – Acne Vulgaris Quick-Reference Protocol", author="Orris Clinical Reference" ) styles = getSampleStyleSheet() def S(name, **kw): return ParagraphStyle(name, parent=styles["Normal"], **kw) # ── custom paragraph styles ─────────────────────────────────────────────────── TITLE = S("Title2", fontSize=18, textColor=WHITE, leading=22, alignment=TA_CENTER, fontName="Helvetica-Bold") SUBHDR = S("SubHdr", fontSize=10, textColor=WHITE, leading=14, alignment=TA_CENTER, fontName="Helvetica-Bold") SECTION = S("Section", fontSize=9.5, textColor=NAVY, leading=13, fontName="Helvetica-Bold", spaceBefore=4) BODY = S("Body", fontSize=8.5, textColor=BLACK, leading=12, fontName="Helvetica", spaceBefore=2) SMALL = S("Small", fontSize=7.5, textColor=colors.HexColor("#475569"), leading=10, fontName="Helvetica-Oblique") WARN = S("Warn", fontSize=8, textColor=RED, leading=11, fontName="Helvetica-Bold") TH = S("TH", fontSize=8, textColor=WHITE, leading=11, fontName="Helvetica-Bold", alignment=TA_CENTER) TD = S("TD", fontSize=8, textColor=BLACK, leading=11, fontName="Helvetica", alignment=TA_CENTER) TDL = S("TDL", fontSize=8, textColor=BLACK, leading=11, fontName="Helvetica", alignment=TA_LEFT) BADGE = S("Badge", fontSize=8, textColor=WHITE, leading=11, fontName="Helvetica-Bold", alignment=TA_CENTER) FOOT = S("Foot", fontSize=7, textColor=colors.HexColor("#64748B"), leading=10, fontName="Helvetica-Oblique", alignment=TA_CENTER) STEPNO = S("StepNo", fontSize=20, textColor=TEAL, leading=24, fontName="Helvetica-Bold", alignment=TA_CENTER) STEPL = S("StepL", fontSize=8.5, textColor=BLACK, leading=12, fontName="Helvetica", spaceBefore=1) def cell(text, style=TD): return Paragraph(text, style) # ══════════════════════════════════════════════════════════════════════════════ story = [] # ── HEADER BANNER ───────────────────────────────────────────────────────────── header_data = [[ Paragraph("ACNE VULGARIS", TITLE), ]] header_tbl = Table(header_data, colWidths=[W - 36*mm]) header_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), NAVY), ("TOPPADDING", (0,0), (-1,-1), 10), ("BOTTOMPADDING",(0,0),(-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING",(0,0), (-1,-1), 8), ("ROUNDEDCORNERS", [4]), ])) story.append(header_tbl) sub_data = [[ Paragraph("Doxycycline + Topical Therapy · Quick-Reference Protocol", SUBHDR) ]] sub_tbl = Table(sub_data, colWidths=[W - 36*mm]) sub_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), TEAL), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING",(0,0),(-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING",(0,0), (-1,-1), 8), ])) story.append(sub_tbl) story.append(Spacer(1, 6)) meta_row = [[ Paragraph("Indication: Moderate–Severe Inflammatory Acne", S("m1", fontSize=7.5, textColor=NAVY, fontName="Helvetica-Bold")), Paragraph("Source: Andrews' · Harrison's · Fitzpatrick's · AAD 2024", S("m2", fontSize=7.5, textColor=colors.HexColor("#475569"), fontName="Helvetica-Oblique", alignment=TA_RIGHT)), ]] meta_tbl = Table(meta_row, colWidths=[(W-36*mm)*0.6, (W-36*mm)*0.4]) meta_tbl.setStyle(TableStyle([ ("VALIGN",(0,0),(-1,-1),"MIDDLE"), ("LEFTPADDING",(0,0),(-1,-1),0), ("RIGHTPADDING",(0,0),(-1,-1),0), ])) story.append(meta_tbl) story.append(Spacer(1, 8)) # ══════════════════════════════════════════════════════════════════════════════ # ROW 1: two columns ─ Dosing | Duration # ══════════════════════════════════════════════════════════════════════════════ COL2L = (W - 36*mm - 4*mm) * 0.5 # left column COL2R = (W - 36*mm - 4*mm) * 0.5 # right column GAP = 4*mm # ── DOSING BOX ──────────────────────────────────────────────────────────────── def section_box(title, content_rows, col_widths, title_bg=NAVY, alternate=True): """Build a titled box-table.""" hdr = [[Paragraph(title, TH)]] hdr_tbl = Table(hdr, colWidths=[sum(col_widths)]) hdr_tbl.setStyle(TableStyle([ ("BACKGROUND",(0,0),(-1,-1), title_bg), ("TOPPADDING",(0,0),(-1,-1),4), ("BOTTOMPADDING",(0,0),(-1,-1),4), ("LEFTPADDING",(0,0),(-1,-1),6), ])) body_tbl = Table(content_rows, colWidths=col_widths) ts = [ ("FONTSIZE",(0,0),(-1,-1),8), ("ROWBACKGROUNDS",(0,0),(-1,-1),[WHITE, LGREY] if alternate else [WHITE]), ("LINEBELOW",(0,0),(-1,-1),0.3, MGREY), ("TOPPADDING",(0,0),(-1,-1),3), ("BOTTOMPADDING",(0,0),(-1,-1),3), ("LEFTPADDING",(0,0),(-1,-1),5), ("RIGHTPADDING",(0,0),(-1,-1),5), ("VALIGN",(0,0),(-1,-1),"MIDDLE"), ("BOX",(0,0),(-1,-1),0.5, MGREY), ] body_tbl.setStyle(TableStyle(ts)) wrapper = Table([[hdr_tbl],[body_tbl]], colWidths=[sum(col_widths)]) wrapper.setStyle(TableStyle([ ("LEFTPADDING",(0,0),(-1,-1),0), ("RIGHTPADDING",(0,0),(-1,-1),0), ("TOPPADDING",(0,0),(-1,-1),0), ("BOTTOMPADDING",(0,0),(-1,-1),0), ("BOX",(0,0),(-1,-1),1, NAVY), ])) return wrapper # Dosing table dosing_rows = [ [cell("Population", TH), cell("Dose", TH), cell("Frequency", TH)], [cell("Adults (standard)", TDL), cell("50–100 mg", TD), cell("Once or twice daily", TD)], [cell("Adults (severe)", TDL), cell("100 mg", TD), cell("Twice daily (BID)", TD)], [cell("Extended-release", TDL), cell("100–200 mg", TD), cell("Once daily", TD)], [cell("Adolescents ≥8 yr", TDL), cell("50–100 mg", TD), cell("BID PO", TD)], [cell("Children <8 yr", TDL), cell("""<font color="#B91C1C"><b>AVOID</b></font>""", TD), cell("Tooth enamel risk", TD)], ] dw = [COL2L*0.38, COL2L*0.28, COL2L*0.34] dosing_box = section_box("💊 DOXYCYCLINE DOSING", dosing_rows, dw) # Duration box dur_inner = [ [cell("Recommended duration", TDL), cell("<b>3 – 6 months</b>", TD)], [cell("Expect visible response", TDL), cell("8 – 12 weeks", TD)], [cell("Assess efficacy at", TDL), cell("12 weeks (do not judge earlier)", TD)], [cell("Start strategy", TDL), cell("High dose → step down on control", TD)], [cell("Long-term use?", TDL), cell("Only if isotretinoin/hormonal Rx not suitable;\nreevaluate regularly", TD)], ] dw2 = [COL2R*0.44, COL2R*0.56] duration_box = section_box("⏱ TREATMENT DURATION", dur_inner, dw2, title_bg=TEAL) two_col = Table( [[dosing_box, Spacer(GAP,1), duration_box]], colWidths=[COL2L, GAP, COL2R] ) two_col.setStyle(TableStyle([ ("VALIGN",(0,0),(-1,-1),"TOP"), ("LEFTPADDING",(0,0),(-1,-1),0), ("RIGHTPADDING",(0,0),(-1,-1),0), ("TOPPADDING",(0,0),(-1,-1),0), ("BOTTOMPADDING",(0,0),(-1,-1),0), ])) story.append(two_col) story.append(Spacer(1, 7)) # ══════════════════════════════════════════════════════════════════════════════ # COMBINATION THERAPY (full width) # ══════════════════════════════════════════════════════════════════════════════ combo_rows = [ [cell("Agent", TH), cell("Mechanism", TH), cell("Why Mandatory", TH), cell("Dosing/Notes", TH)], [cell("Benzoyl Peroxide (BPO)\n2.5–10%", TDL), cell("Free-radical bactericidal", TD), cell("Prevents C. acnes resistance;\nno resistance develops to BPO", TD), cell("Once/twice daily; 2-min wash for trunk;\n2–7 day pulses also protective", TD)], [cell("Topical Retinoid\n(adapalene / tretinoin / tazarotene)", TDL), cell("Normalises follicular keratinisation", TD), cell("Hastens response; enables earlier\ndiscontinuation of antibiotic", TD), cell("Apply at night; start every other night\nif irritation occurs", TD)], ] cw = [(W-36*mm)*0.22, (W-36*mm)*0.20, (W-36*mm)*0.31, (W-36*mm)*0.27] combo_box = section_box("⚡ MANDATORY COMBINATION THERAPY — Never Use Doxycycline Alone", combo_rows, cw, title_bg=AMBER) story.append(combo_box) story.append(Spacer(1, 7)) # ══════════════════════════════════════════════════════════════════════════════ # ROW 3: three columns — Retinoid Choice | Step-Down Plan | Resistance Rules # ══════════════════════════════════════════════════════════════════════════════ COL3 = (W - 36*mm - 2*GAP) / 3 # Retinoid choice ret_rows = [ [cell("Retinoid", TH), cell("Strength", TH), cell("Key Note", TH)], [cell("Adapalene\n0.1–0.3%", TDL), cell("Mild–Mod", TD), cell("Light-stable; OTC 0.1%;\nPreg category C", TD)], [cell("Tretinoin\n0.025–0.05%", TDL), cell("Moderate", TD), cell("Apply at night;\nlight-sensitive", TD)], [cell("Tazarotene\n0.1%", TDL), cell("Strongest", TD), cell("""<font color="#B91C1C"><b>Preg X</b></font> — needs\ncontraceptive counselling""", TD)], ] rw = [COL3*0.33, COL3*0.26, COL3*0.41] ret_box = section_box("🔬 RETINOID CHOICE", ret_rows, rw) # Step-down / transition step_rows = [ [cell("Phase", TH), cell("Action", TH)], [cell("Weeks 1–12", TDL), cell("Doxycycline + retinoid + BPO\n(full dose)", TD)], [cell("Week 12 review", TDL), cell("Assess response; step\ndown dose if controlled", TD)], [cell("Months 3–6", TDL), cell("Taper antibiotic; maintain\ntopical retinoid + BPO", TD)], [cell("After antibiotic stop", TDL), cell("Topical retinoid + BPO\nas long-term maintenance", TD)], [cell("If relapse / scarring", TDL), cell("Consider isotretinoin\nor hormonal therapy (♀)", TD)], ] sw = [COL3*0.38, COL3*0.62] step_box = section_box("📅 STEP-DOWN PLAN", step_rows, sw, title_bg=GREEN) # Resistance rules res_rows = [ [cell("Rule", TDL)], [cell("✗ No antibiotic monotherapy — always add BPO", TDL)], [cell("✗ Limit oral antibiotics to ≤ 6 months", TDL)], [cell("✗ Do not switch antibiotics without clinical reason", TDL)], [cell("✓ If retreating, use the same antibiotic (unless failed)", TDL)], [cell("✓ Combine with BPO even for 2–7 day pulse courses", TDL)], [cell("✓ Resistance lowest with doxycycline/minocycline\n (vs. erythromycin — 65% resistance documented)", TDL)], ] resw = [COL3] res_box = section_box("🛡 RESISTANCE RULES", res_rows, resw, title_bg=RED) three_col = Table( [[ret_box, Spacer(GAP,1), step_box, Spacer(GAP,1), res_box]], colWidths=[COL3, GAP, COL3, GAP, COL3] ) three_col.setStyle(TableStyle([ ("VALIGN",(0,0),(-1,-1),"TOP"), ("LEFTPADDING",(0,0),(-1,-1),0), ("RIGHTPADDING",(0,0),(-1,-1),0), ("TOPPADDING",(0,0),(-1,-1),0), ("BOTTOMPADDING",(0,0),(-1,-1),0), ])) story.append(three_col) story.append(Spacer(1, 7)) # ══════════════════════════════════════════════════════════════════════════════ # SIDE EFFECTS (full width, 2 columns inside) # ══════════════════════════════════════════════════════════════════════════════ se_rows = [ [cell("Side Effect", TH), cell("Frequency / Notes", TH), cell("Side Effect", TH), cell("Frequency / Notes", TH)], [cell("Photosensitivity", TDL), cell("Common; can be dramatic — advise sun protection", TD), cell("Pseudotumor cerebri", TDL), cell("Rare; headache + visual changes → stop drug", TD)], [cell("GI symptoms (nausea)", TDL), cell("Common; take upright with water; enteric-coated form available", TD), cell("Tooth discoloration", TDL), cell("Avoid in <8 yr and pregnancy", TD)], [cell("Esophagitis", TDL), cell("Do not take at bedtime; take with full glass of water", TD), cell("Candidal vaginitis/perianal itch", TDL), cell("~5% of patients; treat with topical antifungal", TD)], [cell("Drug interactions", TDL), cell("Rifampin / barbiturates / phenytoin ↑ clearance;\nwarfarin ↑ INR — monitor", TD), cell("TEN / DRESS / SJS", TDL), cell("Rare but serious — discontinue immediately", TD)], ] sew = [(W-36*mm)*0.18, (W-36*mm)*0.32, (W-36*mm)*0.18, (W-36*mm)*0.32] se_box = section_box("⚠ SIDE EFFECTS & INTERACTIONS", se_rows, sew, title_bg=colors.HexColor("#7C3AED")) story.append(se_box) story.append(Spacer(1, 7)) # ══════════════════════════════════════════════════════════════════════════════ # SPECIAL POPULATIONS + OCP NOTE (2 columns) # ══════════════════════════════════════════════════════════════════════════════ COL2La = (W - 36*mm - GAP) * 0.52 COL2Ra = (W - 36*mm - GAP) * 0.48 pop_rows = [ [cell("Population", TH), cell("Preferred Regimen", TH), cell("Notes", TH)], [cell("Adult men (moderate)", TDL), cell("Doxycycline + retinoid + BPO", TD), cell("3–6 months; then topical maintenance", TD)], [cell("Adult women (moderate)", TDL), cell("Spironolactone 50–200 mg/day\n± OCP + retinoid ± BPO", TD), cell("Preferred over antibiotics;\ndurable antiandrogen effect", TD)], [cell("Women (alternative)", TDL), cell("Doxycycline + retinoid + BPO", TD), cell("Use if hormonal Rx contraindicated;\ndiscuss backup contraception", TD)], [cell("Severe / nodular (all)", TDL), cell("Isotretinoin (first choice)", TD), cell("Doxycycline + retinoid + BPO if\nisotretinoin refused/contraindicated", TD)], [cell("Pregnancy", TDL), cell("""<font color="#B91C1C"><b>Doxycycline CONTRAINDICATED</b></font>""", TD), cell("Use azelaic acid + BPO (Preg B/C)", TD)], ] pw = [COL2La*0.26, COL2La*0.42, COL2La*0.32] pop_box = section_box("👥 SPECIAL POPULATIONS", pop_rows, pw, title_bg=NAVY) ocp_rows = [ [cell("Agent", TH), cell("Formulation", TH)], [cell("Ortho Tri-Cyclen", TDL), cell("Norgestimate + ethinyl estradiol 35 µg", TD)], [cell("Estrostep", TDL), cell("Norethindrone acetate + ethinyl estradiol 20–35 µg", TD)], [cell("Yaz", TDL), cell("Drospirenone 3 mg + ethinyl estradiol 20 µg", TD)], [cell("Spironolactone", TDL), cell("50–200 mg/day (off-label but guideline-endorsed)", TD)], ] ow = [COL2Ra*0.32, COL2Ra*0.68] ocp_note = Table( [[Paragraph("FDA-Approved Hormonal Options for Women", TH)]], colWidths=[sum(ow)] ) ocp_note.setStyle(TableStyle([ ("BACKGROUND",(0,0),(-1,-1), TEAL), ("TOPPADDING",(0,0),(-1,-1),4), ("BOTTOMPADDING",(0,0),(-1,-1),4), ("LEFTPADDING",(0,0),(-1,-1),6), ])) ocp_body = Table(ocp_rows, colWidths=ow) ocp_body.setStyle(TableStyle([ ("FONTSIZE",(0,0),(-1,-1),8), ("ROWBACKGROUNDS",(0,0),(-1,-1),[WHITE, LGREY]), ("LINEBELOW",(0,0),(-1,-1),0.3, MGREY), ("TOPPADDING",(0,0),(-1,-1),3), ("BOTTOMPADDING",(0,0),(-1,-1),3), ("LEFTPADDING",(0,0),(-1,-1),5), ("RIGHTPADDING",(0,0),(-1,-1),5), ("VALIGN",(0,0),(-1,-1),"MIDDLE"), ("BOX",(0,0),(-1,-1),0.5, MGREY), ])) ocp_wrap = Table([[ocp_note],[ocp_body]], colWidths=[sum(ow)]) ocp_wrap.setStyle(TableStyle([ ("LEFTPADDING",(0,0),(-1,-1),0), ("RIGHTPADDING",(0,0),(-1,-1),0), ("TOPPADDING",(0,0),(-1,-1),0), ("BOTTOMPADDING",(0,0),(-1,-1),0), ("BOX",(0,0),(-1,-1),1, TEAL), ])) last_row = Table( [[pop_box, Spacer(GAP,1), ocp_wrap]], colWidths=[COL2La, GAP, COL2Ra] ) last_row.setStyle(TableStyle([ ("VALIGN",(0,0),(-1,-1),"TOP"), ("LEFTPADDING",(0,0),(-1,-1),0), ("RIGHTPADDING",(0,0),(-1,-1),0), ("TOPPADDING",(0,0),(-1,-1),0), ("BOTTOMPADDING",(0,0),(-1,-1),0), ])) story.append(last_row) story.append(Spacer(1, 8)) # ══════════════════════════════════════════════════════════════════════════════ # FOOTER # ══════════════════════════════════════════════════════════════════════════════ story.append(HRFlowable(width="100%", thickness=0.5, color=MGREY)) story.append(Spacer(1, 3)) story.append(Paragraph( "Sources: Andrews' Diseases of the Skin (p. 280–283) · Harrison's Principles of Internal Medicine 22E (2025, p. 434) · " "Fitzpatrick's Dermatology 9e (p. 1435) · The Harriet Lane Handbook 23e · " "Reynolds RV et al. AAD Guidelines of Care for Acne Vulgaris. J Am Acad Dermatol 2024. PMID 38300170 · " "Generated by Orris Clinical Reference — for educational use only. Not a substitute for clinical judgement.", FOOT )) doc.build(story) print("PDF created:", OUT) PYEOF
Doxycycline Acne Protocol
PDF Document · PDF
| Section | Content |
|---|---|
| Doxycycline Dosing | Dosing by population (adults, adolescents ≥8 yr, extended-release, pregnancy contraindication) |
| Treatment Duration | 3-6 month limit, 12-week assessment point, step-down strategy |
| Mandatory Combination Therapy | BPO + topical retinoid - why each is non-negotiable |
| Retinoid Choice | Adapalene vs. tretinoin vs. tazarotene (strength, pregnancy category, notes) |
| Step-Down Plan | Phase-by-phase timeline from initiation to topical maintenance |
| Resistance Rules | 6 colour-coded rules to prevent C. acnes resistance |
| Side Effects & Interactions | 8 side effects in a 2-column layout with action notes |
| Special Populations | Men, women, severe/nodular, pregnancy - regimen guidance |
| FDA Hormonal Options (Women) | 3 approved OCPs + spironolactone dosing |
| Sources | Andrews', Harrison's, Fitzpatrick's, Harriet Lane, AAD 2024 guidelines |