A 28-year-old male presents with mild nodular acne, recurrently affecting the jaw region. The lesions are few in number but consistently nodular. He also exhibits post-inflammatory hyperpigmentation. Currently, his treatment regimen includes: Tablet Doxycycline 100 mg once daily, administered in the morning, for the past 6-7 weeks. Gel Benzoyl Peroxide 5%, applied in the morning, for the past 6-7 weeks. Gel Adapalene 0.1%, applied nightly before sleep, also for the past 6-7 weeks. Please evaluate the current treatment plan and formulate an optimized treatment strategy for this patient, suggesting any necessary modifications.
acne vulgaris treatment guideline
nodular acne treatment doxycycline benzoyl peroxide adapalene not improving guideline
| Element | Recommendation |
|---|---|
| Adapalene 0.1% gel | Continue nightly - also helps fade PIH |
| BPO 5% gel | Continue mornings |
| Doxycycline 100 mg | Continue, but plan to stop by ~12 weeks total (currently at week 6-7); document response at each visit |
| Sunscreen | Add now - broad-spectrum, non-comedogenic, SPF 30+, daily |
| Nodules | Consider intralesional triamcinolone for the few nodular lesions to hasten resolution and limit scarring/PIH |
| PIH | Reinforce photoprotection + retinoid; add azelaic acid once acne is more controlled and tolerability allows |
| Adherence counseling | Confirm correct application technique (entire acne-prone area, not spot treatment), avoid harsh scrubs/additional actives |
Find latest 2024-2025 acne management guidelines and protocols
acne vulgaris AND "guideline"[pt]
acne vulgaris treatment consensus 2025
latest acne management guidelines 2024 2025 AAD European consensus
2025 acne treatment guideline update JAAD EADV
benzoyl peroxide benzene contamination FDA 2024 2025 acne products citizen petition
https://www.empr.com/home/news/aad-issues-updated-clinical-p…
For PIH after inflammatory acne reduces can we suggest Topical Azelaic Acid 15-20% in the night along with the current Gel Adapalene 0.1 % or they have to be separated?
azelaic acid combined with adapalene same time irritation stability
Create a step-by-step treatment protocol document for this patient's care plan
mkdir -p /tmp/workspace/acne-protocol && ls -la /tmp/workspace/
~/acne-protocol/build_doc.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
DARK = RGBColor(0x1F, 0x3B, 0x57)
ACCENT = RGBColor(0x2E, 0x74, 0xB5)
GREY = RGBColor(0x59, 0x59, 0x59)
doc = Document()
# Default style
style = doc.styles["Normal"]
style.font.name = "Calibri"
style.font.size = Pt(11)
# Margins
for section in doc.sections:
section.top_margin = Inches(0.7)
section.bottom_margin = Inches(0.7)
section.left_margin = Inches(0.8)
section.right_margin = Inches(0.8)
def shade_cell(cell, hex_color):
tcPr = cell._tc.get_or_add_tcPr()
shd = OxmlElement('w:shd')
shd.set(qn('w:val'), 'clear')
shd.set(qn('w:color'), 'auto')
shd.set(qn('w:fill'), hex_color)
tcPr.append(shd)
def set_col_widths(table, widths):
for row in table.rows:
for idx, w in enumerate(widths):
row.cells[idx].width = w
def add_heading(text, level=1, color=DARK):
h = doc.add_heading(text, level=level)
for run in h.runs:
run.font.color.rgb = color
return h
def add_body(text, bold=False, italic=False, size=11, color=None, space_after=6):
p = doc.add_paragraph()
p.paragraph_format.space_after = Pt(space_after)
run = p.add_run(text)
run.bold = bold
run.italic = italic
run.font.size = Pt(size)
if color:
run.font.color.rgb = color
return p
def add_bullet(text, bold_lead=None):
p = doc.add_paragraph(style="List Bullet")
if bold_lead:
r = p.add_run(bold_lead)
r.bold = True
p.add_run(text)
else:
p.add_run(text)
return p
def add_numbered(text, bold_lead=None):
p = doc.add_paragraph(style="List Number")
if bold_lead:
r = p.add_run(bold_lead)
r.bold = True
p.add_run(text)
else:
p.add_run(text)
return p
# ---------------- TITLE PAGE / HEADER ----------------
title = doc.add_paragraph()
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = title.add_run("ACNE VULGARIS TREATMENT PROTOCOL")
run.bold = True
run.font.size = Pt(22)
run.font.color.rgb = DARK
subtitle = doc.add_paragraph()
subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = subtitle.add_run("Individualized Step-by-Step Care Plan — Nodular Acne with Post-Inflammatory Hyperpigmentation (PIH)")
run.italic = True
run.font.size = Pt(13)
run.font.color.rgb = ACCENT
doc.add_paragraph()
# Patient summary box (table)
table = doc.add_table(rows=6, cols=2)
table.style = "Light Grid Accent 1"
data = [
("Patient", "28-year-old male"),
("Diagnosis", "Mild nodular acne (few, consistently nodular lesions), jaw-predominant, with post-inflammatory hyperpigmentation (PIH)"),
("Regimen duration to date", "6-7 weeks"),
("Current medications", "Tab. Doxycycline 100 mg OD (AM); Gel Benzoyl Peroxide 5% (AM); Gel Adapalene 0.1% (PM)"),
("Protocol basis", "AAD 2024 Guidelines of Care for Acne Vulgaris (Reynolds et al., JAAD 2024; PMID 38300170); 2025 Oral Antibiotic Stewardship Consensus; NICE/BAD guidance"),
("Document prepared", "Clinical reference protocol — for treating clinician's use and patient counseling"),
]
for i, (k, v) in enumerate(data):
c0, c1 = table.rows[i].cells
c0.text = ""
p0 = c0.paragraphs[0]
r0 = p0.add_run(k)
r0.bold = True
r0.font.size = Pt(10.5)
shade_cell(c0, "DCE6F1")
c1.text = ""
p1 = c1.paragraphs[0]
r1 = p1.add_run(v)
r1.font.size = Pt(10.5)
set_col_widths(table, [Inches(1.6), Inches(4.9)])
doc.add_paragraph()
# ---------------- STEP 0: GOALS ----------------
add_heading("Protocol Goals", level=1)
add_bullet("Clear active inflammatory/nodular lesions while minimizing further scarring and PIH.")
add_bullet("Practice antibiotic stewardship — cap oral doxycycline duration and transition to topical maintenance.")
add_bullet("Actively treat existing PIH once acne inflammation is controlled.")
add_bullet("Minimize cumulative irritation from combined topical actives through sequencing and pacing.")
add_bullet("Define explicit escalation criteria (isotretinoin referral) if the current approach fails.")
# ---------------- STEP-BY-STEP PROTOCOL ----------------
add_heading("Step-by-Step Care Plan", level=1)
# STEP 1
add_heading("Step 1 (Weeks 0-2, i.e., NOW) — Continue Induction Therapy + Close Gaps", level=2, color=ACCENT)
add_numbered("Continue Tab. Doxycycline 100 mg once daily (morning) — do not stop yet; response typically takes 6-8 weeks.")
add_numbered("Continue Gel Benzoyl Peroxide 5% every morning — apply to entire acne-prone area, not spot treatment.")
add_numbered("Continue Gel Adapalene 0.1% every night.")
add_numbered("ADD: Broad-spectrum, non-comedogenic sunscreen (SPF 30-50) every morning — mandatory given doxycycline photosensitivity and to prevent worsening of PIH.")
add_numbered("Doxycycline administration counseling: take with a full glass of water; remain upright ≥30 minutes afterward; separate from dairy, calcium, iron, or antacids by ~2 hours.")
add_numbered("Storage counseling for benzoyl peroxide: store at room temperature, away from heat and direct sunlight (per 2024-2025 FDA/Valisure benzene-degradation findings) — continue use, this is a precaution, not a reason to stop.")
add_numbered("If dryness/irritation occurs from adapalene + BPO, use a non-comedogenic, fragrance-free moisturizer; do not discontinue actives for mild dryness alone.")
# STEP 2
add_heading("Step 2 (Weeks 2-4) — Nodule-Directed Adjunct", level=2, color=ACCENT)
add_numbered("For the persistent nodular lesion(s): consider intralesional triamcinolone acetonide 2.5-5 mg/mL injected directly into each nodule.", bold_lead="Intralesional therapy: ")
add_numbered("This accelerates flattening of individual nodules and reduces the risk of scarring/further PIH — appropriate for \"few but consistently nodular\" lesions, per AAD 2024 good practice statement on adjuvant intralesional corticosteroids.")
add_numbered("Continue all Step 1 measures unchanged.")
add_numbered("Reinforce adherence: ask specifically how many nights per week the patient actually applies each topical.")
# STEP 3
add_heading("Step 3 (Once active inflammatory lesions are visibly reducing) — Introduce PIH-Directed Therapy", level=2, color=ACCENT)
add_numbered("Do not add azelaic acid while acne is still highly active/inflamed and skin is not yet tolerating adapalene + BPO comfortably — wait until inflammation is subsiding.")
add_numbered("Continue Gel Benzoyl Peroxide 5% each morning + sunscreen.", bold_lead="Morning: ")
add_numbered("Cleanse with a gentle, non-comedogenic cleanser; allow skin to dry fully (10-15 minutes) before applying any active.", bold_lead="Night — new sequenced routine: ")
add_numbered("Apply Azelaic Acid 15-20% first; wait ~10-15 minutes for absorption.")
add_numbered("Then apply Gel Adapalene 0.1% over it.")
add_numbered("Follow with a non-comedogenic moisturizer if any dryness/stinging is noted.")
p = add_body("Note on compatibility: ", bold=True, space_after=0)
p.add_run("Azelaic acid and adapalene are chemically compatible (unlike benzoyl peroxide + certain retinoids, which can oxidize/inactivate each other) — they do NOT need to be separated to different times of day. The concern is cumulative irritation, not chemical interaction, hence the graded introduction below.")
add_heading("Step 3a — Graded Introduction Schedule (to minimize irritation)", level=3, color=GREY)
tbl2 = doc.add_table(rows=4, cols=3)
tbl2.style = "Light List Accent 1"
hdr = tbl2.rows[0].cells
for i, txt in enumerate(["Timeframe", "Azelaic Acid 15-20%", "Adapalene 0.1%"]):
hdr[i].text = ""
r = hdr[i].paragraphs[0].add_run(txt)
r.bold = True
shade_cell(hdr[i], "2E74B5")
r.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)
rows_data = [
("Week 1-2", "Alternate nights only (e.g., Mon/Wed/Fri)", "Nights azelaic acid is NOT applied"),
("Week 3-4", "If tolerated, move to nightly", "Nightly, applied after azelaic acid absorbs"),
("If stinging/redness/peeling occurs", "Drop back to alternate-night pattern or pause 2-3 nights", "Same — reduce frequency together, resume gradually"),
]
for i, row in enumerate(rows_data, start=1):
for j, val in enumerate(row):
tbl2.rows[i].cells[j].text = val
# STEP 4
add_heading("Step 4 (Week 12 / 3 months) — Antibiotic Stop Point and Reassessment", level=2, color=ACCENT)
add_numbered("Formal reassessment of lesion count, nodule status, and PIH extent.")
add_numbered("Per AAD 2024 and the 2025 antibiotic stewardship consensus, oral doxycycline should not exceed 3-4 months.", bold_lead="Stop oral doxycycline: ")
add_numbered("Continue Gel Adapalene 0.1% (or fixed-dose adapalene/BPO combination product) as long-term maintenance to prevent relapse.", bold_lead="Transition to topical-only maintenance: ")
add_numbered("Continue benzoyl peroxide morning +/- azelaic acid as needed for residual PIH.")
add_numbered("Continue daily sunscreen indefinitely.")
# STEP 5 - Decision branch
add_heading("Step 5 — Decision Branch at 12-Week Reassessment", level=2, color=ACCENT)
tbl3 = doc.add_table(rows=3, cols=2)
tbl3.style = "Light Grid Accent 1"
hdr3 = tbl3.rows[0].cells
for i, txt in enumerate(["Clinical Finding", "Action"]):
hdr3[i].text = ""
r = hdr3[i].paragraphs[0].add_run(txt)
r.bold = True
shade_cell(hdr3[i], "1F3B57")
r.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)
branch_data = [
("Good response: nodules resolved, no new nodules, PIH fading",
"Stop doxycycline; continue topical maintenance (adapalene + BPO ± azelaic acid) indefinitely; routine follow-up in 3 months."),
("Inadequate response: new nodules forming, scarring appearing, or recurrent nodular flares despite optimized combination therapy",
"Refer for oral isotretinoin evaluation, per AAD 2024 strong recommendation for acne that is severe, scarring, or failing standard oral/topical therapy. Obtain baseline LFTs and lipid panel before initiation."),
]
for i, (finding, action) in enumerate(branch_data, start=1):
tbl3.rows[i].cells[0].text = finding
tbl3.rows[i].cells[1].text = action
doc.add_paragraph()
# ---------------- MONITORING TABLE ----------------
add_heading("Monitoring Schedule", level=1)
tbl4 = doc.add_table(rows=5, cols=3)
tbl4.style = "Light Grid Accent 1"
hdr4 = tbl4.rows[0].cells
for i, txt in enumerate(["Visit / Timepoint", "What to Assess", "Action if Needed"]):
hdr4[i].text = ""
r = hdr4[i].paragraphs[0].add_run(txt)
r.bold = True
shade_cell(hdr4[i], "2E74B5")
r.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)
mon_data = [
("Week 6-8 (baseline / current)", "Lesion count, nodule status, tolerability of adapalene+BPO, adherence", "Add sunscreen; consider intralesional triamcinolone for nodules"),
("Week 8-10", "Inflammation trend, readiness to start PIH-directed therapy", "Introduce azelaic acid on graded schedule if inflammation subsiding"),
("Week 12 (antibiotic stop point)", "Overall response, nodule recurrence, PIH extent, side effects", "Stop doxycycline; shift to topical maintenance or escalate to isotretinoin referral per decision branch"),
("Every 3 months thereafter", "Maintenance adherence, relapse, residual PIH", "Adjust topical regimen; taper azelaic acid once PIH resolves"),
]
for i, row in enumerate(mon_data, start=1):
for j, val in enumerate(row):
tbl4.rows[i].cells[j].text = val
doc.add_paragraph()
# ---------------- PATIENT COUNSELING POINTS ----------------
add_heading("Patient Counseling Checklist", level=1)
add_bullet("Improvement is gradual — expect visible change only after 6-8 weeks of consistent use.")
add_bullet("Apply topical medications to the entire acne-prone area, not just individual spots.")
add_bullet("Avoid picking or manipulating nodules — this worsens scarring and PIH.")
add_bullet("Avoid harsh scrubs, toners, or additional over-the-counter actives not part of this plan.")
add_bullet("Use sunscreen every morning without exception — protects against doxycycline photosensitivity and prevents PIH from darkening further.")
add_bullet("Report any persistent stinging, burning, or peeling promptly so the regimen can be adjusted rather than abandoned.")
doc.add_paragraph()
# ---------------- REFERENCES ----------------
add_heading("Guideline Basis / References", level=1)
refs = [
"Reynolds RV, Yeung H, Cheng CE, et al. Guidelines of Care for the Management of Acne Vulgaris. J Am Acad Dermatol. 2024;90(5):1006.e1-1006.e30. PMID: 38300170.",
"Optimal Use Recommendations and Stewardship Principles with Oral Antibiotics in Acne Vulgaris Management: An Expert Consensus Panel (2025).",
"NICE Guideline NG198 - Acne Vulgaris: Management (2023), with 2024 practice update (Layton AM, et al. Dermatol Ther. 2024).",
"Dermatology, 2-Volume Set, 5th Edition (Elsevier) - Chapter on Acne Vulgaris and Postinflammatory Hyperpigmentation.",
"Fitzpatrick's Dermatology, editors' volumes 1-2 - Sections on Retinoids, Azelaic Acid, and Tetracycline Photosensitivity.",
"FDA Drug Alert: Limited Voluntary Recalls After Testing of Acne Products for Benzene (March 2025).",
]
for r in refs:
add_bullet(r)
doc.add_paragraph()
foot = doc.add_paragraph()
foot.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = foot.add_run("This protocol is a clinical decision-support reference and does not replace individualized clinical judgment or in-person evaluation.")
r.italic = True
r.font.size = Pt(9)
r.font.color.rgb = GREY
doc.save("/tmp/workspace/acne-protocol/Acne_Treatment_Protocol.docx")
print("Saved.")
cd /tmp/workspace/acne-protocol && python3 build_doc.py
cd /tmp/workspace/acne-protocol && python3 -c " from docx import Document doc = Document('Acne_Treatment_Protocol.docx') count_p = len(doc.paragraphs) count_t = len(doc.tables) print('paragraphs:', count_p, 'tables:', count_t) " && ls -la /tmp/workspace/acne-protocol/
Acne Treatment Protocol
Word Document · DOCX