UTI treatment in adults

Reading File
Finding Sources
Searching PubMed

"urinary tract infection" AND treatment AND adults

Searching the Web

UTI treatment adults guidelines 2025 antibiotics uncomplicated complicated

Finding Sources
Reading Web Page

https://www.emdocs.net/guideline-update-2025-idsa-management…

Reading Article

PMID: 39495518

Reading File
Reading File
Reading File
Reading File
Reading File
I now have excellent content from multiple sources. Let me compile a comprehensive, well-organized answer.

UTI Treatment in Adults

1. Classification (2025 IDSA Update)

The 2025 IDSA guidelines updated the classification to better align with clinical practice:
Uncomplicated UTI - no systemic signs (no fever, no flank pain, no rigors, no CVA tenderness). Can occur in men AND women. Having diabetes, immunocompromise, or BPH/cystocele does NOT automatically make a UTI complicated.
Complicated UTI (cUTI) - presence of:
  • Systemic signs (fever, chills, rigors, flank/CVA pain)
  • Upper tract obstruction (stone)
  • Renal parenchymal involvement (pyelonephritis)
  • Indwelling catheter, nephrostomy tube, or ureteral stent

2. Uncomplicated Cystitis

First-line antibiotics (per IDSA/ESCMID and Tintinalli's)

AgentDose & Duration
Nitrofurantoin monohydrate/macrocrystals100 mg twice daily x 5 days
TMP-SMX DS (160/800 mg)1 tab twice daily x 3 days (avoid if local resistance >20%)
Fosfomycin trometamol3 g single dose (resistance rate ~2%)
Pivmecillinam400 mg twice daily x 3-7 days (available in some regions)
New (2025): Gepotidacin - FDA-approved March 2025, the first new antibiotic class in ~30 years for uncomplicated UTI. A triazaacenaphthylene that blocks two Type II topoisomerase enzymes (dual-target mechanism). Active against E. coli and S. saprophyticus, including resistant strains. Comparable efficacy to nitrofurantoin (~51% vs 47% therapeutic success). Approved for adult females and pediatric patients ≥12 years.
Also 2025: Sulopenem etzadroxil/probenecid - FDA-approved oral option for uncomplicated UTI in adult women with limited alternatives (caused by E. coli, K. pneumoniae, or P. mirabilis).

Avoid as first-line:

  • Fluoroquinolones (reserve for complicated infection; collateral damage, resistance)
  • Amoxicillin/ampicillin (high resistance; amoxicillin-clavulanate selects for Klebsiella)
  • Fosfomycin has slightly less efficacy than short courses of TMP-SMX but excellent for ESBL-producing E. coli (only ~3% resistance)
Men with uncomplicated cystitis: 7 days of treatment is recommended. Urine culture should be obtained for all male UTIs to document bacteriuria and exclude prostatitis.

3. Complicated UTI and Pyelonephritis

Empiric Treatment (2025 IDSA - without sepsis)

Preferred agents:
  • Third- or fourth-generation cephalosporins (e.g., ceftriaxone, cefepime)
  • Piperacillin-tazobactam
  • Fluoroquinolones (ciprofloxacin or levofloxacin - oral or IV)
Avoid as empiric agents for cUTI:
  • Nitrofurantoin and oral fosfomycin - do NOT achieve adequate levels in renal parenchyma or bloodstream
  • Carbapenems and newer beta-lactam/beta-lactamase inhibitors (cefiderocol, plazomicin) - reserve for confirmed resistant organisms
Note: TMP-SMX, amoxicillin-clavulanate, and first/second-generation cephalosporins "may be appropriate in select settings" but are less well studied for empiric cUTI.

Inpatient Pyelonephritis Empiric Therapy (Tintinalli's Table 91-6)

RouteAgent
IVFluoroquinolone (ciprofloxacin 400 mg q12h or levofloxacin 500 mg q24h)
IVCeftriaxone 1-2 g q24h
IVPiperacillin-tazobactam 3.375 g q6h or 4.5 g q8h
IVGentamicin (if susceptibility confirmed)
Oral step-downCiprofloxacin 500 mg q12h or levofloxacin 750 mg q24h
Oral step-downTMP-SMX DS (if susceptible)

4. Duration of Therapy (2025 IDSA - Updated)

ScenarioDuration
Uncomplicated cystitis (women)3-5 days (agent-dependent)
Uncomplicated cystitis (men)7 days
Complicated UTI / pyelonephritis (improving, fluoroquinolone)5-7 days
Complicated UTI / pyelonephritis (improving, non-fluoroquinolone)7 days
cUTI with gram-negative bacteremia (improving)7 days
Suspected bacterial prostatitis10-14 days
Key update: The 2025 IDSA guidelines recommend shorter courses (5-7 days) over 10-14 days for pyelonephritis and cUTI in patients who are clinically improving. Duration counts from the first day of effective therapy. This is supported by the 2025 meta-analysis (Zahavi et al., Clin Microbiol Infect 2025) showing no inferiority of shorter courses.

5. IV-to-Oral Switch

Per 2025 IDSA: transition to oral antibiotics as soon as the patient is:
  • Clinically improving
  • Able to tolerate oral medications
  • An effective oral option is available
Continuing IV therapy unnecessarily is associated with higher cost, adverse events, and resource use. Oral step-down is safe and effective.

6. Definitive (Culture-Directed) Therapy

When urine culture and susceptibility results are available, de-escalate to the narrowest effective agent. This is a strong stewardship principle in the 2025 guidelines.

7. Special Populations

PopulationConsideration
PregnancyTMP-SMX and tetracyclines contraindicated in early pregnancy (birth defects). Nitrofurantoin avoidance near term. Follow-up culture 2 weeks post-treatment is required. Fosfomycin single dose acceptable.
Renal failureNitrofurantoin contraindicated (inadequate urine levels + toxicity); dose-adjust fluoroquinolones/TMP-SMX. Fosfomycin may be used but prolonged time to negative cultures in impaired renal function.
ESBL-producing E. coliNitrofurantoin (6% resistance) and fosfomycin (3% resistance) are oral options. Carbapenems for severe cases.
Men with febrile UTIImaging (CT or US) recommended to evaluate for obstruction/abnormality. Consider prostatitis (10-14 day course with fluoroquinolone or TMP-SMX for prostatic penetration).
Catheter-associated UTI (CAUTI)Remove/replace catheter when feasible. Treat symptomatically only - pyuria/bacteriuria alone do NOT diagnose UTI in catheterized patients.

8. Diagnosis Pearls

  • Dipstick: Negative for BOTH nitrite AND leukocyte esterase makes UTI unlikely (but not in pregnancy - culture is required)
  • Pyuria: >10 WBC/HPF is the standard threshold, though >250 WBC/HPF may better correlate with symptoms in older women
  • Culture: >10² bacteria/mL is more sensitive for cystitis than the traditional 10⁵/mL threshold
  • Asymptomatic bacteriuria (ASB): Do NOT treat except in pregnancy and before urologic procedures

Sources

Note on recent evidence: A 2024 WikiGuidelines systematic review (PMID 39495518) found that the majority of UTI management topics still lack high-quality prospective data - clear evidence-based recommendations could only be made for 6 of 37 questions. Gepotidacin (FDA-approved March 2025) is a notable new addition to the uncomplicated UTI armamentarium.

Create a quick reference PDF comparing first-line UTI antibiotics with dosing & duration

Reading File
Running Command

ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "workspace ready"

Running Command

mkdir -p /tmp/workspace/uti-pdf && cat > /tmp/workspace/uti-pdf/generate_uti_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 mm, cm from reportlab.platypus import ( SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable, KeepTogether ) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT from reportlab.platypus import BaseDocTemplate, PageTemplate, Frame OUTPUT = "/tmp/workspace/uti-pdf/UTI_Antibiotic_Quick_Reference.pdf" # ── Colour palette ────────────────────────────────────────────────── TEAL = colors.HexColor("#007C7C") TEAL_LITE = colors.HexColor("#E0F4F4") BLUE = colors.HexColor("#1A4F8A") BLUE_LITE = colors.HexColor("#EBF2FB") RED_LITE = colors.HexColor("#FFF0F0") RED = colors.HexColor("#C0392B") GOLD = colors.HexColor("#D4A017") GOLD_LITE = colors.HexColor("#FFF8E7") GREEN = colors.HexColor("#1A7A4A") GREEN_LITE= colors.HexColor("#E8F8EE") GRAY_HDR = colors.HexColor("#2C3E50") GRAY_ROW = colors.HexColor("#F7F9FB") WHITE = colors.white BLACK = colors.HexColor("#1A1A1A") W, H = A4 # 595 x 842 pt # ── Page template with header/footer ──────────────────────────────── def on_page(canvas, doc): canvas.saveState() # Top banner canvas.setFillColor(TEAL) canvas.rect(0, H - 38, W, 38, fill=1, stroke=0) canvas.setFillColor(WHITE) canvas.setFont("Helvetica-Bold", 14) canvas.drawCentredString(W/2, H - 25, "UTI ANTIBIOTIC QUICK REFERENCE | Adult Treatment Guide") # Bottom footer canvas.setFillColor(GRAY_HDR) canvas.rect(0, 0, W, 22, fill=1, stroke=0) canvas.setFillColor(WHITE) canvas.setFont("Helvetica", 7.5) canvas.drawString(18, 7, "Based on IDSA 2025 Guidelines, Harrison's 22E & Tintinalli's EM. For clinical decision support only — always verify local resistance patterns.") canvas.drawRightString(W - 18, 7, f"Page {doc.page}") canvas.restoreState() def build_pdf(): doc = BaseDocTemplate( OUTPUT, pagesize=A4, leftMargin=18*mm, rightMargin=18*mm, topMargin=46*mm, bottomMargin=28*mm, ) frame = Frame(doc.leftMargin, doc.bottomMargin, doc.width, doc.height, id='main') doc.addPageTemplates([PageTemplate(id='main', frames=frame, onPage=on_page)]) styles = getSampleStyleSheet() story = [] def h1(txt): return Paragraph(txt, ParagraphStyle('h1', fontName='Helvetica-Bold', fontSize=10, textColor=WHITE, backColor=GRAY_HDR, spaceAfter=0, spaceBefore=6, leftIndent=6, leading=15)) def h2(txt, bg=TEAL): return Paragraph(txt, ParagraphStyle('h2', fontName='Helvetica-Bold', fontSize=9, textColor=WHITE, backColor=bg, spaceAfter=0, spaceBefore=4, leftIndent=6, leading=13)) def note(txt, color=BLACK): return Paragraph(txt, ParagraphStyle('note', fontName='Helvetica', fontSize=7.5, textColor=color, spaceAfter=2, leading=10, leftIndent=4)) def bold_note(txt, color=BLACK): return Paragraph(f"<b>{txt}</b>", ParagraphStyle('bnote', fontName='Helvetica-Bold', fontSize=8, textColor=color, spaceAfter=3, leading=11, leftIndent=4)) col_w = doc.width / 5 # base column unit # ──────────────────────────────────────────────────────────────── # SECTION 1 – UNCOMPLICATED CYSTITIS (Women) # ──────────────────────────────────────────────────────────────── story.append(h1(" 1. UNCOMPLICATED CYSTITIS — WOMEN (No fever / no systemic signs)")) story.append(Spacer(1, 3)) hdr = ['Agent', 'Dose', 'Duration', 'Notes / Stewardship'] rows_women = [ ['Nitrofurantoin\n(monohydrate/macrocrystals)', '100 mg PO BID', '5 days', '1st-line. Avoid if CrCl <30. Do NOT use in pyelonephritis.'], ['TMP-SMX DS\n(160/800 mg)', '1 tab PO BID', '3 days', '1st-line if local resistance <20%. Check local antibiogram.'], ['Fosfomycin\ntrometamol', '3 g PO', 'Single dose', '1st-line. Resistance ~2%. Good for ESBL E. coli (3% resistance).'], ['Pivmecillinam', '400 mg PO BID', '3–7 days', 'Available in some regions. Useful when MDR a concern.'], ['Gepotidacin ★ NEW', 'Per label', '3 days', 'FDA-approved Mar 2025. Dual topoisomerase inhibitor. Active against resistant strains.'], ['Ciprofloxacin\n(FQ — avoid routinely)', '250 mg PO BID', '3 days', 'Reserve for complicated UTI. Collateral damage; resistance risk.'], ] col_ws_main = [col_w*1.3, col_w*0.85, col_w*0.65, col_w*2.2] data = [hdr] + rows_women t = Table(data, colWidths=col_ws_main, repeatRows=1) ts = TableStyle([ ('BACKGROUND', (0,0), (-1,0), TEAL), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 8), ('ALIGN', (0,0), (-1,0), 'CENTER'), ('ROWBACKGROUNDS',(0,1),(-1,-1), [GRAY_ROW, WHITE]), ('FONTNAME', (0,1), (-1,-1), 'Helvetica'), ('FONTSIZE', (0,1), (-1,-1), 7.5), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING',(0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (-1,-1), 5), # Highlight gepotidacin row ('BACKGROUND', (0,5), (-1,5), GOLD_LITE), ('TEXTCOLOR', (0,5), (0,5), GOLD), ('FONTNAME', (0,5), (0,5), 'Helvetica-Bold'), # Grey out FQ row ('BACKGROUND', (0,6), (-1,6), RED_LITE), ('TEXTCOLOR', (0,6), (0,6), RED), ('FONTNAME', (0,6), (0,6), 'Helvetica-BoldOblique'), ]) t.setStyle(ts) story.append(t) story.append(Spacer(1, 4)) story.append(note("★ Do NOT use nitrofurantoin or fosfomycin for pyelonephritis — inadequate renal tissue levels.", RED)) story.append(note("★ Fosfomycin and nitrofurantoin are preferred oral agents for ESBL-producing E. coli.")) # ──────────────────────────────────────────────────────────────── # SECTION 2 – UNCOMPLICATED CYSTITIS (Men) # ──────────────────────────────────────────────────────────────── story.append(Spacer(1, 6)) story.append(h1(" 2. UNCOMPLICATED CYSTITIS — MEN")) story.append(Spacer(1, 3)) rows_men = [ ['TMP-SMX DS\n(160/800 mg)', '1 tab PO BID', '7 days', 'Culture urine in all men. Longer course than women.'], ['Ciprofloxacin', '500 mg PO BID', '7 days', 'Good prostatic penetration if prostatitis suspected.'], ['Nitrofurantoin\n(monohydrate/macrocrystals)', '100 mg PO BID', '7 days', 'If lower tract only (no prostatitis suspected), adequate for 7 days.'], ] data_men = [hdr] + rows_men t2 = Table(data_men, colWidths=col_ws_main, repeatRows=1) t2.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), BLUE), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 8), ('ALIGN', (0,0), (-1,0), 'CENTER'), ('ROWBACKGROUNDS',(0,1),(-1,-1), [BLUE_LITE, WHITE]), ('FONTNAME', (0,1), (-1,-1), 'Helvetica'), ('FONTSIZE', (0,1), (-1,-1), 7.5), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING',(0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (-1,-1), 5), ])) story.append(t2) story.append(Spacer(1, 2)) story.append(note("Men with febrile UTI: obtain imaging (CT or ultrasound). Consider prostatic involvement — use fluoroquinolone or TMP-SMX for 10–14 days if prostatitis suspected.")) # ──────────────────────────────────────────────────────────────── # SECTION 3 – PYELONEPHRITIS & COMPLICATED UTI # ──────────────────────────────────────────────────────────────── story.append(Spacer(1, 6)) story.append(h1(" 3. PYELONEPHRITIS & COMPLICATED UTI (Fever / systemic signs / structural abnormality)")) story.append(Spacer(1, 3)) hdr3 = ['Agent', 'Route', 'Dose', 'Duration', 'Notes'] cw3 = [col_w*1.2, col_w*0.5, col_w*1.1, col_w*0.75, col_w*1.45] rows3 = [ ['Ciprofloxacin', 'PO / IV', '500 mg BID (PO)\n400 mg q12h (IV)', '5–7 days FQ\nor 7 days non-FQ', 'Step down to oral when tolerating & improving.'], ['Levofloxacin', 'PO / IV', '750 mg q24h', '5–7 days FQ', 'Once-daily dosing. Step down to oral ASAP.'], ['Ceftriaxone', 'IV', '1–2 g q24h', '7 days', 'Good gram-negative coverage. Step down when able.'], ['Cefepime', 'IV', '1–2 g q8–12h','7 days', 'For Pseudomonas risk or healthcare-associated UTI.'], ['Pip-Tazo', 'IV', '3.375 g q6h\nor 4.5 g q8h', '7 days', 'Broad-spectrum. Reserve; anti-Pseudomonal coverage.'], ['TMP-SMX DS', 'PO', '1 tab BID', '7 days', 'Only if susceptibility confirmed. NOT for empiric Rx.'], ['Ertapenem', 'IV', '1 g q24h', '7 days', 'For ESBL / MDR organisms. Carbapenem — reserve.'], ['Meropenem', 'IV', '1 g q8h', '7–10 days', 'Sepsis / XDR organisms. Escalate to ID if needed.'], ] data3 = [hdr3] + rows3 t3 = Table(data3, colWidths=cw3, repeatRows=1) ts3 = TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor("#5D3FD3")), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 8), ('ALIGN', (0,0), (-1,0), 'CENTER'), ('ROWBACKGROUNDS',(0,1),(-1,-1), [colors.HexColor("#F5F0FF"), WHITE]), ('FONTNAME', (0,1), (-1,-1), 'Helvetica'), ('FONTSIZE', (0,1), (-1,-1), 7.5), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING',(0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 5), # Carbapenem rows highlighted ('BACKGROUND', (0,7), (-1,8), RED_LITE), ]) t3.setStyle(ts3) story.append(t3) story.append(Spacer(1, 3)) story.append(note("2025 IDSA: Shorter courses (5–7 days FQ, 7 days non-FQ) are recommended over 10–14 days for clinically improving patients. Duration counts from first day of EFFECTIVE therapy.", RED)) story.append(note("cUTI with gram-negative bacteremia (improving): treat 7 days total. IV-to-oral switch is safe when patient is tolerating PO and an effective oral option is available.")) story.append(note("Avoid nitrofurantoin and oral fosfomycin in cUTI/pyelonephritis — do not achieve adequate renal parenchymal levels.")) # ──────────────────────────────────────────────────────────────── # SECTION 4 – DURATION SUMMARY BOX # ──────────────────────────────────────────────────────────────── story.append(Spacer(1, 6)) story.append(h1(" 4. TREATMENT DURATION SUMMARY (2025 IDSA)")) story.append(Spacer(1, 3)) dur_hdr = ['Clinical Scenario', 'Recommended Duration'] dur_rows = [ ['Uncomplicated cystitis — women (nitrofurantoin)', '5 days'], ['Uncomplicated cystitis — women (TMP-SMX)', '3 days'], ['Uncomplicated cystitis — women (fosfomycin)', 'Single dose'], ['Uncomplicated cystitis — men', '7 days'], ['Pyelonephritis / cUTI — fluoroquinolone, clinically improving', '5–7 days ✓ NEW'], ['Pyelonephritis / cUTI — non-fluoroquinolone, clinically improving', '7 days ✓ NEW'], ['cUTI with gram-negative bacteremia, clinically improving', '7 days ✓ NEW'], ['Suspected acute bacterial prostatitis', '10–14 days'], ['Catheter-associated UTI (CAUTI)', '7 days (after catheter removal/change)'], ] cw_dur = [doc.width * 0.72, doc.width * 0.28] data_dur = [dur_hdr] + dur_rows t4 = Table(data_dur, colWidths=cw_dur, repeatRows=1) ts4 = TableStyle([ ('BACKGROUND', (0,0), (-1,0), GREEN), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 8), ('ALIGN', (0,0), (-1,0), 'CENTER'), ('ALIGN', (1,1), (1,-1), 'CENTER'), ('ROWBACKGROUNDS',(0,1),(-1,-1), [GREEN_LITE, WHITE]), ('FONTNAME', (0,1), (-1,-1), 'Helvetica'), ('FONTSIZE', (0,1), (-1,-1), 7.5), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING',(0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (-1,-1), 5), # Highlight new 2025 rows ('FONTNAME', (1,5), (1,7), 'Helvetica-Bold'), ('TEXTCOLOR', (1,5), (1,7), GREEN), ]) t4.setStyle(ts4) story.append(t4) # ──────────────────────────────────────────────────────────────── # SECTION 5 – SPECIAL POPULATIONS # ──────────────────────────────────────────────────────────────── story.append(Spacer(1, 6)) story.append(h1(" 5. SPECIAL POPULATIONS & CONSIDERATIONS")) story.append(Spacer(1, 3)) sp_hdr = ['Population', 'Avoid', 'Preferred / Notes'] sp_rows = [ ['Pregnancy', 'TMP-SMX (1st tri: neural tube defects; 3rd tri: kernicterus)\nNitrofurantoin (avoid at term: hemolytic anemia)\nFluoroquinolones', 'Amoxicillin-clavulanate, cephalexin, or nitrofurantoin (2nd tri only)\nFollow-up culture 2 weeks post-treatment mandatory'], ['CrCl < 30 mL/min', 'Nitrofurantoin (inadequate urine levels + pulmonary toxicity risk)\nFosfomycin (prolonged time to clearance)', 'Beta-lactams or fosfomycin (if carefully monitored)\nDose-adjust TMP-SMX and fluoroquinolones'], ['ESBL-producing E. coli', 'Cephalosporins (most)\nAmoxicillin-clavulanate\nFluoroquinolones (often co-resistant)', 'Nitrofurantoin (6% resistance) for lower UTI\nFosfomycin (3% resistance) for lower UTI\nErtapenem / meropenem for systemic/pyelonephritis'], ['Recurrent UTI (women)', 'Avoid prolonged broad-spectrum antibiotics', 'Post-coital prophylaxis, self-start therapy, or daily low-dose nitrofurantoin/TMP-SMX\nConsider D-mannose, methenamine hippurate (non-antibiotic prophylaxis)'], ['Catheter-associated UTI\n(CAUTI)', 'Treat asymptomatic bacteriuria ONLY in pregnancy or pre-urologic procedure', 'Remove/exchange catheter. 7-day course once symptoms confirmed.\nPyuria + bacteriuria alone ≠ CAUTI diagnosis in catheterized patients.'], ] cw_sp = [col_w*0.95, col_w*1.4, col_w*2.65] data_sp = [sp_hdr] + sp_rows t5 = Table(data_sp, colWidths=cw_sp, repeatRows=1) ts5 = TableStyle([ ('BACKGROUND', (0,0), (-1,0), GOLD), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 8), ('ALIGN', (0,0), (-1,0), 'CENTER'), ('ROWBACKGROUNDS',(0,1),(-1,-1), [GOLD_LITE, WHITE]), ('FONTNAME', (0,1), (-1,-1), 'Helvetica'), ('FONTSIZE', (0,1), (-1,-1), 7.2), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING',(0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (-1,-1), 5), ('FONTNAME', (1,1), (1,-1), 'Helvetica-Oblique'), ('TEXTCOLOR', (1,1), (1,-1), RED), ]) t5.setStyle(ts5) story.append(t5) # ──────────────────────────────────────────────────────────────── # SECTION 6 – DIAGNOSIS PEARLS # ──────────────────────────────────────────────────────────────── story.append(Spacer(1, 6)) story.append(h1(" 6. RAPID DIAGNOSIS PEARLS")) story.append(Spacer(1, 3)) dx_hdr = ['Test', 'Finding', 'Interpretation'] dx_rows = [ ['Urine dipstick', 'Nitrite (+) + LE (+)', 'Highly suggestive of UTI (Enterobacterales). Start empiric Rx.'], ['Urine dipstick', 'Nitrite (−) + LE (−)', 'UTI unlikely — consider other diagnoses. Not adequate to rule out in pregnancy.'], ['Urine microscopy', '>10 WBC/HPF', 'Pyuria — standard threshold for UTI. >250 WBC/HPF better correlates with symptoms in older women.'], ['Urine microscopy', 'Hematuria', 'Present in ~30% of cystitis cases.'], ['Urine culture', '>10² CFU/mL', 'Diagnostic threshold for acute cystitis (more sensitive than 10⁵ CFU/mL).'], ['Urine culture', 'Any growth in catheterized patient without symptoms', 'Treat as asymptomatic bacteriuria (ASB) — do NOT treat unless pregnant or pre-procedure.'], ] cw_dx = [col_w*0.85, col_w*1.2, col_w*3.0] data_dx = [dx_hdr] + dx_rows t6 = Table(data_dx, colWidths=cw_dx, repeatRows=1) ts6 = TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor("#5D3FD3")), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 8), ('ALIGN', (0,0), (-1,0), 'CENTER'), ('ROWBACKGROUNDS',(0,1),(-1,-1), [colors.HexColor("#F5F0FF"), WHITE]), ('FONTNAME', (0,1), (-1,-1), 'Helvetica'), ('FONTSIZE', (0,1), (-1,-1), 7.5), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING',(0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (-1,-1), 5), ]) t6.setStyle(ts6) story.append(t6) # ──────────────────────────────────────────────────────────────── # Footer citation note # ──────────────────────────────────────────────────────────────── story.append(Spacer(1, 8)) story.append(HRFlowable(width="100%", thickness=0.5, color=TEAL)) story.append(Spacer(1, 3)) story.append(note( "Sources: IDSA 2025 Complicated UTI Guidelines (Jul 2025) · AUA/CUA/SUFU 2025 rUTI Guideline Update · " "Harrison's Principles of Internal Medicine 22E (2025) · Tintinalli's Emergency Medicine · " "Nelson Z et al. JAMA Netw Open 2024 (PMID 39495518) · Zahavi I et al. Clin Microbiol Infect 2025 (PMID 40228579). " "★ Gepotidacin FDA-approved March 2025 — first new antibiotic class for uncomplicated UTI in ~30 years.", color=colors.HexColor("#555555") )) doc.build(story) print(f"PDF created: {OUTPUT}") build_pdf() PYEOF python /tmp/workspace/uti-pdf/generate_uti_pdf.py

Running Command

ls -lh /tmp/workspace/uti-pdf/UTI_Antibiotic_Quick_Reference.pdf

Your quick reference PDF is ready:

UTI Antibiotic Quick Reference

PDF Document · PDF


What's inside (6 color-coded sections):
  1. Uncomplicated Cystitis - Women - All first-line agents (nitrofurantoin, TMP-SMX, fosfomycin, pivmecillinam) with doses and duration. Gepotidacin (FDA-approved March 2025) highlighted as a new option. Fluoroquinolones flagged in red as "avoid routinely."
  2. Uncomplicated Cystitis - Men - Longer 7-day courses, with notes on culture requirements and prostatitis consideration.
  3. Pyelonephritis & Complicated UTI - IV and oral agents from fluoroquinolones through carbapenems, with carbapenem rows highlighted for stewardship.
  4. Duration Summary Table - 2025 IDSA updates clearly marked (shorter 5-7 day FQ courses, 7-day non-FQ courses replacing the old 10-14 day standard).
  5. Special Populations - Pregnancy, renal failure, ESBL organisms, recurrent UTI, and CAUTI, with "Avoid" column in red.
  6. Rapid Diagnosis Pearls - Dipstick, urinalysis, and culture thresholds at a glance.
Sources cited at the bottom include IDSA 2025, Harrison's 22E, Tintinalli's, and the two recent PubMed references (PMID 39495518 and 40228579).
This is a shared conversation. Sign in to Orris to start your own chat.