give me all injection names with dosage and amp or vial form it comes and it should be given in iv or im dosages for the medicine department in a govt hospital or odisha
Odisha government hospital essential medicines list injections medicine department 2024
https://qps.nhsrcindia.org/sites/default/files/2024-01/Revis…
Odisha OSMCL essential drug list injections district hospital medicine ward 2023 2024
https://osmcl.nic.in/sites/default/files/Essential%20Drug%20…
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 1 | Diclofenac | 25 mg/ml (3 ml amp) | Ampoule | IM |
| 2 | Paracetamol | 10 mg/ml (100 ml) | Vial/Infusion | IV |
| 3 | Tramadol | 50 mg/ml (2 ml amp) | Ampoule | IV / IM |
| 4 | Morphine | 10 mg/ml (1 ml amp) | Ampoule | IV / IM |
| 5 | Pentazocine | 30 mg/ml | Ampoule | IV / IM |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 6 | Benzylpenicillin (Crystalline Penicillin) | 10 lakh units | Vial (dry powder) | IV / IM |
| 7 | Benzathine Benzylpenicillin | 12 lakh units | Vial (dry powder) | IM (deep) |
| 8 | Ampicillin | 250 mg, 500 mg, 1 g | Vial (dry powder) | IV / IM |
| 9 | Amoxicillin + Clavulanic Acid | 500 mg + 100 mg; 1 g + 200 mg | Vial | IV |
| 10 | Cloxacillin | 500 mg | Vial (dry powder) | IV / IM |
| 11 | Cefazolin | 500 mg, 1 g | Vial (dry powder) | IV / IM |
| 12 | Cefotaxime | 250 mg, 1 g | Vial (dry powder) | IV / IM |
| 13 | Ceftriaxone | 250 mg, 500 mg, 1 g | Vial (dry powder) | IV / IM |
| 14 | Ceftazidime | 250 mg, 1 g | Vial (dry powder) | IV / IM |
| 15 | Piperacillin + Tazobactam | 1 g + 125 mg; 2 g + 250 mg; 4 g + 500 mg | Vial (dry powder) | IV |
| 16 | Gentamicin | 10 mg/ml (2 ml amp); 40 mg/ml (2 ml amp) | Ampoule | IV / IM |
| 17 | Amikacin | 250 mg/ml (2 ml amp) | Ampoule | IV / IM |
| 18 | Ciprofloxacin | 200 mg/100 ml | IV Bottle/Vial | IV |
| 19 | Metronidazole | 5 mg/ml, 500 mg/100 ml | IV Bottle | IV |
| 20 | Vancomycin | 500 mg, 1 g | Vial (dry powder) | IV |
| 21 | Meropenem | 250 mg, 500 mg, 1 g | Vial (dry powder) | IV |
| 22 | Imipenem + Cilastatin | 500 mg + 500 mg | Vial | IV |
| 23 | Chloramphenicol | 1 g | Vial | IV / IM |
| 24 | Doxycycline | 100 mg | Vial | IV |
| 25 | Co-trimoxazole (Sulfamethoxazole + Trimethoprim) | 400 mg + 80 mg / 5 ml | Ampoule/Vial | IV |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 26 | Amphotericin B (conventional) | 50 mg | Vial (dry powder) | IV (slow infusion) |
| 27 | Fluconazole | 2 mg/ml (100 ml) | IV Bottle | IV |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 28 | Artesunate | 60 mg | Vial (dry powder) | IV / IM |
| 29 | Quinine | 300 mg/ml (2 ml amp) | Ampoule | IV (slow infusion) / IM |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 30 | Streptomycin | 0.75 g, 1 g | Vial (dry powder) | IM |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 31 | Adrenaline (Epinephrine) | 1 mg/ml (1 ml amp) | Ampoule | IV / IM |
| 32 | Noradrenaline (Norepinephrine) | 2 mg/ml | Ampoule | IV (infusion) |
| 33 | Dopamine | 40 mg/ml (5 ml amp) | Ampoule | IV (infusion) |
| 34 | Dobutamine | 250 mg/20 ml | Vial | IV (infusion) |
| 35 | Digoxin | 0.25 mg/ml (2 ml amp) | Ampoule | IV / IM |
| 36 | Lignocaine (Lidocaine) | 20 mg/ml (5 ml amp) | Ampoule | IV |
| 37 | Atropine | 0.6 mg/ml; 1 mg/ml | Ampoule | IV / IM |
| 38 | Adenosine | 3 mg/ml (2 ml amp) | Ampoule | IV (rapid bolus) |
| 39 | Amiodarone | 50 mg/ml (3 ml amp) | Ampoule | IV |
| 40 | Esmolol | 10 mg/ml | Vial | IV |
| 41 | Labetalol | 5 mg/ml | Ampoule | IV |
| 42 | Hydralazine | 20 mg/ml | Ampoule | IV / IM |
| 43 | Sodium Nitroprusside | 50 mg/vial | Vial | IV (infusion) |
| 44 | Streptokinase | 7.5 lac units / 15 lac units | Vial | IV (infusion) |
| 45 | Enoxaparin (LMWH) | 40 mg/0.4 ml; 60 mg/0.6 ml | Pre-filled syringe | SC / IV |
| 46 | Heparin | 5000 IU/ml; 25000 IU/ml | Vial | IV / SC |
| 47 | Furosemide (Frusemide) | 10 mg/ml (2 ml amp) | Ampoule | IV / IM |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 48 | Diazepam | 5 mg/ml (2 ml amp) | Ampoule | IV / IM |
| 49 | Lorazepam | 2 mg/ml (1 ml, 2 ml amp) | Ampoule | IV / IM |
| 50 | Midazolam | 1 mg/ml (5 ml); 5 mg/ml (5 ml) | Ampoule | IV / IM |
| 51 | Phenytoin | 50 mg/ml (5 ml amp) | Ampoule | IV (slow) |
| 52 | Phenobarbitone | 200 mg/ml (1 ml amp) | Ampoule | IV / IM |
| 53 | Haloperidol | 5 mg/ml (1 ml amp) | Ampoule | IV / IM |
| 54 | Promethazine | 25 mg/ml; 50 mg/ml | Ampoule | IV / IM |
| 55 | Neostigmine | 0.5 mg/ml | Ampoule | IV / IM |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 56 | Hydrocortisone | 100 mg; 200 mg | Vial (dry powder) | IV / IM |
| 57 | Dexamethasone | 4 mg/ml (2 ml amp) | Ampoule | IV / IM |
| 58 | Methylprednisolone | 40 mg, 125 mg, 500 mg, 1 g | Vial | IV |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 59 | Regular Insulin (Soluble) | 40 IU/ml (10 ml vial); 100 IU/ml | Vial | IV (infusion) / SC |
| 60 | Glucagon | 1 mg | Vial | IV / IM / SC |
| 61 | Octreotide | 50 mcg/ml, 100 mcg/ml (1 ml amp) | Ampoule | SC / IV |
| 62 | Vasopressin | 20 IU/ml (1 ml amp) | Ampoule | IV |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 63 | 50% Dextrose | 500 mg/ml (25 ml amp / 50 ml) | Ampoule/Vial | IV (bolus) |
| 64 | Calcium Gluconate | 100 mg/ml (10 ml amp) = 1 g amp | Ampoule | IV (slow) |
| 65 | Magnesium Sulphate | 500 mg/ml (2 ml amp = 1 g); 50% (10 ml = 5 g) | Ampoule | IV / IM |
| 66 | Potassium Chloride (KCl) | 15% (10 ml amp = 1.5 g) | Ampoule | IV (diluted, infusion only) |
| 67 | Sodium Bicarbonate | 7.5% (10 ml amp) | Ampoule | IV |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 68 | Naloxone | 0.4 mg/ml (1 ml amp) | Ampoule | IV / IM |
| 69 | N-Acetylcysteine | 200 mg/ml (10 ml amp) | Ampoule | IV (infusion) |
| 70 | Calcium Gluconate | 100 mg/ml (10 ml amp) | Ampoule | IV (slow) |
| 71 | Desferrioxamine | 500 mg | Vial | IV / IM |
| 72 | Atropine | 0.6 mg/ml; 1 mg/ml (for organophosphate poisoning) | Ampoule | IV / IM |
| 73 | Pralidoxime (PAM) | 1 g/vial | Vial | IV / IM |
| 74 | Snake Venom Antiserum (Polyvalent) | Soluble / Lyophilized | Vial | IV (infusion) |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 75 | Aminophylline | 25 mg/ml (10 ml amp = 250 mg) | Ampoule | IV (slow infusion) |
| 76 | Hydrocortisone | 100 mg, 200 mg (for acute asthma/COPD) | Vial | IV |
| 77 | Salbutamol (for nebulization / IV use) | 0.5 mg/ml (1 ml amp) | Ampoule | IV (slow) |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 78 | Ondansetron | 2 mg/ml (2 ml amp = 4 mg) | Ampoule | IV / IM |
| 79 | Metoclopramide | 5 mg/ml (2 ml amp) | Ampoule | IV / IM |
| 80 | Ranitidine | 25 mg/ml (2 ml amp = 50 mg) | Ampoule | IV / IM |
| 81 | Pantoprazole | 40 mg | Vial (dry powder) | IV |
| 82 | Omeprazole | 40 mg | Vial (dry powder) | IV |
| 83 | Vitamin K (Phytomenadione) | 10 mg/ml (1 ml amp) | Ampoule | IV (slow) / IM |
| 84 | Vasopressin / Terlipressin | 1 mg/amp (terlipressin) | Ampoule | IV |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 85 | Thiamine (Vitamin B1) | 100 mg/ml (2 ml amp) | Ampoule | IV / IM |
| 86 | Hydroxocobalamin (Vit B12) | 1 mg/ml (1 ml amp) | Ampoule | IM |
| 87 | Folic Acid | 5 mg/ml (1 ml amp) | Ampoule | IV / IM |
| 88 | Iron Sucrose | 20 mg/ml (5 ml amp = 100 mg) | Ampoule | IV (infusion) |
| 89 | Ferric Carboxymaltose | 50 mg/ml (2 ml, 10 ml amp) | Vial | IV (infusion) |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 90 | Chlorpheniramine Maleate | 22.75 mg/ml (1 ml amp) | Ampoule | IV / IM |
| 91 | Pheniramine Maleate | 22.75 mg/ml | Ampoule | IV / IM |
| S.No | Drug Name | Dosage / Strength | Form | Route |
|---|---|---|---|---|
| 92 | Mannitol | 20% (100 ml, 250 ml, 500 ml) | IV Bottle | IV (infusion) |
| 93 | Albumin (Human) | 20%, 25% (50 ml, 100 ml) | Vial | IV (infusion) |
| 94 | Anti-D Immunoglobulin | 300 mcg | Vial | IM |
| 95 | Anti-Rabies Immunoglobulin | 150 IU/ml | Vial | IM (infiltration) |
| 96 | Anti-Tetanus Serum (ATS) | 1500 IU, 10000 IU | Vial | IV / IM |
| 97 | Tetanus Immunoglobulin (TIG) | 500 IU | Vial | IM |
| 98 | Oxytocin | 5 IU/ml (1 ml amp) | Ampoule | IV / IM |
Create a quick reference PDF pocket guide of IV/IM dosages for emergency use
mkdir -p /tmp/workspace/pocket-guide && ls /tmp/workspace/pocket-guide/
~/pocket-guide/generate_pocket_guide.py
from reportlab.lib.pagesizes import A5
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer,
HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import PageBreak
OUTPUT = "/tmp/workspace/pocket-guide/Emergency_IV_IM_Pocket_Guide.pdf"
# ------- Color Palette -------
RED = colors.HexColor("#C0392B")
DARK_RED = colors.HexColor("#922B21")
ORANGE = colors.HexColor("#E67E22")
YELLOW = colors.HexColor("#F9E79F")
GREEN = colors.HexColor("#1A5276")
LIGHT_BLU = colors.HexColor("#D6EAF8")
TEAL = colors.HexColor("#117A65")
TEAL_LITE = colors.HexColor("#D1F2EB")
PURPLE = colors.HexColor("#6C3483")
PURP_LITE = colors.HexColor("#E8DAEF")
NAVY = colors.HexColor("#1B2631")
WHITE = colors.white
LIGHT_GRY = colors.HexColor("#F2F3F4")
MED_GRY = colors.HexColor("#BFC9CA")
AMBER = colors.HexColor("#F0B27A")
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A5,
leftMargin=8*mm, rightMargin=8*mm,
topMargin=10*mm, bottomMargin=8*mm,
)
W = A5[0] - 16*mm # usable width
styles = getSampleStyleSheet()
def style(name, **kw):
return ParagraphStyle(name, parent=styles["Normal"], **kw)
title_style = style("Title2", fontSize=13, textColor=WHITE,
alignment=TA_CENTER, fontName="Helvetica-Bold", leading=16)
sub_style = style("Sub", fontSize=7.5, textColor=WHITE,
alignment=TA_CENTER, fontName="Helvetica", leading=10)
sec_style = style("Sec", fontSize=8.5, textColor=WHITE,
fontName="Helvetica-Bold", leading=11, leftIndent=2)
note_style = style("Note", fontSize=6.5, textColor=colors.HexColor("#922B21"),
fontName="Helvetica-BoldOblique", leading=8)
warn_style = style("Warn", fontSize=6, textColor=DARK_RED,
fontName="Helvetica-BoldOblique", leading=8)
foot_style = style("Foot", fontSize=6, textColor=colors.HexColor("#555555"),
alignment=TA_CENTER, fontName="Helvetica-Oblique", leading=8)
cell_style = style("Cell", fontSize=6.8, fontName="Helvetica", leading=9)
cell_b_style = style("CellB", fontSize=6.8, fontName="Helvetica-Bold", leading=9)
hdr_style = style("Hdr", fontSize=7, fontName="Helvetica-Bold",
textColor=WHITE, leading=9)
def section_header(text, bg=GREEN):
tbl = Table([[Paragraph(text, sec_style)]], colWidths=[W])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0),(-1,-1), 3),
("BOTTOMPADDING", (0,0),(-1,-1), 3),
("LEFTPADDING", (0,0),(-1,-1), 4),
("RIGHTPADDING", (0,0),(-1,-1), 4),
("BOX", (0,0),(-1,-1), 0.5, bg),
]))
return tbl
def drug_table(headers, rows, col_widths, alt_color=LIGHT_BLU, hdr_bg=GREEN):
data = [[Paragraph(h, hdr_style) for h in headers]]
for i, row in enumerate(rows):
data.append([Paragraph(str(c), cell_style) for c in row])
tbl = Table(data, colWidths=col_widths)
style_cmds = [
("BACKGROUND", (0,0), (-1,0), hdr_bg),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, alt_color]),
("GRID", (0,0), (-1,-1), 0.4, MED_GRY),
("TOPPADDING", (0,0), (-1,-1), 2),
("BOTTOMPADDING", (0,0), (-1,-1), 2),
("LEFTPADDING", (0,0), (-1,-1), 3),
("RIGHTPADDING", (0,0), (-1,-1), 3),
("VALIGN", (0,0), (-1,-1), "TOP"),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 6.8),
]
tbl.setStyle(TableStyle(style_cmds))
return tbl
# ============================================================
# DATA
# ============================================================
HDR = ["Drug", "Dose / Route", "Form", "Notes"]
CW = [37*mm, 42*mm, 22*mm, 35*mm] # total ~136mm ≈ W
# ---- RESUSCITATION ----
resus_rows = [
["Adrenaline\n(Epinephrine)",
"Cardiac arrest: 1 mg IV q3-5 min\nAnaphylaxis: 0.5 mg IM (lateral thigh)\nSeptic shock: 0.1-1 mcg/kg/min IV infusion",
"Amp\n1 mg/ml (1 ml)", "Never give undiluted IV push in non-arrest"],
["Atropine",
"Bradycardia: 0.5-1 mg IV, repeat q3-5 min (max 3 mg)\nOrganophosphate: 2-4 mg IV q5-10 min (titrate)",
"Amp\n0.6/1 mg/ml (1 ml)", "Min dose 0.5 mg (paradox bradycardia <0.5 mg)"],
["Dopamine",
"Shock: 5-20 mcg/kg/min IV infusion\nRenal dose: 1-3 mcg/kg/min",
"Amp\n40 mg/ml (5 ml)", "Dilute in 250 ml NS/D5W. Central line preferred"],
["Noradrenaline",
"Septic shock: 0.01-3 mcg/kg/min IV infusion",
"Amp\n2 mg/ml", "Extravasation causes necrosis - use central line"],
["Dobutamine",
"Cardiogenic shock: 2.5-20 mcg/kg/min IV infusion",
"Vial\n250 mg/20 ml", "Titrate to HR & BP response"],
]
# ---- CARDIAC ----
cardiac_rows = [
["Adenosine",
"SVT: 6 mg rapid IV bolus; if no response 12 mg after 1-2 min (max 18 mg)",
"Amp\n3 mg/ml (2 ml)", "Flush immediately with 20 ml NS. Warn patient of flushing"],
["Amiodarone",
"AF/VT: 300 mg IV over 20-60 min; then 900 mg over 24 hr",
"Amp\n50 mg/ml (3 ml)", "Dilute in 5% glucose only. Phlebitis if peripheral"],
["Lignocaine",
"VT: 1-1.5 mg/kg IV bolus; infusion 1-4 mg/min",
"Amp\n20 mg/ml (5 ml)", "Monitor ECG. Max bolus 3 mg/kg"],
["Digoxin",
"Load: 0.5 mg IV over 30 min; then 0.25 mg q6h x2\nMaint: 0.125-0.25 mg IV/IM OD",
"Amp\n0.25 mg/ml (2 ml)", "Slow IV; monitor for toxicity (bradycardia, N/V, visual)"],
["Furosemide",
"Pulm oedema: 40-80 mg IV bolus\nRefract: up to 200 mg IV infusion",
"Amp\n10 mg/ml (2 ml)", "Monitor K+. Max rate 4 mg/min IV"],
["Labetalol",
"HTN crisis: 20 mg IV over 2 min; repeat 40-80 mg q10 min (max 300 mg)\nInfusion: 2 mg/min",
"Amp\n5 mg/ml", "Avoid in asthma, decompensated HF"],
["Esmolol",
"HTN/Rate ctrl: 500 mcg/kg IV load, then 50-200 mcg/kg/min infusion",
"Vial\n10 mg/ml", "Ultra-short acting. Titrate q4 min"],
["Hydralazine",
"Hypertensive emergency: 5-10 mg IV slowly q20 min (max 40 mg)",
"Amp\n20 mg/ml", "Rapid drop in BP - monitor closely"],
["Sodium Nitroprusside",
"0.3-10 mcg/kg/min IV infusion (start low)",
"Vial\n50 mg", "Wrap infusion in foil (light-sensitive). ICU use only"],
["Streptokinase",
"STEMI: 15 lakh units IV over 60 min",
"Vial\n7.5/15 lakh units", "Check contraindications strictly. Allergic reactions common"],
["Heparin",
"UFH: 5000 IU IV bolus; infusion 1000-1500 IU/hr\nDVT prophylaxis: 5000 IU SC BD/TDS",
"Vial\n5000 IU/ml", "Monitor APTT. Antidote: Protamine sulphate"],
["Enoxaparin\n(LMWH)",
"ACS: 1 mg/kg SC BD\nDVT Rx: 1 mg/kg SC BD\nProphylaxis: 40 mg SC OD",
"Pre-filled\n40/60/80 mg", "Avoid if CrCl <30. No routine APTT monitoring"],
]
# ---- CNS / SEIZURES ----
cns_rows = [
["Diazepam",
"Status epilepticus: 5-10 mg IV at 2 mg/min; max 30 mg\nMay repeat 10-15 min",
"Amp\n5 mg/ml (2 ml)", "Respiratory depression - keep bag-valve-mask ready"],
["Lorazepam",
"Status epilepticus: 4 mg IV over 2-5 min; repeat 4 mg after 10 min",
"Amp\n2 mg/ml (1-2 ml)", "Preferred 1st-line IV benzodiazepine for status"],
["Midazolam",
"Seizure: 10 mg IM (if no IV access)\nSedation: 0.05-0.1 mg/kg IV",
"Amp\n5 mg/ml (5 ml)", "IM midazolam = as effective as IV diazepam in field"],
["Phenytoin",
"Loading: 15-20 mg/kg IV at max 50 mg/min\nMaint: 5-7 mg/kg/day",
"Amp\n50 mg/ml (5 ml)", "Dilute in NS only. ECG monitor during loading. Avoid glucose"],
["Phenobarbitone",
"Status: 15-20 mg/kg IV at max 60 mg/min\nMaint: 60-180 mg OD",
"Amp\n200 mg/ml (1 ml)", "Causes hypotension & respiratory depression"],
["Haloperidol",
"Acute psychosis: 5-10 mg IM; may repeat in 1 hr\nIV: 2.5-5 mg slowly",
"Amp\n5 mg/ml (1 ml)", "Monitor QTc. Avoid in Parkinson's"],
["Promethazine",
"Sedation/nausea: 25-50 mg IM deep\nSlow IV: 25 mg diluted",
"Amp\n25/50 mg/ml", "DO NOT give SC - tissue necrosis. IV must be diluted, slow"],
]
# ---- ANALGESICS ----
analg_rows = [
["Morphine",
"Acute pain: 2-5 mg IV slowly q4h\nAMI pain: 2-4 mg IV q5-15 min (titrate)\nIM: 5-10 mg q4h",
"Amp\n10 mg/ml (1 ml)", "Keep naloxone at bedside. Avoid in head injury"],
["Tramadol",
"50-100 mg IV slow infusion (dilute in 100 ml NS over 15-20 min)\nIM: 50-100 mg q4-6h",
"Amp\n50 mg/ml (2 ml)", "Max 400 mg/day. Lowers seizure threshold"],
["Diclofenac",
"75 mg IM deep (gluteal); max 150 mg/day\n(Not for IV use)",
"Amp\n25 mg/ml (3 ml)", "IM only. Avoid in renal impairment, GI bleed, asthma"],
["Paracetamol",
"1000 mg (100 ml) IV over 15 min q6h\n(Max 4 g/day; 2 g/day if liver disease)",
"Infusion\n10 mg/ml\n(100 ml)", "Hepatotoxic in overdose. N-Acetylcysteine is antidote"],
["Pentazocine",
"30-60 mg IM/SC; 30 mg IV q3-4h\n(Max 360 mg/day)",
"Amp\n30 mg/ml", "Mixed agonist-antagonist. Avoid with pure opioids"],
]
# ---- RESPIRATORY ----
resp_rows = [
["Aminophylline",
"Acute asthma/COPD: Load 5 mg/kg IV over 20-30 min\nMaint infusion: 0.5-0.9 mg/kg/hr\n(Omit load if on theophylline)",
"Amp\n25 mg/ml\n(10 ml)", "Narrow TI - cardiac arrhythmias, seizures. Monitor levels"],
["Hydrocortisone",
"Asthma/COPD: 100-200 mg IV q6h\nAdrenal crisis: 100 mg IV stat",
"Vial\n100/200 mg\n(dry powder)", "Reconstitute with water for injection"],
["Salbutamol\n(IV)",
"Severe asthma: 5 mcg/min IV infusion; titrate up\n(Prefer nebulisation; IV only if life-threatening)",
"Amp\n0.5 mg/ml (1 ml)", "IV route reserved for ICU/life-threatening bronchospasm"],
["Dexamethasone",
"ARDS/edema/anaphylaxis: 4-8 mg IV/IM BD-QDS\nAnti-emetic: 8 mg IV",
"Amp\n4 mg/ml (2 ml)", "Multiple uses. Store protected from light"],
]
# ---- CORTICOSTEROIDS ----
ster_rows = [
["Methylprednisolone",
"Asthma: 125 mg IV OD\nSpinal injury: 30 mg/kg IV over 15 min (within 8 hr)\nAutoimmune flare: 500 mg-1 g IV daily x3",
"Vial\n40/125/500 mg\n1 g", "High dose: monitor glucose, BP, infections"],
["Hydrocortisone",
"Adrenal crisis: 100 mg IV stat, then 100 mg q8h\nAllergic reaction: 100-200 mg IV",
"Vial\n100/200 mg", "Add to normal saline for infusion"],
["Dexamethasone",
"Cerebral oedema: 8-16 mg IV stat; 4 mg q6h\nCroup: 0.6 mg/kg IM single dose",
"Amp\n4 mg/ml (2 ml)", "Long acting. Least mineralocorticoid activity"],
]
# ---- ANTIDOTES / POISONING ----
antidote_rows = [
["Naloxone",
"Opioid OD: 0.4-2 mg IV q2-3 min (max 10 mg)\nIM: 0.4-2 mg if no IV access\nInfusion: 2/3 of effective dose/hour",
"Amp\n0.4 mg/ml (1 ml)", "Short acting (30-90 min) - monitor for re-narcotization"],
["N-Acetylcysteine\n(NAC)",
"Paracetamol OD: 150 mg/kg IV in 200 ml D5W over 1 hr;\nthen 50 mg/kg over 4 hr;\nthen 100 mg/kg over 16 hr",
"Amp\n200 mg/ml\n(10 ml)", "Anaphylactoid reactions common in 1st bag. Slow rate"],
["Atropine\n(OP poisoning)",
"Mild: 0.6-2 mg IV q5-10 min\nSevere: 2-4 mg IV q5-10 min\nEndpoint: drying of secretions",
"Amp\n0.6/1 mg/ml", "Titrate to secretions NOT to heart rate. No ceiling dose"],
["Pralidoxime\n(PAM)",
"Organophosphate: 1-2 g IV over 15-30 min; repeat 1 g q1-2h\nInfusion: 500 mg/hr",
"Vial\n1 g", "Give within 24-48 hr of exposure. Use with atropine"],
["Calcium Gluconate",
"Hypocalcaemia/Ca-channel blocker OD: 1-3 g (10-30 ml of 10%) IV slowly over 10-20 min\nHF fluoride/Hyperkalemia: 1 g IV",
"Amp\n10% (10 ml)\n= 1 g", "Cardiac monitor during infusion. Extravasation causes necrosis"],
["Desferrioxamine",
"Iron OD: 15 mg/kg/hr IV infusion (max 80 mg/kg/day)\nIM: 2 g IM if no IV",
"Vial\n500 mg", "Urine turns orange-red (ferrioxamine). Refrigerate vial"],
["Snake Antivenom\n(Polyvalent)",
"10 vials IV infusion in 100-200 ml NS over 30-60 min\nRepeat 10 vials if signs persist after 6 hr",
"Vial\n(lyophilized\nor liquid)", "Pre-medicate: Adrenaline 0.25 mg SC, Promethazine 25 mg IM"],
]
# ---- ELECTROLYTES ----
elec_rows = [
["50% Dextrose",
"Hypoglycaemia: 25-50 ml (12.5-25 g) IV bolus\nInsulin OD/prolonged hypoglycaemia: infusion in 10% Dextrose",
"Amp\n50 ml\n(500 mg/ml)", "Flush vein with NS before & after. Tissue necrosis if extravasated"],
["Magnesium Sulphate",
"Eclampsia: 4-6 g IV over 15-20 min; then 1-2 g/hr\nSevere asthma: 2 g IV over 20 min\nTorsades: 2 g IV over 5-15 min\nHypoMg: 1-2 g IV over 1 hr",
"Amp\n50%: 10 ml\n= 5 g", "Antidote: Calcium gluconate 1 g IV. Monitor RR, knee jerk, UO"],
["Potassium Chloride\n(KCl)",
"Severe hypokalaemia: add to 1 L NS/D5W\nMax peripheral rate: 10 mEq/hr\nMax concentration peripheral: 40 mEq/L",
"Amp\n15%: 10 ml\n= 20 mEq", "NEVER give undiluted IV. Fatal arrhythmias. ECG monitoring"],
["Sodium Bicarbonate",
"Severe metabolic acidosis (pH <7.1): 1-2 mEq/kg IV slowly\nHyperkalaemia (stabilize membrane): 50-100 mEq IV over 5-10 min\nTCA OD: 1-2 mEq/kg IV bolus",
"Amp\n7.5%: 10 ml\n(~9 mEq)", "Do not mix with calcium (precipitates). Use only if truly indicated"],
["Calcium Gluconate\n(Hyperkalaemia)",
"K+ >6.5 or ECG changes: 10-20 ml of 10% IV over 2-5 min\nRepeat in 5 min if no improvement",
"Amp\n10% (10 ml)", "Cardiac membrane stabilizer. Does not lower K+. Effect 30-60 min"],
]
# ---- ANTIBIOTICS (emergency) ----
abx_rows = [
["Ceftriaxone",
"Sepsis/meningitis: 2 g IV BD\nPneumonia/other: 1-2 g IV OD\nGonorrhoea: 500 mg IM single dose",
"Vial\n1 g (dry powder)", "Reconstitute with Lidocaine 1% for IM (less pain)"],
["Piperacillin\n+Tazobactam",
"Severe sepsis: 4.5 g IV over 30 min q6-8h\n(Extended infusion: 4.5 g over 4 hr q8h)",
"Vial\n4.5 g", "Preferred for Gram-negative & Pseudomonas cover"],
["Meropenem",
"Severe sepsis/meningitis: 1-2 g IV q8h\nFebrile neutropenia: 1 g IV q8h",
"Vial\n500 mg / 1 g", "Last-line broad-spectrum. Reconstitute; stable 8 hr at RT"],
["Vancomycin",
"MRSA/Gram+: 25-30 mg/kg IV loading; maint 15-20 mg/kg q8-12h\n(Target trough 15-20 mcg/ml)",
"Vial\n500 mg / 1 g", "Infuse over min 60 min. Red man syndrome if too fast"],
["Gentamicin",
"Sepsis: 5-7 mg/kg IV OD (once-daily dosing)\nEndocarditis: 1 mg/kg IV q8h",
"Amp\n40/80 mg (2 ml)", "Monitor renal function & trough levels. Ototoxic"],
["Metronidazole",
"Anaerobic/abdominal sepsis: 500 mg IV q8h\nC.diff: 500 mg IV q8h (if cannot tolerate oral)",
"IV Bottle\n500 mg/100 ml", "Infuse over 30-60 min. Avoid alcohol"],
["Ciprofloxacin",
"UTI/chest/GI: 400 mg IV q8-12h\nAnthrax/serious: 400 mg IV q8h",
"IV Bottle\n200 mg/100 ml", "Infuse over 60 min. Prolongs QTc. Avoid with theophylline"],
["Artesunate",
"Severe malaria: 2.4 mg/kg IV at 0, 12, 24 hr; then OD for 7 days\nIM: same dose",
"Vial\n60 mg (dry powder)", "Reconstitute with 5% NaHCO3 first; then dilute in D5W"],
]
# ---- ANTIEMETICS / GI ----
gi_rows = [
["Ondansetron",
"Nausea/vomiting: 4-8 mg IV over 15 min q8h\nChemo-induced: 8 mg IV",
"Amp\n2 mg/ml (2 ml = 4 mg)", "Slow IV; prolongs QTc. Max single dose 16 mg IV"],
["Metoclopramide",
"Nausea/gastroparesis: 10 mg IV/IM q8h",
"Amp\n5 mg/ml (2 ml)", "EPS side effects. Avoid in epilepsy, obstruction"],
["Pantoprazole",
"GI bleed/PUD: 80 mg IV bolus; then 8 mg/hr infusion x72 hr\nSR: 40 mg IV OD",
"Vial\n40 mg (dry powder)", "Reconstitute in NS. High-dose for active bleed"],
["Ranitidine",
"PUD/stress ulcer: 50 mg IV q8h or 6.25 mg/hr infusion",
"Amp\n25 mg/ml (2 ml = 50 mg)", "Give slowly IV over 5-15 min. (Less commonly used now)"],
["Vitamin K\n(Phytomenadione)",
"Warfarin reversal: 5-10 mg IV over 20 min\nHepatic/coagulopathy: 10 mg IV/IM OD",
"Amp\n10 mg/ml (1 ml)", "IV anaphylaxis risk. Slow infusion. For partial reversal"],
]
# ---- DIABETES EMERGENCIES ----
dm_rows = [
["Regular Insulin\n(Soluble)",
"DKA: 0.1 U/kg/hr IV infusion\nHyperkalaemia: 10 U IV in 50 ml 50% Dextrose over 15-30 min\nSliding scale SC: per protocol",
"Vial\n40 IU/ml (10 ml)\nor 100 IU/ml", "Dedicated line for insulin drip. Monitor glucose hourly"],
["Glucagon",
"Severe hypoglycaemia: 1 mg IM/SC/IV\nRepeat in 15 min if no response",
"Vial\n1 mg", "Turn patient lateral (vomiting risk). Check glucose in 15 min"],
["50% Dextrose",
"Hypoglycaemia: 25-50 ml IV bolus\nThen 10% Dextrose infusion to maintain",
"Amp\n50 ml", "See Electrolytes section above"],
]
# ---- ANTICOAGULATION ----
# ============================================================
# BUILD PDF
# ============================================================
story = []
# ---------- COVER PAGE ----------
story.append(Spacer(1, 8*mm))
cover_data = [[Paragraph(
"🏥 EMERGENCY IV/IM DRUG\nPOCKET REFERENCE GUIDE",
title_style)]]
cover_tbl = Table(cover_data, colWidths=[W])
cover_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), DARK_RED),
("BOX", (0,0),(-1,-1), 1.5, DARK_RED),
("TOPPADDING", (0,0),(-1,-1), 10),
("BOTTOMPADDING", (0,0),(-1,-1), 10),
("ROUNDEDCORNERS", [4,4,4,4]),
]))
story.append(cover_tbl)
story.append(Spacer(1, 3*mm))
subtitle_data = [[Paragraph(
"Medicine Department | Govt Hospital, Odisha\nDosages for IV & IM Administration",
sub_style)]]
sub_tbl = Table(subtitle_data, colWidths=[W])
sub_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), colors.HexColor("#6C3483")),
("BOX", (0,0),(-1,-1), 0.8, colors.HexColor("#6C3483")),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING", (0,0),(-1,-1), 5),
]))
story.append(sub_tbl)
story.append(Spacer(1, 3*mm))
# Warning box
warn_data = [[Paragraph(
"⚠ FOR TRAINED HEALTHCARE PROFESSIONALS ONLY ⚠\n"
"Verify all dosages before administration. Adjust for renal/hepatic impairment, weight & age.\n"
"This guide does not replace clinical judgment.",
warn_style)]]
warn_tbl = Table(warn_data, colWidths=[W])
warn_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), YELLOW),
("BOX", (0,0),(-1,-1), 1, ORANGE),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING", (0,0),(-1,-1), 5),
("LEFTPADDING", (0,0),(-1,-1), 6),
]))
story.append(warn_tbl)
story.append(Spacer(1, 2*mm))
# TOC
toc_items = [
"1. Resuscitation & Shock Drugs",
"2. Cardiac Drugs",
"3. CNS / Seizure Management",
"4. Analgesics",
"5. Respiratory Emergencies",
"6. Corticosteroids",
"7. Antidotes & Poisoning",
"8. Electrolytes & Metabolic",
"9. Antibiotics (Emergency Use)",
"10. Antiemetics & GI",
"11. Diabetes Emergencies",
]
toc_data = [[Paragraph("CONTENTS", style("toch", fontSize=7.5,
fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=10))]]
for i in range(0, len(toc_items), 2):
row = [toc_items[i]]
if i+1 < len(toc_items):
row.append(toc_items[i+1])
else:
row.append("")
toc_data.append([Paragraph(row[0], style(f"tc{i}a", fontSize=6.5,
fontName="Helvetica", leading=9)),
Paragraph(row[1], style(f"tc{i}b", fontSize=6.5,
fontName="Helvetica", leading=9))])
toc_tbl = Table(toc_data, colWidths=[W])
# rebuild as 2-col table for items
toc_data2 = [[Paragraph("CONTENTS", style("toch2", fontSize=7.5,
fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=10)),
Paragraph("", style("empty", fontSize=7.5, leading=10))]]
half = W/2
for i in range(0, len(toc_items), 2):
a = Paragraph(toc_items[i], style(f"ta{i}", fontSize=6.5, fontName="Helvetica", leading=9))
b = Paragraph(toc_items[i+1] if i+1 < len(toc_items) else "",
style(f"tb{i}", fontSize=6.5, fontName="Helvetica", leading=9))
toc_data2.append([a, b])
toc_tbl2 = Table(toc_data2, colWidths=[half, half])
toc_tbl2.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,0), NAVY),
("BACKGROUND", (0,1),(-1,-1), LIGHT_BLU),
("SPAN", (0,0),(-1,0)),
("GRID", (0,1),(-1,-1), 0.3, MED_GRY),
("TOPPADDING", (0,0),(-1,-1), 2),
("BOTTOMPADDING", (0,0),(-1,-1), 2),
("LEFTPADDING", (0,0),(-1,-1), 4),
]))
story.append(toc_tbl2)
story.append(Spacer(1, 2*mm))
foot_data = [[Paragraph(
"Based on District Hospital EML (India, Jan 2024) & OSMCL Odisha | Compiled July 2026",
foot_style)]]
foot_tbl = Table(foot_data, colWidths=[W])
foot_tbl.setStyle(TableStyle([
("TOPPADDING", (0,0),(-1,-1), 2),
("BOTTOMPADDING", (0,0),(-1,-1), 2),
]))
story.append(foot_tbl)
# ---------- SECTIONS ----------
def add_section(title, rows, bg_color=GREEN, alt=LIGHT_BLU):
story.append(Spacer(1, 2*mm))
story.append(section_header(title, bg=bg_color))
tbl = drug_table(
["Drug", "Dose / Route", "Form", "Key Notes"],
rows, CW, alt_color=alt, hdr_bg=bg_color
)
story.append(tbl)
story.append(PageBreak())
add_section("1. RESUSCITATION & SHOCK", resus_rows, bg_color=RED, alt=colors.HexColor("#FADBD8"))
add_section("2. CARDIAC DRUGS", cardiac_rows, bg_color=colors.HexColor("#1A5276"), alt=LIGHT_BLU)
story.append(PageBreak())
add_section("3. CNS / SEIZURE MANAGEMENT", cns_rows, bg_color=PURPLE, alt=PURP_LITE)
add_section("4. ANALGESICS", analg_rows, bg_color=colors.HexColor("#784212"), alt=colors.HexColor("#FDEBD0"))
story.append(PageBreak())
add_section("5. RESPIRATORY EMERGENCIES", resp_rows, bg_color=TEAL, alt=TEAL_LITE)
add_section("6. CORTICOSTEROIDS", ster_rows, bg_color=colors.HexColor("#0E6655"), alt=colors.HexColor("#D5F5E3"))
story.append(PageBreak())
add_section("7. ANTIDOTES & POISONING", antidote_rows, bg_color=colors.HexColor("#7D6608"), alt=colors.HexColor("#FDFDE7"))
story.append(PageBreak())
add_section("8. ELECTROLYTES & METABOLIC", elec_rows, bg_color=colors.HexColor("#154360"), alt=colors.HexColor("#D6EAF8"))
add_section("9. ANTIBIOTICS (Emergency Use)", abx_rows, bg_color=colors.HexColor("#4A235A"), alt=PURP_LITE)
story.append(PageBreak())
add_section("10. ANTIEMETICS & GI", gi_rows, bg_color=TEAL, alt=TEAL_LITE)
add_section("11. DIABETES EMERGENCIES", dm_rows, bg_color=colors.HexColor("#922B21"), alt=colors.HexColor("#FADBD8"))
# ---------- LAST PAGE: Quick Reference Card ----------
story.append(PageBreak())
story.append(section_header("CRITICAL REMINDERS - Always Verify Before Use", bg=DARK_RED))
story.append(Spacer(1, 2*mm))
reminders = [
["NEVER give KCl undiluted IV", "ALWAYS cardiac monitor for antiarrhythmics"],
["Sodium Nitroprusside: wrap in foil", "Streptokinase: check contraindications"],
["Vancomycin: infuse >60 min (Red Man)", "MgSO4 antidote = Calcium Gluconate 1 g IV"],
["Phenytoin: NS only, NOT glucose", "Opioids: keep Naloxone at bedside"],
["Atropine min dose 0.5 mg IV", "OP poisoning: no ceiling for atropine"],
["Artesunate: bicarb reconstitution first", "Snake antivenom: pre-medicate with adrenaline SC"],
["Promethazine: NEVER SC (necrosis)", "Noradrenaline: central line preferred"],
["Insulin: dedicated IV line; monitor glucose hourly", "Amphotericin B: slow infusion, test dose first"],
]
rem_tbl = Table(
[[Paragraph(a, style("ra", fontSize=6.5, fontName="Helvetica-Bold",
textColor=DARK_RED, leading=9)),
Paragraph(b, style("rb", fontSize=6.5, fontName="Helvetica-Bold",
textColor=colors.HexColor("#1A5276"), leading=9))]
for a, b in reminders],
colWidths=[W/2, W/2]
)
rem_tbl.setStyle(TableStyle([
("ROWBACKGROUNDS", (0,0), (-1,-1), [YELLOW, WHITE]),
("GRID", (0,0), (-1,-1), 0.3, MED_GRY),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
("LEFTPADDING", (0,0), (-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(rem_tbl)
story.append(Spacer(1, 3*mm))
# Abbreviations
abbr_data = [
[Paragraph("ABBREVIATIONS", style("abh", fontSize=7, fontName="Helvetica-Bold",
textColor=WHITE, alignment=TA_CENTER, leading=9)),
Paragraph("", style("empty2", fontSize=7, leading=9))]
]
abbrs = [
("IV = Intravenous", "IM = Intramuscular"),
("SC = Subcutaneous", "OD = Once daily"),
("BD = Twice daily", "TDS = Three times daily"),
("QDS = Four times daily", "q = every (e.g. q8h = every 8 hours)"),
("NS = Normal Saline 0.9%", "D5W = 5% Dextrose in Water"),
("UO = Urine output", "RR = Respiratory rate"),
("ECG = Electrocardiogram", "APTT = Activated Partial Thromboplastin Time"),
("TI = Therapeutic index", "EPS = Extrapyramidal side effects"),
("OD = Overdose (context)", "Rx = Treatment"),
]
for a, b in abbrs:
abbr_data.append([
Paragraph(a, style(f"aa{a}", fontSize=6, fontName="Helvetica", leading=8)),
Paragraph(b, style(f"ab{b}", fontSize=6, fontName="Helvetica", leading=8)),
])
abbr_tbl = Table(abbr_data, colWidths=[W/2, W/2])
abbr_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,0), NAVY),
("SPAN", (0,0),(-1,0)),
("ROWBACKGROUNDS",(0,1),(-1,-1), [LIGHT_GRY, WHITE]),
("GRID", (0,1),(-1,-1), 0.3, MED_GRY),
("TOPPADDING", (0,0),(-1,-1), 2),
("BOTTOMPADDING", (0,0),(-1,-1), 2),
("LEFTPADDING", (0,0),(-1,-1), 4),
]))
story.append(abbr_tbl)
story.append(Spacer(1, 3*mm))
story.append(Paragraph(
"For educational purposes only. Not a substitute for standard treatment protocols.\n"
"Refer to current AIIMS/ICMR/WHO guidelines and local hospital policy for updates.",
foot_style))
# BUILD
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /tmp/workspace/pocket-guide && python generate_pocket_guide.py 2>&1
ls -lh /tmp/workspace/pocket-guide/Emergency_IV_IM_Pocket_Guide.pdf
Emergency IV IM Pocket Guide
PDF Document · PDF
| Section | Drugs Covered |
|---|---|
| 1. Resuscitation & Shock | Adrenaline, Atropine, Dopamine, Noradrenaline, Dobutamine |
| 2. Cardiac Drugs | Adenosine, Amiodarone, Lignocaine, Digoxin, Furosemide, Labetalol, Esmolol, Streptokinase, Heparin, Enoxaparin + more |
| 3. CNS / Seizures | Diazepam, Lorazepam, Midazolam, Phenytoin, Phenobarbitone, Haloperidol, Promethazine |
| 4. Analgesics | Morphine, Tramadol, Diclofenac, Paracetamol, Pentazocine |
| 5. Respiratory | Aminophylline, Hydrocortisone, Salbutamol IV, Dexamethasone |
| 6. Corticosteroids | Methylprednisolone, Hydrocortisone, Dexamethasone |
| 7. Antidotes / Poisoning | Naloxone, NAC, Atropine (OP), Pralidoxime, Calcium Gluconate, Desferrioxamine, Snake Antivenom |
| 8. Electrolytes | 50% Dextrose, MgSO4, KCl, NaHCO3, Calcium Gluconate |
| 9. Antibiotics | Ceftriaxone, Pip-Tazo, Meropenem, Vancomycin, Gentamicin, Metronidazole, Ciprofloxacin, Artesunate |
| 10. Antiemetics / GI | Ondansetron, Metoclopramide, Pantoprazole, Ranitidine, Vitamin K |
| 11. Diabetes | Regular Insulin, Glucagon, 50% Dextrose |
| Critical Reminders + Abbreviations | Color-coded safety alerts on back page |
give me in a pdf
Emergency IV IM Pocket Guide
PDF Document · PDF
all add your 98 given injs
~/pocket-guide/generate_full98.py
from reportlab.lib.pagesizes import A5
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, PageBreak
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
OUTPUT = "/tmp/workspace/pocket-guide/Complete_98_Injections_Pocket_Guide.pdf"
# ── Colour palette ──────────────────────────────────────────
RED = colors.HexColor("#C0392B")
DARK_RED = colors.HexColor("#922B21")
ORANGE = colors.HexColor("#E67E22")
YELLOW = colors.HexColor("#F9E79F")
GREEN = colors.HexColor("#1A5276")
LIGHT_BLU = colors.HexColor("#D6EAF8")
TEAL = colors.HexColor("#117A65")
TEAL_LITE = colors.HexColor("#D1F2EB")
PURPLE = colors.HexColor("#6C3483")
PURP_LITE = colors.HexColor("#E8DAEF")
NAVY = colors.HexColor("#1B2631")
WHITE = colors.white
LIGHT_GRY = colors.HexColor("#F2F3F4")
MED_GRY = colors.HexColor("#BFC9CA")
AMBER = colors.HexColor("#F0B27A")
BROWN = colors.HexColor("#784212")
BROWN_LT = colors.HexColor("#FDEBD0")
OLIVE = colors.HexColor("#0E6655")
OLIVE_LT = colors.HexColor("#D5F5E3")
INDIGO = colors.HexColor("#154360")
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A5,
leftMargin=7*mm, rightMargin=7*mm,
topMargin=9*mm, bottomMargin=7*mm,
)
W = A5[0] - 14*mm # usable page width
styles = getSampleStyleSheet()
def PS(name, **kw):
return ParagraphStyle(name, parent=styles["Normal"], **kw)
title_st = PS("T", fontSize=12, textColor=WHITE, alignment=TA_CENTER,
fontName="Helvetica-Bold", leading=15)
sub_st = PS("S", fontSize=7, textColor=WHITE, alignment=TA_CENTER,
fontName="Helvetica", leading=9)
sec_st = PS("Sc", fontSize=8, textColor=WHITE,
fontName="Helvetica-Bold", leading=10, leftIndent=2)
warn_st = PS("W", fontSize=6.2,textColor=DARK_RED,
fontName="Helvetica-BoldOblique", leading=8)
foot_st = PS("F", fontSize=5.8,textColor=colors.HexColor("#555555"),
alignment=TA_CENTER, fontName="Helvetica-Oblique", leading=7.5)
hdr_st = PS("H", fontSize=6.5,fontName="Helvetica-Bold",
textColor=WHITE, leading=8.5)
cell_st = PS("C", fontSize=6.2,fontName="Helvetica", leading=8)
sno_st = PS("N", fontSize=6.2,fontName="Helvetica-Bold",
textColor=NAVY, leading=8)
note_st = PS("Nt", fontSize=5.8,fontName="Helvetica-Oblique",
textColor=colors.HexColor("#555555"), leading=7.5)
# column widths: S.No | Drug | Dose+Route | Form | Notes
CW = [7*mm, 30*mm, 43*mm, 20*mm, 32*mm] # total 132mm ≈ W
def sec_header(text, bg=GREEN):
t = Table([[Paragraph(text, sec_st)]], colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), bg),
("TOPPADDING", (0,0),(-1,-1), 3),
("BOTTOMPADDING", (0,0),(-1,-1), 3),
("LEFTPADDING", (0,0),(-1,-1), 5),
]))
return t
def drug_tbl(rows, hdr_bg=GREEN, alt=LIGHT_BLU):
headers = ["#", "Drug", "Dose / Route", "Form", "Key Notes"]
data = [[Paragraph(h, hdr_st) for h in headers]]
for row in rows:
data.append([
Paragraph(str(row[0]), sno_st),
Paragraph(str(row[1]), cell_st),
Paragraph(str(row[2]), cell_st),
Paragraph(str(row[3]), cell_st),
Paragraph(str(row[4]), note_st),
])
t = Table(data, colWidths=CW)
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,0), hdr_bg),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, alt]),
("GRID", (0,0),(-1,-1), 0.35, MED_GRY),
("TOPPADDING", (0,0),(-1,-1), 1.8),
("BOTTOMPADDING", (0,0),(-1,-1), 1.8),
("LEFTPADDING", (0,0),(-1,-1), 2.5),
("RIGHTPADDING", (0,0),(-1,-1), 2.5),
("VALIGN", (0,0),(-1,-1), "TOP"),
]))
return t
# ════════════════════════════════════════════════════════════
# ALL 98 INJECTIONS (grouped by category)
# ════════════════════════════════════════════════════════════
# ── 1. ANALGESICS & ANTI-INFLAMMATORY (5) ──
analg = [
[1, "Diclofenac", "75 mg IM deep (gluteal); max 150 mg/day\n(IM only – not IV)",
"Amp\n25 mg/ml\n3 ml", "Avoid renal impairment, GI bleed, asthma"],
[2, "Paracetamol", "1 g IV over 15 min q6h (max 4 g/day;\n2 g/day in liver disease)",
"Infusion\n10 mg/ml\n100 ml","Hepatotoxic in OD – antidote is NAC"],
[3, "Tramadol", "50–100 mg in 100 ml NS IV over 20 min;\nIM 50–100 mg q4–6h; max 400 mg/day",
"Amp\n50 mg/ml\n2 ml", "Lowers seizure threshold. Avoid with MAOIs"],
[4, "Morphine", "IV: 2–5 mg slowly q4h\nAMI: 2–4 mg IV, titrate\nIM: 5–10 mg q4h",
"Amp\n10 mg/ml\n1 ml", "Keep naloxone ready. Avoid in head injury"],
[5, "Pentazocine", "IM/SC 30–60 mg q3–4h; IV 30 mg q3–4h\nMax 360 mg/day",
"Amp\n30 mg/ml", "Mixed agonist-antagonist; avoid with pure opioids"],
]
# ── 2. ANTIBIOTICS (20) ──
abx = [
[6, "Benzylpenicillin\n(Crystalline Pen)",
"Meningitis/sepsis: 20–24 lakh U/day IV in 4–6 divided doses",
"Vial\n10 lakh U\n(dry pwd)", "Dilute in NS/D5W. Give over 30 min. Check allergy"],
[7, "Benzathine\nBenzylpenicillin",
"Rheumatic fever prophylaxis: 12 lakh U IM q3–4 wk\n(Single IM injection only)",
"Vial\n12 lakh U\n(dry pwd)", "Deep IM gluteal only. NEVER IV. Warm to RT first"],
[8, "Ampicillin",
"500 mg–2 g IV/IM q4–6h\nMeningitis: 2 g IV q4h",
"Vial\n250 mg/500 mg\n1 g", "Dilute & give over 30 min. Common rash with EBV"],
[9, "Amoxicillin\n+Clavulanic Acid",
"1.2 g (1 g+200 mg) IV q8h\nSevere: 1.2 g IV q6h",
"Vial\n1 g+200 mg", "Infuse over 30 min. Check penicillin allergy"],
[10, "Cloxacillin",
"500 mg–1 g IV/IM q4–6h",
"Vial\n500 mg\n(dry pwd)", "Anti-staphylococcal. Give on empty stomach (oral)"],
[11, "Cefazolin",
"1–2 g IV/IM q8h\nSurgical prophylaxis: 1–2 g IV 30–60 min pre-op",
"Vial\n500 mg / 1 g\n(dry pwd)","1st-gen cephalosporin. Good for skin/soft tissue"],
[12, "Cefotaxime",
"1–2 g IV/IM q6–8h\nMeningitis: 2 g IV q4h",
"Vial\n250 mg / 1 g\n(dry pwd)","3rd-gen. Broad Gram-neg cover"],
[13, "Ceftriaxone",
"1–2 g IV OD (or BD for meningitis)\nGonorrhoea: 500 mg IM single dose",
"Vial\n250 mg/500 mg\n1 g", "IM: reconstitute in 1% lignocaine. Avoid Ca-containing fluids"],
[14, "Ceftazidime",
"1–2 g IV/IM q8h\nPseudomonas: 2 g IV q8h",
"Vial\n250 mg / 1 g\n(dry pwd)","Anti-pseudomonal 3rd-gen cephalosporin"],
[15, "Piperacillin\n+Tazobactam",
"4.5 g IV over 30 min q6–8h\nExtended: 4.5 g over 4 hr q8h",
"Vial\n4.5 g (4 g+0.5 g)", "Broadest beta-lactam. Good Pseudomonas cover"],
[16, "Gentamicin",
"ODD: 5–7 mg/kg IV/IM OD\nEndocarditis: 1 mg/kg IV q8h",
"Amp\n40 mg/2 ml\n80 mg/2 ml", "Monitor trough. Ototoxic/nephrotoxic"],
[17, "Amikacin",
"15 mg/kg/day IV/IM OD or in 2–3 divided doses",
"Amp\n250 mg/ml\n2 ml (500 mg)","Reserve for resistant Gram-neg. Monitor levels & renal fn"],
[18, "Ciprofloxacin\n(IV)",
"400 mg IV q8–12h\nAnthrax/severe: 400 mg IV q8h",
"IV Bottle\n200 mg/100 ml", "Infuse over 60 min. Prolongs QTc. Avoid with theophylline"],
[19, "Metronidazole\n(IV)",
"500 mg IV q8h\nGive over 30–60 min",
"IV Bottle\n500 mg/100 ml", "Anaerobic cover. Avoid alcohol. Metallic taste (oral)"],
[20, "Vancomycin",
"Load: 25–30 mg/kg IV; Maint: 15–20 mg/kg q8–12h\n(Target trough 15–20 mcg/ml)",
"Vial\n500 mg / 1 g\n(dry pwd)","Infuse >60 min (Red Man syndrome if fast). MRSA drug"],
[21, "Meropenem",
"1–2 g IV q8h\nMeningitis: 2 g IV q8h\nFN: 1 g IV q8h",
"Vial\n500 mg / 1 g\n(dry pwd)","Carbapenem – last resort. Stable 8 hr at RT after reconstitution"],
[22, "Imipenem\n+Cilastatin",
"500 mg IV q6h\nSevere: 1 g IV q6–8h",
"Vial\n500 mg+500 mg", "Lowers seizure threshold. Avoid in CNS infections if possible"],
[23, "Chloramphenicol",
"50–100 mg/kg/day IV in 4 divided doses\nMax 4 g/day",
"Vial\n1 g", "Aplastic anaemia risk. Monitor CBC. Use only when necessary"],
[24, "Doxycycline\n(IV)",
"100 mg IV q12h (infuse over 1–4 hr)",
"Vial\n100 mg", "Not for children <8 yr. Avoid Ca/Mg/Fe co-administration"],
[25, "Co-trimoxazole\n(IV)",
"Pneumocystis: 15–20 mg/kg/day (TMP component) IV in 3–4 divided doses",
"Amp\n80 mg TMP +\n400 mg SMX\n5 ml", "Dilute in 250 ml NS. Monitor renal function. Hyperkalaemia risk"],
]
# ── 3. ANTIFUNGAL (2) ──
antifung = [
[26, "Amphotericin B\n(Conventional)",
"Test dose 1 mg in 100 ml D5W over 30 min;\nthen 0.25–1 mg/kg/day IV over 4–6 hr",
"Vial\n50 mg\n(dry pwd)", "Light-sensitive (wrap). Fever/rigors common. Nephrotoxic"],
[27, "Fluconazole\n(IV)",
"Candida/Crypto: 400 mg IV OD Day 1;\nthen 200–400 mg IV OD",
"IV Bottle\n2 mg/ml\n100 ml", "Infuse over 60 min. Prolongs QTc. CYP3A4 inhibitor"],
]
# ── 4. ANTIVIRAL / ANTIPARASITIC (2) ──
antip = [
[28, "Artesunate",
"Severe malaria: 2.4 mg/kg IV/IM at 0, 12, 24 hr;\nthen OD for 7 days",
"Vial\n60 mg\n(dry pwd)", "Reconstitute with 5% NaHCO3 first; then dilute in D5W/NS"],
[29, "Quinine",
"Severe malaria: 20 mg/kg IV load over 4 hr;\nthen 10 mg/kg IV q8h (maintain until oral possible)",
"Amp\n300 mg/ml\n2 ml", "Cardiac monitor. Hypoglycaemia risk. Slow infusion only"],
]
# ── 5. ANTITUBERCULAR (1) ──
antitb = [
[30, "Streptomycin",
"TB: 0.75–1 g IM OD (15 mg/kg/day)\nMax 1 g/day",
"Vial\n0.75 g / 1 g\n(dry pwd)","IM only. Ototoxic/nephrotoxic. Monitor renal function & hearing"],
]
# ── 6. CARDIOVASCULAR (17) ──
cardio = [
[31, "Adrenaline\n(Epinephrine)",
"Cardiac arrest: 1 mg IV q3–5 min\nAnaphylaxis: 0.5 mg IM (lateral thigh)\nShock infusion: 0.1–1 mcg/kg/min IV",
"Amp\n1 mg/ml\n1 ml", "Never give undiluted IV push outside arrest. Central line for infusion"],
[32, "Noradrenaline",
"Septic shock: 0.01–3 mcg/kg/min IV infusion\nTitrate to MAP ≥65 mmHg",
"Amp\n2 mg/ml", "Central line only. Extravasation causes necrosis"],
[33, "Dopamine",
"Shock: 5–20 mcg/kg/min IV infusion\nRenal dose: 1–3 mcg/kg/min",
"Amp\n40 mg/ml\n5 ml", "Dilute in 250 ml NS/D5W. Prefer central line"],
[34, "Dobutamine",
"Cardiogenic shock: 2.5–20 mcg/kg/min IV infusion\nTitrate to HR & BP",
"Vial\n250 mg/20 ml", "Increases HR and contractility. Monitor ECG"],
[35, "Digoxin",
"AF rate control: Load 0.5 mg IV over 30 min;\nthen 0.25 mg q6h x2\nMaint: 0.125–0.25 mg IV/IM OD",
"Amp\n0.25 mg/ml\n2 ml", "Narrow TI. Toxicity: N/V, bradycardia, visual changes. Avoid hypokalaemia"],
[36, "Lignocaine\n(Lidocaine)",
"VT: 1–1.5 mg/kg IV bolus;\nInfusion: 1–4 mg/min\nMax bolus: 3 mg/kg",
"Amp\n20 mg/ml\n5 ml", "ECG monitor. Toxicity: seizures, arrhythmia"],
[37, "Atropine",
"Bradycardia: 0.5–1 mg IV q3–5 min (max 3 mg)\nOP poisoning: 2–4 mg IV q5–10 min (titrate secretions)",
"Amp\n0.6 mg/ml\n1 mg/ml", "Min dose 0.5 mg IV (paradox bradycardia <0.5 mg)"],
[38, "Adenosine",
"SVT: 6 mg rapid IV bolus; if no conversion\n12 mg after 1–2 min; max 18 mg total",
"Amp\n3 mg/ml\n2 ml", "Flush immediately with 20 ml NS. Warn: flushing, chest pain, brief asystole"],
[39, "Amiodarone",
"AF/VF/VT: 300 mg IV over 20–60 min;\nthen 900 mg over 24 hr\nCardiac arrest: 300 mg rapid IV",
"Amp\n50 mg/ml\n3 ml", "Dilute in 5% Dextrose ONLY. Phlebitis via peripheral line"],
[40, "Esmolol",
"SVT/HTN: 500 mcg/kg IV load over 1 min;\nthen 50–200 mcg/kg/min infusion\nTitrate q4 min",
"Vial\n10 mg/ml", "Ultra-short acting (9 min half-life). Avoid in asthma/decompensated HF"],
[41, "Labetalol",
"HTN crisis: 20 mg IV over 2 min;\nRepeat 40–80 mg q10 min (max 300 mg)\nInfusion: 2 mg/min",
"Amp\n5 mg/ml", "Alpha + beta blocker. Avoid in asthma, acute HF, bradycardia"],
[42, "Hydralazine",
"Hypertensive emergency: 5–10 mg IV slowly q20 min\n(Max 40 mg)",
"Amp\n20 mg/ml", "Rapid BP drop; monitor closely. Avoid in dissection"],
[43, "Sodium\nNitroprusside",
"0.3–10 mcg/kg/min IV infusion\n(Start low; titrate every 5 min)",
"Vial\n50 mg", "Wrap in foil (light-sensitive). ICU use. Cyanide toxicity if prolonged"],
[44, "Streptokinase",
"STEMI: 15 lakh U IV over 60 min\nPE/DVT: 2.5 lakh U IV load over 30 min;\nthen 1 lakh U/hr x12–24 hr",
"Vial\n7.5 lakh U\n15 lakh U", "Check contraindications. Allergic reactions common. 1 year repeat restriction"],
[45, "Enoxaparin\n(LMWH)",
"ACS: 1 mg/kg SC BD\nDVT Rx: 1 mg/kg SC BD\nProphylaxis: 40 mg SC OD",
"Pre-filled\n40/60/80 mg", "Avoid CrCl <30. No routine APTT. IV in STEMI: age/weight-based"],
[46, "Heparin (UFH)",
"ACS: 60–70 U/kg IV bolus (max 5000 U);\nthen 12–15 U/kg/hr infusion\nProphylaxis: 5000 U SC BD/TDS",
"Vial\n5000 IU/ml\n25000 IU/ml","Monitor APTT (target 60–100 sec). Antidote: Protamine sulphate"],
[47, "Furosemide\n(Frusemide)",
"Pulm oedema: 40–80 mg IV bolus\nRefractory: up to 200 mg IV infusion\nMax rate: 4 mg/min IV",
"Amp\n10 mg/ml\n2 ml", "Monitor K+, creatinine. Ototoxic in high doses"],
]
# ── 7. CNS / NEUROLOGICAL (8) ──
cns = [
[48, "Diazepam",
"Status epilepticus: 5–10 mg IV at 2 mg/min\nMax 30 mg; may repeat after 15 min\nIM: 10 mg",
"Amp\n5 mg/ml\n2 ml", "Respiratory depression – bag-valve-mask ready. Short duration"],
[49, "Lorazepam",
"Status epilepticus: 4 mg IV over 2–5 min;\nRepeat 4 mg after 10 min if needed",
"Amp\n2 mg/ml\n1–2 ml", "Preferred 1st-line IV benzodiazepine for status epilepticus"],
[50, "Midazolam",
"Seizure (no IV): 10 mg IM\nSedation/procedure: 0.05–0.1 mg/kg IV",
"Amp\n5 mg/ml\n5 ml", "IM as effective as IV diazepam in field. Water-soluble"],
[51, "Phenytoin",
"Load: 15–20 mg/kg IV at max 50 mg/min\nMaint: 5–7 mg/kg/day IV/IM",
"Amp\n50 mg/ml\n5 ml", "NS only – precipitates in glucose. ECG monitor. Extravasation = necrosis"],
[52, "Phenobarbitone",
"Status: 15–20 mg/kg IV at max 60 mg/min\nMaint: 60–180 mg IV/IM OD",
"Amp\n200 mg/ml\n1 ml", "Hypotension + respiratory depression. ICU monitoring"],
[53, "Haloperidol",
"Acute psychosis: 5–10 mg IM q1h PRN\nIV (unlabelled): 2.5–5 mg slowly",
"Amp\n5 mg/ml\n1 ml", "Monitor QTc. Extrapyramidal effects. Avoid in Parkinson's"],
[54, "Promethazine",
"Sedation/allergy: 25–50 mg IM deep\nSlow IV: 25 mg diluted in 10 ml NS",
"Amp\n25 mg/ml\n50 mg/ml", "NEVER SC (tissue necrosis). IV must be diluted and slow"],
[55, "Neostigmine",
"Myasthenic crisis: 0.5–2.5 mg IV slowly\nReversal of NMB: 0.04–0.08 mg/kg IV",
"Amp\n0.5 mg/ml", "Give with atropine 0.6 mg IV to prevent bradycardia"],
]
# ── 8. CORTICOSTEROIDS (3) ──
ster = [
[56, "Hydrocortisone",
"Adrenal crisis: 100 mg IV stat, then 100 mg IV q8h\nAsthma/COPD: 100–200 mg IV q6h\nAnaphylaxis: 200 mg IV",
"Vial\n100 mg / 200 mg\n(dry pwd)","Reconstitute with WFI. Short-acting. Has mineralocorticoid activity"],
[57, "Dexamethasone",
"Cerebral oedema: 8–16 mg IV stat; then 4 mg IV q6h\nCroup: 0.6 mg/kg IM single dose\nAnti-emetic: 8 mg IV",
"Amp\n4 mg/ml\n2 ml", "Long-acting. Least mineralocorticoid. Protect from light"],
[58, "Methylprednisolone",
"Asthma: 125 mg IV OD\nAutoimmune flare: 500 mg–1 g IV daily x3\nSpinal injury: 30 mg/kg IV over 15 min",
"Vial\n40/125/500 mg\n1 g", "High dose: monitor glucose, BP, infection. Give with PPI cover"],
]
# ── 9. DIABETES / ENDOCRINE (4) ──
dm = [
[59, "Regular Insulin\n(Soluble)",
"DKA: 0.1 U/kg/hr IV infusion\nHyperkalaemia: 10 U IV + 50 ml 50% Dex over 15–30 min\nSS: per hospital protocol SC",
"Vial\n40 IU/ml (10 ml)\n100 IU/ml","Dedicated IV line. Monitor glucose hourly. Do NOT mix in same bag as other drugs"],
[60, "Glucagon",
"Severe hypoglycaemia: 1 mg IM/SC/IV\nRepeat in 15 min if no response",
"Vial\n1 mg", "Turn patient lateral (vomiting risk). Check glucose in 15 min"],
[61, "Octreotide",
"Variceal bleed: 50 mcg IV bolus; then 25–50 mcg/hr infusion\nInsulinnoma: 50–100 mcg SC/IV q8h",
"Amp\n50 mcg/ml\n100 mcg/ml", "Gallstone risk with prolonged use. Refrigerate vial"],
[62, "Vasopressin",
"Variceal bleed: 0.2–0.4 U/min IV infusion\nDI: 5–10 U IM/SC q3–4h",
"Amp\n20 IU/ml\n1 ml", "Coronary vasoconstriction – concurrent nitrates recommended"],
]
# ── 10. ELECTROLYTES & IV METABOLIC (5) ──
elec = [
[63, "50% Dextrose",
"Hypoglycaemia: 25–50 ml IV bolus\nProlonged hypoglycaemia: then 10% Dex infusion",
"Amp\n500 mg/ml\n50 ml", "Flush vein with NS before & after. Tissue necrosis if extravasated"],
[64, "Calcium Gluconate",
"Hypocalcaemia/Ca-channel OD: 1–3 g (10–30 ml 10%) IV over 10–20 min\nHyperkalaemia/HF fluoride: 1 g IV",
"Amp\n10%: 1 g/10 ml", "Cardiac monitor. Extravasation causes necrosis. Precipitates with bicarb"],
[65, "Magnesium Sulphate",
"Eclampsia: 4–6 g IV over 15–20 min; then 1–2 g/hr\nSevere asthma: 2 g IV over 20 min\nTorsades/HypoMg: 1–2 g IV over 1 hr",
"Amp\n50%: 5 g/10 ml\n2 g/4 ml","Antidote = Ca gluconate 1 g IV. Monitor RR, knee jerk, UO"],
[66, "Potassium Chloride\n(KCl)",
"Severe hypokalaemia: add to 1 L NS/D5W\nMax peripheral rate: 10 mEq/hr\nMax peripheral conc: 40 mEq/L",
"Amp\n15%: 20 mEq/10 ml", "NEVER undiluted IV – fatal arrhythmias. ECG monitoring mandatory"],
[67, "Sodium Bicarbonate",
"Severe metabolic acidosis (pH <7.1): 1–2 mEq/kg IV slowly\nHyperkalaemia (membrane stabilization): 50 mEq IV\nTCA OD: 1–2 mEq/kg IV bolus",
"Amp\n7.5%: ~9 mEq/10 ml", "Do not mix with Ca (precipitates). Use only if clearly indicated"],
]
# ── 11. ANTIDOTES & POISONING (10) ──
antidotes = [
[68, "Naloxone",
"Opioid OD: 0.4–2 mg IV/IM q2–3 min (max 10 mg)\nInfusion: 2/3 of effective bolus dose/hr",
"Amp\n0.4 mg/ml\n1 ml", "Short acting (30–90 min) – watch for re-narcotization"],
[69, "N-Acetylcysteine\n(NAC)",
"Paracetamol OD:\n• 150 mg/kg in 200 ml D5W over 1 hr\n• then 50 mg/kg over 4 hr\n• then 100 mg/kg over 16 hr",
"Amp\n200 mg/ml\n10 ml", "Anaphylactoid reactions in 1st bag – slow if reaction occurs"],
[70, "Calcium Gluconate\n(Antidote)",
"Fluoride/Ca-channel blocker OD:\n1–3 g IV over 10–20 min; repeat PRN",
"Amp\n10% (10 ml)\n= 1 g", "Also for hypermagnesaemia. See #64"],
[71, "Desferrioxamine",
"Iron OD: 15 mg/kg/hr IV infusion (max 80 mg/kg/day)\nIM: 2 g IM if no IV access",
"Vial\n500 mg", "Urine turns orange-red (ferrioxamine). Refrigerate unopened"],
[72, "Atropine\n(OP Poisoning)",
"Mild: 1–2 mg IV q5–10 min\nModerate-severe: 2–4 mg IV q5–10 min\nEndpoint: drying of secretions (not HR)",
"Amp\n0.6 mg/ml\n1 mg/ml", "No ceiling dose. Titrate to secretions. Give with Pralidoxime"],
[73, "Pralidoxime\n(PAM 2-Cl)",
"OP: 1–2 g IV over 15–30 min; repeat 1 g q1–2h\nInfusion: 500 mg/hr",
"Vial\n1 g", "Effective within 24–48 hr of exposure. Always combine with atropine"],
[74, "Snake Antivenom\n(Polyvalent)",
"10 vials IV infusion in 100–200 ml NS over 30–60 min\nRepeat 10 vials if signs persist at 6 hr",
"Vial\n(lyophilized\nor liquid)", "Pre-medicate: Adrenaline 0.25 mg SC + Promethazine 25 mg IM"],
[75, "Sodium Bicarbonate\n(TCA OD)",
"TCA OD with wide QRS: 1–2 mEq/kg IV bolus;\nRepeat to target pH 7.50–7.55",
"Amp\n7.5%: ~9 mEq/10 ml", "Alkalinization narrows QRS and treats arrhythmia in TCA poisoning"],
[76, "Phytomenadione\n(Vitamin K)",
"Warfarin reversal: 5–10 mg IV over 20 min\nCoagulopathy (hepatic): 10 mg IV/IM OD",
"Amp\n10 mg/ml\n1 ml", "Anaphylaxis risk with IV – infuse slowly. Use IM if less urgent"],
[77, "Anti-Tetanus Serum\n(ATS)",
"Prophylaxis: 1500 IU IM\nTreatment: 10000–20000 IU IM or slow IV",
"Vial\n1500 IU\n10000 IU", "Sensitivity test first. Adrenaline and antihistamine at bedside"],
]
# ── 12. RESPIRATORY (3) ──
resp = [
[78, "Aminophylline",
"Acute asthma/COPD: Load 5 mg/kg IV over 20–30 min\nMaint infusion: 0.5–0.9 mg/kg/hr\n(Omit load if on theophylline)",
"Amp\n25 mg/ml\n10 ml (250 mg)","Narrow TI – cardiac arrhythmias, seizures. Monitor blood levels"],
[79, "Salbutamol\n(IV)",
"Life-threatening asthma: 5 mcg/min IV infusion;\ntitrate up (max 20 mcg/min)\n(Prefer nebulization)",
"Amp\n0.5 mg/ml\n1 ml", "IV reserved for ICU/life-threatening bronchospasm only"],
[80, "Dexamethasone\n(Resp)",
"Acute severe asthma: 8 mg IV/IM BD\nCroup: 0.6 mg/kg IM single dose\n(See #57 for full entry)",
"Amp\n4 mg/ml\n2 ml", "Reduces airway inflammation. Effect in 4–6 hr"],
]
# ── 13. GASTROENTEROLOGY / ANTIEMETICS (7) ──
gi = [
[81, "Ondansetron",
"Nausea/vomiting: 4–8 mg IV over 15 min q8h\nChemo-induced: 8 mg IV BD\nMax single IV dose: 16 mg",
"Amp\n2 mg/ml\n2 ml (4 mg)", "Prolongs QTc – slow IV. 5-HT3 antagonist"],
[82, "Metoclopramide",
"Nausea/gastroparesis: 10 mg IV/IM q8h\nMax 3 doses/day",
"Amp\n5 mg/ml\n2 ml", "EPS side effects. Avoid in epilepsy, bowel obstruction"],
[83, "Pantoprazole",
"Active GI bleed: 80 mg IV bolus; then 8 mg/hr x72 hr\nMaintenance: 40 mg IV OD",
"Vial\n40 mg\n(dry pwd)", "Reconstitute in NS. Higher dose for acute bleed protocol"],
[84, "Ranitidine",
"PUD/stress ulcer: 50 mg IV q8h or 6.25 mg/hr infusion\n(Give over 5–15 min slowly)",
"Amp\n25 mg/ml\n2 ml (50 mg)", "Less commonly used now (pantoprazole preferred). Avoid rapid IV"],
[85, "Phytomenadione\n(Vit K)",
"See #76 above",
"Amp\n10 mg/ml\n1 ml", "GI bleed coagulopathy & warfarin reversal"],
[86, "Octreotide\n(Variceal)",
"See #61 above",
"Amp\n50/100 mcg", "Used for oesophageal variceal haemorrhage"],
[87, "Vasopressin\n(Variceal)",
"See #62 above",
"Amp\n20 IU/ml", "Give with nitrates to reduce cardiac side effects"],
]
# ── 14. VITAMINS & HAEMATINICS (5) ──
vit = [
[88, "Thiamine\n(Vitamin B1)",
"Wernicke's/Alcohol: 200–500 mg IV TDS for 3 days\nProphylaxis: 100 mg IV/IM OD",
"Amp\n100 mg/ml\n2 ml", "ALWAYS give before glucose in alcoholics. Anaphylaxis risk IV"],
[89, "Hydroxocobalamin\n(Vit B12)",
"Deficiency: 1 mg IM OD for 7 days; then weekly/monthly",
"Amp\n1 mg/ml\n1 ml", "IM only (not IV). Rotate injection sites"],
[90, "Folic Acid\n(IV/IM)",
"Deficiency/megaloblastic: 5 mg IV/IM OD\n(Oral usually preferred)",
"Amp\n5 mg/ml\n1 ml", "Rule out B12 deficiency before treating with folic acid alone"],
[91, "Iron Sucrose\n(IV Iron)",
"Iron deficiency: 100–200 mg IV (diluted in 100 ml NS) over 30 min;\nMax 200 mg/session",
"Amp\n20 mg/ml\n5 ml (100 mg)", "Test dose first. Anaphylaxis equipment at bedside. Avoid IM"],
[92, "Ferric\nCarboxymaltose",
"Iron deficiency: 500–1000 mg IV over 15 min\n(Max 1000 mg/week)",
"Vial\n50 mg/ml\n(10–20 ml)", "No test dose required. Higher single dose than iron sucrose"],
]
# ── 15. ANTIHISTAMINES & ALLERGY (2) ──
antihist = [
[93, "Chlorpheniramine\nMaleate",
"Allergic reaction/anaphylaxis: 10–20 mg IV/IM (slow IV)\nMax 40 mg/day",
"Amp\n10 mg/ml\n1 ml", "Sedating. Adjunct in anaphylaxis (not primary treatment)"],
[94, "Pheniramine\nMaleate",
"Allergic reaction: 22.75 mg (1 ml) IV/IM\nMay repeat q4–6h",
"Amp\n22.75 mg/ml\n1 ml", "Similar to chlorpheniramine. Sedation. Dilute before slow IV"],
]
# ── 16. MISCELLANEOUS (4) ──
misc = [
[95, "Mannitol",
"Raised ICP/cerebral oedema: 0.25–2 g/kg IV over 30–60 min\nRepeat q4–6h PRN",
"IV Bottle\n20%: 100/250\n500 ml", "Use in-line filter. Monitor serum osmolality & renal function"],
[96, "Albumin\n(Human)",
"Hypoalbuminaemia/ascites: 50–100 ml of 20–25% IV over 2–4 hr\nSBP: 1.5 g/kg on Day 1; 1 g/kg on Day 3",
"Vial\n20%/25%\n50/100 ml", "Expensive – use as per protocol. Monitor fluid balance"],
[97, "Anti-Rabies\nImmunoglobulin",
"Post-exposure prophylaxis: 20 IU/kg\n(Infiltrate max around wound; remainder IM elsewhere)",
"Vial\n150 IU/ml", "Give with rabies vaccine. Do NOT give in same syringe/site as vaccine"],
[98, "Tetanus\nImmunoglobulin\n(TIG)",
"Treatment: 500–3000 IU IM\nProphylaxis (unimmunized): 250–500 IU IM",
"Vial\n500 IU", "Human TIG preferred over equine ATS. Give at different site from toxoid"],
]
# ════════════════════════════════════════════════════════════
# BUILD PDF
# ════════════════════════════════════════════════════════════
story = []
# ── COVER ──
story.append(Spacer(1, 6*mm))
cover = Table([[Paragraph(
"COMPLETE INJECTION REFERENCE\nIV / IM QUICK GUIDE\n98 INJECTIONS", title_st)]],
colWidths=[W])
cover.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), DARK_RED),
("TOPPADDING", (0,0),(-1,-1), 10),
("BOTTOMPADDING", (0,0),(-1,-1), 10),
("BOX", (0,0),(-1,-1), 1.5, DARK_RED),
]))
story.append(cover)
story.append(Spacer(1, 2.5*mm))
sub = Table([[Paragraph(
"Medicine Department | Govt Hospital, Odisha\nDosages, Forms & Key Notes for IV & IM Use", sub_st)]],
colWidths=[W])
sub.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), PURPLE),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING", (0,0),(-1,-1), 5),
("BOX", (0,0),(-1,-1), 0.8, PURPLE),
]))
story.append(sub)
story.append(Spacer(1, 2.5*mm))
warn = Table([[Paragraph(
"⚠ FOR TRAINED HEALTHCARE PROFESSIONALS ONLY ⚠\n"
"Verify all dosages before administration. Adjust for weight, renal/hepatic function & age.\n"
"This guide does not replace clinical judgment or hospital protocols.", warn_st)]],
colWidths=[W])
warn.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), YELLOW),
("BOX", (0,0),(-1,-1), 1, ORANGE),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING", (0,0),(-1,-1), 5),
("LEFTPADDING", (0,0),(-1,-1), 5),
]))
story.append(warn)
story.append(Spacer(1, 2.5*mm))
# TOC
sections = [
("1–5", "Analgesics & Anti-inflammatory", 5),
("6–25", "Antibiotics", 20),
("26–27", "Antifungals", 2),
("28–29", "Antiviral / Antiparasitic", 2),
("30", "Antitubercular", 1),
("31–47", "Cardiovascular", 17),
("48–55", "CNS / Neurological", 8),
("56–58", "Corticosteroids", 3),
("59–62", "Diabetes / Endocrine", 4),
("63–67", "Electrolytes & Metabolic", 5),
("68–77", "Antidotes & Poisoning", 10),
("78–80", "Respiratory", 3),
("81–87", "Gastroenterology / Antiemetics", 7),
("88–92", "Vitamins & Haematinics", 5),
("93–94", "Antihistamines", 2),
("95–98", "Miscellaneous", 4),
]
toc_hdr = Table([[
Paragraph("DRUG", PS("th1", fontSize=6.5, fontName="Helvetica-Bold", textColor=WHITE, leading=8)),
Paragraph("SECTION", PS("th2", fontSize=6.5, fontName="Helvetica-Bold", textColor=WHITE, leading=8, alignment=TA_LEFT)),
Paragraph("COUNT", PS("th3", fontSize=6.5, fontName="Helvetica-Bold", textColor=WHITE, leading=8, alignment=TA_CENTER)),
]], colWidths=[16*mm, 95*mm, 21*mm])
toc_hdr.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),NAVY),
("TOPPADDING",(0,0),(-1,-1),2),("BOTTOMPADDING",(0,0),(-1,-1),2),
("LEFTPADDING",(0,0),(-1,-1),4)]))
story.append(toc_hdr)
for i, (nos, name, cnt) in enumerate(sections):
row_data = [[
Paragraph(nos, PS(f"tn{i}a", fontSize=6, fontName="Helvetica-Bold", textColor=NAVY, leading=7.5)),
Paragraph(name, PS(f"tn{i}b", fontSize=6, fontName="Helvetica", leading=7.5)),
Paragraph(str(cnt), PS(f"tn{i}c", fontSize=6, fontName="Helvetica-Bold",
textColor=DARK_RED, alignment=TA_CENTER, leading=7.5)),
]]
bg = LIGHT_BLU if i % 2 == 0 else WHITE
rt = Table(row_data, colWidths=[16*mm, 95*mm, 21*mm])
rt.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),bg),
("GRID",(0,0),(-1,-1),0.3,MED_GRY),
("TOPPADDING",(0,0),(-1,-1),1.5),("BOTTOMPADDING",(0,0),(-1,-1),1.5),
("LEFTPADDING",(0,0),(-1,-1),4)]))
story.append(rt)
story.append(Spacer(1, 2*mm))
story.append(Paragraph(
"Based on District Hospital EML (India, Jan 2024) & OSMCL Odisha | Compiled July 2026",
foot_st))
# ── helper ──
def add_sec(label, rows, bg, alt):
story.append(Spacer(1, 2*mm))
story.append(sec_header(label, bg=bg))
story.append(drug_tbl(rows, hdr_bg=bg, alt=alt))
# ── PAGES ──
story.append(PageBreak())
add_sec("1–5 ANALGESICS & ANTI-INFLAMMATORY", analg, BROWN, BROWN_LT)
add_sec("6–25 ANTIBIOTICS", abx[:10], colors.HexColor("#4A235A"), PURP_LITE)
story.append(PageBreak())
add_sec("6–25 ANTIBIOTICS (contd.)", abx[10:], colors.HexColor("#4A235A"), PURP_LITE)
add_sec("26–27 ANTIFUNGALS", antifung, TEAL, TEAL_LITE)
add_sec("28–29 ANTIVIRAL / ANTIPARASITIC", antip, TEAL, TEAL_LITE)
add_sec("30 ANTITUBERCULAR", antitb, TEAL, TEAL_LITE)
story.append(PageBreak())
add_sec("31–47 CARDIOVASCULAR", cardio[:9], GREEN, LIGHT_BLU)
story.append(PageBreak())
add_sec("31–47 CARDIOVASCULAR (contd.)", cardio[9:], GREEN, LIGHT_BLU)
story.append(PageBreak())
add_sec("48–55 CNS / NEUROLOGICAL", cns, PURPLE, PURP_LITE)
add_sec("56–58 CORTICOSTEROIDS", ster, OLIVE, OLIVE_LT)
story.append(PageBreak())
add_sec("59–62 DIABETES / ENDOCRINE", dm, DARK_RED, colors.HexColor("#FADBD8"))
add_sec("63–67 ELECTROLYTES & METABOLIC", elec, INDIGO, LIGHT_BLU)
story.append(PageBreak())
add_sec("68–77 ANTIDOTES & POISONING", antidotes[:6], colors.HexColor("#7D6608"), colors.HexColor("#FDFDE7"))
story.append(PageBreak())
add_sec("68–77 ANTIDOTES & POISONING (contd.)", antidotes[6:], colors.HexColor("#7D6608"), colors.HexColor("#FDFDE7"))
add_sec("78–80 RESPIRATORY EMERGENCIES", resp, TEAL, TEAL_LITE)
story.append(PageBreak())
add_sec("81–87 GASTROENTEROLOGY / ANTIEMETICS", gi, colors.HexColor("#117864"), TEAL_LITE)
add_sec("88–92 VITAMINS & HAEMATINICS", vit, colors.HexColor("#1A5276"), LIGHT_BLU)
add_sec("93–94 ANTIHISTAMINES", antihist, colors.HexColor("#6C3483"), PURP_LITE)
add_sec("95–98 MISCELLANEOUS", misc, NAVY, LIGHT_BLU)
# ── BACK PAGE: Critical Reminders ──
story.append(PageBreak())
story.append(sec_header("CRITICAL SAFETY REMINDERS – Always Verify Before Use", bg=DARK_RED))
story.append(Spacer(1, 2*mm))
reminders = [
("NEVER give KCl undiluted IV (fatal)", "Vancomycin: infuse >60 min (Red Man Syndrome if fast)"),
("Sodium Nitroprusside: wrap drip in foil", "Streptokinase: check contraindications strictly"),
("MgSO4 antidote = Ca gluconate 1 g IV", "Phenytoin: NS only – DO NOT use in Dextrose"),
("Opioids: keep Naloxone at bedside", "Promethazine: NEVER SC – tissue necrosis"),
("OP poisoning: no ceiling dose for atropine", "Artesunate: NaHCO3 reconstitution first"),
("Snake antivenom: pre-medicate with adrenaline SC", "Noradrenaline: central line only (extravasation risk)"),
("Insulin: dedicated IV line; hourly glucose check", "Aminophylline: narrow TI – ECG monitor"),
("Thiamine BEFORE glucose in alcoholics", "Amphotericin B: test dose first; protect from light"),
("NAC 1st bag: slow rate if anaphylactoid reaction", "Benzathine penicillin: NEVER IV – IM only"),
("Atropine min IV dose = 0.5 mg (paradox bradycardia)", "Diazepam/Lorazepam: keep airway equipment ready"),
]
for i, (a, b) in enumerate(reminders):
bg = YELLOW if i % 2 == 0 else WHITE
rt = Table([[
Paragraph("⚠ " + a, PS(f"ra{i}", fontSize=6.2, fontName="Helvetica-Bold",
textColor=DARK_RED, leading=8)),
Paragraph("→ " + b, PS(f"rb{i}", fontSize=6.2, fontName="Helvetica-Bold",
textColor=colors.HexColor("#1A5276"), leading=8)),
]], colWidths=[W/2, W/2])
rt.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),bg),
("GRID",(0,0),(-1,-1),0.3,MED_GRY),
("TOPPADDING",(0,0),(-1,-1),2.5),("BOTTOMPADDING",(0,0),(-1,-1),2.5),
("LEFTPADDING",(0,0),(-1,-1),3),("VALIGN",(0,0),(-1,-1),"TOP")]))
story.append(rt)
story.append(Spacer(1, 3*mm))
# Abbreviations
abbrs = [
("IV = Intravenous","IM = Intramuscular","SC = Subcutaneous","OD = Once daily"),
("BD = Twice daily","TDS = Three times daily","QDS = Four times daily","q = every (e.g. q8h)"),
("NS = Normal Saline 0.9%","D5W = 5% Dextrose","WFI = Water for Injection","RT = Room Temperature"),
("TI = Therapeutic Index","EPS = Extrapyramidal S/E","UO = Urine output","RR = Respiratory Rate"),
("OD = Overdose (context)","HTN = Hypertension","Rx = Treatment","APTT = Activated PTT"),
]
abh = Table([[Paragraph("ABBREVIATIONS", PS("abh", fontSize=7, fontName="Helvetica-Bold",
textColor=WHITE, alignment=TA_CENTER, leading=9)),
Paragraph("",""), Paragraph("",""), Paragraph("","")]], colWidths=[W/4]*4)
abh.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),NAVY),("SPAN",(0,0),(-1,-1)),
("TOPPADDING",(0,0),(-1,-1),2),("BOTTOMPADDING",(0,0),(-1,-1),2)]))
story.append(abh)
for i, row in enumerate(abbrs):
bg = LIGHT_GRY if i%2==0 else WHITE
rt = Table([[Paragraph(c, PS(f"ab{i}{j}", fontSize=5.8, fontName="Helvetica", leading=7.5))
for j, c in enumerate(row)]], colWidths=[W/4]*4)
rt.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),bg),
("GRID",(0,0),(-1,-1),0.3,MED_GRY),
("TOPPADDING",(0,0),(-1,-1),1.5),("BOTTOMPADDING",(0,0),(-1,-1),1.5),
("LEFTPADDING",(0,0),(-1,-1),3)]))
story.append(rt)
story.append(Spacer(1, 2*mm))
story.append(Paragraph(
"For educational & reference purposes only. Not a substitute for standard treatment protocols.\n"
"Refer to current AIIMS/ICMR/WHO guidelines and local hospital policy for updates.\n"
"Based on District Hospital EML (India, Revised Jan 2024) & OSMCL Odisha Essential Drug List 2020.",
foot_st))
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /tmp/workspace/pocket-guide && python generate_full98.py 2>&1
~/pocket-guide/generate_full98.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/pocket-guide/generate_full98.py'
cd /tmp/workspace/pocket-guide && python generate_full98.py 2>&1
ls -lh /tmp/workspace/pocket-guide/Complete_98_Injections_Pocket_Guide.pdf
Complete 98 Injections Pocket Guide
PDF Document · PDF
| # | Section | Drugs |
|---|---|---|
| 1–5 | Analgesics & Anti-inflammatory | Diclofenac, Paracetamol, Tramadol, Morphine, Pentazocine |
| 6–25 | Antibiotics (20 drugs) | Penicillins, Cephalosporins, Aminoglycosides, Carbapenems, Metronidazole, Vancomycin, Ciprofloxacin, Co-trimoxazole, Doxycycline, Chloramphenicol |
| 26–27 | Antifungals | Amphotericin B, Fluconazole |
| 28–29 | Antiviral/Antiparasitic | Artesunate, Quinine |
| 30 | Antitubercular | Streptomycin |
| 31–47 | Cardiovascular (17 drugs) | Adrenaline, Noradrenaline, Dopamine, Dobutamine, Digoxin, Adenosine, Amiodarone, Lignocaine, Esmolol, Labetalol, Hydralazine, SNP, Streptokinase, Heparin, Enoxaparin, Furosemide, Atropine |
| 48–55 | CNS / Neurological | Diazepam, Lorazepam, Midazolam, Phenytoin, Phenobarbitone, Haloperidol, Promethazine, Neostigmine |
| 56–58 | Corticosteroids | Hydrocortisone, Dexamethasone, Methylprednisolone |
| 59–62 | Diabetes / Endocrine | Insulin, Glucagon, Octreotide, Vasopressin |
| 63–67 | Electrolytes | 50% Dextrose, Ca Gluconate, MgSO4, KCl, NaHCO3 |
| 68–77 | Antidotes & Poisoning | Naloxone, NAC, Desferrioxamine, Atropine (OP), PAM, Snake Antivenom, ATS, Vit K, Ca Gluconate |
| 78–80 | Respiratory | Aminophylline, Salbutamol IV, Dexamethasone |
| 81–87 | GI / Antiemetics | Ondansetron, Metoclopramide, Pantoprazole, Ranitidine, Vit K, Octreotide, Vasopressin |
| 88–92 | Vitamins & Haematinics | Thiamine, Hydroxocobalamin, Folic Acid, Iron Sucrose, Ferric Carboxymaltose |
| 93–94 | Antihistamines | Chlorpheniramine, Pheniramine |
| 95–98 | Miscellaneous | Mannitol, Albumin, Anti-Rabies Ig, Tetanus Ig |
add more neccessary inj if there are so that i dont face any prob in hospital
~/pocket-guide/generate_complete130.py
from reportlab.lib.pagesizes import A5
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, PageBreak
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
OUTPUT = "/tmp/workspace/pocket-guide/Complete_Hospital_Injection_Guide.pdf"
# ── Colours ──────────────────────────────────────────────────
RED = colors.HexColor("#C0392B")
DARK_RED = colors.HexColor("#922B21")
ORANGE = colors.HexColor("#E67E22")
YELLOW = colors.HexColor("#F9E79F")
GREEN = colors.HexColor("#1A5276")
LIGHT_BLU = colors.HexColor("#D6EAF8")
TEAL = colors.HexColor("#117A65")
TEAL_LITE = colors.HexColor("#D1F2EB")
PURPLE = colors.HexColor("#6C3483")
PURP_LITE = colors.HexColor("#E8DAEF")
NAVY = colors.HexColor("#1B2631")
WHITE = colors.white
LIGHT_GRY = colors.HexColor("#F2F3F4")
MED_GRY = colors.HexColor("#BFC9CA")
BROWN = colors.HexColor("#784212")
BROWN_LT = colors.HexColor("#FDEBD0")
OLIVE = colors.HexColor("#0E6655")
OLIVE_LT = colors.HexColor("#D5F5E3")
INDIGO = colors.HexColor("#154360")
MAROON = colors.HexColor("#641E16")
MAROON_LT = colors.HexColor("#FADBD8")
SLATE = colors.HexColor("#2E4053")
SLATE_LT = colors.HexColor("#D5D8DC")
GOLD = colors.HexColor("#7D6608")
GOLD_LT = colors.HexColor("#FDFDE7")
doc = SimpleDocTemplate(
OUTPUT, pagesize=A5,
leftMargin=7*mm, rightMargin=7*mm,
topMargin=9*mm, bottomMargin=7*mm,
)
W = A5[0] - 14*mm
styles = getSampleStyleSheet()
def PS(name, **kw):
return ParagraphStyle(name, parent=styles["Normal"], **kw)
title_st = PS("T", fontSize=11, textColor=WHITE, alignment=TA_CENTER,
fontName="Helvetica-Bold", leading=14)
sub_st = PS("S", fontSize=6.8, textColor=WHITE, alignment=TA_CENTER,
fontName="Helvetica", leading=9)
sec_st = PS("Sc", fontSize=7.8, textColor=WHITE, fontName="Helvetica-Bold",
leading=10, leftIndent=2)
warn_st = PS("W", fontSize=6, textColor=DARK_RED,
fontName="Helvetica-BoldOblique", leading=7.8)
foot_st = PS("F", fontSize=5.5, textColor=colors.HexColor("#555555"),
alignment=TA_CENTER, fontName="Helvetica-Oblique", leading=7)
hdr_st = PS("H", fontSize=6.2, fontName="Helvetica-Bold",
textColor=WHITE, leading=8)
cell_st = PS("C", fontSize=5.9, fontName="Helvetica", leading=7.5)
sno_st = PS("N", fontSize=6, fontName="Helvetica-Bold",
textColor=NAVY, leading=7.5)
note_st = PS("Nt", fontSize=5.5, fontName="Helvetica-Oblique",
textColor=colors.HexColor("#4D4D4D"), leading=7)
new_st = PS("Nw", fontSize=5.5, fontName="Helvetica-Bold",
textColor=colors.HexColor("#117A65"), leading=7)
# col widths: #(7) | Drug(29) | Dose+Route(43) | Form(20) | Notes(33)
CW = [7*mm, 29*mm, 43*mm, 20*mm, 33*mm] # 132mm total
def sec_header(text, bg=GREEN):
t = Table([[Paragraph(text, sec_st)]], colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), bg),
("TOPPADDING", (0,0),(-1,-1), 3),
("BOTTOMPADDING", (0,0),(-1,-1), 3),
("LEFTPADDING", (0,0),(-1,-1), 5),
]))
return t
def drug_tbl(rows, hdr_bg=GREEN, alt=LIGHT_BLU):
headers = ["#", "Drug", "Dose / Route", "Form", "Key Notes"]
data = [[Paragraph(h, hdr_st) for h in headers]]
for row in rows:
# last col: if row has 6 elements, element[5]="NEW" tag
note_text = str(row[4])
is_new = len(row) > 5 and row[5] == "NEW"
ns = new_st if is_new else note_st
prefix = "[NEW] " if is_new else ""
data.append([
Paragraph(str(row[0]), sno_st),
Paragraph(str(row[1]), cell_st),
Paragraph(str(row[2]), cell_st),
Paragraph(str(row[3]), cell_st),
Paragraph(prefix + note_text, ns),
])
t = Table(data, colWidths=CW)
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,0), hdr_bg),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, alt]),
("GRID", (0,0),(-1,-1), 0.35, MED_GRY),
("TOPPADDING", (0,0),(-1,-1), 1.8),
("BOTTOMPADDING", (0,0),(-1,-1), 1.8),
("LEFTPADDING", (0,0),(-1,-1), 2.5),
("RIGHTPADDING", (0,0),(-1,-1), 2.5),
("VALIGN", (0,0),(-1,-1), "TOP"),
]))
return t
def add_sec(label, rows, bg, alt):
story.append(Spacer(1, 2*mm))
story.append(sec_header(label, bg=bg))
story.append(drug_tbl(rows, hdr_bg=bg, alt=alt))
# ════════════════════════════════════════════════════════════════
# COMPLETE DRUG DATA (130 injections)
# [#, "Drug", "Dose/Route", "Form", "Notes"]
# [#, "Drug", "Dose/Route", "Form", "Notes", "NEW"] ← added drugs
# ════════════════════════════════════════════════════════════════
# ─── 1. ANALGESICS & PAIN MANAGEMENT ────────────────────────
analg = [
[1, "Diclofenac",
"75 mg IM deep (gluteal) q8–12h; max 150 mg/day\n(IM only)",
"Amp\n25 mg/ml\n3 ml",
"Avoid renal impairment, GI bleed, asthma. Rotate sites"],
[2, "Paracetamol",
"1 g IV over 15 min q6h (max 4 g/day;\n2 g/day if liver disease)",
"Infusion\n10 mg/ml\n100 ml",
"Hepatotoxic in OD. Antidote = NAC"],
[3, "Tramadol",
"50–100 mg diluted in 100 ml NS IV over 20 min; IM 50–100 mg q4–6h; max 400 mg/day",
"Amp\n50 mg/ml\n2 ml",
"Lowers seizure threshold. Avoid MAOIs"],
[4, "Morphine",
"IV: 2–5 mg slowly q4h\nAMI: 2–4 mg IV, titrate\nIM: 5–10 mg q4h",
"Amp\n10 mg/ml\n1 ml",
"Keep naloxone ready. Avoid in head injury, respiratory depression"],
[5, "Pentazocine",
"IM/SC 30–60 mg q3–4h; IV 30 mg q3–4h\nMax 360 mg/day",
"Amp\n30 mg/ml",
"Mixed agonist-antagonist. Avoid with pure opioids"],
[6, "Fentanyl",
"Procedural sedation/ICU: 25–50 mcg IV slowly q5–10 min\nInfusion: 25–200 mcg/hr",
"Amp\n50 mcg/ml\n2 ml (100 mcg)",
"100x more potent than morphine. Rigid chest with rapid IV. Naloxone reverses", "NEW"],
[7, "Ketamine",
"Procedural sedation: 1–2 mg/kg IV over 1–2 min; IM 4–5 mg/kg\nAnalgesia: 0.1–0.5 mg/kg IV",
"Vial\n10 mg/ml / 50 mg/ml",
"Dissociative. Preserves airway reflexes & BP. Avoid in HTN, psychosis, head injury", "NEW"],
]
# ─── 2. ANTIBIOTICS ──────────────────────────────────────────
abx = [
[8, "Benzylpenicillin\n(Crystalline)",
"Meningitis/sepsis: 20–24 lakh U/day IV in 4–6 divided doses",
"Vial\n10 lakh U\n(dry pwd)",
"Dilute in NS/D5W. Give over 30 min. Check penicillin allergy"],
[9, "Benzathine\nBenzylpenicillin",
"Rheumatic fever prophylaxis: 12 lakh U IM q3–4 weeks",
"Vial\n12 lakh U\n(dry pwd)",
"Deep IM gluteal ONLY. NEVER IV. Warm to room temp first"],
[10, "Ampicillin",
"500 mg–2 g IV/IM q4–6h\nMeningitis: 2 g IV q4h",
"Vial\n250 mg/500 mg\n1 g",
"Dilute & infuse over 30 min. Rash common in EBV"],
[11, "Amoxicillin\n+Clavulanic Acid",
"1.2 g (1 g+200 mg) IV q8h\nSevere: 1.2 g IV q6h",
"Vial\n1.2 g",
"Infuse over 30 min. Check penicillin allergy"],
[12, "Cloxacillin",
"500 mg–1 g IV/IM q4–6h",
"Vial\n500 mg\n(dry pwd)",
"Anti-staphylococcal beta-lactamase stable"],
[13, "Cefazolin",
"1–2 g IV/IM q8h\nSurgical prophylaxis: 1–2 g IV 30 min pre-op",
"Vial\n500 mg / 1 g",
"1st-gen cephalosporin. Good for skin/soft tissue/surgical prophylaxis"],
[14, "Cefotaxime",
"1–2 g IV/IM q6–8h\nMeningitis: 2 g IV q4h",
"Vial\n250 mg / 1 g",
"3rd-gen. Broad Gram-neg cover including meningitis"],
[15, "Ceftriaxone",
"1–2 g IV OD (BD for meningitis)\nGonorrhoea: 500 mg IM single dose",
"Vial\n250 mg/500 mg\n1 g",
"IM: reconstitute in 1% lignocaine. AVOID calcium-containing IV fluids"],
[16, "Ceftazidime",
"1–2 g IV/IM q8h\nPseudomonas: 2 g IV q8h",
"Vial\n250 mg / 1 g",
"Anti-pseudomonal 3rd-gen cephalosporin"],
[17, "Piperacillin\n+Tazobactam",
"4.5 g IV over 30 min q6–8h\nExtended: 4.5 g over 4 hr q8h",
"Vial\n4.5 g",
"Broadest beta-lactam. Covers Pseudomonas + anaerobes"],
[18, "Gentamicin",
"ODD: 5–7 mg/kg IV/IM OD\nEndocarditis: 1 mg/kg IV q8h",
"Amp\n40 mg/2 ml\n80 mg/2 ml",
"Monitor trough (<2 mcg/ml). Ototoxic & nephrotoxic"],
[19, "Amikacin",
"15 mg/kg/day IV/IM OD or in 2–3 divided doses",
"Amp\n250 mg/ml\n2 ml (500 mg)",
"Reserve for resistant Gram-neg. Monitor levels & renal function"],
[20, "Ciprofloxacin\n(IV)",
"400 mg IV q8–12h; Infuse over 60 min",
"IV Bottle\n200 mg/100 ml",
"Prolongs QTc. Avoid with theophylline. Not 1st-line for pneumonia"],
[21, "Levofloxacin\n(IV)",
"500 mg IV OD or 750 mg IV OD (severe)\nInfuse over 60–90 min",
"IV Bottle\n500 mg/100 ml",
"CAP/HAP, UTI, skin. Prolongs QTc. Avoid in epilepsy", "NEW"],
[22, "Metronidazole\n(IV)",
"500 mg IV q8h; Infuse over 30–60 min",
"IV Bottle\n500 mg/100 ml",
"Anaerobic cover. Avoid alcohol. Darkens urine"],
[23, "Azithromycin\n(IV)",
"CAP/Legionella: 500 mg IV OD x2–5 days;\nthen switch to oral",
"Vial\n500 mg\n(dry pwd)",
"Infuse over 60 min (not faster). QTc prolongation", "NEW"],
[24, "Vancomycin",
"Load: 25–30 mg/kg IV; Maint: 15–20 mg/kg q8–12h\n(Target trough 15–20 mcg/ml)",
"Vial\n500 mg / 1 g",
"Infuse >60 min (Red Man if faster). For MRSA & Gram+ infections"],
[25, "Linezolid\n(IV)",
"600 mg IV q12h; Infuse over 30–120 min",
"IV Bottle\n600 mg/300 ml",
"MRSA/VRE. Serotonin syndrome with SSRIs. Monitor CBC (thrombocytopenia)", "NEW"],
[26, "Teicoplanin",
"Load: 400 mg IV/IM q12h x3 doses;\nMaint: 400 mg IV/IM OD",
"Vial\n400 mg\n(dry pwd)",
"Glycopeptide like vancomycin. Once-daily dosing. Monitor LFT/renal", "NEW"],
[27, "Meropenem",
"1–2 g IV q8h\nMeningitis/MDR: 2 g IV q8h",
"Vial\n500 mg / 1 g",
"Broad-spectrum carbapenem. Stable 8 hr at RT after reconstitution"],
[28, "Imipenem\n+Cilastatin",
"500 mg IV q6h\nSevere: 1 g IV q6–8h",
"Vial\n500 mg+500 mg",
"Lowers seizure threshold. Avoid in CNS infections if meropenem available"],
[29, "Ertapenem",
"1 g IV/IM OD; Infuse over 30 min",
"Vial\n1 g",
"Once-daily carbapenem. No Pseudomonas cover. Community MDR infections", "NEW"],
[30, "Colistin\n(Polymyxin E)",
"Loading: 9 million IU IV over 30 min;\nMaint: 4.5 million IU IV q12h",
"Vial\n1 million IU\n2 million IU",
"Last resort for XDR Gram-neg. Nephrotoxic. Monitor creatinine daily", "NEW"],
[31, "Chloramphenicol",
"50–100 mg/kg/day IV in 4 divided doses (max 4 g/day)",
"Vial\n1 g",
"Aplastic anaemia risk. Use only when no alternatives. Monitor CBC"],
[32, "Doxycycline\n(IV)",
"100 mg IV q12h; Infuse over 1–4 hr",
"Vial\n100 mg",
"Not for <8 yr. Avoid Ca/Mg/Fe co-administration. Phototoxicity"],
[33, "Co-trimoxazole\n(IV)",
"PCP pneumonia: 15–20 mg/kg/day (TMP) IV in 3–4 divided doses",
"Amp\n80 mg TMP +\n400 mg SMX\n/5 ml",
"Dilute in 250 ml NS. Monitor renal fn & K+"],
[34, "Acyclovir\n(IV)",
"Herpes encephalitis: 10 mg/kg IV q8h over 1 hr (x14–21 days)\nVZV: 10 mg/kg IV q8h\nImmunocompromised HSV: 5 mg/kg IV q8h",
"Vial\n250 mg\n(dry pwd)",
"Hydrate well (nephrotoxic if under-hydrated). Adjust for renal impairment", "NEW"],
]
# ─── 3. ANTIFUNGAL ──────────────────────────────────────────
antifung = [
[35, "Amphotericin B\n(Conventional)",
"Test dose 1 mg in 100 ml D5W over 30 min;\nthen 0.25–1 mg/kg/day IV over 4–6 hr",
"Vial\n50 mg\n(dry pwd)",
"Wrap in foil (light-sensitive). Nephrotoxic. Pre-hydrate. Fever/rigors common"],
[36, "Fluconazole\n(IV)",
"Candida: 400 mg IV OD loading; then 200–400 mg IV OD\nCryptococcal: 800 mg IV OD (with AmB)",
"IV Bottle\n2 mg/ml\n100 ml",
"Infuse over 60 min. QTc prolongation. CYP3A4 inhibitor"],
]
# ─── 4. ANTIVIRAL / ANTIPARASITIC ───────────────────────────
antip = [
[37, "Artesunate",
"Severe malaria: 2.4 mg/kg IV/IM at 0, 12, 24 hr; then OD x7 days",
"Vial\n60 mg\n(dry pwd)",
"Reconstitute with 5% NaHCO3 first; then dilute in D5W/NS"],
[38, "Quinine",
"Severe malaria: 20 mg/kg IV over 4 hr (load); then 10 mg/kg IV q8h",
"Amp\n300 mg/ml\n2 ml",
"Cardiac monitor. Hypoglycaemia risk. Use only if artesunate unavailable"],
]
# ─── 5. ANTITUBERCULAR ──────────────────────────────────────
antitb = [
[39, "Streptomycin",
"TB: 15 mg/kg IM OD (max 1 g/day)\nUsually in Category II regimen",
"Vial\n0.75 g / 1 g",
"IM only. Ototoxic & nephrotoxic. Monitor hearing & renal function"],
]
# ─── 6. CARDIOVASCULAR ──────────────────────────────────────
cardio = [
[40, "Adrenaline\n(Epinephrine)",
"Cardiac arrest: 1 mg IV q3–5 min\nAnaphylaxis: 0.5 mg IM (lateral thigh)\nShock: 0.1–1 mcg/kg/min IV infusion",
"Amp\n1 mg/ml\n1 ml",
"Never undiluted IV push outside arrest. Central line for infusion"],
[41, "Noradrenaline",
"Septic shock: 0.01–3 mcg/kg/min IV infusion\nTitrate to MAP ≥65 mmHg",
"Amp\n2 mg/ml",
"Central line preferred. Extravasation = necrosis. Antidote: phentolamine local"],
[42, "Dopamine",
"Shock: 5–20 mcg/kg/min IV infusion\n(Low dose 1–3 mcg/kg/min for renal)",
"Amp\n40 mg/ml\n5 ml",
"Dilute in 250 ml NS/D5W. Central line preferred"],
[43, "Dobutamine",
"Cardiogenic shock: 2.5–20 mcg/kg/min IV infusion",
"Vial\n250 mg/20 ml",
"Increases HR and contractility. Monitor ECG. Tachyarrhythmia risk"],
[44, "Digoxin",
"AF rate control load: 0.5 mg IV over 30 min; then 0.25 mg q6h x2\nMaint: 0.125–0.25 mg IV/IM OD",
"Amp\n0.25 mg/ml\n2 ml",
"Narrow TI. Toxicity: N/V, bradycardia, visual changes. Avoid hypokalaemia"],
[45, "Lignocaine\n(Lidocaine)",
"VT: 1–1.5 mg/kg IV bolus; Infusion: 1–4 mg/min\nMax bolus: 3 mg/kg",
"Amp\n20 mg/ml\n5 ml",
"ECG monitor. Toxicity: seizures, arrhythmia"],
[46, "Atropine",
"Bradycardia: 0.5–1 mg IV q3–5 min (max 3 mg)\nOP poisoning: 2–4 mg IV q5–10 min (titrate to secretions)",
"Amp\n0.6 mg/ml\n1 mg/ml",
"Min IV dose 0.5 mg (paradox bradycardia if <0.5 mg)"],
[47, "Adenosine",
"SVT: 6 mg rapid IV bolus (central/antecubital);\n12 mg if no conversion after 1–2 min; max 18 mg",
"Amp\n3 mg/ml\n2 ml",
"Flush immediately with 20 ml NS. Brief asystole, flushing, chest pain expected"],
[48, "Amiodarone",
"AF/VF/VT: 300 mg IV over 20–60 min; then 900 mg over 24 hr\nCardiac arrest: 300 mg rapid IV",
"Amp\n50 mg/ml\n3 ml",
"5% Dextrose ONLY. Phlebitis via peripheral. Multiple drug interactions"],
[49, "Verapamil\n(IV)",
"SVT (narrow complex): 5–10 mg IV over 2–3 min;\nRepeat 5–10 mg after 30 min if needed",
"Amp\n2.5 mg/ml\n2 ml (5 mg)",
"NEVER with beta-blocker IV – fatal bradycardia. Avoid in WPW/HF", "NEW"],
[50, "Esmolol",
"SVT/HTN: 500 mcg/kg IV load over 1 min;\nthen 50–200 mcg/kg/min infusion; titrate q4 min",
"Vial\n10 mg/ml",
"Ultra-short acting (9 min half-life). Avoid in asthma, decompensated HF"],
[51, "Labetalol",
"HTN crisis: 20 mg IV over 2 min; repeat 40–80 mg q10 min (max 300 mg)\nInfusion: 2 mg/min",
"Amp\n5 mg/ml",
"Alpha + beta blocker. Avoid in asthma, acute HF, bradycardia"],
[52, "Hydralazine",
"Hypertensive emergency (esp. pregnancy): 5–10 mg IV slowly q20 min\n(Max 40 mg)",
"Amp\n20 mg/ml",
"Rapid BP drop – monitor closely. Preferred in eclampsia with labetalol"],
[53, "Nicardipine\n(IV)",
"Hypertensive emergency: 5 mg/hr IV infusion;\ntitrate by 2.5 mg/hr q5–15 min (max 15 mg/hr)",
"Amp\n1 mg/ml\n10 ml (10 mg)",
"Dihydropyridine CCB. Smooth & titratable BP control. Preferred in neurological HTN emergencies", "NEW"],
[54, "Sodium\nNitroprusside",
"0.3–10 mcg/kg/min IV infusion (start low; titrate every 5 min)",
"Vial\n50 mg",
"Wrap infusion in foil (light-sensitive). ICU use only. Cyanide toxicity if prolonged"],
[55, "Streptokinase",
"STEMI: 15 lakh U IV over 60 min\nPE: 2.5 lakh U load over 30 min; then 1 lakh U/hr x12–24 hr",
"Vial\n7.5 lakh U\n15 lakh U",
"Check contraindications strictly. Allergic reactions common"],
[56, "Enoxaparin\n(LMWH)",
"ACS: 1 mg/kg SC BD\nDVT Rx: 1 mg/kg SC BD\nProphylaxis: 40 mg SC OD",
"Pre-filled\n40/60/80 mg",
"Avoid CrCl <30. No routine APTT. IV bolus 30 mg in STEMI (age/weight-based)"],
[57, "Heparin (UFH)",
"ACS: 60–70 U/kg IV bolus (max 5000 U); then 12–15 U/kg/hr infusion\nProphylaxis: 5000 U SC BD/TDS",
"Vial\n5000 IU/ml\n25000 IU/ml",
"Monitor APTT (target 60–100 sec). Antidote: Protamine sulphate"],
[58, "Protamine\nSulphate",
"Heparin reversal: 1 mg IV per 100 IU heparin given in last 2–3 hr\nMax 50 mg; slow IV over 10 min",
"Amp\n10 mg/ml\n5 ml (50 mg)",
"Anaphylaxis risk (fish allergy, diabetics on NPH insulin). Give slowly", "NEW"],
[59, "Tranexamic\nAcid",
"Trauma haemorrhage: 1 g IV over 10 min within 3 hr of injury; then 1 g over 8 hr\nSurgical: 15 mg/kg IV pre-op\nGI bleed: 1 g IV TDS",
"Amp\n100 mg/ml\n5 ml (500 mg)\n10 ml (1 g)",
"Antifibrinolytic. Give within 3 hr of trauma (less effective after). Thrombosis risk", "NEW"],
[60, "Furosemide\n(Frusemide)",
"Pulm oedema: 40–80 mg IV bolus\nRefractory: up to 200 mg IV infusion\nMax rate: 4 mg/min",
"Amp\n10 mg/ml\n2 ml",
"Monitor K+, creatinine. Ototoxic in high doses/rapid infusion"],
[61, "Phentolamine",
"Noradrenaline extravasation: 5–10 mg in 10 ml NS infiltrate locally\nHTN crisis (phaeochromocytoma): 2–5 mg IV",
"Amp\n10 mg/ml",
"Alpha blocker. Local infiltration for extravasation necrosis prevention", "NEW"],
]
# ─── 7. CNS / NEUROLOGICAL ──────────────────────────────────
cns = [
[62, "Diazepam",
"Status epilepticus: 5–10 mg IV at 2 mg/min; max 30 mg\nIM: 10 mg if no IV access",
"Amp\n5 mg/ml\n2 ml",
"Respiratory depression – keep airway equipment ready. Short duration"],
[63, "Lorazepam",
"Status epilepticus: 4 mg IV over 2–5 min;\nRepeat 4 mg after 10 min",
"Amp\n2 mg/ml\n1–2 ml",
"Preferred 1st-line IV benzodiazepine for status epilepticus. Longer duration than diazepam"],
[64, "Midazolam",
"Seizure (no IV access): 10 mg IM\nSedation: 0.05–0.1 mg/kg IV",
"Amp\n5 mg/ml\n5 ml",
"IM midazolam = as effective as IV diazepam. Water-soluble"],
[65, "Phenytoin",
"Load: 15–20 mg/kg IV at max 50 mg/min\nMaint: 5–7 mg/kg/day IV/IM",
"Amp\n50 mg/ml\n5 ml",
"NS only – precipitates in glucose. ECG monitor. Extravasation = necrosis"],
[66, "Phenobarbitone",
"Status: 15–20 mg/kg IV at max 60 mg/min\nMaint: 60–180 mg IV/IM OD",
"Amp\n200 mg/ml\n1 ml",
"Hypotension + respiratory depression. ICU monitoring"],
[67, "Sodium\nValproate (IV)",
"Seizure: 400–800 mg (15–20 mg/kg) IV over 3–5 min\nMaint infusion: 1–2 mg/kg/hr\nAcute mania: 20 mg/kg IV load",
"Vial\n400 mg/4 ml",
"Avoid in liver disease, pregnancy. Thrombocytopaenia. Monitor LFT", "NEW"],
[68, "Levetiracetam\n(IV)",
"Status epilepticus: 60 mg/kg IV over 15 min (max 4500 mg)\nMaint: 500–1500 mg IV BD",
"IV Bottle\n500 mg/100 ml",
"Minimal drug interactions. Renal dose adjustment needed. Well tolerated", "NEW"],
[69, "Haloperidol",
"Acute psychosis/agitation: 5–10 mg IM q1h PRN\nIV (unlabelled): 2.5–5 mg slowly",
"Amp\n5 mg/ml\n1 ml",
"Monitor QTc. Extrapyramidal side effects. Avoid in Parkinson's"],
[70, "Promethazine",
"Sedation/allergy: 25–50 mg IM deep\nSlow IV: 25 mg diluted in 10 ml NS",
"Amp\n25 mg/ml\n50 mg/ml",
"NEVER SC (tissue necrosis). IV must be diluted and very slow"],
[71, "Neostigmine",
"Myasthenic crisis: 0.5–2.5 mg IV slowly\nNMB reversal: 0.04–0.08 mg/kg IV",
"Amp\n0.5 mg/ml",
"Always give with atropine 0.6 mg IV to prevent bradycardia/bronchospasm"],
[72, "Desmopressin\n(DDAVP)",
"Haemophilia A/vWD: 0.3 mcg/kg IV over 30 min\nDiabetes insipidus: 1–4 mcg IV/SC OD–BD",
"Amp\n4 mcg/ml\n1 ml",
"Hyponatraemia risk. Restrict fluids after dose. Monitor serum Na+", "NEW"],
]
# ─── 8. CORTICOSTEROIDS ─────────────────────────────────────
ster = [
[73, "Hydrocortisone",
"Adrenal crisis: 100 mg IV stat; then 100 mg IV q8h\nAsthma/COPD: 100–200 mg IV q6h\nAnaphylaxis: 200 mg IV",
"Vial\n100 mg / 200 mg\n(dry pwd)",
"Reconstitute with WFI. Short-acting. Has mineralocorticoid activity"],
[74, "Dexamethasone",
"Cerebral oedema: 8–16 mg IV stat; then 4 mg IV q6h\nCroup: 0.6 mg/kg IM single dose\nAnti-emetic: 8 mg IV\nSeptic shock: 6 mg IV OD x10 days (COVID-19 data)",
"Amp\n4 mg/ml\n2 ml",
"Long-acting. Least mineralocorticoid activity. Protect from light"],
[75, "Methylprednisolone",
"Severe asthma: 125 mg IV OD\nAutoimmune: 500 mg–1 g IV daily x3 (pulse)\nSpinal injury: 30 mg/kg IV over 15 min",
"Vial\n40/125/500 mg\n1 g",
"High dose: monitor glucose, BP, infection. Give with PPI"],
]
# ─── 9. DIABETES / ENDOCRINE ────────────────────────────────
dm = [
[76, "Regular Insulin\n(Soluble)",
"DKA: 0.1 U/kg/hr IV infusion\nHyperkalaemia: 10 U IV + 50 ml 50% Dex\nHHS: 0.05 U/kg/hr",
"Vial\n40 IU/ml (10 ml)\n100 IU/ml",
"Dedicated IV line. Hourly glucose. NEVER mix with other drugs in same line"],
[77, "Glucagon",
"Severe hypoglycaemia: 1 mg IM/SC/IV\nRepeat in 15 min if no response",
"Vial\n1 mg",
"Turn patient lateral (vomiting risk). Check glucose at 15 min"],
[78, "Octreotide",
"Variceal bleed: 50 mcg IV bolus; then 25–50 mcg/hr infusion\nInsulinnoma: 50–100 mcg SC/IV q8h",
"Amp\n50 mcg/ml\n100 mcg/ml",
"Gallstone risk with prolonged use. Refrigerate unopened vials"],
[79, "Vasopressin\n(ADH)",
"Variceal bleed: 0.2–0.4 U/min IV infusion\nDI: 5–10 U IM/SC q3–4h\nSeptic shock (2nd vasopressor): 0.03–0.04 U/min IV",
"Amp\n20 IU/ml\n1 ml",
"Give with nitrates to reduce cardiac side effects in variceal bleed"],
[80, "Terlipressin",
"Variceal haemorrhage: 2 mg IV bolus q4h; reduce to 1 mg IV q4h after haemostasis\nHepato-renal syndrome: 0.5–1 mg IV q4–6h",
"Amp\n1 mg/5 ml",
"Vasopressin analogue with longer half-life. Monitor for ischaemia (fingers, skin)", "NEW"],
]
# ─── 10. ELECTROLYTES & METABOLIC ───────────────────────────
elec = [
[81, "50% Dextrose",
"Hypoglycaemia: 25–50 ml IV bolus\nThen maintain with 10% Dextrose infusion",
"Amp\n500 mg/ml\n50 ml",
"Flush line with NS before & after. Tissue necrosis if extravasated"],
[82, "Calcium Gluconate",
"Hypocalcaemia/Ca-channel OD: 1–3 g (10–30 ml 10%) IV over 10–20 min\nHyperkalaemia/HF: 1 g (10 ml 10%) IV",
"Amp\n10%: 1 g/10 ml",
"Cardiac monitor. Extravasation causes necrosis. Precipitates with bicarb/phosphate"],
[83, "Magnesium\nSulphate",
"Eclampsia: 4–6 g IV over 15–20 min; then 1–2 g/hr\nSevere asthma: 2 g IV over 20 min\nTorsades/HypoMg: 1–2 g IV over 1 hr",
"Amp\n50%: 5 g/10 ml\n2 g/4 ml",
"Antidote = Ca gluconate 1 g IV. Monitor RR (>12/min), knee jerk, UO (>25 ml/hr)"],
[84, "Potassium\nChloride (KCl)",
"Severe hypokalaemia: dilute in 1 L NS/D5W\nMax peripheral rate: 10 mEq/hr\nMax peripheral conc: 40 mEq/L",
"Amp\n15%: 20 mEq\n/10 ml",
"NEVER undiluted IV – fatal arrhythmias. ECG monitoring mandatory"],
[85, "Sodium\nBicarbonate",
"Severe metabolic acidosis (pH <7.1): 1–2 mEq/kg IV slowly\nHyperkalaemia membrane stabilization: 50 mEq IV\nTCA OD: 1–2 mEq/kg IV bolus",
"Amp\n7.5%:\n~9 mEq/10 ml",
"Do NOT mix with Ca (precipitates). Use only if clearly indicated"],
[86, "3% Hypertonic\nSaline",
"Severe symptomatic hyponatraemia: 100–150 ml IV over 20 min;\nRepeat x2 if seizure persists\nRaise Na+ by max 5–10 mEq/L in first 1–2 hr",
"IV Bottle\n3% NaCl\n100/250 ml",
"Max correction 10 mEq/L/day (avoid osmotic demyelination). Neuro unit use", "NEW"],
[87, "Mannitol\n(20%)",
"Raised ICP/cerebral oedema: 0.25–2 g/kg IV over 30–60 min\nRepeat q4–6h PRN",
"IV Bottle\n20%: 100/250\n500 ml",
"Use in-line filter. Monitor serum osmolality (target <320 mosm/kg). Monitor renal fn"],
]
# ─── 11. ANTIDOTES & POISONING ──────────────────────────────
antidotes = [
[88, "Naloxone",
"Opioid OD: 0.4–2 mg IV/IM q2–3 min (max 10 mg)\nInfusion: 2/3 of effective bolus dose/hr",
"Amp\n0.4 mg/ml\n1 ml",
"Short acting (30–90 min) – watch for re-narcotization"],
[89, "N-Acetylcysteine\n(NAC)",
"Paracetamol OD (Prescott):\n• 150 mg/kg in 200 ml D5W over 1 hr\n• 50 mg/kg over 4 hr\n• 100 mg/kg over 16 hr",
"Amp\n200 mg/ml\n10 ml",
"Anaphylactoid reaction in 1st bag – slow/stop; restart at lower rate after premedication"],
[90, "Calcium Gluconate\n(Antidote)",
"Ca-channel blocker OD/fluoride: 1–3 g IV over 10–20 min; repeat PRN\nHypermagnesaemia: 1 g IV",
"Amp\n10% (10 ml)\n= 1 g",
"Cardiac monitor. Also antidote for hypermagnesaemia. See #82"],
[91, "Desferrioxamine",
"Iron OD: 15 mg/kg/hr IV infusion (max 80 mg/kg/day)\nIM: 2 g IM if no IV",
"Vial\n500 mg",
"Urine turns orange-red (ferrioxamine). Refrigerate unopened vial"],
[92, "Atropine\n(OP Poisoning)",
"Mild: 1–2 mg IV q5–10 min\nModerate-severe: 2–4 mg IV q5–10 min\nEndpoint: drying of secretions (NOT heart rate)",
"Amp\n0.6 mg/ml\n1 mg/ml",
"No ceiling dose in OP poisoning. Always combine with pralidoxime"],
[93, "Pralidoxime\n(PAM 2-Cl)",
"OP poisoning: 1–2 g IV over 15–30 min;\nRepeat 1 g q1–2h; Infusion: 500 mg/hr",
"Vial\n1 g",
"Effective within 24–48 hr of exposure only. Always with atropine"],
[94, "Flumazenil",
"Benzodiazepine reversal: 0.2 mg IV over 15 sec;\nRepeat 0.1 mg q60 sec (max 1 mg)",
"Amp\n0.1 mg/ml\n5 ml (0.5 mg)",
"Short acting (45–90 min) – re-sedation occurs. AVOID in BZD-dependent patients (seizures)", "NEW"],
[95, "Snake Antivenom\n(Polyvalent)",
"10 vials IV infusion in 100–200 ml NS over 30–60 min;\nRepeat 10 vials if signs persist at 6 hr",
"Vial\n(lyophilized\nor liquid)",
"Pre-medicate: Adrenaline 0.25 mg SC + Promethazine 25 mg IM. Keep adrenaline ready"],
[96, "Anti-Tetanus\nSerum (ATS)",
"Prophylaxis: 1500 IU IM (after sensitivity test)\nTreatment: 10000–20000 IU IM or slow IV",
"Vial\n1500 IU\n10000 IU",
"Sensitivity test mandatory. Adrenaline & antihistamine at bedside"],
[97, "Phytomenadione\n(Vit K)",
"Warfarin reversal: 5–10 mg IV over 20 min\nCoagulopathy (hepatic): 10 mg IV/IM OD",
"Amp\n10 mg/ml\n1 ml",
"Anaphylaxis risk – infuse slowly. IM if less urgent. Reversal takes 6–12 hr"],
[98, "Physostigmine",
"Anticholinergic toxidrome (TCA/atropine OD): 1–2 mg IV slowly over 5 min\nRepeat 1–2 mg after 20 min if needed",
"Amp\n1 mg/ml\n2 ml",
"Short-acting cholinesterase inhibitor. Contraindicated in TCA overdose (seizures). ICU only", "NEW"],
]
# ─── 12. RESPIRATORY EMERGENCIES ────────────────────────────
resp = [
[99, "Aminophylline",
"Acute asthma/COPD: Load 5 mg/kg IV over 20–30 min\nMaint infusion: 0.5–0.9 mg/kg/hr\n(Omit load if on theophylline)",
"Amp\n25 mg/ml\n10 ml\n(250 mg)",
"Narrow TI – cardiac arrhythmias, seizures at high levels. Monitor drug levels"],
[100,"Salbutamol\n(IV)",
"Life-threatening asthma: 5 mcg/min IV infusion; titrate (max 20 mcg/min)\n(Prefer nebulization in ward)",
"Amp\n0.5 mg/ml\n1 ml",
"IV reserved for ICU/life-threatening bronchospasm. Tachycardia & hypokalaemia"],
[101,"Dexamethasone\n(Resp)",
"Acute severe asthma: 8 mg IV/IM BD\nCroup: 0.6 mg/kg IM single dose",
"Amp\n4 mg/ml\n2 ml",
"Reduces airway inflammation. Effect in 4–6 hr. See #74 for full entry"],
[102,"Ipratropium\n(IV – rare)",
"Nebulization preferred; IV rarely: 0.25 mg in 50 ml NS over 20 min in ICU",
"Vial\n0.25 mg/ml",
"Anticholinergic bronchodilator. IV route only if nebulization impossible. Usually nebulized", "NEW"],
]
# ─── 13. OBSTETRICS & GYNAECOLOGY ───────────────────────────
obs = [
[103,"Oxytocin",
"PPH (active management): 10 IU IM after delivery of anterior shoulder\nTreatment of PPH: 5–10 IU slow IV or 20–40 IU in 500 ml NS at 125 ml/hr\nInduction: 2–8 mIU/min infusion (titrate)",
"Amp\n5 IU/ml\n1 ml",
"Rapid IV bolus causes hypotension & tachycardia. Always dilute for infusion", "NEW"],
[104,"Ergometrine\n(Ergometrine\nMaleate)",
"PPH: 0.5 mg IM or slow IV (over 1 min)\nRepeat 0.5 mg after 5 min if needed",
"Amp\n0.5 mg/ml\n1 ml",
"Avoid in HTN, pre-eclampsia, cardiovascular disease. IV use only in severe PPH", "NEW"],
[105,"MgSO4\n(Eclampsia)",
"See #83 Electrolytes section above",
"Amp\n50%: 5 g/10 ml",
"First-line for seizure prevention & treatment in eclampsia/pre-eclampsia"],
[106,"Labetalol\n(Obstetric HTN)",
"See #51 Cardiovascular section\nPre-eclampsia: 20 mg IV; repeat 20–80 mg q20 min (max 220 mg)",
"Amp\n5 mg/ml",
"Safe in pregnancy. Avoid in asthma. Target BP <160/110 mmHg"],
]
# ─── 14. HAEMATOLOGY / COAGULATION ──────────────────────────
haem = [
[107,"Tranexamic Acid\n(TXA)",
"Trauma: 1 g IV over 10 min within 3 hr; then 1 g over 8 hr\nGI bleed: 1 g IV TDS x5 days\nSurgery: 15 mg/kg IV pre-op",
"Amp\n100 mg/ml\n5 ml (500 mg)\n10 ml (1 g)",
"Give within 3 hr of trauma onset. Antifibrinolytic. Thrombosis risk. See #59"],
[108,"Protamine\nSulphate",
"Heparin reversal: 1 mg IV per 100 IU recent heparin\nMax 50 mg; slow IV over 10 min",
"Amp\n10 mg/ml\n5 ml (50 mg)",
"Anaphylaxis risk (fish allergy / NPH insulin users). Have adrenaline ready. See #58"],
[109,"Desmopressin\n(DDAVP)",
"vWD/Haemophilia A: 0.3 mcg/kg IV over 30 min\nCentral DI: 1–4 mcg IV/SC OD–BD",
"Amp\n4 mcg/ml\n1 ml",
"Hyponatraemia risk. Restrict fluids post-dose. Monitor serum Na+. See #72"],
[110,"Phytomenadione\n(Vit K)",
"See #97 Antidotes section",
"Amp\n10 mg/ml\n1 ml",
"Warfarin reversal & coagulopathy management"],
]
# ─── 15. GASTROENTEROLOGY / ANTIEMETICS ─────────────────────
gi = [
[111,"Ondansetron",
"Nausea/vomiting: 4–8 mg IV over 15 min q8h\nChemo-induced CINV: 8 mg IV BD\nMax single IV dose: 16 mg",
"Amp\n2 mg/ml\n2 ml (4 mg)",
"Prolongs QTc – give as slow IV infusion. 5-HT3 antagonist"],
[112,"Metoclopramide",
"Nausea/gastroparesis: 10 mg IV/IM q8h\nMax 3 doses/day; 5 mg in elderly",
"Amp\n5 mg/ml\n2 ml",
"EPS side effects (akathisia, dystonia). Avoid in epilepsy, bowel obstruction"],
[113,"Pantoprazole",
"Active GI bleed: 80 mg IV bolus; then 8 mg/hr x72 hr\nMaintenance: 40 mg IV OD",
"Vial\n40 mg\n(dry pwd)",
"Reconstitute in NS. High-dose infusion for high-risk peptic ulcer bleed"],
[114,"Ranitidine\n(IV)",
"PUD/stress ulcer prophylaxis: 50 mg IV q8h or 6.25 mg/hr infusion\n(Give slowly over 5–15 min)",
"Amp\n25 mg/ml\n2 ml (50 mg)",
"H2 blocker. Less commonly used now (pantoprazole preferred). Avoid rapid IV"],
[115,"Terlipressin",
"Variceal haemorrhage: 2 mg IV q4h initially;\nReduce to 1 mg IV q4h after haemostasis\nHRS type 1: 0.5–1 mg IV q6h",
"Amp\n1 mg/5 ml",
"Vasopressin analogue. Monitor for peripheral ischaemia, chest pain, arrhythmia. See #80"],
]
# ─── 16. VITAMINS & HAEMATINICS ─────────────────────────────
vit = [
[116,"Thiamine\n(Vitamin B1)",
"Wernicke's/Alcoholic: 200–500 mg IV TDS x3 days (Pabrinex)\nProphylaxis: 100 mg IV/IM OD",
"Amp\n100 mg/ml\n2 ml",
"ALWAYS give BEFORE glucose in alcoholics to prevent Wernicke's. Anaphylaxis risk IV"],
[117,"Hydroxocobalamin\n(Vit B12)",
"Deficiency: 1 mg IM OD x7 days; then 1 mg weekly x4; then monthly\nCyanide poisoning: 5 g IV over 15 min",
"Amp\n1 mg/ml\n1 ml\n(5 g vial for CN)",
"IM only for deficiency. High-dose IV for cyanide poisoning (turns urine/skin red)"],
[118,"Folic Acid\n(IV/IM)",
"Deficiency/megaloblastic: 5 mg IV/IM OD\n(Oral usually preferred)",
"Amp\n5 mg/ml\n1 ml",
"Rule out B12 deficiency before treating with folic acid alone (masks subacute combined degeneration)"],
[119,"Iron Sucrose\n(IV Iron)",
"IDA: 100–200 mg IV in 100 ml NS over 30 min per session\nMax 200 mg per dose",
"Amp\n20 mg/ml\n5 ml (100 mg)",
"Test dose not required. Anaphylaxis equipment at bedside. Avoid IM"],
[120,"Ferric\nCarboxymaltose",
"IDA: 500–1000 mg IV over 15 min (max 1000 mg/week)",
"Vial\n50 mg/ml\n(10–20 ml)",
"Higher single dose than iron sucrose. No test dose. Hypophosphataemia risk"],
]
# ─── 17. ANTIHISTAMINES & ALLERGY ───────────────────────────
antihist = [
[121,"Chlorpheniramine\nMaleate",
"Allergic reaction/anaphylaxis: 10–20 mg IV/IM (slow IV over 1 min)\nMax 40 mg/day",
"Amp\n10 mg/ml\n1 ml",
"Sedating antihistamine. Adjunct in anaphylaxis (not primary Rx)"],
[122,"Pheniramine\nMaleate",
"Allergic reaction: 22.75 mg (1 ml) IV/IM; repeat q4–6h",
"Amp\n22.75 mg/ml\n1 ml",
"Similar to chlorpheniramine. Sedation. Dilute before slow IV"],
]
# ─── 18. IMMUNOGLOBULINS & BIOLOGICALS ──────────────────────
immuno = [
[123,"Anti-Rabies\nImmunoglobulin\n(RIG)",
"Post-exposure: 20 IU/kg\nInfiltrate max around wound; remainder IM at distant site",
"Vial\n150 IU/ml",
"Give with rabies vaccine but NOT in same syringe/site. Human RIG preferred over equine"],
[124,"Tetanus\nImmunoglobulin\n(TIG – Human)",
"Treatment (tetanus): 500–3000 IU IM\nProphylaxis (unimmunized): 250–500 IU IM",
"Vial\n500 IU",
"Human TIG preferred over equine ATS. Different site from tetanus toxoid"],
[125,"Normal Human\nImmunoglobulin\n(IVIG)",
"ITP/AIDP (GBS): 0.4 g/kg/day IV over 4–8 hr x5 days\nKawasaki: 2 g/kg IV over 10–12 hr single dose",
"Vial\n5%/10%\n50/100 ml",
"Pre-medicate with paracetamol/antihistamine. Anaphylaxis risk (IgA deficiency)", "NEW"],
]
# ─── 19. MISCELLANEOUS / CRITICAL CARE ──────────────────────
misc = [
[126,"Mannitol (20%)",
"Raised ICP: 0.25–2 g/kg IV over 30–60 min; repeat q4–6h\nOliguric renal failure: 0.5 g/kg IV test dose",
"IV Bottle\n20%: 100/250\n500 ml",
"Use in-line filter. Monitor serum osmolality <320 mosm/kg. Monitor renal function"],
[127,"Albumin\n(Human 20/25%)",
"Hypoalbuminaemia/cirrhosis/SBP:\n1.5 g/kg on Day 1; 1 g/kg on Day 3 (SBP protocol)\nSpontaneous: 50–100 ml 20–25% over 2–4 hr",
"Vial\n20%/25%\n50/100 ml",
"Expensive – use per protocol. Monitor fluid balance & albumin levels"],
[128,"Hyaluronidase",
"Extravasation of IV vesicants (vincristine, TPN, KCl):\n150–1500 IU injected into or around extravasation site",
"Vial\n1500 IU",
"Facilitates absorption of extravasated fluid. Give within 1 hr of extravasation", "NEW"],
[129,"Methylergometrine\n(Methylergonovine)",
"PPH (uterotonic): 0.2 mg IM after delivery;\nRepeat q2–4h if needed (max 5 doses)\nIV ONLY in life-threatening PPH: 0.2 mg slow IV",
"Amp\n0.2 mg/ml\n1 ml",
"Avoid IV if BP unstable. Avoid in HTN, Raynaud's, cardiac disease. Store in fridge", "NEW"],
[130,"Adenosine\n(Diagnostic)",
"Pharmacological stress test (cardiac imaging): 140 mcg/kg/min IV infusion over 6 min",
"Amp\n3 mg/ml\n2 ml",
"See #47 for SVT dose. Diagnostic use needs monitoring. Bronchospasm in asthma"],
]
# ════════════════════════════════════════════════════════════════
# BUILD PDF
# ════════════════════════════════════════════════════════════════
story = []
# ── COVER ──
story.append(Spacer(1, 5*mm))
cover = Table([[Paragraph(
"COMPLETE HOSPITAL INJECTION\nQUICK REFERENCE GUIDE\n130 INJECTIONS | IV / IM", title_st)]],
colWidths=[W])
cover.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), DARK_RED),
("TOPPADDING", (0,0),(-1,-1), 9),
("BOTTOMPADDING", (0,0),(-1,-1), 9),
("BOX", (0,0),(-1,-1), 1.5, DARK_RED),
]))
story.append(cover)
story.append(Spacer(1, 2*mm))
sub = Table([[Paragraph(
"Medicine Department | Govt Hospital, Odisha\n"
"Dosages, Ampoule/Vial Forms, Routes & Key Safety Notes\n"
"[NEW] = Additional drugs added beyond original 98", sub_st)]],
colWidths=[W])
sub.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), PURPLE),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING", (0,0),(-1,-1), 5),
("BOX", (0,0),(-1,-1), 0.8, PURPLE),
]))
story.append(sub)
story.append(Spacer(1, 2*mm))
warn = Table([[Paragraph(
"⚠ FOR TRAINED HEALTHCARE PROFESSIONALS ONLY ⚠\n"
"Verify all dosages before administration. Adjust for weight, renal/hepatic function & age.\n"
"This guide does not replace clinical judgment or hospital protocols.", warn_st)]],
colWidths=[W])
warn.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), colors.HexColor("#F9E79F")),
("BOX", (0,0),(-1,-1), 1, colors.HexColor("#E67E22")),
("TOPPADDING", (0,0),(-1,-1), 4),
("BOTTOMPADDING", (0,0),(-1,-1), 4),
("LEFTPADDING", (0,0),(-1,-1), 5),
]))
story.append(warn)
story.append(Spacer(1, 2*mm))
# ── TOC ──
sections_toc = [
("1–7", "Analgesics & Pain Management", 7),
("8–34", "Antibiotics (incl. Antifungal/Antiviral)", 27),
("35–38", "Antifungal & Antiparasitic", 4),
("39", "Antitubercular", 1),
("40–61", "Cardiovascular (22 drugs)", 22),
("62–72", "CNS / Neurological (11 drugs)", 11),
("73–75", "Corticosteroids", 3),
("76–80", "Diabetes / Endocrine", 5),
("81–87", "Electrolytes & Metabolic", 7),
("88–98", "Antidotes & Poisoning (11 drugs)", 11),
("99–102", "Respiratory Emergencies", 4),
("103–106","Obstetrics & Gynaecology", 4),
("107–110","Haematology / Coagulation", 4),
("111–115","Gastroenterology / Antiemetics", 5),
("116–120","Vitamins & Haematinics", 5),
("121–122","Antihistamines", 2),
("123–125","Immunoglobulins / Biologicals", 3),
("126–130","Miscellaneous / Critical Care", 5),
]
toc_hdr = Table([[
Paragraph("DRUG #", PS("t1", fontSize=6, fontName="Helvetica-Bold", textColor=WHITE, leading=8)),
Paragraph("SECTION", PS("t2", fontSize=6, fontName="Helvetica-Bold", textColor=WHITE, leading=8)),
Paragraph("N", PS("t3", fontSize=6, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=8)),
]], colWidths=[18*mm, 95*mm, 19*mm])
toc_hdr.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),NAVY),
("TOPPADDING",(0,0),(-1,-1),2),("BOTTOMPADDING",(0,0),(-1,-1),2),
("LEFTPADDING",(0,0),(-1,-1),3)]))
story.append(toc_hdr)
for i, (nos, name, cnt) in enumerate(sections_toc):
bg = LIGHT_BLU if i % 2 == 0 else WHITE
rt = Table([[
Paragraph(nos, PS(f"ta{i}", fontSize=5.8, fontName="Helvetica-Bold", textColor=NAVY, leading=7.5)),
Paragraph(name, PS(f"tb{i}", fontSize=5.8, fontName="Helvetica", leading=7.5)),
Paragraph(str(cnt), PS(f"tc{i}", fontSize=5.8, fontName="Helvetica-Bold",
textColor=DARK_RED, alignment=TA_CENTER, leading=7.5)),
]], colWidths=[18*mm, 95*mm, 19*mm])
rt.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),bg),
("GRID",(0,0),(-1,-1),0.3,MED_GRY),
("TOPPADDING",(0,0),(-1,-1),1.5),("BOTTOMPADDING",(0,0),(-1,-1),1.5),
("LEFTPADDING",(0,0),(-1,-1),3)]))
story.append(rt)
story.append(Spacer(1, 2*mm))
story.append(Paragraph(
"Based on District Hospital EML (India, Jan 2024) & OSMCL Odisha | Compiled July 2026\n"
"[NEW] = 32 additional drugs added for complete hospital coverage",
foot_st))
# ── DRUG PAGES ──
story.append(PageBreak())
add_sec("1–7 ANALGESICS & PAIN MANAGEMENT", analg, BROWN, BROWN_LT)
add_sec("8–20 ANTIBIOTICS (Part 1 – Beta-lactams & Aminoglycosides)", abx[:13], colors.HexColor("#4A235A"), PURP_LITE)
story.append(PageBreak())
add_sec("21–34 ANTIBIOTICS (Part 2 – Fluoroquinolones, Macrolides, Carbapenems, Others)", abx[13:], colors.HexColor("#4A235A"), PURP_LITE)
add_sec("35–36 ANTIFUNGALS", antifung, TEAL, TEAL_LITE)
add_sec("37–38 ANTIVIRAL / ANTIPARASITIC", antip, TEAL, TEAL_LITE)
add_sec("39 ANTITUBERCULAR", antitb, TEAL, TEAL_LITE)
story.append(PageBreak())
add_sec("40–50 CARDIOVASCULAR (Part 1 – Vasoactives, Antiarrhythmics)", cardio[:11], GREEN, LIGHT_BLU)
story.append(PageBreak())
add_sec("51–61 CARDIOVASCULAR (Part 2 – Antihypertensives, Thrombolytics, Anticoagulants)", cardio[11:], GREEN, LIGHT_BLU)
story.append(PageBreak())
add_sec("62–72 CNS / NEUROLOGICAL", cns, PURPLE, PURP_LITE)
add_sec("73–75 CORTICOSTEROIDS", ster, OLIVE, OLIVE_LT)
story.append(PageBreak())
add_sec("76–80 DIABETES / ENDOCRINE", dm, MAROON, MAROON_LT)
add_sec("81–87 ELECTROLYTES & METABOLIC", elec, INDIGO, LIGHT_BLU)
story.append(PageBreak())
add_sec("88–98 ANTIDOTES & POISONING", antidotes[:6], GOLD, GOLD_LT)
story.append(PageBreak())
add_sec("88–98 ANTIDOTES & POISONING (contd.)", antidotes[6:], GOLD, GOLD_LT)
add_sec("99–102 RESPIRATORY EMERGENCIES", resp, TEAL, TEAL_LITE)
story.append(PageBreak())
add_sec("103–106 OBSTETRICS & GYNAECOLOGY", obs, colors.HexColor("#7D3C98"), PURP_LITE)
add_sec("107–110 HAEMATOLOGY / COAGULATION", haem, colors.HexColor("#1A5276"), LIGHT_BLU)
add_sec("111–115 GASTROENTEROLOGY / ANTIEMETICS", gi, colors.HexColor("#117864"), TEAL_LITE)
story.append(PageBreak())
add_sec("116–120 VITAMINS & HAEMATINICS", vit, colors.HexColor("#1A5276"), LIGHT_BLU)
add_sec("121–122 ANTIHISTAMINES", antihist, colors.HexColor("#6C3483"), PURP_LITE)
add_sec("123–125 IMMUNOGLOBULINS / BIOLOGICALS", immuno, SLATE, SLATE_LT)
add_sec("126–130 MISCELLANEOUS / CRITICAL CARE", misc, NAVY, LIGHT_BLU)
# ── BACK PAGE – Safety Reminders ──
story.append(PageBreak())
story.append(sec_header("CRITICAL SAFETY REMINDERS – Must Know Before Use", bg=DARK_RED))
story.append(Spacer(1, 1.5*mm))
reminders = [
("NEVER give KCl undiluted IV – fatal arrhythmias", "Vancomycin: infuse >60 min (Red Man Syndrome if fast)"),
("NaHCO3 + Ca = precipitate – NEVER mix in same line", "Sodium Nitroprusside: wrap infusion in foil (light breaks it down)"),
("MgSO4 toxicity antidote = Calcium Gluconate 1 g IV", "Phenytoin: NS only – DO NOT dilute in dextrose"),
("Opioids: keep Naloxone at bedside always", "Promethazine: NEVER SC – causes tissue necrosis"),
("Atropine in OP poisoning: titrate to secretions (no ceiling dose)", "Artesunate: reconstitute in NaHCO3 first, then dilute in D5W"),
("Snake antivenom: pre-medicate with adrenaline SC + promethazine IM", "Noradrenaline/KCl infusions: central line preferred"),
("Insulin: dedicated IV line; hourly glucose monitoring", "Aminophylline: narrow TI – ECG monitor; omit load if on oral theophylline"),
("Thiamine BEFORE glucose in ALL alcoholics (prevents Wernicke's)", "Amphotericin B: test dose 1 mg first; protect from light throughout"),
("Benzathine penicillin: NEVER IV – IM only (cardiac arrest risk)", "Verapamil IV: NEVER with IV beta-blocker – fatal bradycardia"),
("Tranexamic acid: most effective within 3 hr of trauma", "Flumazenil: AVOID in benzo-dependent patients (precipitates seizures)"),
("NAC 1st bag: slow/stop if anaphylactoid reaction; restart after premedication", "High-dose NaHCO3 for TCA OD: target pH 7.50–7.55 to narrow QRS"),
("Oxytocin: NEVER rapid IV bolus – dilute always (causes severe hypotension)", "KCl max peripheral rate: 10 mEq/hr; max conc: 40 mEq/L"),
("3% Hypertonic saline: max correct Na+ by 10 mEq/L/day (osmotic demyelination risk)", "Colistin: last resort only – monitor renal function daily"),
("Fentanyl: 100x more potent than morphine; titrate cautiously", "Linezolid + SSRIs/MAOIs = serotonin syndrome"),
]
for i, (a, b) in enumerate(reminders):
bg = colors.HexColor("#F9E79F") if i % 2 == 0 else WHITE
rt = Table([[
Paragraph("⚠ " + a, PS(f"ra{i}", fontSize=5.8, fontName="Helvetica-Bold",
textColor=DARK_RED, leading=7.5)),
Paragraph("→ " + b, PS(f"rb{i}", fontSize=5.8, fontName="Helvetica-Bold",
textColor=colors.HexColor("#1A5276"), leading=7.5)),
]], colWidths=[W/2, W/2])
rt.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),bg),
("GRID",(0,0),(-1,-1),0.3,MED_GRY),
("TOPPADDING",(0,0),(-1,-1),2),("BOTTOMPADDING",(0,0),(-1,-1),2),
("LEFTPADDING",(0,0),(-1,-1),3),("VALIGN",(0,0),(-1,-1),"TOP")]))
story.append(rt)
story.append(Spacer(1, 2*mm))
# Abbreviations (4-column)
_es = PS("_es", fontSize=6, fontName="Helvetica", leading=8)
abh = Table([[
Paragraph("ABBREVIATIONS", PS("abh", fontSize=7, fontName="Helvetica-Bold",
textColor=WHITE, alignment=TA_CENTER, leading=9)),
Paragraph(" ", _es), Paragraph(" ", _es), Paragraph(" ", _es)
]], colWidths=[W/4]*4)
abh.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),NAVY),("SPAN",(0,0),(-1,-1)),
("TOPPADDING",(0,0),(-1,-1),2),("BOTTOMPADDING",(0,0),(-1,-1),2)]))
story.append(abh)
abbrs = [
("IV = Intravenous","IM = Intramuscular","SC = Subcutaneous","OD = Once daily"),
("BD = Twice daily","TDS = Three times daily","QDS = Four times daily","q = every (e.g. q8h)"),
("NS = Normal Saline","D5W = 5% Dextrose","WFI = Water for Injection","RT = Room Temperature"),
("TI = Therapeutic Index","EPS = Extrapyramidal S/E","UO = Urine output","RR = Respiratory Rate"),
("OD = Overdose (context)","HTN = Hypertension","Rx = Treatment","APTT = Activated PTT"),
("XDR = Extremely Drug Resistant","MDR = Multi-Drug Resistant","IDA = Iron Def Anaemia","PPH = Postpartum Haemorrhage"),
("GBS = Guillain-Barre Syndrome","ITP = Immune Thrombocytopaenia","SBP = Spontaneous Bacterial Peritonitis","HRS = Hepatorenal Syndrome"),
]
for i, row in enumerate(abbrs):
bg = LIGHT_GRY if i % 2 == 0 else WHITE
rt = Table([[Paragraph(c, PS(f"ab{i}{j}", fontSize=5.5, fontName="Helvetica", leading=7))
for j, c in enumerate(row)]], colWidths=[W/4]*4)
rt.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),bg),
("GRID",(0,0),(-1,-1),0.3,MED_GRY),
("TOPPADDING",(0,0),(-1,-1),1.5),("BOTTOMPADDING",(0,0),(-1,-1),1.5),
("LEFTPADDING",(0,0),(-1,-1),3)]))
story.append(rt)
story.append(Spacer(1, 2*mm))
story.append(Paragraph(
"For educational & reference purposes only. Not a substitute for standard treatment protocols or clinical judgment.\n"
"Refer to current AIIMS/ICMR/WHO guidelines and local hospital formulary for updates.\n"
"Based on District Hospital EML (India, Revised Jan 2024) & OSMCL Odisha Essential Drug List 2020.",
foot_st))
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /tmp/workspace/pocket-guide && python generate_complete130.py 2>&1
ls -lh /tmp/workspace/pocket-guide/Complete_Hospital_Injection_Guide.pdf
Complete Hospital Injection Guide
PDF Document · PDF
| Gap Covered | New Drugs Added |
|---|---|
| Strong Opioid / Anaesthetic | Fentanyl IV, Ketamine IV |
| Antiepileptics (IV) | Sodium Valproate IV, Levetiracetam IV |
| Antibiotics (gaps) | Levofloxacin IV, Azithromycin IV, Linezolid IV, Teicoplanin, Ertapenem, Colistin, Acyclovir IV |
| Cardiovascular | Verapamil IV (SVT), Nicardipine IV (HTN emergency), Protamine Sulphate (heparin reversal), Tranexamic Acid, Phentolamine |
| Obstetrics | Oxytocin, Ergometrine, Methylergometrine |
| Neurology/Haematology | Desmopressin (DDAVP), Hypertonic Saline 3%, IVIG |
| Antidotes | Flumazenil (benzo reversal), Physostigmine (anticholinergic OD), Hydroxocobalamin 5g (cyanide) |
| GI/Hepatology | Terlipressin (variceal bleed + HRS) |
| Miscellaneous | Hyaluronidase (extravasation), Ipratropium IV, Adenosine (diagnostic) |