List of top 30 oral antibiotics in general practice in india with famous brand names and uses in detail
top oral antibiotics general practice India brand names 2024
commonly prescribed oral antibiotics India brand names amoxicillin azithromycin cefixime doxycycline metronidazole uses
| # | Drug | Top India Brand | Class | Primary Use |
|---|---|---|---|---|
| 1 | Amoxicillin | Mox, Novamox | Aminopenicillin | RTI, ENT, dental |
| 2 | Amoxicillin-Clavulanate | Augmentin, Clavam | Penicillin + BLI | Resistant RTI, bite wounds |
| 3 | Ampicillin | Roscillin | Aminopenicillin | Mostly parenteral now |
| 4 | Cloxacillin | Clox, Bioclox | Penicillinase-resistant | MSSA skin/bone |
| 5 | Cephalexin | Sporidex, Ibilex | 1st-Gen Cephalosporin | SSTI, UTI, prophylaxis |
| 6 | Cefadroxil | Droxyl, Odroxil | 1st-Gen Cephalosporin | Pharyngitis, SSTI, UTI |
| 7 | Cefuroxime axetil | Zinnat, Ceftin | 2nd-Gen Cephalosporin | CAP, AECB, complicated UTI |
| 8 | Cefixime | Taxim-O, Zifi | 3rd-Gen Cephalosporin | Typhoid, UTI, gonorrhea |
| 9 | Cefpodoxime | Cepodem, Cefpod | 3rd-Gen Cephalosporin | CAP, sinusitis, UTI |
| 10 | Cefdinir | Cednir, Omnicef | 3rd-Gen Cephalosporin | RTI, otitis media |
| 11 | Azithromycin | Azithral, Azee | Macrolide | Atypical pneumonia, STIs |
| 12 | Clarithromycin | Claribid, Klaricid | Macrolide | H. pylori, CAP |
| 13 | Erythromycin | Erythrocin, Althrocin | Macrolide | Penicillin-allergic, acne |
| 14 | Ciprofloxacin | Cifran, Ciplox | Fluoroquinolone (2G) | UTI, typhoid, diarrhea |
| 15 | Ofloxacin | Zanocin, Oflox | Fluoroquinolone (2G) | UTI, PID, STIs |
| 16 | Levofloxacin | Lox, Glevo | Fluoroquinolone (3G) | CAP, complicated UTI |
| 17 | Moxifloxacin | Avelox, Moxiford | Fluoroquinolone (4G) | CAP, sinusitis, AECB |
| 18 | Doxycycline | Doxicip, Doxt | Tetracycline | Scrub typhus, acne, atypical |
| 19 | Minocycline | Minoz, Minolox | Tetracycline | Acne, MRSA, rickettsia |
| 20 | Metronidazole | Flagyl, Metrogyl | Nitroimidazole | Amoebiasis, BV, anaerobes |
| 21 | Tinidazole | Tiniba, Fasigyn | Nitroimidazole | Giardia, amoebiasis, BV |
| 22 | Secnidazole | Secnil, Sindose | Nitroimidazole | Single-dose amoebiasis, BV |
| 23 | Cotrimoxazole | Septran, Bactrim | Sulfonamide+TMP | PCP, UTI, nocardia |
| 24 | Clindamycin | Dalacin C, Clinmycin | Lincosamide | Dental, MRSA, osteomyelitis |
| 25 | Nitrofurantoin | Furadantin, Niftran | Nitrofuran | Uncomplicated lower UTI |
| 26 | Ofloxacin+Ornidazole | Zanocin-OZ, Oflomac-M | FQ+Nitroimidazole combo | GI+Pelvic mixed infections |
| 27 | Norfloxacin | Norflox, Uroflox | Fluoroquinolone (2G) | Uncomplicated UTI, diarrhea |
| 28 | Linezolid | Linox, Zyvox | Oxazolidinone | MRSA, MDR-TB, VRE |
| 29 | Rifaximin | Rcifax, Rifagut | Rifamycin (non-absorbed) | Traveler's diarrhea, HE, SIBO |
| 30 | Cefprozil | Procef, Rezol | 2nd-Gen Cephalosporin | RTI, otitis media, pharyngitis |
Disclaimer: This information is for educational reference. All antibiotic prescriptions must be based on clinical judgment, local resistance patterns, patient allergy history, and where possible, culture and sensitivity reports.
Create a quick reference PDF guide for antibiotic selection by infection type
mkdir -p /tmp/workspace/antibiotic-guide && ls /tmp/workspace/
~/antibiotic-guide/generate_pdf.py
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, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import BaseDocTemplate, PageTemplate, Frame
from reportlab.pdfgen import canvas
from reportlab.lib.colors import HexColor
import datetime
# ββ Color Palette ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
DARK_NAVY = HexColor('#1a2e4a')
MED_BLUE = HexColor('#2563eb')
LIGHT_BLUE = HexColor('#dbeafe')
ACCENT_TEAL = HexColor('#0d9488')
TEAL_LIGHT = HexColor('#ccfbf1')
ACCENT_RED = HexColor('#dc2626')
RED_LIGHT = HexColor('#fee2e2')
ACCENT_AMBER = HexColor('#d97706')
AMBER_LIGHT = HexColor('#fef3c7')
ACCENT_GREEN = HexColor('#16a34a')
GREEN_LIGHT = HexColor('#dcfce7')
ACCENT_PURPLE= HexColor('#7c3aed')
PURPLE_LIGHT = HexColor('#ede9fe')
HEADER_BG = HexColor('#0f172a')
ROW_ALT = HexColor('#f8fafc')
ROW_NORM = HexColor('#ffffff')
BORDER_GREY = HexColor('#cbd5e1')
TEXT_DARK = HexColor('#1e293b')
TEXT_MED = HexColor('#475569')
TEXT_LIGHT = HexColor('#94a3b8')
ORANGE_LIGHT = HexColor('#ffedd5')
ACCENT_ORANGE= HexColor('#ea580c')
W, H = A4
# ββ Page numbering canvas ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
class NumberedCanvas(canvas.Canvas):
def __init__(self, *args, **kwargs):
canvas.Canvas.__init__(self, *args, **kwargs)
self._saved_page_states = []
def showPage(self):
self._saved_page_states.append(dict(self.__dict__))
self._startPage()
def save(self):
num_pages = len(self._saved_page_states)
for state in self._saved_page_states:
self.__dict__.update(state)
self.draw_page_footer(num_pages)
canvas.Canvas.showPage(self)
canvas.Canvas.save(self)
def draw_page_footer(self, page_count):
page_num = self._pageNumber
self.setFillColor(HEADER_BG)
self.rect(0, 0, W, 22, fill=1, stroke=0)
self.setFillColor(colors.white)
self.setFont('Helvetica', 7.5)
self.drawString(20, 7, 'Antibiotic Quick Reference Guide β India General Practice')
self.drawRightString(W - 20, 7, f'Page {page_num} of {page_count}')
self.setStrokeColor(MED_BLUE)
self.setLineWidth(2)
self.line(0, 22, W, 22)
def make_header(canvas_obj, doc):
"""Draw the branded page header."""
canvas_obj.saveState()
# Header background
canvas_obj.setFillColor(HEADER_BG)
canvas_obj.rect(0, H - 52, W, 52, fill=1, stroke=0)
# Accent stripe
canvas_obj.setFillColor(MED_BLUE)
canvas_obj.rect(0, H - 55, W, 3, fill=1, stroke=0)
# Title
canvas_obj.setFillColor(colors.white)
canvas_obj.setFont('Helvetica-Bold', 16)
canvas_obj.drawString(20, H - 32, 'ANTIBIOTIC QUICK REFERENCE GUIDE')
canvas_obj.setFont('Helvetica', 9)
canvas_obj.setFillColor(HexColor('#94a3b8'))
canvas_obj.drawString(20, H - 47, 'India General Practice | Selection by Infection Type | 2025β26')
canvas_obj.restoreState()
def build_styles():
styles = getSampleStyleSheet()
base = dict(fontName='Helvetica', textColor=TEXT_DARK, leading=12)
section_title = ParagraphStyle('SectionTitle',
fontName='Helvetica-Bold', fontSize=11,
textColor=colors.white, leading=14,
spaceAfter=0, spaceBefore=4)
sub_note = ParagraphStyle('SubNote',
fontName='Helvetica-Oblique', fontSize=7.5,
textColor=TEXT_MED, leading=10)
cell_body = ParagraphStyle('CellBody',
fontName='Helvetica', fontSize=8,
textColor=TEXT_DARK, leading=11, spaceAfter=1)
cell_bold = ParagraphStyle('CellBold',
fontName='Helvetica-Bold', fontSize=8.5,
textColor=DARK_NAVY, leading=11)
drug_first = ParagraphStyle('DrugFirst',
fontName='Helvetica-Bold', fontSize=8.5,
textColor=ACCENT_GREEN, leading=11)
drug_alt = ParagraphStyle('DrugAlt',
fontName='Helvetica', fontSize=8,
textColor=ACCENT_TEAL, leading=11)
drug_third = ParagraphStyle('DrugThird',
fontName='Helvetica-Oblique', fontSize=7.5,
textColor=TEXT_MED, leading=10)
warn = ParagraphStyle('Warn',
fontName='Helvetica-Bold', fontSize=7.5,
textColor=ACCENT_RED, leading=10)
toc_title = ParagraphStyle('TOCTitle',
fontName='Helvetica-Bold', fontSize=18,
textColor=DARK_NAVY, leading=22, alignment=TA_CENTER)
big_title = ParagraphStyle('BigTitle',
fontName='Helvetica-Bold', fontSize=28,
textColor=colors.white, leading=32, alignment=TA_CENTER)
return {
'section_title': section_title, 'sub_note': sub_note,
'cell_body': cell_body, 'cell_bold': cell_bold,
'drug_first': drug_first, 'drug_alt': drug_alt,
'drug_third': drug_third, 'warn': warn,
'toc_title': toc_title, 'big_title': big_title
}
# ββ DATA βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Format per row:
# (Infection, First-Line, Alternative, Notes, Duration)
RESPIRATORY_DATA = [
('Strep Pharyngitis\n(Group A Strep)',
'Amoxicillin 500mg TDS\n(Mox, Novamox)',
'Azithromycin 500mg OD x3d\n(Azithral, Azee)',
'Penicillin-allergic: Cephalexin\nor Clindamycin',
'10 days\n(Amox)'),
('Acute Otitis Media',
'Amoxicillin 500mg TDS\n(Mox, Novamox)',
'Amoxiclav 625mg BD\n(Augmentin, Clavam)',
'If failed 48β72h or recurrent;\nPenicillin allergic: Cefuroxime',
'5β7 days'),
('Acute Bacterial Sinusitis',
'Amoxicillin 500mg TDS\n(Novamox, Mox)',
'Amoxiclav 625mg BD\n(Augmentin)',
'Levofloxacin 500mg OD if\nfailed first-line',
'5β7 days'),
('Community-Acquired\nPneumonia (mild, OPD)',
'Amoxicillin 1g TDS\n(Novamox)\n+ Azithromycin 500mg OD\n(Azithral)',
'Levofloxacin 500mg OD\n(Glevo, Lox)',
'Atypicals: Doxycycline 100mg BD\n(Doxicip) as alternative',
'5β7 days'),
('AECB (Chronic Bronchitis)',
'Amoxiclav 625mg BD\n(Augmentin)',
'Levofloxacin 500mg OD\n(Lox, Glevo)',
'Mild: Azithromycin 500mg OD\nx5d acceptable',
'5β7 days'),
('Atypical Pneumonia\n(Mycoplasma/Chlamydophila)',
'Azithromycin 500mg OD\n(Azithral, Azee)',
'Doxycycline 100mg BD\n(Doxicip, Doxt)',
'Clarithromycin 500mg BD\n(Claribid) if Azithro unavail.',
'5β7 days'),
]
UTI_DATA = [
('Uncomplicated Cystitis\n(Non-pregnant women)',
'Nitrofurantoin 100mg BD\n(Niftran, Macrobid)',
'Cefixime 200mg BD\n(Taxim-O, Zifi)',
'Avoid FQ empirically (high\nresistance in India)',
'5β7 days\n(Nitrofurantoin)'),
('Uncomplicated Cystitis\n(Pregnancy β 2nd trimester)',
'Nitrofurantoin 100mg BD\n(Niftran)',
'Cephalexin 500mg QID\n(Sporidex)',
'Avoid in 1st/3rd trimester;\nAvoid TMP-SMX in 1st trimester',
'7 days'),
('Complicated UTI /\nPyelonephritis (Oral)',
'Levofloxacin 500mg OD\n(Glevo, Lox)',
'Ciprofloxacin 500mg BD\n(Cifran, Ciplox)',
'Start IV if severely ill;\nCefuroxime if FQ-resistant',
'10β14 days'),
('Recurrent UTI\n(Prophylaxis)',
'Nitrofurantoin 50mg OD\n(Niftran) β post-coital or\nnightly',
'Cotrimoxazole 480mg OD\n(Septran)',
'Based on culture sensitivity;\nassess after 6 months',
'3β6 months'),
('Asymptomatic Bacteriuria\n(Pregnancy)',
'Based on culture sensitivity\n(Cephalexin/Nitrofurantoin)',
'Amoxicillin 500mg TDS\n(Mox)',
'Always treat in pregnancy;\nrepeat culture after treatment',
'7 days'),
]
GI_DATA = [
('Typhoid / Enteric Fever\n(Outpatient)',
'Cefixime 200mg BD\n(Taxim-O, Mahacef)',
'Azithromycin 500mg OD\n(Azithral)',
'Avoid FQ β high resistance\nin India; treat 14 days with Cefixime',
'Cefixime: 14d\nAzithro: 7β10d'),
('Acute Bacterial Diarrhea\n(Shigella/Salmonella)',
'Cefixime 200mg BD\n(Taxim-O, Zifi)',
'Azithromycin 500mg OD\n(Azithral)',
'Ciprofloxacin 500mg BD if\nsensitivity confirmed',
'5 days'),
('Amoebic Dysentery /\nLiver Abscess',
'Metronidazole 400mg TDS\n(Flagyl, Metrogyl)',
'Tinidazole 2g OD\n(Fasigyn, Tiniba)',
'Follow with Diloxanide furoate\nfor luminal cysts',
'7β10 days\n(Metro)'),
('Giardiasis',
'Tinidazole 2g single dose\n(Fasigyn)',
'Metronidazole 400mg TDS\n(Flagyl)',
'Secnidazole 2g single dose\n(Secnil) β convenience option',
'Single dose\n(Tinidazole)'),
('Cholera',
'Azithromycin 1g single dose\n(Azithral) β pregnant/children',
'Doxycycline 300mg stat\n(Doxicip) β adults',
'ORS/IV rehydration is primary\ntreatment; antibiotics adjunctive',
'Single dose'),
('H. pylori Eradication\n(Triple Therapy)',
'Amoxicillin 1g BD +\nClarithromycin 500mg BD +\nPPI (Omeprazole 20mg BD)',
'Amoxicillin 1g BD +\nMetronidazole 400mg BD +\nPPI',
'Quadruple if clarithromycin\nresistance suspected (add Bismuth)',
'14 days\n(preferred)'),
('Traveler\'s Diarrhea\n(Campylobacter)',
'Azithromycin 500mg OD\n(Azithral)',
'Ciprofloxacin 500mg BD\n(Cifran)',
'Rifaximin 200mg TDS (Rcifax)\nfor non-invasive E.coli',
'3 days'),
]
STI_DATA = [
('Chlamydia\n(Uncomplicated genital)',
'Azithromycin 1g single dose\n(Azithral 1g)',
'Doxycycline 100mg BD\n(Doxicip)',
'Notify and treat partner;\ntest for other STIs',
'Single dose\n(Azithro); 7d Doxy'),
('Gonorrhea\n(Uncomplicated urogenital)',
'Cefixime 400mg single dose\n(Taxim-O 400mg)',
'Cefpodoxime 200mg\nsingle dose (Cepodem)',
'Add Azithromycin 1g for\nco-treatment of Chlamydia',
'Single dose'),
('Bacterial Vaginosis',
'Metronidazole 400mg BD\n(Metrogyl)',
'Clindamycin 300mg BD\n(Dalacin C)',
'Secnidazole 2g single dose\n(Secnil) β good compliance',
'7 days\n(Metro oral)'),
('Trichomoniasis',
'Metronidazole 2g single dose\n(Metrogyl)',
'Tinidazole 2g single dose\n(Fasigyn)',
'Treat partner simultaneously;\navoid alcohol during treatment',
'Single dose'),
('Pelvic Inflammatory\nDisease (PID) β Oral',
'Ofloxacin 400mg BD +\nMetronidazole 400mg TDS\n(Zanocin + Flagyl)',
'Doxycycline 100mg BD +\nMetronidazole 400mg TDS',
'Admit if severe; Ceftriaxone\nIM + oral follow-up',
'14 days'),
]
SKIN_DATA = [
('Impetigo\n(Non-bullous)',
'Amoxiclav 625mg BD\n(Augmentin)',
'Cephalexin 500mg QID\n(Sporidex)',
'Topical Mupirocin 2% for\nlimited lesions; oral for extensive',
'7 days'),
('Cellulitis\n(Non-purulent)',
'Amoxiclav 625mg BD\n(Augmentin)',
'Cephalexin 500mg QID\n(Sporidex, Ibilex)',
'Severe: IV Cloxacillin;\nMark borders to track progression',
'5β7 days'),
('Furuncle / Carbuncle\n(Staphylococcal)',
'Cloxacillin 500mg QID\n(Clox, Bioclox)',
'Amoxiclav 625mg BD\n(Augmentin)',
'I&D is primary; antibiotics\nfor surrounding cellulitis',
'5β7 days'),
('Community-Acquired MRSA\nSSTI (CA-MRSA)',
'Cotrimoxazole 960mg BD\n(Septran) Β± Doxycycline',
'Clindamycin 300mg TDS\n(Dalacin C, Clinmycin)',
'Linezolid 600mg BD (Linox)\nif severe; always I&D abscesses',
'5β7 days'),
('Diabetic Foot\n(Mild-Moderate)',
'Amoxiclav 625β1000mg BD\n(Augmentin)',
'Clindamycin 300mg TDS +\nCiprofloxacin 500mg BD',
'Severe/MRSA risk: Linezolid;\nWound care + glucose control',
'7β14 days'),
('Bite Wounds\n(Human/Animal)',
'Amoxiclav 625mg BD\n(Augmentin)',
'Doxycycline 100mg BD +\nMetronidazole 400mg TDS',
'Augmentin = drug of choice;\nRabies/tetanus prophylaxis',
'5β7 days\n(prophylaxis)'),
('Acne Vulgaris\n(Moderate-Severe)',
'Doxycycline 100mg BD\n(Doxicip, Doxt)',
'Minocycline 100mg BD\n(Minoz, Minolox)',
'Combine with topical retinoid;\nUsually 3β6 months course',
'3β6 months'),
]
BONE_DATA = [
('Osteomyelitis\n(MSSA, oral step-down)',
'Cloxacillin 500mg QID\n(Clox)',
'Cephalexin 1g QID\n(Sporidex)',
'After initial IV; continue\n4β6 weeks total',
'4β6 weeks\ntotal'),
('Osteomyelitis\n(MRSA, oral)',
'Linezolid 600mg BD\n(Linox, Zyvox)',
'Cotrimoxazole 960mg BD\n(Septran)',
'Monitor CBC weekly\n(Linezolid); bone biopsy ideal',
'6 weeks\ntotal'),
('Septic Arthritis\n(Oral step-down)',
'Based on culture\n(commonly Cephalexin/Cloxacillin)',
'Ciprofloxacin 500mg BD\n(Cifran) if Gram-neg',
'Start IV; oral only after\nclinical improvement',
'4β6 weeks'),
]
TROPICAL_DATA = [
('Scrub Typhus\n(Rickettsia)',
'Doxycycline 100mg BD\n(Doxicip, Doxt)',
'Azithromycin 500mg OD\n(Azithral) β pregnancy/children',
'Start empirically in\nendemic areas; do not wait for serology',
'7 days'),
('Leptospirosis (Mild)',
'Doxycycline 100mg BD\n(Doxicip)',
'Amoxicillin 500mg TDS\n(Novamox)',
'Severe: IV Penicillin or\nCeftriaxone (hospital admission)',
'7 days'),
('Brucellosis',
'Doxycycline 100mg BD +\nRifampicin 600mg OD\n(Doxicip + Rifampicin)',
'Doxycycline + Streptomycin IM\n(1g/day IM x 21 days)',
'Combination mandatory;\nRifampicin for 6 weeks (with Doxy)',
'6 weeks'),
('Malaria Prophylaxis\n(Chloroquine-resistant zones)',
'Doxycycline 100mg OD\n(Doxicip)',
'Atovaquone-Proguanil\n(Malanil)',
'Start 1β2 days before travel;\ncontinue 4 weeks after return',
'Duration of\nexposure + 4 wks'),
('Dengue / Chikungunya',
'Supportive only\n(No antibiotics needed)',
'β',
'Antibiotics NOT indicated;\nAvoid NSAIDs in dengue (bleeding risk)',
'N/A'),
]
MISC_DATA = [
('Dental Abscess /\nOral Infections',
'Amoxiclav 625mg BD\n(Augmentin)',
'Metronidazole 400mg TDS +\nAmoxicillin 500mg TDS',
'Penicillin-allergic:\nClindamycin 300mg TDS',
'5β7 days'),
('Dental Prophylaxis\n(Before procedures)',
'Amoxicillin 2g single dose\n1h before procedure',
'Clindamycin 600mg\n(Dalacin C) if Pen-allergic',
'For high-risk cardiac patients\n(prosthetic valves, previous IE)',
'Single dose'),
('Hepatic Encephalopathy\n(Prevention)',
'Rifaximin 550mg BD\n(Rcifax, Rifagut)',
'Lactulose + Rifaximin\ncombination',
'Rifaximin: poorly absorbed;\nlong-term use acceptable',
'Long-term'),
('SIBO (Small Intestinal\nBacterial Overgrowth)',
'Rifaximin 200mg TDS x14d\n(Rcifax)',
'Metronidazole 400mg TDS\n(Flagyl)',
'Breath test to confirm;\naddress underlying cause',
'14 days'),
('Pneumocystis (PCP)\nProphylaxis β HIV',
'Cotrimoxazole 960mg OD\n(Septran)',
'Dapsone 100mg OD',
'Start when CD4 < 200;\nalso covers Toxoplasma prophylaxis',
'Until CD4 > 200\nfor 3 months'),
]
WARNING_NOTES = [
('β Fluoroquinolone Resistance', 'E. coli FQ resistance >60β70% in many Indian cities. Avoid empirical FQ for uncomplicated UTI.'),
('β Typhoid Resistance', 'Nalidixic acid-resistant S. Typhi common. Cefixime or Azithromycin preferred over Ciprofloxacin for enteric fever.'),
('β FDC Combinations', 'Fixed-dose combinations (e.g. Ofloxacin+Ornidazole) are popular in India but often irrational. Use only when both components are genuinely indicated.'),
('β Duration Matters', 'Complete full antibiotic course. Stopping early causes resistance. Monitor for C. difficile with prolonged broad-spectrum use.'),
('β Pregnancy Caution', 'Avoid: Fluoroquinolones, Tetracyclines, TMP-SMX (1st trimester), Nitrofurantoin (3rd trimester), Metronidazole (1st trimester).'),
('β Culture First', 'Send swab/urine/blood culture before starting antibiotics whenever feasible. Adjust therapy based on sensitivity reports.'),
]
def section_header(text, bg_color, styles):
data = [[Paragraph(text, styles['section_title'])]]
t = Table(data, colWidths=[W - 3*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg_color),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('ROUNDEDCORNERS', [4,4,4,4]),
]))
return t
def make_table(data_rows, styles, col_widths=None):
S = styles
if col_widths is None:
col_widths = [4.5*cm, 4.8*cm, 4.8*cm, 5.2*cm, 2.1*cm]
header_row = [
Paragraph('<b>Infection</b>', S['cell_bold']),
Paragraph('<b>First-Line Drug(s)</b>', S['cell_bold']),
Paragraph('<b>Alternative</b>', S['cell_bold']),
Paragraph('<b>Notes / Special Populations</b>', S['cell_bold']),
Paragraph('<b>Duration</b>', S['cell_bold']),
]
rows = [header_row]
for i, (inf, first, alt, notes, dur) in enumerate(data_rows):
row = [
Paragraph(inf, S['cell_bold']),
Paragraph(first.replace('\n', '<br/>'), S['drug_first']),
Paragraph(alt.replace('\n', '<br/>'), S['drug_alt']),
Paragraph(notes.replace('\n', '<br/>'), S['cell_body']),
Paragraph(dur.replace('\n', '<br/>'), S['cell_body']),
]
rows.append(row)
t = Table(rows, colWidths=col_widths, repeatRows=1)
style_cmds = [
('BACKGROUND', (0,0), (-1,0), DARK_NAVY),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 8.5),
('TOPPADDING', (0,0), (-1,0), 6),
('BOTTOMPADDING', (0,0), (-1,0), 6),
('GRID', (0,0), (-1,-1), 0.4, BORDER_GREY),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,1), (-1,-1), 5),
('BOTTOMPADDING', (0,1), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
('ROWBACKGROUNDS', (0,1), (-1,-1), [ROW_NORM, ROW_ALT]),
('LINEBELOW', (0,0), (-1,0), 1.5, MED_BLUE),
]
t.setStyle(TableStyle(style_cmds))
return t
def make_warning_table(styles):
S = styles
header = [Paragraph('<b>β IMPORTANT WARNINGS & INDIA-SPECIFIC NOTES</b>', S['section_title'])]
header_row = [header]
rows_data = []
for title, note in WARNING_NOTES:
rows_data.append([
Paragraph(f'<b>{title}</b>', ParagraphStyle('wt', fontName='Helvetica-Bold', fontSize=8, textColor=ACCENT_RED, leading=11)),
Paragraph(note, ParagraphStyle('wn', fontName='Helvetica', fontSize=8, textColor=TEXT_DARK, leading=11)),
])
header_t = Table(header_row, colWidths=[W - 3*cm])
header_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), ACCENT_RED),
('LEFTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
]))
warn_t = Table(rows_data, colWidths=[5.2*cm, 16.0*cm])
warn_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), RED_LIGHT),
('GRID', (0,0), (-1,-1), 0.4, HexColor('#fca5a5')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
]))
return header_t, warn_t
def make_legend_table(styles):
S = styles
legend_items = [
(ACCENT_GREEN, 'First-Line Drug', 'Preferred empirical choice per Indian treatment guidelines'),
(ACCENT_TEAL, 'Alternative Drug', 'Used when first-line is contraindicated, fails, or causes allergy'),
(TEXT_MED, 'Third-Line / Note', 'Reserve for specific indications; check sensitivity'),
]
rows = []
for color, label, desc in legend_items:
swatch = Table([['']], colWidths=[1*cm], rowHeights=[0.5*cm])
swatch.setStyle(TableStyle([('BACKGROUND', (0,0), (0,0), color), ('BOX', (0,0), (0,0), 0.5, colors.white)]))
rows.append([
swatch,
Paragraph(f'<b>{label}</b>', ParagraphStyle('ll', fontName='Helvetica-Bold', fontSize=8, textColor=color, leading=11)),
Paragraph(desc, ParagraphStyle('ld', fontName='Helvetica', fontSize=7.5, textColor=TEXT_MED, leading=10)),
])
t = Table(rows, colWidths=[1.2*cm, 4*cm, 12*cm])
t.setStyle(TableStyle([
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 4),
]))
return t
# ββ COVER PAGE βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def make_cover(styles):
elements = []
# Big spacing for visual balance
elements.append(Spacer(1, 3*cm))
# Main title block
cover_title_data = [[
Paragraph('ANTIBIOTIC', ParagraphStyle('ct1', fontName='Helvetica-Bold', fontSize=38, textColor=colors.white, leading=42, alignment=TA_CENTER)),
]]
cover_title_data2 = [[
Paragraph('QUICK REFERENCE GUIDE', ParagraphStyle('ct2', fontName='Helvetica-Bold', fontSize=22, textColor=HexColor('#93c5fd'), leading=26, alignment=TA_CENTER)),
]]
t1 = Table(cover_title_data, colWidths=[W - 3*cm])
t1.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_NAVY),
('TOPPADDING', (0,0), (-1,-1), 18),
('BOTTOMPADDING', (0,0), (-1,-1), 0),
('LEFTPADDING', (0,0), (-1,-1), 20),
]))
t2 = Table(cover_title_data2, colWidths=[W - 3*cm])
t2.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_NAVY),
('TOPPADDING', (0,0), (-1,-1), 0),
('BOTTOMPADDING', (0,0), (-1,-1), 18),
('LEFTPADDING', (0,0), (-1,-1), 20),
]))
elements.append(t1)
elements.append(t2)
elements.append(Spacer(1, 0.5*cm))
# Subtitle bar
sub_data = [[Paragraph('India General Practice | Selection by Infection Type | Edition 2025β26',
ParagraphStyle('csub', fontName='Helvetica', fontSize=12, textColor=DARK_NAVY, leading=16, alignment=TA_CENTER))]]
sub_t = Table(sub_data, colWidths=[W - 3*cm])
sub_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), LIGHT_BLUE),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
]))
elements.append(sub_t)
elements.append(Spacer(1, 1*cm))
# Contents list
sections = [
('π«', 'Respiratory Tract Infections', 'URTI, pharyngitis, sinusitis, CAP, AECB, atypical pneumonia'),
('π¬', 'Urinary Tract Infections', 'Cystitis, pyelonephritis, UTI in pregnancy, prophylaxis'),
('π½', 'Gastrointestinal Infections', 'Typhoid, amoebiasis, H. pylori, diarrhea, cholera'),
('π©Ί', 'Sexually Transmitted Infections', 'Chlamydia, gonorrhea, BV, trichomoniasis, PID'),
('π©Ή', 'Skin & Soft Tissue Infections', 'Cellulitis, MRSA, impetigo, diabetic foot, acne, bites'),
('π¦΄', 'Bone & Joint Infections', 'Osteomyelitis (MSSA/MRSA), septic arthritis'),
('π‘', 'Tropical & Endemic Diseases', 'Scrub typhus, leptospirosis, brucellosis, malaria'),
('π', 'Miscellaneous', 'Dental, HE prophylaxis, SIBO, PCP prophylaxis'),
]
toc_rows = []
for icon, section, detail in sections:
toc_rows.append([
Paragraph(icon, ParagraphStyle('icon', fontName='Helvetica-Bold', fontSize=14, leading=18, alignment=TA_CENTER)),
Paragraph(f'<b>{section}</b><br/><font size="8" color="#64748b">{detail}</font>',
ParagraphStyle('toc_item', fontName='Helvetica', fontSize=10, leading=15, textColor=DARK_NAVY)),
])
toc_t = Table(toc_rows, colWidths=[1.2*cm, W - 3*cm - 1.2*cm])
toc_t.setStyle(TableStyle([
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('ROWBACKGROUNDS', (0,0), (-1,-1), [LIGHT_BLUE, colors.white]),
('BOX', (0,0), (-1,-1), 0.5, BORDER_GREY),
('LINEBELOW', (0,0), (-1,-1), 0.3, BORDER_GREY),
]))
elements.append(toc_t)
elements.append(Spacer(1, 1*cm))
# Disclaimer
disc = Paragraph(
'<b>Disclaimer:</b> This guide is for educational reference only. Always prescribe antibiotics based on clinical '
'assessment, local resistance patterns, allergy history, and culture/sensitivity reports where available. '
'Drug doses may vary by weight, renal/hepatic function, and patient age. Refer to current NCDC/WHO/institutional '
'guidelines for definitive treatment protocols.',
ParagraphStyle('disc', fontName='Helvetica-Oblique', fontSize=7.5, textColor=TEXT_MED, leading=11)
)
disc_t = Table([[disc]], colWidths=[W - 3*cm])
disc_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), AMBER_LIGHT),
('BOX', (0,0), (-1,-1), 0.8, ACCENT_AMBER),
('TOPPADDING', (0,0), (-1,-1), 8),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
]))
elements.append(disc_t)
elements.append(PageBreak())
return elements
# ββ MAIN BUILD βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def build_pdf():
outpath = '/tmp/workspace/antibiotic-guide/Antibiotic_Quick_Reference_India.pdf'
doc = BaseDocTemplate(
outpath, pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=2.2*cm, bottomMargin=1.5*cm,
title='Antibiotic Quick Reference Guide β India',
author='General Practice Reference',
subject='Antibiotic selection by infection type',
)
# COVER page (no header/footer) β using a blank template
cover_frame = Frame(0, 0, W, H, leftPadding=1.5*cm, rightPadding=1.5*cm,
topPadding=1.5*cm, bottomPadding=1.5*cm)
cover_template = PageTemplate(id='Cover', frames=[cover_frame])
cover_template.beforeDrawPage = lambda c, d: (
c.setFillColor(HEADER_BG),
c.rect(0, 0, W, H, fill=1, stroke=0),
c.setFillColor(MED_BLUE),
c.rect(0, 0, W, 8, fill=1, stroke=0),
c.rect(0, H - 8, W, 8, fill=1, stroke=0),
)
# Content pages
content_frame = Frame(
1.5*cm, 1.5*cm,
W - 3*cm, H - 3.8*cm, # leave room for header + footer
leftPadding=0, rightPadding=0,
topPadding=0, bottomPadding=0
)
content_template = PageTemplate(id='Content', frames=[content_frame], onPage=make_header)
doc.addPageTemplates([cover_template, content_template])
styles = build_styles()
elems = []
# Cover
elems.extend(make_cover(styles))
# Switch to content template
from reportlab.platypus import NextPageTemplate
elems.append(NextPageTemplate('Content'))
def section(title, bg, data, extra_space=True):
block = []
block.append(section_header(title, bg, styles))
block.append(make_table(data, styles))
if extra_space:
block.append(Spacer(1, 0.4*cm))
return KeepTogether(block[:2]) if len(data) <= 3 else block
# LEGEND
legend_title_data = [[Paragraph('<b>COLOR LEGEND</b>', styles['section_title'])]]
legend_header_t = Table(legend_title_data, colWidths=[W - 3*cm])
legend_header_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_NAVY),
('LEFTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
]))
legend_content_t = make_legend_table(styles)
legend_wrap = Table([[legend_content_t]], colWidths=[W - 3*cm])
legend_wrap.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), HexColor('#f1f5f9')),
('BOX', (0,0), (-1,-1), 0.5, BORDER_GREY),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
]))
elems.append(KeepTogether([legend_header_t, legend_wrap]))
elems.append(Spacer(1, 0.4*cm))
# 1. Respiratory
s = section('π« RESPIRATORY TRACT INFECTIONS', MED_BLUE, RESPIRATORY_DATA)
if isinstance(s, list): elems.extend(s)
else: elems.append(s)
# 2. UTI
s = section('π¬ URINARY TRACT INFECTIONS', ACCENT_TEAL, UTI_DATA)
if isinstance(s, list): elems.extend(s)
else: elems.append(s)
# 3. GI
s = section('π½ GASTROINTESTINAL INFECTIONS', ACCENT_AMBER, GI_DATA)
if isinstance(s, list): elems.extend(s)
else: elems.append(s)
# 4. STI
s = section('π©Ί SEXUALLY TRANSMITTED INFECTIONS', ACCENT_PURPLE, STI_DATA)
if isinstance(s, list): elems.extend(s)
else: elems.append(s)
# 5. Skin
s = section('π©Ή SKIN & SOFT TISSUE INFECTIONS', ACCENT_ORANGE, SKIN_DATA)
if isinstance(s, list): elems.extend(s)
else: elems.append(s)
# 6. Bone
s = section('𦴠BONE & JOINT INFECTIONS', HexColor('#b45309'), BONE_DATA)
if isinstance(s, list): elems.extend(s)
else: elems.append(s)
# 7. Tropical
s = section('π‘ TROPICAL & ENDEMIC DISEASES (India)', HexColor('#0e7490'), TROPICAL_DATA)
if isinstance(s, list): elems.extend(s)
else: elems.append(s)
# 8. Misc
s = section('π MISCELLANEOUS', HexColor('#4338ca'), MISC_DATA)
if isinstance(s, list): elems.extend(s)
else: elems.append(s)
# Warnings
w_header, w_body = make_warning_table(styles)
elems.append(Spacer(1, 0.2*cm))
elems.append(w_header)
elems.append(w_body)
elems.append(Spacer(1, 0.4*cm))
# Final note
final_note = Paragraph(
'<b>Key References:</b> NCDC National Treatment Guidelines for Antimicrobial Use in Infectious Diseases (India) | '
'WHO AWaRe Classification 2023 | KD Tripathi Essentials of Medical Pharmacology 9th Ed. | '
'Harrison\'s Principles of Internal Medicine 22E (2025)',
ParagraphStyle('fnote', fontName='Helvetica-Oblique', fontSize=7, textColor=TEXT_LIGHT, leading=10)
)
final_t = Table([[final_note]], colWidths=[W - 3*cm])
final_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), HexColor('#f8fafc')),
('BOX', (0,0), (-1,-1), 0.4, BORDER_GREY),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
]))
elems.append(final_t)
doc.build(elems, canvasmaker=NumberedCanvas)
print(f'PDF saved to: {outpath}')
return outpath
if __name__ == '__main__':
path = build_pdf()
print(f'SUCCESS: {path}')
cd /tmp/workspace/antibiotic-guide && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/antibiotic-guide/Antibiotic_Quick_Reference_India.pdf
python3 -c " import pdfplumber with pdfplumber.open('/tmp/workspace/antibiotic-guide/Antibiotic_Quick_Reference_India.pdf') as pdf: print(f'Total pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): text = page.extract_text() or '' print(f'Page {i+1}: {len(text)} chars | preview: {text[:120].strip()}') "
Antibiotic Quick Reference India
PDF Document Β· PDF
| Section | Color | Infections Covered |
|---|---|---|
| π« Respiratory | Blue | Pharyngitis, otitis media, sinusitis, CAP, AECB, atypical pneumonia |
| π¬ UTI | Teal | Cystitis, pyelonephritis, UTI in pregnancy, prophylaxis |
| π½ GI | Amber | Typhoid, amoebiasis, H. pylori (triple therapy), cholera, giardiasis |
| π©Ί STI | Purple | Chlamydia, gonorrhea, BV, trichomoniasis, PID |
| π©Ή Skin/SSTI | Orange | Cellulitis, MRSA, impetigo, diabetic foot, acne, bites |
| 𦴠Bone & Joint | Brown | Osteomyelitis (MSSA/MRSA), septic arthritis |
| π‘ Tropical | Cyan | Scrub typhus, leptospirosis, brucellosis, malaria |
| π Miscellaneous | Indigo | Dental, hepatic encephalopathy, SIBO, PCP prophylaxis |
Make such pdf for parental antibiotics
~/antibiotic-guide/generate_parenteral_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
KeepTogether, PageBreak, NextPageTemplate, BaseDocTemplate,
PageTemplate, Frame
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.lib.colors import HexColor
from reportlab.pdfgen import canvas
# ββ Palette ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
DARK_NAVY = HexColor('#0f172a')
NAVY2 = HexColor('#1e3a5f')
MED_BLUE = HexColor('#1d4ed8')
LIGHT_BLUE = HexColor('#dbeafe')
ACCENT_TEAL = HexColor('#0f766e')
TEAL_LIGHT = HexColor('#ccfbf1')
ACCENT_RED = HexColor('#b91c1c')
RED_LIGHT = HexColor('#fee2e2')
ACCENT_AMBER = HexColor('#b45309')
AMBER_LIGHT = HexColor('#fef3c7')
ACCENT_GREEN = HexColor('#15803d')
GREEN_LIGHT = HexColor('#dcfce7')
ACCENT_PURPLE = HexColor('#6d28d9')
PURPLE_LIGHT = HexColor('#ede9fe')
ACCENT_ORANGE = HexColor('#c2410c')
ORANGE_LIGHT = HexColor('#ffedd5')
ACCENT_ROSE = HexColor('#be123c')
ROSE_LIGHT = HexColor('#ffe4e6')
ACCENT_CYAN = HexColor('#0e7490')
CYAN_LIGHT = HexColor('#cffafe')
ACCENT_LIME = HexColor('#4d7c0f')
LIME_LIGHT = HexColor('#ecfccb')
HEADER_BG = HexColor('#0f172a')
ROW_ALT = HexColor('#f8fafc')
ROW_NORM = HexColor('#ffffff')
BORDER_GREY = HexColor('#cbd5e1')
TEXT_DARK = HexColor('#1e293b')
TEXT_MED = HexColor('#475569')
TEXT_LIGHT = HexColor('#94a3b8')
W, H = A4
# ββ Numbered Canvas ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
class NumberedCanvas(canvas.Canvas):
def __init__(self, *args, **kwargs):
canvas.Canvas.__init__(self, *args, **kwargs)
self._saved_page_states = []
def showPage(self):
self._saved_page_states.append(dict(self.__dict__))
self._startPage()
def save(self):
num_pages = len(self._saved_page_states)
for state in self._saved_page_states:
self.__dict__.update(state)
self.draw_footer(num_pages)
canvas.Canvas.showPage(self)
canvas.Canvas.save(self)
def draw_footer(self, page_count):
self.setFillColor(HEADER_BG)
self.rect(0, 0, W, 22, fill=1, stroke=0)
self.setFillColor(colors.white)
self.setFont('Helvetica', 7.5)
self.drawString(20, 7, 'Parenteral Antibiotic Quick Reference Guide β India Hospital Practice')
self.drawRightString(W - 20, 7, f'Page {self._pageNumber} of {page_count}')
self.setStrokeColor(ACCENT_RED)
self.setLineWidth(2)
self.line(0, 22, W, 22)
def make_header(c, doc):
c.saveState()
c.setFillColor(HEADER_BG)
c.rect(0, H - 54, W, 54, fill=1, stroke=0)
c.setFillColor(ACCENT_RED)
c.rect(0, H - 57, W, 3, fill=1, stroke=0)
c.setFillColor(colors.white)
c.setFont('Helvetica-Bold', 15)
c.drawString(20, H - 33, 'PARENTERAL ANTIBIOTIC QUICK REFERENCE GUIDE')
c.setFont('Helvetica', 8.5)
c.setFillColor(HexColor('#94a3b8'))
c.drawString(20, H - 48, 'India Hospital / ICU Practice | IV/IM Selection by Infection Type | 2025β26')
c.restoreState()
# ββ Styles βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def build_styles():
S = {}
S['sec_title'] = ParagraphStyle('SecTitle', fontName='Helvetica-Bold',
fontSize=10.5, textColor=colors.white, leading=14)
S['cell_bold'] = ParagraphStyle('CellBold', fontName='Helvetica-Bold',
fontSize=8, textColor=DARK_NAVY, leading=11)
S['cell_body'] = ParagraphStyle('CellBody', fontName='Helvetica',
fontSize=7.5, textColor=TEXT_DARK, leading=11, spaceAfter=1)
S['drug_first'] = ParagraphStyle('DrugFirst', fontName='Helvetica-Bold',
fontSize=8, textColor=ACCENT_GREEN, leading=11)
S['drug_alt'] = ParagraphStyle('DrugAlt', fontName='Helvetica',
fontSize=7.5, textColor=ACCENT_TEAL, leading=11)
S['warn_title'] = ParagraphStyle('WarnTitle', fontName='Helvetica-Bold',
fontSize=7.5, textColor=ACCENT_RED, leading=10)
S['warn_body'] = ParagraphStyle('WarnBody', fontName='Helvetica',
fontSize=7.5, textColor=TEXT_DARK, leading=10)
S['dose_tag'] = ParagraphStyle('DoseTag', fontName='Helvetica-Bold',
fontSize=7, textColor=ACCENT_AMBER, leading=10)
return S
# ββ DATA βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Columns: Infection | First-Line IV/IM + Dose + Brand | Alternative | Notes | Route/Freq/Duration
RESP_DATA = [
('Severe CAP\n(Hospitalized, non-ICU)',
'Co-amoxiclav 1.2g IV 8-hrly\n(Augmentin IV, Amoxyclav IV)\n+ Azithromycin 500mg IV OD\n(Azithral IV)',
'Ceftriaxone 1β2g IV OD\n(Monocef, Oframax)\n+ Azithromycin 500mg IV OD',
'Atypical coverage mandatory;\nswitch to oral after 48β72h\nclinical improvement',
'IV β Oral step-down\nat 48β72 h\n5β7 days total'),
('Severe CAP\n(ICU / Ventilated)',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact, Pipcin-TZ)\n+ Levofloxacin 500mg IV OD\n(Glevo IV)',
'Meropenem 1g IV 8-hrly\n(Meromer, Meronem)\n+ Azithromycin 500mg IV',
'Add Vancomycin if MRSA\npneumonia suspected;\ncheck PCT/CRP to guide duration',
'7β10 days IV\n(reassess at 72h)'),
('Hospital-Acquired\nPneumonia (HAP)',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact)',
'Meropenem 1g IV 8-hrly\n(Meromer)\nΒ± Vancomycin 15mg/kg IV\n8-hrly (Vancorid)',
'Anti-pseudomonal cover\nmandatory; de-escalate based\non culture in 48β72h',
'7β8 days\n(avoid prolonging)'),
('Aspiration Pneumonia',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact)',
'Ceftriaxone 1g IV OD +\nMetronidazole 500mg IV 8-hrly\n(Metrogyl IV)',
'Anaerobic cover essential;\nnot all aspiration episodes\nneed antibiotics',
'5β7 days'),
('Lung Abscess',
'Amoxiclav 1.2g IV 8-hrly\n(Augmentin IV)',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly + Metronidazole\n500mg IV 8-hrly',
'Long course needed;\nswitch to oral Amoxiclav\nafter initial IV response',
'IV 2β3 wks then\noral 4β6 wks total'),
('Pleural Empyema',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact)',
'Ceftriaxone 2g IV OD +\nMetronidazole 500mg IV 8-hrly',
'Drainage (ICD/VATS) mandatory;\nantibiotics adjunctive',
'4β6 weeks total'),
]
UTI_DATA = [
('Acute Pyelonephritis\n(Moderate)',
'Ceftriaxone 1β2g IV OD\n(Monocef, Oframax)',
'Ciprofloxacin 400mg IV BD\n(Ciplox IV)\n[if sensitivity confirmed]',
'E. coli FQ resistance\n>60% empirically in India;\nstep down to oral after 48β72h',
'IV 3β5 days then\noral 7β14 days total'),
('Complicated UTI /\nUrosepsis',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact)',
'Meropenem 1g IV 8-hrly\n(Meromer) if ESBL suspected',
'ESBL common in India;\nAvoid Cephalosporins for\nESBL-producing organisms',
'10β14 days\n(IV until afebrile)'),
('Catheter-Associated\nUTI (CA-UTI)',
'Based on culture/sensitivity\n(Ceftriaxone empirically\nif Gram-neg)',
'Meropenem 1g IV 8-hrly if\nESBL/Carbapenem-sensitive',
'Remove/change catheter first;\ndon\'t treat asymptomatic\nbacteriuria in catheterised pts',
'7 days\n(symptomatic)'),
('Candidal UTI\n(Candiduria)',
'Fluconazole 200β400mg IV\nthen oral (Zocon IV)',
'Amphotericin B 0.3β0.6mg/kg\nIV OD (Fungizone) if resistant',
'Treat only if symptomatic\nor immunocompromised;\nremove catheter if possible',
'14 days'),
]
SEPSIS_DATA = [
('Sepsis (Unknown\nSource β Empirical)',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact)\nΒ± Gentamicin 5mg/kg IV OD\n(Garamycin)',
'Meropenem 1g IV 8-hrly\n(Meromer) + Vancomycin\n15mg/kg IV 8-hrly',
'De-escalate in 48β72h based\non cultures; follow Sepsis-3\nprotocol; measure lactate',
'Minimum 5β7 days;\nde-escalate early'),
('Septic Shock\n(ICU)',
'Meropenem 2g IV 8-hrly\n(Meromer) + Vancomycin\n25β30mg/kg loading then\n15mg/kg 8-hrly (Vancorid)',
'Cefoperazone-Sulbactam 3g\nIV 12-hrly (Magnex-Forte)\n+ Colistin (if pan-resistant)',
'Source control paramount;\nprocalcitonin-guided\nde-escalation recommended',
'7β10 days\n(guided by PCT)'),
('Bacteremia / Primary\nBloodstream Infection',
'Based on blood culture\n(empirical: Vancomycin IV\n+ Piperacillin-Tazobactam IV)',
'Teicoplanin 400mg IV\nOD (Targocid) if MRSA',
'Two sets blood cultures before\nstarting; echocardiogram if\nS. aureus bacteremia',
'S. aureus: 14 days;\nother organisms: 7β14 days'),
('Neutropenic Fever\n(Febrile Neutropenia)',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact)',
'Cefepime 2g IV 8-hrly\n(Cefepim) or Meropenem 1g\nIV 8-hrly if unstable',
'Add Vancomycin if skin\ninfection/catheter infection;\nadd Antifungal after 72β96h fever',
'Until ANC >500;\nmin 7 days'),
]
CNS_DATA = [
('Bacterial Meningitis\n(Community-acquired adult)',
'Ceftriaxone 2g IV 12-hrly\n(Monocef 2g)',
'Chloramphenicol 1g IV 6-hrly\n(Enteromycetin)\n[if Cephalosporin allergy]',
'Add Dexamethasone 0.15mg/kg\nIV 6-hrly x4 days (1st dose\nbefore/with antibiotic)\nEmpiric Ampicillin if Listeria risk (elderly/immuno)',
'10β14 days\n(S. pneumoniae)\n21 days (Listeria)'),
('Bacterial Meningitis\n(Post-neurosurgery / Trauma)',
'Meropenem 2g IV 8-hrly\n(Meromer) + Vancomycin\n15mg/kg IV 8-hrly (Vancorid)',
'Cefepime 2g IV 8-hrly +\nVancomycin 15mg/kg IV 8-hrly',
'Gram-negatives and\nS. aureus most common;\nAcinetobacter frequent in ICU\nNeurosurgery settings',
'14β21 days\n(based on organism)'),
('Brain Abscess',
'Ceftriaxone 2g IV 12-hrly +\nMetronidazole 500mg IV 8-hrly\n(Metrogyl IV)',
'Meropenem 2g IV 8-hrly\n+ Vancomycin (if MRSA risk)',
'Neurosurgical drainage often\nrequired; prolong IV 4β6 weeks;\nfollow MRI response',
'4β6 weeks IV'),
('Tuberculous Meningitis\n(TBM)',
'HRZE regimen (Isoniazid +\nRifampicin + Pyrazinamide +\nEthambutol) β 2 months\nthen HR x10 months',
'Dexamethasone IV adjunctive\n0.3β0.4mg/kg tapered over 8 wks',
'Add Pyridoxine with INH;\nSteroids reduce mortality;\nDrug interactions with antiretrovirals',
'12 months total\nfor TBM'),
]
ABDOMINAL_DATA = [
('Intra-abdominal Sepsis /\nSecondary Peritonitis',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact)',
'Ceftriaxone 2g IV OD +\nMetronidazole 500mg IV 8-hrly\n(Metrogyl IV)',
'Source control (surgery/drainage)\nmandatory; anaerobic coverage\nessential for colonic perforation',
'4β7 days\n(after source control)'),
('Acute Cholecystitis /\nCholangitis',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact)',
'Ceftriaxone 2g IV OD +\nMetronidazole 500mg IV 8-hrly',
'Tokyo Guidelines severity:\nGrade III β early biliary\ndrainage + IV antibiotics',
'4β7 days\n(mildβmoderate)'),
('Liver Abscess\n(Pyogenic)',
'Ceftriaxone 2g IV OD +\nMetronidazole 500mg IV 8-hrly\n(Metrogyl IV)',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly',
'Drainage (percutaneous)\nfor >5cm abscess; E. coli most\ncommon organism in India',
'IV 2β3 weeks then\noral 4β6 weeks'),
('Amoebic Liver Abscess\n(Severe)',
'Metronidazole 500mg IV\n8-hrly (Metrogyl IV)',
'Tinidazole IV if available\n(Tinidazole 800mg IV BD)',
'Most respond to medical\ntherapy; drainage only if\n>10cm or left lobe/impending rupture',
'IV 7β10 days then\noral completion'),
('Spontaneous Bacterial\nPeritonitis (SBP)',
'Cefotaxime 2g IV 8-hrly\n(Claforan) or Ceftriaxone\n2g IV OD (Monocef)',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly if nosocomial SBP',
'Give IV Albumin 1.5g/kg\nDay 1 + 1g/kg Day 3;\nreduces renal failure/mortality;\nPrimary prophylaxis: Norfloxacin\n400mg OD (in Child-Pugh C)',
'5 days IV'),
('Typhoid with\nComplications',
'Ceftriaxone 2g IV OD\n(Monocef, Oframax)',
'Azithromycin 500mg IV OD\n(Azithral IV)',
'IV for all complicated\ntyphoid; intestinal perforation\nrequires surgery + broad-spectrum\ncover (add Metronidazole)',
'10β14 days IV'),
]
BONE_DATA = [
('Acute Osteomyelitis\n(Haematogenous)',
'Cloxacillin 2g IV 6-hrly\n(Cloxacillin inj) β MSSA\nor Cefazolin 2g IV 8-hrly',
'Vancomycin 15β20mg/kg\nIV 8-hrly (Vancorid) β if\nMRSA suspected',
'S. aureus most common;\nMRI for diagnosis; bone biopsy\nbefore starting if possible;\nseek orthopedic input',
'IV 4β6 weeks\nthen oral step-down'),
('Diabetic Foot\nOsteomyelitis (MSSA)',
'Cloxacillin 2g IV 6-hrly +\nMetronidazole 500mg IV 8-hrly',
'Amoxiclav 1.2g IV 8-hrly\n(Augmentin IV)',
'Vascular assessment;\nbone biopsy for organism ID;\noral step-down with Cloxacillin/\nClindamycin after initial IV response',
'IV 4β6 weeks total'),
('Diabetic Foot\nOsteomyelitis (MRSA)',
'Vancomycin 15β20mg/kg\nIV 8-hrly (Vancorid)',
'Linezolid 600mg IV BD\n(Linox IV, Zyvox IV)',
'Linezolid: monitor CBC weekly;\nexcellent bone bioavailability;\nconsider oral Linezolid for\nstep-down',
'IV 4β6 weeks;\noral Linezolid step-down'),
('Septic Arthritis',
'Cloxacillin 2g IV 6-hrly\n(MSSA) or Ceftriaxone\n2g IV OD (Gram-neg)',
'Vancomycin 15mg/kg IV\n8-hrly if MRSA suspected',
'Drainage (arthrocentesis/\narthroscopy) is primary therapy;\ncontinue until synovial WBC <50k',
'IV 2β4 weeks;\noral step-down after\nclinical improvement'),
]
SKIN_DATA = [
('Severe Cellulitis /\nErysipelas',
'Cloxacillin 2g IV 6-hrly\n(MSSA)',
'Cefazolin 2g IV 8-hrly\nor Amoxiclav 1.2g IV 8-hrly\n(Augmentin IV)',
'Mark lesion borders;\nIV until fever resolves\nand lesion not progressing;\nstep down to oral Cefalexin',
'IV 3β5 days then\noral 7β10 days total'),
('MRSA Skin/Soft\nTissue Infection (Severe)',
'Vancomycin 15β20mg/kg\nIV 8-hrly (Vancorid)',
'Teicoplanin 12mg/kg IV BD\nx3 doses then 6mg/kg OD\n(Targocid)',
'I&D for abscesses;\nmonitor vancomycin trough\n15β20 mcg/mL; AUC-guided\ndosing preferred',
'7β14 days'),
('Necrotizing Fasciitis',
'Meropenem 1g IV 8-hrly +\nClindamycin 900mg IV 8-hrly +\nVancomycin 15mg/kg IV 8-hrly',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly + Clindamycin\n900mg IV 8-hrly',
'SURGICAL EMERGENCY:\ndebridement within hours;\nClindamycin inhibits toxin\nproduction (Group A Strep)',
'IV until wound\nhealed post-surgery'),
('Gas Gangrene\n(Clostridial Myonecrosis)',
'Benzylpenicillin 4MU IV\n4-hrly + Clindamycin\n900mg IV 8-hrly',
'Meropenem 1g IV 8-hrly +\nClindamycin 900mg IV 8-hrly',
'SURGICAL EMERGENCY;\namputation may be needed;\nHyperbaric O2 adjunctive;\nClindamycin blocks toxin',
'IV until wound healed'),
('Burns Wound\nInfection',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact)',
'Meropenem 1g IV 8-hrly +\nVancomycin 15mg/kg IV 8-hrly',
'P. aeruginosa most common;\ntopical Silver Sulfadiazine;\nculture-guided adjustment;\nearly enteral nutrition',
'7β14 days\n(culture-guided)'),
]
CARDIAC_DATA = [
('Infective Endocarditis\n(Native Valve β Streptococcal)',
'Benzylpenicillin 12β18MU\nIV/day in 6 divided doses\n(Crystapen)',
'Ceftriaxone 2g IV OD\n(Monocef 2g)',
'Confirm with ECHO;\nDuke criteria for diagnosis;\nadd Gentamicin 1mg/kg IV 8-hrly\nfor synergy in first 2 weeks',
'4 weeks IV\n(uncomplicated)'),
('Infective Endocarditis\n(Staphylococcal / MRSA)',
'Vancomycin 15β20mg/kg\nIV 8-hrly (Vancorid)',
'Daptomycin 6β8mg/kg IV OD\n[if available]',
'Rifampicin 300mg oral BD\nadded for prosthetic valve;\nsurgery if large vegetation\nor heart failure',
'Native valve: 6 wks\nProsthetic: β₯6 wks'),
('Infective Endocarditis\n(HACEK organisms)',
'Ceftriaxone 2g IV OD\n(Monocef)',
'Ampicillin-Sulbactam 3g\nIV 6-hrly (Unasyn)',
'Ampicillin if beta-lactamase\nnegative; FQ alternative\nif cephalosporin-intolerant',
'4 weeks IV'),
]
MDR_DATA = [
('ESBL-Producing\nEnterobacteriaceae',
'Meropenem 1g IV 8-hrly\n(Meromer, Meronem)',
'Ertapenem 1g IV OD\n(Invanz) for non-ICU',
'Do NOT use\nCephalosporins/Piperacillin-\nTazobactam for definitive ESBL\ntreatment; preserve Carbapenems',
'Based on source\n(UTI: 10β14d;\nSepsis: 14d)'),
('Carbapenem-Resistant\nEnterobacteriaceae (CRE/KPC)',
'Colistin 9MU loading then\n4.5MU IV 12-hrly (Colistin-CMS)\n+ Meropenem 2g IV 8-hrly\n(extended infusion)',
'Ceftazidime-Avibactam\n2.5g IV 8-hrly (Avycaz)\n[if KPC-producer confirmed]',
'Nephrotoxicity with Colistin;\nmonitor renal function daily;\ninfection control isolation\nmandatory',
'14 days minimum'),
('Acinetobacter baumannii\n(Pan-Drug Resistant)',
'Colistin 9MU loading then\n4.5MU IV 12-hrly\n+ Sulbactam 3g IV 6-hrly',
'Tigecycline 100mg IV loading\nthen 50mg IV 12-hrly\n(Tygacil)',
'Contact precautions;\ncombination therapy;\nTigecycline NOT for bloodstream;\nAmpicillin-Sulbactam active\nagainst some strains',
'14β21 days'),
('MRSA Bacteremia /\nDeep Infections',
'Vancomycin 25β30mg/kg\nloading then 15mg/kg IV\n8-hrly (Vancorid)\n[target AUC/MIC >400]',
'Teicoplanin 12mg/kg IV BD\nx3 then 12mg/kg OD\n(Targocid)',
'Echocardiogram for all\nS. aureus bacteremia;\nremove all foreign bodies;\nLinezolid for osteoarticular',
'Bacteremia: 14d\nEndocarditis: 6 wks\nOsteomyelitis: 6 wks'),
('Pseudomonas aeruginosa\n(Severe)',
'Piperacillin-Tazobactam 4.5g\nIV 6-hrly (Tazact)\nor Cefepime 2g IV 8-hrly',
'Meropenem 1g IV 8-hrly\n(Meromer) + Ciprofloxacin\n400mg IV 12-hrly if sensitive',
'Combination therapy for\nbacteremia/pneumonia;\nDuration: 7 days minimum\nfor non-severe\n14 days for bacteremia',
'7β14 days'),
]
SPECIAL_DATA = [
('Leptospirosis\n(Severe / Weil\'s Disease)',
'Benzylpenicillin 1.5MU IV\n6-hrly x7 days (Crystapen)',
'Ceftriaxone 1g IV OD\n(Monocef)',
'Most common in India:\nMaharashtra, Kerala post-flood;\nICU for ARDS/renal failure\n(Weil\'s disease)',
'7 days IV'),
('Scrub Typhus\n(Severe / Complicated)',
'Doxycycline 100mg IV BD\n(IV Doxycycline)',
'Azithromycin 500mg IV OD\n(Azithral IV) β pregnancy',
'IV if severe/cannot\ntake orally; switch to oral\ndoxycycline once stable;\nCommon in NE India, Himalayas',
'7 days'),
('Malaria (Severe\nP. falciparum)',
'Artesunate 2.4mg/kg IV\nat 0, 12, 24h then OD\n(IV Artesunate)',
'Quinine 20mg/kg IV\nloading then 10mg/kg 8-hrly\n+ Doxycycline IV',
'Artesunate preferred over\nQuinine (SEAQUAMAT trial);\nICU monitoring: hypoglycemia,\ncerebral malaria, ARDS',
'IV until oral possible\nthen oral ACT to\ncomplete course'),
('Tetanus\n(Adjunctive antibiotics)',
'Metronidazole 500mg IV\n8-hrly (Metrogyl IV)',
'Benzylpenicillin 1MU IV\n6-hrly',
'Antibiotics secondary to\nHuman TIG + wound debridement;\nMetronidazole preferred over\nPenicillin (less convulsant)',
'7β10 days'),
('Cholera\n(Severe / Hospitalized)',
'Azithromycin 1g IV then\noral (Azithral)',
'Doxycycline 100mg IV BD\n(IV Doxy)',
'Aggressive IV rehydration\n(Ringer\'s Lactate) is primary\ntherapy; antibiotics reduce\nduration/shedding',
'Single dose (adults);\n3 days (children)'),
('Rabies Post-Exposure\n(Infected wound antibiotics)',
'Amoxiclav 1.2g IV 8-hrly\n(Augmentin IV)',
'Ceftriaxone 1g IV OD\n(Monocef)',
'Antibiotics for wound infection\nonly β NOT for rabies itself;\nRabies immunoglobulin (RIG) +\nvaccine is the prevention',
'5β7 days\n(wound prophylaxis)'),
]
OB_GYN_DATA = [
('Chorioamnionitis\n(Intrapartum)',
'Ampicillin 2g IV 6-hrly +\nGentamicin 5mg/kg IV OD',
'Piperacillin-Tazobactam\n4.5g IV 6-hrly (if polymicrobial)',
'Continue until\n24β48h afebrile post-delivery;\nClindamycin added if\nC-section done',
'IV until 24β48h\nafebrile'),
('Post-Partum\nEndometritis',
'Clindamycin 900mg IV 8-hrly\n+ Gentamicin 5mg/kg IV OD\n(Garamycin)',
'Piperacillin-Tazobactam\n4.5g IV 6-hrly',
'Most effective regimen per\nCochrane reviews;\ncontinue until 24β48h afebrile',
'IV until 24β48h\nafebrile, then oral'),
('Septic Abortion',
'Piperacillin-Tazobactam\n4.5g IV 6-hrly (Tazact)',
'Clindamycin 900mg IV 8-hrly\n+ Gentamicin 5mg/kg IV OD',
'Surgical evacuation of uterus\nurgent; Clostridium and\nanaerobes coverage critical',
'7β10 days IV'),
('Pre-operative\nProphylaxis (C-section)',
'Cefazolin 2g IV single dose\n30β60 min before incision',
'Clindamycin 600mg IV\n(if Pen allergy)',
'Single dose adequate;\ndo NOT extend postoperatively;\nreduce SSI risk by >50%',
'Single dose'),
]
WARNING_NOTES = [
('β ESBL Epidemic in India',
'ESBL-producing E. coli and Klebsiella are extremely prevalent. Do NOT use Cephalosporins or Piperacillin-Tazobactam for definitive treatment of confirmed ESBL infections. Carbapenems are the drug of choice.'),
('β Vancomycin Dosing',
'Use AUC/MIC-guided dosing (target AUC 400β600 mgΒ·h/L). Trough-only monitoring is outdated. Load 25β30 mg/kg for seriously ill patients. Monitor renal function daily.'),
('β Aminoglycoside Toxicity',
'Gentamicin and Amikacin are nephrotoxic and ototoxic. Once-daily dosing is preferred. Monitor peak/trough levels; adjust for renal impairment. Avoid in elderly and existing CKD.'),
('β Colistin Nephrotoxicity',
'Colistin causes acute kidney injury in ~50% of patients. Use only as last resort for pan-resistant organisms. Monitor creatinine daily. Hydration and avoidance of other nephrotoxins is critical.'),
('β De-escalation Mandatory',
'Broad-spectrum empirical therapy must be de-escalated within 48β72h based on culture reports. Prolonged broad-spectrum use drives resistance. Follow PCT/CRP to guide antibiotic discontinuation.'),
('β Blood Cultures First',
'Draw TWO sets of blood cultures from DIFFERENT sites before starting antibiotics in all sepsis cases. Never delay antibiotics >1 hour in septic shock, but cultures must be drawn first.'),
('β Carbapenem Stewardship',
'Reserve Meropenem/Imipenem for ESBL, CRE, or severe infections only. Ertapenem can be used for outpatient/non-Pseudomonal coverage. Inappropriate Carbapenem use creates XDR/PDR organisms.'),
]
COMMON_PARENTERALS = [
('Benzylpenicillin\n(Penicillin G)', 'Crystapen\n(Pfizer)', 'Meningitis (Strep/Listeria),\nEndocarditis, Gas gangrene, Tetanus', '1β4 MU IV q4β6h'),
('Ampicillin', 'Roscillin inj\n(Ranbaxy)', 'Meningitis (Listeria), Chorioamnionitis,\nUTI (step-up)', '0.5β2g IV q6h'),
('Cloxacillin', 'Clox inj (Cipla)', 'MSSA osteomyelitis, cellulitis,\nsevere SSTI', '1β2g IV q4β6h'),
('Amoxiclav IV', 'Augmentin IV\n(GSK)', 'CAP, intra-abdominal, SSTI,\nbite wounds', '1.2g IV q8h'),
('Piperacillin-Tazobactam', 'Tazact (Sun)\nPipcin-TZ (Cipla)', 'Sepsis, HAP, urosepsis, ICU infections\nwith Pseudomonal risk', '4.5g IV q6h'),
('Ceftriaxone', 'Monocef (Biochem)\nOframax (Ranbaxy)', 'CAP, meningitis, typhoid, SBP,\nabdominal, bone, gonorrhea', '1β2g IV q12β24h'),
('Cefazolin', 'Reflin (Cipla)\nCefazone', 'Surgical prophylaxis, MSSA\nskin/bone (alternative to Cloxacillin)', '1β2g IV q8h'),
('Cefotaxime', 'Claforan (Sanofi)\nCefotax (Biochem)', 'SBP, neonatal meningitis,\ngonorrhea, RTI', '1β2g IV q6β8h'),
('Ceftazidime', 'Fortum (GSK)\nTazide (Cipla)', 'Pseudomonal infections,\nfebrile neutropenia', '1β2g IV q8h'),
('Cefepime', 'Cefipim (Sun)\nMaxipime', 'HAP, febrile neutropenia, UTI\n(Pseudomonal coverage)', '1β2g IV q8β12h'),
('Cefoperazone-Sulbactam', 'Magnex-Forte (Pfizer)\nSulbacef (Cipla)', 'ICU infections, HAP, intra-abdominal,\nAcinetobacter (sulbactam activity)', '1.5β3g IV q8β12h'),
('Meropenem', 'Meromer (Zydus)\nMeronem (AZ)', 'ESBL, CRE, sepsis, meningitis,\nfebrile neutropenia, HAP', '0.5β2g IV q8h'),
('Imipenem-Cilastatin', 'Tienam (MSD)\nImipem (Cipla)', 'Polymicrobial, intra-abdominal,\nICU (avoid CNS infections)', '500mgβ1g IV q6β8h'),
('Ertapenem', 'Invanz (MSD)', 'ESBL infections, non-pseudomonal\noutpatient IV therapy, diabetic foot', '1g IV/IM q24h'),
('Vancomycin', 'Vancorid (Abbott)\nVancotex', 'MRSA, Gram-pos endocarditis,\nC. diff (oral), MRSA meningitis', '15β20mg/kg IV q8β12h\n[AUC-guided]'),
('Teicoplanin', 'Targocid (Sanofi)\nTeicomine', 'MRSA, MSSA, VRE (some), endocarditis\nas Vancomycin alternative', '12mg/kg IV BD x3\nthen OD'),
('Linezolid IV', 'Linox IV (Cipla)\nZyvox IV (Pfizer)', 'MRSA pneumonia, MRSA SSTI,\nVRE, MDR-TB', '600mg IV q12h'),
('Gentamicin', 'Garamycin (Schering)\nGenatcin', 'Sepsis synergy, UTI (Gram-neg),\nchorioamnionitis combination', '5mg/kg IV OD\n[once-daily]'),
('Amikacin', 'Amikin (BMS)\nBiklin (Cipla)', 'Gentamicin-resistant Gram-negatives,\nNTM infections', '15β20mg/kg IV OD'),
('Metronidazole IV', 'Metrogyl IV (J.B.Chem)\nFlagyl IV (Abbott)', 'Anaerobic infections, peritonitis,\namoebiasis, tetanus adjuvant', '500mg IV q8h'),
('Colistin (Polymyxin E)', 'Colistin-CMS\n(Cipla/Sun)', 'XDR Acinetobacter, PDR KPC,\nlast-resort only', '9MU load then\n4.5MU IV q12h'),
('Azithromycin IV', 'Azithral IV\n(Alembic)', 'Severe atypical CAP, typhoid IV,\nCampylobacter (hospitalized)', '500mg IV OD'),
]
# ββ Helpers ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def sec_header(title, bg, styles):
t = Table([[Paragraph(title, styles['sec_title'])]], colWidths=[W - 3*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('LEFTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
]))
return t
def make_table(rows, styles, col_widths=None):
S = styles
if col_widths is None:
col_widths = [4.0*cm, 5.0*cm, 4.6*cm, 5.4*cm, 2.4*cm]
header = [
Paragraph('<b>Infection / Indication</b>', S['cell_bold']),
Paragraph('<b>First-Line IV/IM + Dose + Brand</b>', S['cell_bold']),
Paragraph('<b>Alternative IV/IM</b>', S['cell_bold']),
Paragraph('<b>Notes / Cautions</b>', S['cell_bold']),
Paragraph('<b>Duration</b>', S['cell_bold']),
]
tbl_rows = [header]
for inf, first, alt, notes, dur in rows:
tbl_rows.append([
Paragraph(inf, S['cell_bold']),
Paragraph(first.replace('\n', '<br/>'), S['drug_first']),
Paragraph(alt.replace('\n', '<br/>'), S['drug_alt']),
Paragraph(notes.replace('\n', '<br/>'), S['cell_body']),
Paragraph(dur.replace('\n', '<br/>'), S['cell_body']),
])
t = Table(tbl_rows, colWidths=col_widths, repeatRows=1)
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_NAVY),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 8),
('TOPPADDING', (0,0), (-1,0), 6),
('BOTTOMPADDING', (0,0), (-1,0), 6),
('GRID', (0,0), (-1,-1), 0.4, BORDER_GREY),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,1), (-1,-1), 5),
('BOTTOMPADDING', (0,1), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [ROW_NORM, ROW_ALT]),
('LINEBELOW', (0,0), (-1,0), 1.5, ACCENT_RED),
]))
return t
def make_drug_table(styles):
S = styles
header_data = [[Paragraph('<b>π QUICK REFERENCE: COMMON PARENTERAL ANTIBIOTICS IN INDIA</b>', S['sec_title'])]]
header_t = Table(header_data, colWidths=[W - 3*cm])
header_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_NAVY),
('LEFTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
]))
col_h = [
Paragraph('<b>Drug (Generic)</b>', S['cell_bold']),
Paragraph('<b>India Brand(s)</b>', S['cell_bold']),
Paragraph('<b>Key Uses</b>', S['cell_bold']),
Paragraph('<b>Typical IV Dose</b>', S['cell_bold']),
]
rows = [col_h]
for i, (drug, brand, use, dose) in enumerate(COMMON_PARENTERALS):
rows.append([
Paragraph(drug.replace('\n', '<br/>'),
ParagraphStyle('dr', fontName='Helvetica-Bold', fontSize=7.5, textColor=DARK_NAVY, leading=11)),
Paragraph(brand.replace('\n', '<br/>'),
ParagraphStyle('br', fontName='Helvetica', fontSize=7.5, textColor=ACCENT_TEAL, leading=11)),
Paragraph(use,
ParagraphStyle('us', fontName='Helvetica', fontSize=7.5, textColor=TEXT_DARK, leading=11)),
Paragraph(dose.replace('\n', '<br/>'),
ParagraphStyle('ds', fontName='Helvetica-Bold', fontSize=7.5, textColor=ACCENT_AMBER, leading=11)),
])
t = Table(rows, colWidths=[4.5*cm, 4.0*cm, 8.5*cm, 4.4*cm], repeatRows=1)
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), NAVY2),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 8),
('TOPPADDING', (0,0), (-1,0), 6),
('BOTTOMPADDING', (0,0), (-1,0), 6),
('GRID', (0,0), (-1,-1), 0.4, BORDER_GREY),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,1), (-1,-1), 4),
('BOTTOMPADDING', (0,1), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [ROW_NORM, ROW_ALT]),
('LINEBELOW', (0,0), (-1,0), 1.5, MED_BLUE),
]))
return header_t, t
def make_warn_table(styles):
S = styles
header_data = [[Paragraph('<b>β CRITICAL WARNINGS FOR PARENTERAL ANTIBIOTIC USE IN INDIA</b>', S['sec_title'])]]
header_t = Table(header_data, colWidths=[W - 3*cm])
header_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), ACCENT_RED),
('LEFTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
]))
rows = []
for t, n in WARNING_NOTES:
rows.append([
Paragraph(t, S['warn_title']),
Paragraph(n, S['warn_body']),
])
body_t = Table(rows, colWidths=[5.5*cm, 15.9*cm])
body_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), RED_LIGHT),
('GRID', (0,0), (-1,-1), 0.4, HexColor('#fca5a5')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
]))
return header_t, body_t
# ββ COVER ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def make_cover(styles):
elems = []
elems.append(Spacer(1, 2.5*cm))
title_rows = [
[Paragraph('PARENTERAL', ParagraphStyle('c1', fontName='Helvetica-Bold', fontSize=36,
textColor=colors.white, leading=40, alignment=TA_CENTER))],
[Paragraph('ANTIBIOTIC', ParagraphStyle('c2', fontName='Helvetica-Bold', fontSize=36,
textColor=HexColor('#fca5a5'), leading=40, alignment=TA_CENTER))],
[Paragraph('QUICK REFERENCE GUIDE', ParagraphStyle('c3', fontName='Helvetica-Bold', fontSize=19,
textColor=HexColor('#93c5fd'), leading=24, alignment=TA_CENTER))],
]
cover_t = Table(title_rows, colWidths=[W - 3*cm])
cover_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), HEADER_BG),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
('LEFTPADDING', (0,0), (-1,-1), 20),
('RIGHTPADDING', (0,0), (-1,-1), 20),
]))
elems.append(cover_t)
elems.append(Spacer(1, 0.4*cm))
sub_data = [[Paragraph(
'India Hospital / ICU Practice | IV & IM Selection by Infection Type | Edition 2025β26',
ParagraphStyle('csub', fontName='Helvetica', fontSize=11,
textColor=DARK_NAVY, leading=16, alignment=TA_CENTER))]]
sub_t = Table(sub_data, colWidths=[W - 3*cm])
sub_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), LIGHT_BLUE),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
]))
elems.append(sub_t)
elems.append(Spacer(1, 0.8*cm))
sections = [
('π«', 'Respiratory Tract Infections', 'Severe CAP, HAP, VAP, aspiration pneumonia, empyema, lung abscess'),
('π¬', 'Urinary Tract Infections', 'Pyelonephritis, urosepsis, CA-UTI, candidal UTI'),
('π₯', 'Sepsis & Bacteremia', 'Empirical sepsis, septic shock, bloodstream infection, febrile neutropenia'),
('π§ ', 'CNS Infections', 'Bacterial meningitis, brain abscess, TBM'),
('π½', 'Abdominal / GI Infections', 'Peritonitis, cholangitis, liver abscess, SBP, typhoid complications'),
('π¦΄', 'Bone & Joint Infections', 'Osteomyelitis (MSSA/MRSA), septic arthritis, diabetic foot'),
('π©Ή', 'Skin & Soft Tissue', 'Severe cellulitis, necrotizing fasciitis, MRSA SSTI, gas gangrene, burns'),
('β€', 'Cardiac Infections', 'Infective endocarditis (streptococcal, staphylococcal, HACEK)'),
('π¦ ', 'MDR / Resistant Organisms', 'ESBL, CRE/KPC, XDR Acinetobacter, MRSA bacteremia, Pseudomonas'),
('π‘', 'Tropical & Special Situations', 'Leptospirosis, scrub typhus, severe malaria, tetanus, cholera'),
('π€°', 'Obstetric Infections', 'Chorioamnionitis, endometritis, septic abortion, surgical prophylaxis'),
('π', 'Drug Reference Table', '22 common parenteral antibiotics: brands, doses, key uses'),
]
toc_rows = []
for icon, sec, detail in sections:
toc_rows.append([
Paragraph(icon, ParagraphStyle('icon', fontName='Helvetica-Bold', fontSize=13,
leading=18, alignment=TA_CENTER)),
Paragraph(f'<b>{sec}</b><br/><font size="8" color="#64748b">{detail}</font>',
ParagraphStyle('ti', fontName='Helvetica', fontSize=9.5, leading=14, textColor=DARK_NAVY)),
])
toc_t = Table(toc_rows, colWidths=[1.1*cm, W - 3*cm - 1.1*cm])
toc_t.setStyle(TableStyle([
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 8),
('ROWBACKGROUNDS', (0,0), (-1,-1), [LIGHT_BLUE, ROW_NORM]),
('BOX', (0,0), (-1,-1), 0.5, BORDER_GREY),
('LINEBELOW', (0,0), (-1,-1), 0.3, BORDER_GREY),
]))
elems.append(toc_t)
elems.append(Spacer(1, 0.8*cm))
disc = Paragraph(
'<b>β Disclaimer:</b> This guide is for clinical reference only. Antibiotic selection must be based on local '
'resistance data, cultures, patient allergies, renal/hepatic function, and clinical severity. '
'Empirical regimens must be reviewed and de-escalated within 48β72h. Always refer to NCDC, IDSA, and '
'institutional antibiotic stewardship protocols for definitive guidance.',
ParagraphStyle('disc', fontName='Helvetica-Oblique', fontSize=7.5, textColor=TEXT_MED, leading=11))
disc_t = Table([[disc]], colWidths=[W - 3*cm])
disc_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), AMBER_LIGHT),
('BOX', (0,0), (-1,-1), 0.8, ACCENT_AMBER),
('TOPPADDING', (0,0), (-1,-1), 8),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
]))
elems.append(disc_t)
elems.append(PageBreak())
return elems
# ββ BUILD ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def build_pdf():
outpath = '/tmp/workspace/antibiotic-guide/Parenteral_Antibiotic_Quick_Reference_India.pdf'
doc = BaseDocTemplate(
outpath, pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=2.3*cm, bottomMargin=1.5*cm,
title='Parenteral Antibiotic Quick Reference Guide β India',
author='Hospital Practice Reference',
subject='Parenteral antibiotic selection by infection type',
)
cover_frame = Frame(0, 0, W, H, leftPadding=1.5*cm, rightPadding=1.5*cm,
topPadding=1.5*cm, bottomPadding=1.5*cm)
def cover_bg(c, d):
c.setFillColor(HEADER_BG)
c.rect(0, 0, W, H, fill=1, stroke=0)
c.setFillColor(ACCENT_RED)
c.rect(0, 0, W, 8, fill=1, stroke=0)
c.rect(0, H - 8, W, 8, fill=1, stroke=0)
cover_tpl = PageTemplate(id='Cover', frames=[cover_frame])
cover_tpl.beforeDrawPage = cover_bg
content_frame = Frame(1.5*cm, 1.5*cm, W - 3*cm, H - 3.9*cm,
leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0)
content_tpl = PageTemplate(id='Content', frames=[content_frame], onPage=make_header)
doc.addPageTemplates([cover_tpl, content_tpl])
S = build_styles()
elems = []
elems.extend(make_cover(S))
elems.append(NextPageTemplate('Content'))
def add_section(title, bg, data, gap=True):
sh = sec_header(title, bg, S)
tb = make_table(data, S)
elems.append(sh)
elems.append(tb)
if gap:
elems.append(Spacer(1, 0.35*cm))
add_section('π« RESPIRATORY TRACT INFECTIONS (IV/IM)', MED_BLUE, RESP_DATA)
add_section('π¬ URINARY TRACT INFECTIONS (Parenteral)', ACCENT_TEAL, UTI_DATA)
add_section('π₯ SEPSIS, BACTEREMIA & FEBRILE NEUTROPENIA', ACCENT_RED, SEPSIS_DATA)
add_section('π§ CNS INFECTIONS (IV)', ACCENT_PURPLE, CNS_DATA)
add_section('π½ ABDOMINAL & GI INFECTIONS (IV)', ACCENT_AMBER, ABDOMINAL_DATA)
add_section('𦴠BONE & JOINT INFECTIONS (IV)', HexColor('#92400e'), BONE_DATA)
add_section('π©Ή SKIN & SOFT TISSUE INFECTIONS (IV)', ACCENT_ORANGE, SKIN_DATA)
add_section('β€ INFECTIVE ENDOCARDITIS (IV)', ACCENT_ROSE, CARDIAC_DATA)
add_section('π¦ MDR / RESISTANT ORGANISM REGIMENS', HexColor('#374151'), MDR_DATA)
add_section('π‘ TROPICAL & SPECIAL SITUATIONS (IV)', ACCENT_CYAN, SPECIAL_DATA)
add_section('π€° OBSTETRIC INFECTIONS (IV)', HexColor('#7c3aed'), OB_GYN_DATA)
# Drug reference table
dh, dt = make_drug_table(S)
elems.append(dh)
elems.append(dt)
elems.append(Spacer(1, 0.35*cm))
# Warnings
wh, wt = make_warn_table(S)
elems.append(wh)
elems.append(wt)
elems.append(Spacer(1, 0.35*cm))
# Footer references
ref = Paragraph(
'<b>References:</b> NCDC National Treatment Guidelines (India) | IDSA Sepsis / Endocarditis / Osteomyelitis Guidelines | '
'WHO AWaRe 2023 | Harrison\'s Principles of Internal Medicine 22E | Surviving Sepsis Campaign 2021 | '
'Goldman-Cecil Medicine | SEAQUAMAT Trial (Artesunate vs Quinine)',
ParagraphStyle('ref', fontName='Helvetica-Oblique', fontSize=7, textColor=TEXT_LIGHT, leading=10))
ref_t = Table([[ref]], colWidths=[W - 3*cm])
ref_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), HexColor('#f8fafc')),
('BOX', (0,0), (-1,-1), 0.4, BORDER_GREY),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
]))
elems.append(ref_t)
doc.build(elems, canvasmaker=NumberedCanvas)
return outpath
if __name__ == '__main__':
path = build_pdf()
print(f'SUCCESS: {path}')
cd /tmp/workspace/antibiotic-guide && python generate_parenteral_pdf.py 2>&1
python3 -c " import pdfplumber with pdfplumber.open('/tmp/workspace/antibiotic-guide/Parenteral_Antibiotic_Quick_Reference_India.pdf') as pdf: print(f'Total pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): t = (page.extract_text() or '') print(f' Page {i+1}: {len(t)} chars | {t[:100].strip()}') " ls -lh /tmp/workspace/antibiotic-guide/Parenteral_Antibiotic_Quick_Reference_India.pdf
Parenteral Antibiotic Quick Reference India
PDF Document Β· PDF
| Section | Color | Key Content |
|---|---|---|
| π« Respiratory | Blue | Severe CAP, HAP/VAP, aspiration pneumonia, empyema, lung abscess |
| π¬ UTI | Teal | Pyelonephritis, urosepsis, CA-UTI, ESBL, candidal UTI |
| π₯ Sepsis/Bacteremia | Red | Empirical sepsis, septic shock, febrile neutropenia (Sepsis-3) |
| π§ CNS | Purple | Bacterial meningitis, post-neurosurgery meningitis, brain abscess, TBM |
| π½ Abdominal | Amber | Peritonitis, cholangitis, liver abscess, SBP + Albumin, typhoid complications |
| 𦴠Bone & Joint | Brown | Osteomyelitis MSSA/MRSA, diabetic foot, septic arthritis |
| π©Ή Skin/SSTI | Orange | Necrotizing fasciitis, gas gangrene, MRSA, burns wound infection |
| β€ Endocarditis | Rose | Streptococcal, Staphylococcal/MRSA, HACEK organisms |
| π¦ MDR Organisms | Dark grey | ESBL, CRE/KPC, XDR Acinetobacter, MRSA bacteremia, Pseudomonas |
| π‘ Tropical | Cyan | Leptospirosis, scrub typhus, severe malaria (Artesunate), tetanus |
| π€° Obstetric | Purple | Chorioamnionitis, endometritis, septic abortion, C-section prophylaxis |
| π Drug Table | Navy | 22 parenteral antibiotics: brands (Tazact, Monocef, Vancorid, Meromer, etc.), doses |
Bacterial coverage and Best antibiotics
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Benzylpenicillin / Amoxicillin | IV / Oral | Never resistant to penicillin |
| Oral | Amoxicillin 500mg TDS x10d | Oral | (Mox, Novamox) |
| Pen-allergic | Azithromycin 500mg OD x5d | Oral | Some macrolide resistance (10β15%) |
| Pen-allergic | Clindamycin 300mg TDS | Oral/IV | Also inhibits toxin in NF |
| Severe (NF) | Benzylpenicillin IV + Clindamycin IV | IV | Clindamycin blocks toxin production |
Key fact: GAS has NEVER developed resistance to penicillin. Penicillin always works.
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Amoxicillin / Benzylpenicillin | Oral/IV | For penicillin-sensitive strains |
| Meningitis | Ceftriaxone 2g IV BD | IV | Use high dose; penetrates CSF |
| Oral (mild) | Amoxicillin 1g TDS | Oral | (Novamox 1g) |
| Atypical/resistant | Levofloxacin 500mg OD | Oral/IV | Respiratory fluoroquinolone |
| Pen-resistant | Moxifloxacin 400mg OD | Oral | Best oral for resistant pneumococcus |
| Pen-allergic | Ceftriaxone IV or Levofloxacin | IV/Oral |
India note: Penicillin-resistant Pneumococcus increasing; use high-dose Amoxicillin (1g TDS) for outpatient CAP.
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Benzylpenicillin IV | IV | Neonatal/maternal treatment |
| Prophylaxis (intrapartum) | Benzylpenicillin 5MU then 2.5MU q4h | IV | During labour for GBS+ mothers |
| Alternative | Ampicillin IV | IV | |
| Pen-allergic | Clindamycin or Vancomycin | IV | Based on sensitivity |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Benzylpenicillin 12β18MU/day IV | IV | 4 weeks for endocarditis |
| Alternative | Ceftriaxone 2g IV OD | IV | Equal efficacy, outpatient IV option |
| Pen-resistant strain | Vancomycin IV | IV | With Gentamicin synergy |
| Synergy | + Gentamicin 1mg/kg q8h x2 wks | IV | First 2 weeks of IE treatment |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice (UTI) | Amoxicillin 500mg TDS | Oral | Sensitive to penicillins |
| Drug of Choice (IE) | Ampicillin IV + Gentamicin IV | IV | Synergy mandatory for IE |
| Alternative (IE) | Ampicillin IV + Ceftriaxone 2g BD | IV | Ampicillin-Ceftriaxone for IE if aminoglycoside toxicity |
| VRE | Linezolid 600mg BD | IV/Oral | Zyvox, Linox |
| VRE alternative | Daptomycin 6mg/kg IV OD | IV |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Linezolid 600mg BD | IV/Oral | Zyvox, Linox - static |
| Alternative | Daptomycin 8β10mg/kg IV OD | IV | Bactericidal |
| Last resort | Teicoplanin (if vancomycin-sensitive strain) | IV |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice (IV) | Cloxacillin / Flucloxacillin 2g q4β6h | IV | Best bactericidal for MSSA |
| Drug of Choice (Oral) | Cloxacillin 500mg QID | Oral | Empty stomach (Bioclox, Clox) |
| Alternative IV | Cefazolin 2g q8h | IV | Equal to Cloxacillin, easier dosing |
| Oral step-down | Cephalexin 1g QID | Oral | (Sporidex) for SSTI/bone |
| Bone/Joint | Cloxacillin IV β Cephalexin oral | IV then Oral | 4β6 weeks total |
| Endocarditis | Cloxacillin 12g/day IV | IV | 6 weeks native valve |
| Pen-allergic | Vancomycin IV | IV | Inferior to Cloxacillin for MSSA - use only if truly allergic |
Critical: Never use Vancomycin when MSSA is confirmed. Cloxacillin/Cefazolin is superior and bactericidal.
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice (severe/IV) | Vancomycin 15β20mg/kg q8β12h | IV | AUC/MIC-guided; Vancorid, Vancotex |
| Alternative (IV) | Teicoplanin 12mg/kg BD x3 then OD | IV | Targocid; easier monitoring |
| Oral (SSTI) | Cotrimoxazole 960mg BD | Oral | Septran; community MRSA skin infections |
| Oral alternative | Minocycline 100mg BD | Oral | Minoz; for community MRSA |
| Oral/IV (bone/lung) | Linezolid 600mg BD | IV/Oral | Linox, Zyvox; excellent tissue penetration |
| Daptomycin | 6β8mg/kg IV OD | IV | For bacteremia/right-sided IE; NOT for pneumonia |
| VRSA (extremely rare) | Linezolid + consultation | IV |
Daptomycin is inactivated by pulmonary surfactant - never use for MRSA pneumonia.
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Vancomycin IV | IV | Most CoNS are Methicillin-resistant |
| + for prosthetic | + Rifampicin 300mg BD oral | Oral | Biofilm penetration |
| + for prosthetic | + Gentamicin IV (first 2 weeks) | IV | Synergy |
| Oral (mild, sensitive) | Cotrimoxazole 960mg BD | Oral | Only if sensitive on culture |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Benzylpenicillin 4MU q4h IV | IV | Crystapen |
| Synergy | + Clindamycin 900mg q8h IV | IV | Blocks alpha-toxin and theta-toxin production |
| Alternative | Meropenem IV + Clindamycin | IV | If penicillin-allergic |
| Surgical | Aggressive debridement/amputation | Antibiotics alone insufficient |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice (mildβmoderate) | Vancomycin 125mg QID oral | Oral | NOT IV; must reach colon lumen |
| Drug of Choice (severe) | Vancomycin 500mg QID oral | Oral | + Metronidazole IV 500mg q8h if ileus |
| Alternative | Metronidazole 400mg TDS oral | Oral | Only for mild 1st episode if Vancomycin unavailable |
| Recurrent | Fidaxomicin 200mg BD x10d | Oral | Reduces recurrence |
| Fulminant/Surgery | Vancomycin oral + Metronidazole IV | Both | Consider surgical colectomy |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Ciprofloxacin 500mg BD | Oral/IV | Post-exposure prophylaxis x60d |
| Alternative | Doxycycline 100mg BD | Oral | Alternative prophylaxis |
| Severe/Systemic | Ciprofloxacin IV + Clindamycin IV + Anthrax antitoxin | IV | Triple combination |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Ampicillin 2g IV q4h | IV | + Gentamicin for synergy |
| Alternative | Cotrimoxazole IV/oral | IV/Oral | For Pen-allergic |
| Note | Cephalosporins do NOT cover Listeria | Add Ampicillin in meningitis in elderly |
This is why elderly/neonatal meningitis empirical therapy must include Ampicillin alongside Ceftriaxone.
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Benzylpenicillin 2.4g IV q4h | IV | Crystapen |
| Alternative | Ceftriaxone 2g IV BD | IV | Also used empirically |
| Chemoprophylaxis | Rifampicin 600mg BD x2d | Oral | For close contacts |
| Chemoprophylaxis alt | Ciprofloxacin 500mg single dose | Oral | Single dose preferred in adults |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice (uncomplicated) | Ceftriaxone 500mg IM single dose | IM | Or Cefixime 400mg oral single dose |
| Oral | Cefixime 400mg single dose | Oral | (Taxim-O 400mg) |
| + Chlamydia co-treatment | + Azithromycin 1g single dose | Oral | Always co-treat |
| Disseminated (DGI) | Ceftriaxone 1g IV OD | IV | 7 days |
| Ophthalmia neonatorum | Ceftriaxone 25β50mg/kg IV single dose | IV |
Fluoroquinolone resistance is now >50% globally. Never use Ciprofloxacin empirically for gonorrhea.
| Strain | Drug of Choice | Alternative | Notes |
|---|---|---|---|
| Sensitive E. coli (UTI) | Nitrofurantoin 100mg BD (oral) | Cotrimoxazole 960mg BD | Avoid FQ empirically in India |
| Sensitive (systemic) | Ceftriaxone 1β2g IV OD | Ciprofloxacin IV (if sensitive) | |
| ESBL E. coli | Meropenem 1g IV q8h | Ertapenem 1g IV OD (non-ICU) | Do NOT use Cephalosporins for ESBL |
| ESBL (UTI only - oral) | Fosfomycin 3g sachet stat | Nitrofurantoin 100mg BD | Both concentrated in urine |
| CRE E. coli | Colistin + Meropenem | Ceftazidime-Avibactam | Last-resort; specialist consult |
| Strain | Drug of Choice | Alternative | Notes |
|---|---|---|---|
| Sensitive Klebsiella | Ceftriaxone 2g IV OD | Cefuroxime (mild) | |
| ESBL Klebsiella | Meropenem 1g IV q8h | Ertapenem 1g IV OD | Cephalosporins fail for ESBL |
| KPC-producing | Ceftazidime-Avibactam 2.5g IV q8h | Meropenem + Colistin | Avycaz - if KPC confirmed |
| NDM-producing | Colistin + Aztreonam/Tigecycline | Ceftazidime-Avibactam + Aztreonam | Combination only; ID consult |
Hypervirulent K. pneumoniae (hvKP): Common in India; causes pyogenic liver abscess and endophthalmitis in diabetics. Treat with Ceftriaxone if sensitive.
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice (India) | Cefixime 20mg/kg/day max 1.2g | Oral | 14 days; Taxim-O, Mahacef |
| Alternative | Azithromycin 10β20mg/kg OD | Oral | 7β10 days; Azithral |
| Severe/IV | Ceftriaxone 2g IV OD | IV | 10β14 days |
| AVOID | Ciprofloxacin | β | High-level FQ resistance in India |
| Old (avoid now) | Chloramphenicol / Ampicillin | β | MDR strains common |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Gastroenteritis (healthy adult) | No antibiotics | β | Self-limiting in 3β5 days |
| Bacteremia / immunocompromised | Ceftriaxone 2g IV OD | IV | Ciprofloxacin if sensitive |
| Sickle cell disease | Ceftriaxone IV | IV | Osteomyelitis risk; treat aggressively |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Azithromycin 500mg OD x3d | Oral | Azithral |
| Alternative | Cefixime 200mg BD x5d | Oral | Taxim-O |
| Ciprofloxacin | 500mg BD x3d | Oral | Only if confirmed sensitivity |
| Severe/IV | Ceftriaxone 2g IV OD | IV |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Azithromycin 500mg OD x3d | Oral | Azithral - drug of choice |
| Alternative | Ciprofloxacin 500mg BD x3d | Oral | Only if sensitive (FQ resistance rising) |
| Severe/bacteremic | Azithromycin IV or Imipenem IV | IV |
| Priority | Regimen | Duration | Notes |
|---|---|---|---|
| Standard Triple Therapy | PPI + Amoxicillin 1g BD + Clarithromycin 500mg BD | 14 days | Use 14d > 7d for better eradication |
| Bismuth Quadruple | PPI + Bismuth + Metronidazole + Tetracycline | 10β14 days | If Clarithromycin resistance suspected |
| Levofloxacin Triple | PPI + Amoxicillin 1g BD + Levofloxacin 500mg OD | 10β14 days | 3rd line or Clarithromycin-resistant areas |
| Sequential Therapy | PPI + Amoxicillin x5d, then PPI + Clarithromycin + Metronidazole x5d | 10 days | Alternative where resistance high |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice (IV) | Piperacillin-Tazobactam 4.5g q6h | IV | Tazact, Pipcin-TZ |
| Alternative (IV) | Ceftazidime 2g q8h | IV | Fortum, Tazide |
| IV alternative | Cefepime 2g q8h | IV | 4th gen; better for Pseudomonas |
| Carbapenem needed | Meropenem 1g q8h or Imipenem | IV | For severe/resistant |
| Oral | Ciprofloxacin 750mg BD | Oral | Only oral anti-pseudomonal; Cifran 750mg |
| MDR Pseudomonas | Colistin + Piperacillin-Tazobactam | IV | Combination only |
| Otitis externa | Ciprofloxacin ear drops | Topical |
Combination therapy is recommended for Pseudomonas bacteremia and pneumonia. Never monotherapy in life-threatening infections.
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Sensitive strain | Carbapenems (Meropenem/Imipenem) | IV | |
| Carbapenem-resistant (CRAB) | Colistin 9MU loading + 4.5MU q12h | IV | Nephrotoxic; monitor creatinine |
| + Sulbactam activity | + Ampicillin-Sulbactam 3g IV q6h | IV | Sulbactam has intrinsic activity against Acinetobacter |
| Alternative | Tigecycline 100mg load then 50mg q12h | IV | Not for bacteremia; Tygacil |
| New agent | Cefiderocol (siderophore cephalosporin) | IV | Not widely available in India yet |
XDR Acinetobacter is a major ICU crisis in India. Contact precautions and Colistin + Sulbactam are often the only options.
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice (oral) | Amoxiclav 625mg BD | Oral | Augmentin - covers beta-lactamase producers |
| Alternative oral | Cefuroxime 250mg BD | Oral | Zinnat |
| Meningitis | Ceftriaxone 2g IV BD | IV | Most common in unvaccinated children |
| Non-beta-lactamase | Amoxicillin alone | Oral | If beta-lactamase negative on test |
| Alternative | Azithromycin or Levofloxacin | Oral | AECB in COPD patients |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Azithromycin 500mg OD x5d | Oral | Azithral; reduces infectivity |
| Alternative | Clarithromycin 500mg BD x7d | Oral | Claribid |
| Alternative | Cotrimoxazole 960mg BD x14d | Oral | Septran; if macrolide-intolerant |
| Note | Antibiotics reduce contagiousness | Little effect on symptoms if started late |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Adults | Doxycycline 300mg single dose | Oral | Doxicip |
| Pregnant/Children | Azithromycin 1g (adults) / 20mg/kg (children) | Oral | Single dose; Azithral |
| Alternative | Ciprofloxacin 500mg BD x3d | Oral | If sensitivity confirmed |
| Primary treatment | IV/ORS Rehydration | IV/Oral | Antibiotics are adjunctive only |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Metronidazole 400β500mg TDS | Oral/IV | Flagyl, Metrogyl - excellent anaerobic coverage |
| Alternative | Clindamycin 300β600mg TDS | Oral/IV | Dalacin C |
| Combination coverage | Metronidazole + Cephalosporin | IV | For aerobic + anaerobic cover |
| Broad spectrum | Piperacillin-Tazobactam | IV | Single agent covers aerobes + anaerobes |
| Note | Meropenem covers anaerobes | IV | Single agent for severe intra-abdominal |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Metronidazole 500mg IV q8h | IV | Metrogyl IV; preferred over Penicillin |
| Alternative | Benzylpenicillin 1MU IV q6h | IV | Avoid - slight convulsant risk |
| Primary treatment | Human TIG (Tetanus Immunoglobulin) 3000β6000 IU IM | IM | Antibiotics are adjunctive |
| Wound care | Debridement + wound cleaning | Remove source |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Azithromycin 500mg OD x5d | Oral | Azithral |
| Alternative | Doxycycline 100mg BD x7d | Oral | Doxicip |
| Alternative | Levofloxacin 500mg OD | Oral | Glevo |
| Note | No cell wall - penicillins/cephalosporins INACTIVE |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice (genital) | Azithromycin 1g single dose | Oral | Azithral 1g |
| Alternative (genital) | Doxycycline 100mg BD x7d | Oral | Doxicip |
| Pneumonia | Azithromycin 500mg OD x5d | Oral | or Doxycycline |
| Trachoma (eye) | Azithromycin 1g single dose | Oral | + topical Tetracycline eye ointment |
| LGV (invasive) | Doxycycline 100mg BD x21d | Oral |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Doxycycline 100mg BD x7d | Oral | Doxicip, Doxt - do NOT delay |
| Pregnancy / Children | Azithromycin 500mg OD x5d | Oral | Azithral |
| Severe/ICU | Doxycycline IV | IV | |
| Note | Start empirically in endemic areas | Don't wait for serology results |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Acute | Doxycycline 100mg BD x14β21d | Oral | |
| Chronic (endocarditis) | Doxycycline 100mg BD + Hydroxychloroquine 200mg TDS | Oral | 18 months - 3 years |
| Pregnancy | Cotrimoxazole 960mg BD | Oral | Until delivery |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Doxycycline 100mg BD x6wks + Rifampicin 600mg OD x6wks | Oral | Combination mandatory; monotherapy = relapse |
| Alternative | Doxycycline x6wks + Streptomycin 1g IM/day x21d | Oral + IM | Doxy + Aminoglycoside - best evidence |
| CNS/Endocarditis | Triple therapy: Doxy + Rifampicin + Cotrimoxazole or Gentamicin | IV/Oral | Prolonged 3β6 months |
| Children < 8y | Cotrimoxazole + Rifampicin | Oral | Avoid Doxycycline in children |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Drug of Choice | Levofloxacin 500β750mg OD | IV/Oral | Best outcomes |
| Alternative | Azithromycin 500mg OD | IV/Oral | |
| Note | Beta-lactams are INACTIVE | Intracellular organism |
| Phase | Regimen | Duration | Notes |
|---|---|---|---|
| Intensive phase | Isoniazid + Rifampicin + Pyrazinamide + Ethambutol (HRZE) | 2 months | Daily or 3x/week (DOTS) |
| Continuation phase | Isoniazid + Rifampicin (HR) | 4 months | 6 months total for pulmonary TB |
| CNS/Bone/Miliary | HRZE intensive + HR continuation | 2 + 10 months | 12 months total |
| MDR-TB | Bedaquiline + Delamanid + Levofloxacin + Linezolid + Cycloserine | 18β24 months | Based on DST; specialist management |
| Type | Regimen | Duration |
|---|---|---|
| Paucibacillary | Rifampicin 600mg monthly (supervised) + Dapsone 100mg daily | 6 months |
| Multibacillary | Rifampicin 600mg monthly + Clofazimine 300mg monthly + Dapsone 100mg daily + Clofazimine 50mg daily | 12 months |
| Stage | Drug of Choice | Alternative |
|---|---|---|
| Primary / Secondary | Benzathine Penicillin G 2.4MU IM single dose | Doxycycline 100mg BD x14d (Pen-allergic) |
| Latent (early <1y) | Benzathine Penicillin G 2.4MU IM single dose | Doxycycline 100mg BD x14d |
| Latent (late/>1y) / Tertiary | Benzathine Penicillin G 2.4MU IM weekly x3 doses | Doxycycline 100mg BD x28d |
| Neurosyphilis | Benzylpenicillin 18β24MU/day IV x10β14d | Ceftriaxone 2g IV OD x14d |
| Congenital | Benzylpenicillin 50,000U/kg IV q12h (1st 7 days) |
| Priority | Antibiotic | Route | Notes |
|---|---|---|---|
| Mild | Doxycycline 100mg BD x7d | Oral | Doxicip |
| Moderate | Amoxicillin 500mg TDS x7d | Oral | or IV Benzylpenicillin |
| Severe (Weil's) | Benzylpenicillin 1.5MU IV q6h | IV | 7 days |
| Alternative (severe) | Ceftriaxone 1g IV OD | IV | Monocef |
| Stage | Drug of Choice | Alternative |
|---|---|---|
| Early localized | Doxycycline 100mg BD x10β21d | Amoxicillin 500mg TDS x14β21d |
| Disseminated (cardiac/neuro) | Ceftriaxone 2g IV OD x14β28d | Doxycycline oral for mild neuro |
| Arthritis | Doxycycline 100mg BD x28d | Amoxicillin 500mg TDS x28d |
| Infection | Drug of Choice | Alternative |
|---|---|---|
| Oropharyngeal | Fluconazole 150β200mg OD x7β14d | Nystatin suspension |
| Vaginal (VVC) | Fluconazole 150mg single dose | Clotrimazole pessary |
| Esophageal | Fluconazole 200mg OD x14β21d | Itraconazole |
| Candidemia (ICU) | Caspofungin 70mg loading then 50mg OD | Micafungin or Anidulafungin |
| Step-down (oral) | Fluconazole 400mg OD | After 5β7d IV Echinocandin if sensitive |
| C. auris (MDR) | Echinocandin (Caspofungin/Micafungin) |
| Antibiotic | GPC (MSSA) | GPC (MRSA) | GNR (Entero) | Pseudomonas | Anaerobes | Atypicals |
|---|---|---|---|---|---|---|
| Amoxicillin | β Strep/Entero | β | β (sensitive) | β | Partial | β |
| Amoxiclav | β | β | β + ESBL partial | β | β | β |
| Cloxacillin | β β MSSA | β | β | β | β | β |
| Ceftriaxone | β Strep | β | β | β | β | β |
| Piperacillin-TZB | β | β | β + ESBL partial | β β | β | β |
| Meropenem | β | β | β β ESBL | β β | β β | β |
| Vancomycin | β β MRSA | β β | β | β | β | β |
| Metronidazole | β | β | β | β | β β | β |
| Azithromycin | β Strep | β | β | β | β | β β |
| Doxycycline | β partial | β | β | β | Partial | β β |
| Ciprofloxacin | β | β | β | β | β | β partial |
| Levofloxacin | β Strep | β | β | Partial | β | β β |
| Linezolid | β β | β β MRSA | β | β | β | β |
| Colistin | β | β | β β MDR | β β MDR | β | β |
| Rule | Detail |
|---|---|
| Penicillin always works for GAS | Group A Strep has never developed penicillin resistance |
| MSSA = Cloxacillin, not Vancomycin | Vancomycin is inferior for MSSA; use only if truly penicillin-allergic |
| ESBL = Carbapenem, not Cephalosporin | Cephalosporins fail against ESBL even if MIC appears low (inoculum effect) |
| Listeria = add Ampicillin | Cephalosporins don't cover Listeria - critical for elderly/neonatal meningitis |
| Daptomycin fails in lung | Inactivated by surfactant - never use for pneumonia |
| FQ for gonorrhea is outdated | >50% resistance globally; use Ceftriaxone IM |
| Metronidazole > Penicillin for tetanus | Penicillin is a GABA antagonist and can worsen spasms |
| Atypicals have no cell wall | Beta-lactams and Glycopeptides are completely inactive |
| De-escalate in 48β72h | Always narrow spectrum once culture results return |
| Never treat asymptomatic bacteriuria | Except in pregnancy and before urological procedures |
Generate a drug-to-bacteria cross-reference table (reverse lookup)
~/antibiotic-guide/generate_crossref_pdf.py
"""
Drug-to-Bacteria Cross-Reference Table PDF
Reverse lookup: given a drug, which organisms does it cover?
India Hospital & GP Practice | 2025-26
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
BaseDocTemplate, PageTemplate, Frame, Paragraph, Spacer, Table,
TableStyle, KeepTogether, PageBreak, NextPageTemplate
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.lib.colors import HexColor
from reportlab.pdfgen import canvas
# ββ Palette ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
C = {
'navy': HexColor('#0f172a'),
'navy2': HexColor('#1e3a5f'),
'blue': HexColor('#1d4ed8'),
'blue_lt': HexColor('#dbeafe'),
'teal': HexColor('#0f766e'),
'teal_lt': HexColor('#ccfbf1'),
'red': HexColor('#b91c1c'),
'red_lt': HexColor('#fee2e2'),
'amber': HexColor('#b45309'),
'amber_lt': HexColor('#fef3c7'),
'green': HexColor('#15803d'),
'green_lt': HexColor('#dcfce7'),
'purple': HexColor('#6d28d9'),
'purple_lt': HexColor('#ede9fe'),
'orange': HexColor('#c2410c'),
'orange_lt': HexColor('#ffedd5'),
'rose': HexColor('#be123c'),
'rose_lt': HexColor('#ffe4e6'),
'cyan': HexColor('#0e7490'),
'cyan_lt': HexColor('#cffafe'),
'lime': HexColor('#4d7c0f'),
'lime_lt': HexColor('#ecfccb'),
'slate': HexColor('#334155'),
'slate_lt': HexColor('#f1f5f9'),
'border': HexColor('#cbd5e1'),
'text': HexColor('#1e293b'),
'text_med': HexColor('#475569'),
'text_lt': HexColor('#94a3b8'),
'white': colors.white,
'row_alt': HexColor('#f8fafc'),
'row_norm': HexColor('#ffffff'),
# Coverage cell colours
'doc': HexColor('#15803d'), # dark green β Drug of Choice
'doc_bg': HexColor('#bbf7d0'), # light green
'eff': HexColor('#1d4ed8'), # blue β Effective
'eff_bg': HexColor('#bfdbfe'), # light blue
'var': HexColor('#b45309'), # amber β Variable/Conditional
'var_bg': HexColor('#fef3c7'), # light amber
'res': HexColor('#b91c1c'), # red β Resistant/Inactive
'res_bg': HexColor('#fee2e2'), # light red
}
W, H = A4
# ββ Numbered canvas ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
class NC(canvas.Canvas):
def __init__(self, *a, **kw):
canvas.Canvas.__init__(self, *a, **kw)
self._saved = []
def showPage(self):
self._saved.append(dict(self.__dict__))
self._startPage()
def save(self):
n = len(self._saved)
for s in self._saved:
self.__dict__.update(s)
self._footer(n)
canvas.Canvas.showPage(self)
canvas.Canvas.save(self)
def _footer(self, total):
self.setFillColor(C['navy'])
self.rect(0, 0, W, 22, fill=1, stroke=0)
self.setFillColor(C['white'])
self.setFont('Helvetica', 7.5)
self.drawString(20, 7, 'Drug-to-Bacteria Cross-Reference Table | India Clinical Practice | 2025β26')
self.drawRightString(W - 20, 7, f'Page {self._pageNumber} of {total}')
self.setStrokeColor(C['blue'])
self.setLineWidth(2)
self.line(0, 22, W, 22)
def make_header(c, doc):
c.saveState()
c.setFillColor(C['navy'])
c.rect(0, H - 54, W, 54, fill=1, stroke=0)
c.setFillColor(C['blue'])
c.rect(0, H - 57, W, 3, fill=1, stroke=0)
c.setFillColor(C['white'])
c.setFont('Helvetica-Bold', 14)
c.drawString(18, H - 31, 'DRUG-TO-BACTERIA CROSS-REFERENCE TABLE')
c.setFont('Helvetica', 8.5)
c.setFillColor(HexColor('#94a3b8'))
c.drawString(18, H - 47, 'Reverse Lookup: Given a Drug, Which Organisms Does it Cover? | India Practice 2025β26')
c.restoreState()
# ββ Styles βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def S(name, **kw):
base = dict(fontName='Helvetica', fontSize=8, textColor=C['text'], leading=11)
base.update(kw)
return ParagraphStyle(name, **base)
ST = {
'sec': S('sec', fontName='Helvetica-Bold', fontSize=10, textColor=C['white'], leading=13),
'hdr': S('hdr', fontName='Helvetica-Bold', fontSize=7.5, textColor=C['white'], leading=10),
'drug': S('drug', fontName='Helvetica-Bold', fontSize=8.5, textColor=C['navy'], leading=12),
'brand': S('brand', fontName='Helvetica-Oblique', fontSize=7.5, textColor=C['teal'], leading=10),
'class_': S('class_', fontName='Helvetica-Bold', fontSize=7.5, textColor=C['white'], leading=10),
'doc': S('doc', fontName='Helvetica-Bold', fontSize=7.5, textColor=C['doc'], leading=10),
'eff': S('eff', fontName='Helvetica', fontSize=7.5, textColor=C['eff'], leading=10),
'var': S('var', fontName='Helvetica-Oblique', fontSize=7, textColor=C['var'], leading=10),
'res': S('res', fontName='Helvetica', fontSize=7, textColor=C['text_lt'], leading=10),
'note': S('note', fontName='Helvetica-Oblique', fontSize=7, textColor=C['text_med'], leading=10),
'body': S('body', fontName='Helvetica', fontSize=7.5, textColor=C['text'], leading=10),
'warn_t': S('warn_t', fontName='Helvetica-Bold', fontSize=7.5, textColor=C['red'], leading=10),
'warn_b': S('warn_b', fontName='Helvetica', fontSize=7.5, textColor=C['text'], leading=10),
'leg': S('leg', fontName='Helvetica-Bold', fontSize=8, textColor=C['navy'], leading=11),
'leg_desc': S('leg_desc', fontName='Helvetica', fontSize=7.5, textColor=C['text_med'], leading=10),
}
# ββ Coverage cell builder ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def doc_cell(text): # Drug of choice
return Paragraph(f'<b>β
{text}</b>', ST['doc'])
def eff_cell(text): # Effective
return Paragraph(text, ST['eff'])
def var_cell(text): # Variable/conditional
return Paragraph(f'~ {text}', ST['var'])
def no_cell(): # Not active
return Paragraph('<font color="#94a3b8">β Not active</font>', ST['res'])
def na_cell():
return Paragraph('<font color="#94a3b8">β</font>', ST['res'])
# ββ DATA βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Each entry:
# (Drug name, Brand (India), Drug class, coverage_dict, clinical_note)
# coverage_dict keys = organism groups (defined below)
# values: 'doc' | 'eff' | 'var' | 'no'
# Organism column headers (abbreviated to fit)
ORG_COLS = [
'Strep\n(GAS/GBS/\nViridans)',
'Pneumo-\ncoccus',
'MSSA\n(S. aureus)',
'MRSA',
'Entero-\ncoccus',
'E. coli /\nKlebsiella\n(Sensitive)',
'ESBL\nOrganisms',
'Pseudo-\nmonas',
'Acineto-\nbacter',
'H. influ-\nenzae',
'Anaer-\nobes',
'Atypicals\n(Myco/Chlam\n/Rickett)',
]
# Row format: (Drug, Brand, Class, [cov per col 0..11], note)
# Coverage codes: D=doc, E=eff, V=var, N=no
DRUG_DATA = [
# ββ PENICILLINS ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Benzylpenicillin\n(Penicillin G)',
'Crystapen (Pfizer)',
'Natural Penicillin',
['D','D','N','N','E','N','N','N','N','N','N','N'],
'IV only. Drug of choice: GAS, GBS, viridans strep IE, meningococcus, pneumococcus (sensitive). Inactive against Staph.'),
('Amoxicillin',
'Mox, Novamox\n(Cipla/Ranbaxy)',
'Aminopenicillin',
['D','E','N','N','E','E','N','N','N','E','N','N'],
'Oral. Drug of choice for pharyngitis, otitis media, mild CAP. ESBL/beta-lactamase-producing strains inactive.'),
('Amoxicillin +\nClavulanic Acid',
'Augmentin (GSK)\nClavam (Alkem)',
'Aminopenicillin\n+ BLI',
['D','E','E','N','E','E','V','N','N','E','E','N'],
'Oral/IV. Most prescribed antibiotic combination in India (102+ brands). Covers beta-lactamase producers. ESBL coverage marginal; do not rely for definitive ESBL treatment.'),
('Cloxacillin /\nFlucloxacillin',
'Clox (Cipla)\nBioclox (Alkem)',
'Penicillinase-\nResistant Pen.',
['V','N','D','N','N','N','N','N','N','N','N','N'],
'Oral/IV. Drug of choice for MSSA skin, bone, endocarditis. Completely inactive against MRSA and Gram-negatives. Must be taken on empty stomach.'),
('Ampicillin /\nAmpicillin-\nSulbactam',
'Roscillin inj\nUnasyn',
'Aminopenicillin\n(Β± BLI)',
['D','E','N','N','D','E','N','N','V','E','E','N'],
'Ampicillin alone: covers Listeria (critical for neonatal/elderly meningitis). Sulbactam component has intrinsic activity against Acinetobacter.'),
('Piperacillin-\nTazobactam',
'Tazact (Sun)\nPipcin-TZ (Cipla)',
'Anti-pseudomonal\nPenicillin + BLI',
['E','E','E','N','E','E','V','D','V','E','E','N'],
'IV only. Broadest penicillin. ESBL coverage unreliable (inoculum effect β do NOT use for definitive ESBL). Best single agent for Pseudomonal sepsis empirically. NOT for MRSA.'),
# ββ CEPHALOSPORINS βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Cephalexin /\nCefadroxil\n(1st Gen)',
'Sporidex (Sun)\nDroxyl (Cipla)',
'1st Gen\nCephalosporin',
['E','E','E','N','N','V','N','N','N','V','N','N'],
'Oral. Excellent for MSSA SSTI and Strep pharyngitis. No Gram-negative activity of clinical significance. Step-down from IV for MSSA osteomyelitis.'),
('Cefuroxime\nAxetil\n(2nd Gen)',
'Zinnat (GSK)\nCeftin (Alkem)',
'2nd Gen\nCephalosporin',
['E','E','E','N','N','E','N','N','N','E','N','N'],
'Oral. Broader than 1st gen. Good for otitis media, sinusitis, mild CAP with H. influenzae risk. Lyme disease (early). No Pseudomonal activity.'),
('Ceftriaxone\n(3rd Gen)',
'Monocef (Biochem)\nOframax (Ranbaxy)',
'3rd Gen\nCephalosporin',
['E','D','E','N','N','E','N','N','N','E','N','N'],
'IV/IM. Workhorse of hospital practice. Drug of choice: pneumococcal meningitis, CAP, typhoid (IV). Once-daily dosing. Does NOT cover Pseudomonas, MRSA, anaerobes, Enterococcus.'),
('Cefixime\n(3rd Gen Oral)',
'Taxim-O (Alkem)\nZifi (FDC)',
'3rd Gen Oral\nCephalosporin',
['E','E','N','N','N','E','N','N','N','E','N','N'],
'Oral only. Drug of choice for typhoid in India (14d) and gonorrhea (400mg single dose). No MSSA, no Pseudomonas. Most widely prescribed oral 3rd-gen ceph in India.'),
('Ceftazidime\n(3rd Gen Anti-\npseudomonal)',
'Fortum (GSK)\nTazide (Cipla)',
'3rd Gen Anti-\npseudomonal Ceph',
['E','E','N','N','N','E','N','D','N','E','N','N'],
'IV. Anti-pseudomonal cephalosporin. Less Gram-positive coverage than Ceftriaxone. Used in febrile neutropenia, VAP with Pseudomonas risk.'),
('Cefepime\n(4th Gen)',
'Cefipim (Sun)\nMaxipime',
'4th Gen\nCephalosporin',
['E','E','E','N','N','E','N','E','N','E','N','N'],
'IV. Broader spectrum than ceftazidime. Good Pseudomonas and Gram-positive coverage. Used in HAP, febrile neutropenia, complicated UTI.'),
('Cefoperazone-\nSulbactam',
'Magnex-Forte (Pfizer)\nSulbacef (Cipla)',
'3rd Gen Ceph\n+ BLI',
['E','E','E','N','N','E','V','E','E','E','E','N'],
'IV. Sulbactam component has intrinsic activity against Acinetobacter baumannii. Used widely in Indian ICUs for HAP/VAP. Variable ESBL coverage.'),
('Ceftazidime-\nAvibactam',
'Avycaz (Pfizer)',
'Advanced Ceph\n+ Novel BLI',
['N','N','N','N','N','E','E','E','V','E','N','N'],
'IV. Reserved for KPC-producing CRE and MDR Pseudomonas. Not active against MBL (NDM, VIM). Game-changer for KPC infections in India.'),
# ββ CARBAPENEMS ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Meropenem',
'Meromer (Zydus)\nMeronem (AZ)',
'Carbapenem',
['E','E','E','N','E','D','D','E','E','E','D','N'],
'IV. Broadest spectrum beta-lactam. Drug of choice for ESBL infections. Preferred carbapenem for CNS infections (no seizure risk unlike Imipenem). NOT active against MRSA.'),
('Imipenem-\nCilastatin',
'Tienam (MSD)\nImipem (Cipla)',
'Carbapenem',
['E','E','E','N','E','D','D','E','E','E','D','N'],
'IV. Similar to Meropenem. Avoid for CNS infections (seizure risk). Cilastatin prevents renal metabolism. Less Pseudomonal activity than Meropenem.'),
('Ertapenem',
'Invanz (MSD)',
'Carbapenem\n(No Pseudo)',
['E','E','E','N','N','D','D','N','N','E','D','N'],
'IV/IM once daily. Excellent for ESBL outpatient/step-down therapy. Critically: NO activity against Pseudomonas or Acinetobacter. Preserves carbapenems active against MDR organisms.'),
# ββ GLYCOPEPTIDES ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Vancomycin',
'Vancorid (Abbott)\nVancotex',
'Glycopeptide',
['E','E','E','D','E','N','N','N','N','N','N','N'],
'IV (or oral for C. diff). Drug of choice: MRSA all infections. AUC/MIC-guided dosing. NEVER use for MSSA if Cloxacillin is available (inferior outcomes). Nephrotoxic.'),
('Teicoplanin',
'Targocid (Sanofi)\nTeicomine',
'Glycopeptide',
['E','E','E','D','E','N','N','N','N','N','N','N'],
'IV. Alternative to Vancomycin. Easier monitoring. Used for MRSA, endocarditis, prosthetic joint infections. Add Rifampicin for biofilm infections.'),
# ββ OXAZOLIDINONES βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Linezolid',
'Linox (Cipla)\nZyvox (Pfizer)',
'Oxazolidinone',
['E','E','E','D','E','N','N','N','N','N','N','N'],
'IV/Oral (100% bioavailability). Drug of choice for MRSA pneumonia and osteoarticular infections. Also active in MDR-TB regimens. Bacteriostatic. Monitor CBC weekly (thrombocytopenia). Serotonin syndrome risk.'),
# ββ LIPOPEPTIDES βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Daptomycin',
'Cubicin (MSD)',
'Lipopeptide\n(Cyclic)',
['E','E','E','D','E','N','N','N','N','N','N','N'],
'IV only. Rapidly bactericidal. Drug of choice: MRSA bacteremia, right-sided endocarditis. NEVER use for pneumonia (inactivated by pulmonary surfactant). Monitor CPK weekly.'),
# ββ FLUOROQUINOLONES βββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Ciprofloxacin',
'Cifran (Ranbaxy)\nCiplox (Cipla)',
'2nd Gen\nFluoroquinolone',
['N','N','N','N','N','E','N','E','N','E','N','V'],
'Oral/IV. Best oral anti-pseudomonal. Drug of choice: chronic bacterial prostatitis (4 weeks), anthrax prophylaxis. HIGH resistance in India for UTI (>60%). Poor Strep/Pneumo coverage.'),
('Levofloxacin',
'Glevo (Glenmark)\nLox (Cipla)',
'3rd Gen\nFluoroquinolone\n(Respiratory)',
['E','D','N','N','N','E','N','V','N','E','N','D'],
'Oral/IV. "Respiratory quinolone" β excellent Pneumococcus and atypical coverage. Drug of choice: severe CAP when beta-lactam fails, Legionella. Used in MDR-TB second-line.'),
('Moxifloxacin',
'Avelox (Bayer)\nMoxiford (Alkem)',
'4th Gen\nFluoroquinolone',
['E','D','N','N','N','N','N','N','N','N','E','D'],
'Oral/IV. Best anaerobic coverage among FQs. Excellent for CAP, sinusitis, AECB. NO urinary concentration β never use for UTI. No Pseudomonal or MRSA activity.'),
('Ofloxacin',
'Zanocin (Ranbaxy)\nOflox (Cipla)',
'2nd Gen\nFluoroquinolone',
['N','N','N','N','N','E','N','V','N','E','N','E'],
'Oral/IV. Active against Chlamydia, Mycobacterium leprae (MDT). Used in MDR-TB regimens. Similar to Ciprofloxacin for Gram-negatives.'),
# ββ MACROLIDES βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Azithromycin',
'Azithral (Alembic)\nAzee (Cipla)',
'Macrolide\n(Azalide)',
['E','E','N','N','N','N','N','N','N','E','N','D'],
'Oral/IV. Drug of choice: atypical pneumonia (Mycoplasma, Chlamydophila), Chlamydia trachomatis (1g single dose), Campylobacter, typhoid (alternative), MAC prophylaxis. Prolonged tissue half-life.'),
('Clarithromycin',
'Claribid (Cipla)\nKlaricid (Abbott)',
'Macrolide',
['E','E','N','N','N','N','N','N','N','E','N','D'],
'Oral. Drug of choice (component): H. pylori eradication triple therapy. Also atypical CAP. Better GI tolerability than Erythromycin. MAC prophylaxis/treatment in HIV.'),
('Erythromycin',
'Erythrocin (Abbott)\nAlthrocin (Alembic)',
'Macrolide\n(Original)',
['E','E','N','N','N','N','N','N','N','E','N','E'],
'Oral. Oldest macrolide. Used for Strep infections in penicillin-allergic, Chlamydia (inferior to Azithromycin), diphtheria carriers. Prokinetic at low doses (gastroparesis).'),
# ββ TETRACYCLINES ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Doxycycline',
'Doxicip (Cipla)\nDoxt (Alkem)',
'Tetracycline\n(2nd Gen)',
['V','V','N','N','N','N','N','N','N','V','V','D'],
'Oral/IV. Drug of choice: scrub typhus, rickettsial diseases, brucellosis (+ Rifampicin), leptospirosis (mild), Chlamydia, malaria prophylaxis, acne (long-term). Avoid in pregnancy and children <8y.'),
('Minocycline',
'Minoz (Sun)\nMinolox (Cipla)',
'Tetracycline\n(2nd Gen)',
['V','V','E','V','N','N','N','N','V','V','N','D'],
'Oral. Drug of choice: acne vulgaris (long-term). Also community MRSA skin infections (CA-MRSA). Nocardiosis. Penetrates CSF better than Doxycycline. Vestibular side effects.'),
# ββ NITROIMIDAZOLES ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Metronidazole',
'Flagyl (Abbott)\nMetrogyl (J.B.Chem)',
'Nitroimidazole',
['N','N','N','N','N','N','N','N','N','N','D','N'],
'Oral/IV. Drug of choice: amoebiasis, giardiasis, BV, anaerobic infections (B. fragilis, C. difficile), tetanus (preferred over Penicillin). Zero aerobic coverage. Avoid alcohol.'),
('Tinidazole',
'Fasigyn (Pfizer)\nTiniba (Cipla)',
'Nitroimidazole\n(2nd Gen)',
['N','N','N','N','N','N','N','N','N','N','D','N'],
'Oral. Better tolerated than Metronidazole (less nausea). Drug of choice: giardiasis (2g single dose). Amoebiasis, trichomoniasis, BV. Shorter course than Metro.'),
# ββ SULFONAMIDES βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Cotrimoxazole\n(TMP-SMX)',
'Septran (GSK)\nBactrim (Roche)',
'Sulfonamide +\nTMP',
['E','E','N','V','V','V','N','N','N','E','N','N'],
'Oral/IV. Drug of choice: PCP prophylaxis/treatment (HIV), Nocardia, Toxoplasma prophylaxis. CA-MRSA skin infections (Septran 960mg BD). UTI where E. coli sensitive. Avoid in 1st trimester.'),
# ββ LINCOSAMIDES βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Clindamycin',
'Dalacin C (Pfizer)\nClinmycin (Cipla)',
'Lincosamide',
['E','E','E','V','N','N','N','N','N','N','D','N'],
'Oral/IV. Excellent anaerobic and Gram-positive coverage. Drug of choice: dental/oral anaerobic infections, bone osteomyelitis (excellent bone penetration), CA-MRSA (combination), NF (blocks GAS toxin). C. diff risk with use.'),
# ββ AMINOGLYCOSIDES ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Gentamicin /\nAmikacin',
'Garamycin (Schering)\nAmikin (BMS)',
'Aminoglycoside',
['N','N','E','N','V','E','V','E','E','E','N','N'],
'IV/IM only. Used for synergy (+ Penicillin for IE), Gram-neg sepsis. Amikacin for Gentamicin-resistant organisms. Nephrotoxic + ototoxic β once-daily dosing preferred. Monitor levels. Avoid in CKD.'),
# ββ POLYMYXINS βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Colistin\n(Polymyxin E)',
'Colistin-CMS\n(Cipla/Sun)',
'Polymyxin\n(Last Resort)',
['N','N','N','N','N','E','E','D','D','N','N','N'],
'IV/inhaled. Last-resort only. Drug of choice: XDR Acinetobacter, PDR Pseudomonas, CRE. Nephrotoxic (~50% AKI). Always use in combination. Monitor creatinine daily. 9MU loading dose mandatory.'),
# ββ RIFAMYCINS βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Rifampicin',
'Rifampicin (Lupin)\nRimactane',
'Rifamycin',
['E','N','E','E','N','N','N','N','N','N','N','V'],
'Oral. NEVER use as monotherapy (rapid resistance). Combinations: TB (HRZE), leprosy (MDT), Brucellosis (+ Doxy), MRSA prosthetic infections (+ Vancomycin/Teicoplanin), meningococcal prophylaxis. Strong CYP450 inducer.'),
('Rifaximin',
'Rcifax (Cipla)\nRifagut (Sun)',
'Rifamycin\n(Non-absorbed)',
['N','N','N','N','N','V','N','N','N','N','E','N'],
'Oral only (non-absorbed β acts in gut lumen). Traveler\'s diarrhea (non-invasive E. coli), hepatic encephalopathy prevention (550mg BD), SIBO (200mg TDS). Not for systemic infections.'),
# ββ NITROFURANS ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Nitrofurantoin',
'Niftran (Alkem)\nFuradantin',
'Nitrofuran',
['N','N','N','N','E','E','V','N','N','N','N','N'],
'Oral only. Concentrated exclusively in urine β use ONLY for lower UTI/cystitis. Drug of choice: uncomplicated UTI in women and pregnancy (2nd trimester). NOT for pyelonephritis (inadequate tissue levels). Do not use if CrCl <30.'),
# ββ TIGECYCLINE ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
('Tigecycline',
'Tygacil (Pfizer)',
'Glycylcycline',
['E','E','E','E','E','E','E','N','E','E','E','E'],
'IV only. Broadest non-carbapenem spectrum. Drug of choice: XDR Acinetobacter combination therapy. NOT active against Pseudomonas. Do NOT use for bacteremia or UTI (inadequate serum/urine levels). High mortality in bloodstream infections.'),
]
# ββ Table builders βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ORG_WIDTHS = [2.15*cm] * 12
CELL_RENDERERS = {
'D': doc_cell,
'E': eff_cell,
'V': var_cell,
'N': no_cell,
}
def cov_cell(code, text=''):
if code == 'D':
p = Paragraph('<b>β
DOC</b>', ParagraphStyle('dc',
fontName='Helvetica-Bold', fontSize=7, textColor=C['doc'], leading=9))
bg = C['doc_bg']
elif code == 'E':
p = Paragraph('β Eff.', ParagraphStyle('ec',
fontName='Helvetica', fontSize=7, textColor=C['eff'], leading=9))
bg = C['eff_bg']
elif code == 'V':
p = Paragraph('~ Var.', ParagraphStyle('vc',
fontName='Helvetica-Oblique', fontSize=7, textColor=C['var'], leading=9))
bg = C['var_bg']
else:
p = Paragraph('β No', ParagraphStyle('nc',
fontName='Helvetica', fontSize=6.5, textColor=C['text_lt'], leading=9))
bg = C['row_norm']
return p, bg
def build_drug_table(drug_entries, styles):
"""Build the main cross-reference table for a set of drug entries."""
# Column widths: drug col + 12 org cols
drug_col_w = 3.0*cm
brand_col_w = 2.6*cm
# Org cols spread across remaining width
avail_w = W - 3.0*cm - drug_col_w - brand_col_w
oc_w = avail_w / 12
col_widths = [drug_col_w, brand_col_w] + [oc_w] * 12
# Header row
header_row = [
Paragraph('<b>Drug</b>', ST['hdr']),
Paragraph('<b>Brand / Class</b>', ST['hdr']),
]
for org in ORG_COLS:
header_row.append(Paragraph(f'<b>{org}</b>', ParagraphStyle('oh',
fontName='Helvetica-Bold', fontSize=6, textColor=C['white'], leading=8, alignment=TA_CENTER)))
rows = [header_row]
style_cmds = [
# Header
('BACKGROUND', (0,0), (-1,0), C['navy']),
('TEXTCOLOR', (0,0), (-1,0), C['white']),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('TOPPADDING', (0,0), (-1,0), 5),
('BOTTOMPADDING', (0,0), (-1,0), 5),
('LEFTPADDING', (0,0), (-1,-1), 4),
('RIGHTPADDING', (0,0), (-1,-1), 4),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,1), (-1,-1), 4),
('BOTTOMPADDING', (0,1), (-1,-1), 4),
('GRID', (0,0), (-1,-1), 0.3, C['border']),
('LINEBELOW', (0,0), (-1,0), 1.2, C['blue']),
('ALIGN', (2,0), (-1,-1), 'CENTER'),
]
for row_i, (drug, brand, cls, cov, note) in enumerate(drug_entries):
r = row_i + 1 # 0 = header
bg_base = C['row_alt'] if row_i % 2 == 0 else C['row_norm']
style_cmds.append(('BACKGROUND', (0,r), (1,r), bg_base))
row = [
Paragraph(drug.replace('\n', '<br/>'), ST['drug']),
Paragraph(f'{brand.replace(chr(10), "<br/>")}<br/><font size="6.5" color="#6d28d9"><i>{cls.replace(chr(10), " ")}</i></font>', ST['brand']),
]
for col_i, code in enumerate(cov):
p, cell_bg = cov_cell(code)
row.append(p)
c_col = 2 + col_i
style_cmds.append(('BACKGROUND', (c_col,r), (c_col,r), cell_bg))
rows.append(row)
t = Table(rows, colWidths=col_widths, repeatRows=1)
t.setStyle(TableStyle(style_cmds))
return t
def build_notes_table(drug_entries):
"""Build clinical notes table."""
header = [
Paragraph('<b>Drug</b>', ST['hdr']),
Paragraph('<b>Clinical Notes & Key Facts</b>', ST['hdr']),
]
rows = [header]
for drug, brand, cls, cov, note in drug_entries:
rows.append([
Paragraph(drug.replace('\n', '<br/>') + f'<br/><font size="6.5" color="#0f766e"><i>{cls.replace(chr(10), " ")}</i></font>',
ST['drug']),
Paragraph(note, ST['note']),
])
t = Table(rows, colWidths=[4.5*cm, W - 3*cm - 4.5*cm], repeatRows=1)
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), C['navy2']),
('TEXTCOLOR', (0,0), (-1,0), C['white']),
('TOPPADDING', (0,0), (-1,0), 5),
('BOTTOMPADDING', (0,0), (-1,0), 5),
('GRID', (0,0), (-1,-1), 0.3, C['border']),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,1), (-1,-1), 4),
('BOTTOMPADDING', (0,1), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [C['row_norm'], C['row_alt']]),
('LINEBELOW', (0,0), (-1,0), 1.2, C['blue']),
]))
return t
def sec_hdr(title, bg):
t = Table([[Paragraph(title, ST['sec'])]], colWidths=[W - 3*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('LEFTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
]))
return t
# ββ Legend βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def build_legend():
items = [
(C['doc_bg'], C['doc'], 'β
DOC', 'Drug of Choice β best proven agent for this organism'),
(C['eff_bg'], C['eff'], 'β Eff.', 'Effective β clinically active, used routinely'),
(C['var_bg'], C['var'], '~ Var.', 'Variable β conditional activity (resistance patterns, site-specific, or organism sub-type dependent)'),
(C['red_lt'], C['red'], 'β No', 'Not active β intrinsically resistant or clinically inactive'),
]
rows = []
for bg, fg, label, desc in items:
p_label = Paragraph(f'<b>{label}</b>', ParagraphStyle('ll',
fontName='Helvetica-Bold', fontSize=8, textColor=fg, leading=11))
p_desc = Paragraph(desc, ST['leg_desc'])
swatch = Table([['']], colWidths=[0.8*cm], rowHeights=[0.55*cm])
swatch.setStyle(TableStyle([('BACKGROUND', (0,0), (0,0), bg),
('BOX', (0,0), (0,0), 0.5, C['border'])]))
rows.append([swatch, p_label, p_desc])
t = Table(rows, colWidths=[1.0*cm, 3.0*cm, W - 3*cm - 4.0*cm])
t.setStyle(TableStyle([
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
wrap = Table([[t]], colWidths=[W - 3*cm])
wrap.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C['slate_lt']),
('BOX', (0,0), (-1,-1), 0.5, C['border']),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
]))
return wrap
# ββ Cover page βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def make_cover():
elems = []
elems.append(Spacer(1, 2.5*cm))
rows = [
[Paragraph('DRUG-TO-BACTERIA', ParagraphStyle('t1', fontName='Helvetica-Bold',
fontSize=30, textColor=C['white'], leading=34, alignment=TA_CENTER))],
[Paragraph('CROSS-REFERENCE TABLE', ParagraphStyle('t2', fontName='Helvetica-Bold',
fontSize=24, textColor=HexColor('#93c5fd'), leading=28, alignment=TA_CENTER))],
[Paragraph('Reverse Lookup: For Each Drug, Which Organisms Are Covered?',
ParagraphStyle('t3', fontName='Helvetica', fontSize=12,
textColor=HexColor('#94a3b8'), leading=16, alignment=TA_CENTER))],
]
ct = Table(rows, colWidths=[W - 3*cm])
ct.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C['navy']),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
('LEFTPADDING', (0,0), (-1,-1), 20),
('RIGHTPADDING', (0,0), (-1,-1), 20),
]))
elems.append(ct)
elems.append(Spacer(1, 0.4*cm))
sub = Table([[Paragraph(
'India Hospital & General Practice | Edition 2025β26 | 40 Antibiotics Γ 12 Organism Groups',
ParagraphStyle('s', fontName='Helvetica', fontSize=10.5, textColor=C['navy'],
leading=14, alignment=TA_CENTER))]], colWidths=[W - 3*cm])
sub.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C['blue_lt']),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
]))
elems.append(sub)
elems.append(Spacer(1, 0.8*cm))
# Classes covered
classes = [
('π', 'Penicillins', 'Benzylpenicillin, Amoxicillin, Co-amoxiclav, Cloxacillin, Ampicillin-Sulbactam, Pip-Tazo'),
('π', 'Cephalosporins', 'Cephalexin (1G), Cefuroxime (2G), Ceftriaxone, Cefixime, Ceftazidime, Cefepime (4G), Cef-Avibactam'),
('π', 'Carbapenems', 'Meropenem, Imipenem-Cilastatin, Ertapenem'),
('π', 'Glycopeptides & Lipopeptides', 'Vancomycin, Teicoplanin, Daptomycin'),
('π', 'Oxazolidinones', 'Linezolid'),
('π', 'Fluoroquinolones', 'Ciprofloxacin, Levofloxacin, Moxifloxacin, Ofloxacin'),
('π', 'Macrolides', 'Azithromycin, Clarithromycin, Erythromycin'),
('π', 'Tetracyclines', 'Doxycycline, Minocycline'),
('π', 'Nitroimidazoles', 'Metronidazole, Tinidazole'),
('π', 'Others', 'Cotrimoxazole, Clindamycin, Aminoglycosides, Colistin, Rifampicin, Rifaximin, Nitrofurantoin, Tigecycline'),
]
cls_rows = []
for icon, cls, detail in classes:
cls_rows.append([
Paragraph(icon, ParagraphStyle('ic', fontName='Helvetica-Bold', fontSize=11,
leading=14, alignment=TA_CENTER)),
Paragraph(f'<b>{cls}</b><br/><font size="7.5" color="#64748b">{detail}</font>',
ParagraphStyle('cr', fontName='Helvetica', fontSize=9, leading=13, textColor=C['navy'])),
])
cls_t = Table(cls_rows, colWidths=[0.9*cm, W - 3*cm - 0.9*cm])
cls_t.setStyle(TableStyle([
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 8),
('ROWBACKGROUNDS', (0,0), (-1,-1), [C['blue_lt'], C['row_norm']]),
('BOX', (0,0), (-1,-1), 0.5, C['border']),
('LINEBELOW', (0,0), (-1,-1), 0.3, C['border']),
]))
elems.append(cls_t)
elems.append(Spacer(1, 0.6*cm))
# Organism columns legend
org_info = [
('Strep (GAS/GBS/Viridans)', 'Group A/B Strep, viridans strep, oral Streptococci'),
('Pneumococcus', 'S. pneumoniae β CAP, meningitis, sinusitis, otitis media'),
('MSSA (S. aureus)', 'Methicillin-sensitive S. aureus β skin, bone, bacteremia'),
('MRSA', 'Methicillin-resistant S. aureus β hospital and community'),
('Enterococcus', 'E. faecalis / E. faecium β UTI, endocarditis'),
('E. coli / Klebsiella (Sensitive)', 'Common Enterobacteriaceae β UTI, sepsis, pneumonia'),
('ESBL Organisms', 'Extended-spectrum beta-lactamase producers β resistant Enterobacteriaceae'),
('Pseudomonas', 'P. aeruginosa β VAP, burn infections, UTI, cystic fibrosis'),
('Acinetobacter', 'A. baumannii β ICU-acquired, ventilator-associated infections'),
('H. influenzae', 'Haemophilus β otitis media, sinusitis, AECB, epiglottitis'),
('Anaerobes', 'B. fragilis, Clostridia, oral anaerobes β abdominal, dental'),
('Atypicals', 'Mycoplasma, Chlamydophila, Rickettsia, Legionella'),
]
o_rows = []
for org, desc in org_info:
o_rows.append([
Paragraph(f'<b>{org}</b>', ParagraphStyle('on', fontName='Helvetica-Bold',
fontSize=7.5, textColor=C['navy'], leading=10)),
Paragraph(desc, ParagraphStyle('od', fontName='Helvetica',
fontSize=7.5, textColor=C['text_med'], leading=10)),
])
org_t = Table(o_rows, colWidths=[5.5*cm, W - 3*cm - 5.5*cm])
org_t.setStyle(TableStyle([
('ROWBACKGROUNDS', (0,0), (-1,-1), [C['teal_lt'], C['row_norm']]),
('GRID', (0,0), (-1,-1), 0.3, C['border']),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 7),
('RIGHTPADDING', (0,0), (-1,-1), 7),
]))
org_hdr = Table([[Paragraph('<b>ORGANISM COLUMN GUIDE</b>',
ParagraphStyle('oh2', fontName='Helvetica-Bold', fontSize=9,
textColor=C['white'], leading=12))]], colWidths=[W - 3*cm])
org_hdr.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C['teal']),
('LEFTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
]))
elems.append(org_hdr)
elems.append(org_t)
elems.append(Spacer(1, 0.6*cm))
disc = Paragraph(
'<b>β Important:</b> This table represents general spectrum of activity under typical susceptibility patterns. '
'Coverage may vary based on local resistance rates, organism sub-type, and infection site. '
'ALWAYS confirm with culture/sensitivity results and local antibiogram data. '
'De-escalate empiric broad-spectrum therapy within 48β72 hours.',
ParagraphStyle('d', fontName='Helvetica-Oblique', fontSize=7.5, textColor=C['text_med'], leading=11))
disc_t = Table([[disc]], colWidths=[W - 3*cm])
disc_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C['amber_lt']),
('BOX', (0,0), (-1,-1), 0.8, C['amber']),
('TOPPADDING', (0,0), (-1,-1), 8),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
]))
elems.append(disc_t)
elems.append(PageBreak())
return elems
# ββ Drug class sections βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
CLASS_SECTIONS = [
('π PENICILLINS', C['blue'],
[d for d in DRUG_DATA if 'Penicillin' in d[2] or 'penicillin' in d[2].lower() or 'Aminopenicillin' in d[2] or 'BLI' in d[2]]),
('π CEPHALOSPORINS', C['teal'],
[d for d in DRUG_DATA if 'Cephalosporin' in d[2] or 'Ceph' in d[2]]),
('π CARBAPENEMS', C['amber'],
[d for d in DRUG_DATA if 'Carbapenem' in d[2]]),
('π GLYCOPEPTIDES, LIPOPEPTIDES & OXAZOLIDINONES', C['purple'],
[d for d in DRUG_DATA if any(x in d[2] for x in ['Glycopeptide','Lipopeptide','Oxazolidinone'])]),
('π FLUOROQUINOLONES', C['orange'],
[d for d in DRUG_DATA if 'Fluoroquinolone' in d[2]]),
('π MACROLIDES & TETRACYCLINES', C['rose'],
[d for d in DRUG_DATA if any(x in d[2] for x in ['Macrolide','Tetracycline'])]),
('π NITROIMIDAZOLES, SULFONAMIDES & LINCOSAMIDES', C['cyan'],
[d for d in DRUG_DATA if any(x in d[2] for x in ['Nitroimidazole','Sulfonamide','Lincosamide'])]),
('π AMINOGLYCOSIDES, POLYMYXINS, RIFAMYCINS & OTHERS', C['slate'],
[d for d in DRUG_DATA if any(x in d[2] for x in ['Aminoglycoside','Polymyxin','Rifamycin','Nitrofuran','Glycylcycline'])]),
]
# ββ Build PDF ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def build():
out = '/tmp/workspace/antibiotic-guide/Drug_Bacteria_CrossReference_India.pdf'
doc = BaseDocTemplate(
out, pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=2.3*cm, bottomMargin=1.5*cm,
title='Drug-to-Bacteria Cross-Reference Table β India',
author='Clinical Reference',
subject='Antibiotic spectrum reverse lookup',
)
# Cover template (no header)
cf = Frame(0, 0, W, H, leftPadding=1.5*cm, rightPadding=1.5*cm,
topPadding=1.5*cm, bottomPadding=1.5*cm)
def cover_bg(c, d):
c.setFillColor(C['navy']); c.rect(0, 0, W, H, fill=1, stroke=0)
c.setFillColor(C['blue']); c.rect(0, 0, W, 8, fill=1, stroke=0)
c.rect(0, H - 8, W, 8, fill=1, stroke=0)
cover_tpl = PageTemplate(id='Cover', frames=[cf])
cover_tpl.beforeDrawPage = cover_bg
# Content template
content_f = Frame(1.5*cm, 1.5*cm, W - 3*cm, H - 3.9*cm,
leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0)
content_tpl = PageTemplate(id='Content', frames=[content_f], onPage=make_header)
doc.addPageTemplates([cover_tpl, content_tpl])
elems = []
elems.extend(make_cover())
elems.append(NextPageTemplate('Content'))
# Legend first
leg_hdr = Table([[Paragraph('<b>COVERAGE LEGEND</b>', ST['sec'])]], colWidths=[W - 3*cm])
leg_hdr.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C['navy']),
('LEFTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
]))
elems.append(leg_hdr)
elems.append(build_legend())
elems.append(Spacer(1, 0.4*cm))
# One table per class section
for sec_title, sec_color, drug_list in CLASS_SECTIONS:
if not drug_list:
continue
elems.append(sec_hdr(sec_title, sec_color))
elems.append(build_drug_table(drug_list, ST))
elems.append(Spacer(1, 0.35*cm))
# Clinical notes section
elems.append(sec_hdr('π CLINICAL NOTES & KEY FACTS (All Drugs)', C['slate']))
elems.append(build_notes_table(DRUG_DATA))
elems.append(Spacer(1, 0.4*cm))
# Critical rules table
rules = [
('MSSA β Cloxacillin, NOT Vancomycin', 'Vancomycin is clinically inferior to Cloxacillin for MSSA. Use only if true penicillin allergy documented.'),
('ESBL β Carbapenem, NOT Cephalosporin', 'Cephalosporins fail against ESBL despite low MIC on sensitivity report (inoculum effect). Meropenem is drug of choice.'),
('MRSA pneumonia β Linezolid preferred over Daptomycin', 'Daptomycin is inactivated by pulmonary surfactant. Vancomycin or Linezolid for MRSA lung infections.'),
('GAS Strep β Penicillin always works', 'Group A Streptococcus has never developed clinical resistance to Penicillin.'),
('Listeria β Add Ampicillin', 'Cephalosporins (including Ceftriaxone) do NOT cover Listeria. Critical for elderly/neonatal meningitis.'),
('Gonorrhea β Ceftriaxone IM, not Ciprofloxacin', 'Fluoroquinolone resistance >50% globally. Always use Ceftriaxone IM + Azithromycin 1g oral.'),
('Tetanus β Metronidazole > Penicillin', 'Penicillin G is a GABA antagonist and may worsen tetanic spasms. Metronidazole is preferred.'),
('Typhoid in India β Cefixime or Azithromycin', 'FQ resistance high in India. Do NOT use Ciprofloxacin empirically for enteric fever.'),
('Acinetobacter β Colistin + Sulbactam', 'XDR Acinetobacter: only Colistin, Tigecycline (not bacteremia), and Sulbactam (Magnex-Forte) have activity.'),
('C. diff β Oral Vancomycin (not IV)', 'IV Vancomycin does NOT reach colon lumen. Use oral Vancomycin 125β500mg QID for C. difficile colitis.'),
('Atypicals β No cell wall β Beta-lactams inactive', 'Mycoplasma, Chlamydia, Rickettsia, Legionella lack cell walls. All penicillins and cephalosporins are completely inactive.'),
('De-escalate at 48β72h', 'Always review and narrow empirical broad-spectrum antibiotics once culture sensitivity results are available.'),
]
rules_hdr = Table([[Paragraph('<b>π¨ CRITICAL RULES β NEVER FORGET</b>', ST['sec'])]], colWidths=[W - 3*cm])
rules_hdr.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C['red']),
('LEFTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
]))
rules_rows = [[
Paragraph('<b>Rule</b>', ST['hdr']),
Paragraph('<b>Explanation</b>', ST['hdr']),
]]
for rule, expl in rules:
rules_rows.append([
Paragraph(f'<b>{rule}</b>', ParagraphStyle('rt', fontName='Helvetica-Bold',
fontSize=7.5, textColor=C['red'], leading=10)),
Paragraph(expl, ST['note']),
])
rules_t = Table(rules_rows, colWidths=[6.5*cm, W - 3*cm - 6.5*cm], repeatRows=1)
rules_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), C['navy']),
('TEXTCOLOR', (0,0), (-1,0), C['white']),
('GRID', (0,0), (-1,-1), 0.3, C['border']),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
('ROWBACKGROUNDS', (0,1), (-1,-1), [C['red_lt'], C['row_norm']]),
('LINEBELOW', (0,0), (-1,0), 1.2, C['red']),
]))
elems.append(rules_hdr)
elems.append(rules_t)
elems.append(Spacer(1, 0.35*cm))
# Ref footer
ref = Paragraph(
'<b>References:</b> KD Tripathi Essentials of Medical Pharmacology 9E | Harrison\'s Principles of Internal Medicine 22E (2025) | '
'NCDC National Treatment Guidelines India | IDSA Antimicrobial Guidelines | WHO AWaRe Classification 2023 | '
'Mandell Douglas Bennett\'s Principles of Infectious Diseases',
ParagraphStyle('ref', fontName='Helvetica-Oblique', fontSize=7, textColor=C['text_lt'], leading=10))
ref_t = Table([[ref]], colWidths=[W - 3*cm])
ref_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C['slate_lt']),
('BOX', (0,0), (-1,-1), 0.4, C['border']),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
]))
elems.append(ref_t)
doc.build(elems, canvasmaker=NC)
return out
if __name__ == '__main__':
p = build()
print(f'SUCCESS: {p}')
cd /tmp/workspace/antibiotic-guide && python generate_crossref_pdf.py 2>&1
python3 -c " import pdfplumber with pdfplumber.open('/tmp/workspace/antibiotic-guide/Drug_Bacteria_CrossReference_India.pdf') as pdf: print(f'Pages: {len(pdf.pages)}') for i, p in enumerate(pdf.pages): t = (p.extract_text() or '') print(f' P{i+1}: {len(t)}ch | {t[:90].strip()}') " ls -lh /tmp/workspace/antibiotic-guide/Drug_Bacteria_CrossReference_India.pdf
Drug Bacteria CrossReference India
PDF Document Β· PDF
| Symbol | Meaning | Color |
|---|---|---|
| β DOC | Drug of Choice | Green |
| β Eff. | Effective / routinely used | Blue |
| ~ Var. | Variable (resistance-dependent) | Amber |
| β No | Not active / intrinsically resistant | Grey |
Strep (GAS/GBS) | Pneumococcus | MSSA | MRSA | Enterococcus | E. coli/Klebsiella | ESBL | Pseudomonas | Acinetobacter | H. influenzae | Anaerobes | Atypicals