Enlist the purpose of parenteral administration of medication note daou ব্যাখ্যা করে
"Parenteral administration is used for drugs that are poorly absorbed from the GI tract (e.g., heparin) or unstable in the GI tract (e.g., insulin)." - Lippincott Pharmacology
"Availability is usually more rapid, extensive, and predictable when a drug is given by injection." - Goodman & Gilman's
"Parenteral administration is preferred for patients experiencing moderate to severe pain, patients who require rapid control of pain, and those who cannot receive agents through the gastrointestinal tract." - Sabiston Textbook of Surgery
| বিষয় | সুবিধা | অসুবিধা |
|---|---|---|
| শুরুর সময় | দ্রুত কার্যকর | ব্যথা ও ভয়ের কারণ হতে পারে |
| Bioavailability | IV-তে ১০০% | একবার দিলে ফিরিয়ে নেওয়া কঠিন (irreversible) |
| নিয়ন্ত্রণ | সর্বোচ্চ নিয়ন্ত্রণ সম্ভব | Asepsis বজায় রাখা জরুরি |
| ব্যবহারকারী | অজ্ঞান রোগীতেও ব্যবহারযোগ্য | নিজে দেওয়া কঠিন |
| বিশেষ ক্ষমতা | Tissue damage/infection-এর ঝুঁকি আছে | Infection-এর ঝুঁকি আছে |
D - Drug cannot be absorbed orally (GI-তে শোষণ হয় না)
A - Action rapid needed (জরুরি দ্রুত কার্যকর করতে)
O - Oral route unavailable (রোগী খেতে পারছেন না)
U - Uncontrolled dose needs precision (নির্ভুল ডোজ নিয়ন্ত্রণ)
Enlist the purpose of parenteral administration of medication give it notes for 6marks
| Route | Onset | Bioavailability | Key Use |
|---|---|---|---|
| IV | Immediate | 100% | Emergency, critical drugs |
| IM | 10-30 min | 75-100% | Depot, moderate urgency |
| SC | 15-30 min | 75-100% | Insulin, vaccines |
| ID | Slow | Low | Allergy testing, BCG |
"Parenteral administration provides the most control over the dose of drug delivered to the body. However, this route is irreversible and may cause pain, fear, local tissue damage, and infections."
- Lippincott Illustrated Reviews: Pharmacology
Generate a PDF summary of parenteral administration for exam revision
ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace
mkdir -p /home/daytona/workspace/parenteral-notes && python3 -c "from reportlab.lib import colors; print('reportlab OK')"
~/parenteral-notes/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak
OUTPUT = "/home/daytona/workspace/parenteral-notes/Parenteral_Administration_ExamNotes.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2*cm, bottomMargin=2*cm
)
# ── Colour palette ──────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1a3a5c")
MED_BLUE = colors.HexColor("#2563a8")
LIGHT_BLUE = colors.HexColor("#dbeafe")
ACCENT = colors.HexColor("#e63946")
GREEN = colors.HexColor("#16a34a")
LIGHT_GREEN = colors.HexColor("#dcfce7")
YELLOW_BG = colors.HexColor("#fefce8")
ORANGE = colors.HexColor("#ea580c")
GREY_BG = colors.HexColor("#f1f5f9")
WHITE = colors.white
BLACK = colors.black
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
"TitleStyle", parent=styles["Title"],
fontSize=22, textColor=WHITE, alignment=TA_CENTER,
spaceAfter=4, fontName="Helvetica-Bold"
)
subtitle_style = ParagraphStyle(
"SubtitleStyle", parent=styles["Normal"],
fontSize=11, textColor=colors.HexColor("#bfdbfe"),
alignment=TA_CENTER, spaceAfter=2, fontName="Helvetica"
)
section_heading = ParagraphStyle(
"SectionHeading", parent=styles["Heading1"],
fontSize=13, textColor=WHITE, fontName="Helvetica-Bold",
spaceBefore=10, spaceAfter=4, leftIndent=0
)
sub_heading = ParagraphStyle(
"SubHeading", parent=styles["Heading2"],
fontSize=11, textColor=DARK_BLUE, fontName="Helvetica-Bold",
spaceBefore=8, spaceAfter=3
)
body = ParagraphStyle(
"Body", parent=styles["Normal"],
fontSize=9.5, textColor=colors.HexColor("#1e293b"),
leading=14, spaceAfter=3, fontName="Helvetica"
)
bullet_style = ParagraphStyle(
"Bullet", parent=styles["Normal"],
fontSize=9.5, textColor=colors.HexColor("#1e293b"),
leading=13, leftIndent=14, bulletIndent=4,
spaceAfter=2, fontName="Helvetica"
)
example_style = ParagraphStyle(
"Example", parent=styles["Normal"],
fontSize=9, textColor=GREEN,
leading=12, leftIndent=14, spaceAfter=2,
fontName="Helvetica-Oblique"
)
quote_style = ParagraphStyle(
"Quote", parent=styles["Normal"],
fontSize=9, textColor=colors.HexColor("#475569"),
leading=13, leftIndent=20, rightIndent=20,
spaceAfter=4, fontName="Helvetica-Oblique",
borderPadding=(6,6,6,6)
)
footer_style = ParagraphStyle(
"Footer", parent=styles["Normal"],
fontSize=8, textColor=colors.HexColor("#94a3b8"),
alignment=TA_CENTER
)
memory_style = ParagraphStyle(
"Memory", parent=styles["Normal"],
fontSize=10, textColor=DARK_BLUE, fontName="Helvetica-Bold",
leading=15, alignment=TA_CENTER
)
# ── Helper: coloured section header ─────────────────────────────────
def section_block(text, bg=DARK_BLUE):
data = [[Paragraph(text, section_heading)]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("ROUNDEDCORNERS", [6]),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
]))
return t
def info_box(paragraphs, bg=LIGHT_BLUE, border=MED_BLUE):
data = [[p] for p in paragraphs]
t = Table([[Paragraph("<br/>".join(
p.text if hasattr(p,"text") else "" for p in paragraphs
), body)]], colWidths=[17*cm])
# Use a single-cell table with all content
inner = [[item] for item in paragraphs]
t2 = Table(inner, colWidths=[16.6*cm])
t2.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 1, border),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
]))
return t2
# ── Build content ────────────────────────────────────────────────────
story = []
# ── COVER HEADER ────────────────────────────────────────────────────
header_data = [[
Paragraph("PARENTERAL ADMINISTRATION", title_style),
Paragraph("of Medications", subtitle_style),
Paragraph("Exam Revision Notes • 6-Mark Answer Guide", subtitle_style),
]]
header_table = Table([[
Paragraph("PARENTERAL ADMINISTRATION", title_style),
], [
Paragraph("of Medications", subtitle_style),
], [
Paragraph("Exam Revision Notes • 6-Mark Answer Guide", subtitle_style),
]], colWidths=[17*cm])
header_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("ROUNDEDCORNERS", [8]),
("LEFTPADDING", (0,0), (-1,-1), 16),
("RIGHTPADDING", (0,0), (-1,-1), 16),
("TOPPADDING", (0,0), (-1,-1), 14),
("BOTTOMPADDING",(0,0), (-1,-1), 14),
]))
story.append(header_table)
story.append(Spacer(1, 10))
# ── DEFINITION BOX ──────────────────────────────────────────────────
def_items = [
Paragraph("<b>📖 DEFINITION</b>", sub_heading),
Paragraph(
"Parenteral administration refers to the delivery of drugs by <b>injection</b>, "
"bypassing the gastrointestinal tract. The term comes from Greek: "
"<i>para</i> (beside) + <i>enteron</i> (intestine).",
body
),
Paragraph(
"<b>Routes:</b> Intravenous (IV) | Intramuscular (IM) | "
"Subcutaneous (SC) | Intradermal (ID) | Intrathecal | Intra-arterial",
body
),
]
story.append(info_box(def_items, bg=LIGHT_BLUE, border=MED_BLUE))
story.append(Spacer(1, 8))
# ── PURPOSES SECTION ────────────────────────────────────────────────
story.append(section_block("★ PURPOSES OF PARENTERAL ADMINISTRATION (6 Key Points)"))
story.append(Spacer(1, 6))
purposes = [
{
"num": "1",
"title": "When Oral Route is Not Possible / Unavailable",
"color": MED_BLUE,
"bg": LIGHT_BLUE,
"points": [
"Unconscious or uncooperative patients cannot swallow medications",
"Patients with severe nausea, vomiting, or dysphagia",
"Patients with GI obstruction or post-operative nil-by-mouth status",
],
"example": "e.g. ICU patient receiving IV sedation; post-op patient receiving IV antibiotics",
},
{
"num": "2",
"title": "Drugs Destroyed or Poorly Absorbed via GI Tract",
"color": colors.HexColor("#7c3aed"),
"bg": colors.HexColor("#ede9fe"),
"points": [
"Some drugs are broken down by gastric acid (low pH) or digestive enzymes",
"Some drugs have extremely poor GI mucosal absorption",
"Parenteral route ensures the drug reaches systemic circulation intact",
],
"example": "e.g. Insulin (destroyed by proteases), Heparin (not absorbed orally), Monoclonal antibodies, Vaccines",
},
{
"num": "3",
"title": "Rapid Onset of Action — Emergency Situations",
"color": ACCENT,
"bg": colors.HexColor("#fee2e2"),
"points": [
"IV route: bioavailability = 100% (F = 1.0) — fastest possible onset",
"Drug reaches systemic circulation immediately without absorption delay",
"Essential in life-threatening emergencies requiring instant effect",
],
"example": "e.g. Adrenaline (IM) in anaphylaxis; Diazepam (IV) in status epilepticus; Atropine (IV) in bradycardia",
},
{
"num": "4",
"title": "Avoidance of First-Pass Metabolism",
"color": ORANGE,
"bg": colors.HexColor("#ffedd5"),
"points": [
"Oral drugs pass: GI tract → portal vein → liver → systemic circulation",
"Liver metabolizes a large fraction before drug reaches its target (first-pass effect)",
"Parenteral route bypasses the liver entirely — higher, predictable plasma levels",
],
"example": "e.g. Lignocaine (lidocaine) — almost completely destroyed by first-pass if given orally",
},
{
"num": "5",
"title": "Accurate and Precise Dose Control",
"color": GREEN,
"bg": LIGHT_GREEN,
"points": [
"Exact dose reaches systemic circulation — no absorption variability",
"IV dose can be titrated (adjusted) in real time based on patient response",
"Loading dose can be given rapidly before starting oral maintenance therapy",
],
"example": "e.g. IV Heparin infusion titrated by APTT; IV Digoxin loading dose",
},
{
"num": "6",
"title": "Prolonged / Sustained Drug Action (Depot Preparations)",
"color": colors.HexColor("#0891b2"),
"bg": colors.HexColor("#e0f2fe"),
"points": [
"Depot/repository IM or SC formulations release drug slowly over days to weeks",
"Reduces dosing frequency and improves patient compliance",
"Drug released at constant rate from the injection depot",
],
"example": "e.g. Haloperidol decanoate (monthly IM depot); Insulin glargine (SC long-acting); Contraceptive implants",
},
]
for p in purposes:
rows = []
# Number + title header
title_para = Paragraph(
f"<b>{p['num']}. {p['title']}</b>",
ParagraphStyle("PT", parent=body, fontSize=10.5, textColor=WHITE, fontName="Helvetica-Bold")
)
title_row = Table([[title_para]], colWidths=[16.6*cm])
title_row.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), p["color"]),
("LEFTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
]))
# Bullet points
bullets = [Paragraph(f"• {pt}", bullet_style) for pt in p["points"]]
bullets.append(Paragraph(p["example"], example_style))
content_table = Table([[item] for item in bullets], colWidths=[16.6*cm])
content_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), p["bg"]),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING",(0,0), (-1,-1), 3),
("BOX", (0,0), (-1,-1), 0.5, p["color"]),
]))
card = KeepTogether([title_row, content_table, Spacer(1, 6)])
story.append(card)
story.append(Spacer(1, 4))
# ── ROUTES COMPARISON TABLE ──────────────────────────────────────────
story.append(section_block("📊 ROUTES OF PARENTERAL ADMINISTRATION — COMPARISON", bg=MED_BLUE))
story.append(Spacer(1, 6))
table_data = [
[
Paragraph("<b>Route</b>", ParagraphStyle("TH", parent=body, textColor=WHITE, fontName="Helvetica-Bold")),
Paragraph("<b>Onset</b>", ParagraphStyle("TH", parent=body, textColor=WHITE, fontName="Helvetica-Bold")),
Paragraph("<b>Bioavailability</b>", ParagraphStyle("TH", parent=body, textColor=WHITE, fontName="Helvetica-Bold")),
Paragraph("<b>Key Advantage</b>", ParagraphStyle("TH", parent=body, textColor=WHITE, fontName="Helvetica-Bold")),
Paragraph("<b>Key Limitation</b>", ParagraphStyle("TH", parent=body, textColor=WHITE, fontName="Helvetica-Bold")),
],
[
Paragraph("<b>IV</b>", body), Paragraph("Immediate\n(seconds)", body),
Paragraph("100% (F = 1.0)", body), Paragraph("Fastest; dose titration", body),
Paragraph("Irreversible; infection risk", body)
],
[
Paragraph("<b>IM</b>", body), Paragraph("10–30 min", body),
Paragraph("75–100%", body), Paragraph("Depot preparations possible", body),
Paragraph("Pain; avoid in anticoagulants", body)
],
[
Paragraph("<b>SC</b>", body), Paragraph("15–30 min", body),
Paragraph("75–100%", body), Paragraph("Sustained release; self-admin", body),
Paragraph("Not for large volumes", body)
],
[
Paragraph("<b>ID</b>", body), Paragraph("Slow", body),
Paragraph("Low", body), Paragraph("Skin testing; local effect", body),
Paragraph("Very small volumes only", body)
],
]
route_table = Table(table_data, colWidths=[2.2*cm, 2.4*cm, 3.2*cm, 4.6*cm, 4.2*cm])
route_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
("BACKGROUND", (0,2), (-1,2), GREY_BG),
("BACKGROUND", (0,3), (-1,3), LIGHT_BLUE),
("BACKGROUND", (0,4), (-1,4), GREY_BG),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#cbd5e1")),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(route_table)
story.append(Spacer(1, 8))
# ── ADVANTAGES vs DISADVANTAGES ─────────────────────────────────────
story.append(section_block("⚖️ ADVANTAGES vs DISADVANTAGES", bg=colors.HexColor("#0f4c81")))
story.append(Spacer(1, 6))
adv_dis_data = [
[
Paragraph("<b>✅ ADVANTAGES</b>", ParagraphStyle("AH", parent=body, textColor=WHITE, fontName="Helvetica-Bold", fontSize=10)),
Paragraph("<b>❌ DISADVANTAGES</b>", ParagraphStyle("DH", parent=body, textColor=WHITE, fontName="Helvetica-Bold", fontSize=10)),
],
[
Paragraph("• Rapid, predictable onset of action\n• 100% bioavailability (IV)\n• Bypasses first-pass metabolism\n• Accurate dose control & titration\n• Useful in unconscious patients\n• Sustained release (depot) possible", body),
Paragraph("• Irreversible — cannot withdraw once given\n• Requires aseptic technique\n• Risk of infection / phlebitis\n• Pain and patient anxiety\n• Needs trained personnel\n• More expensive than oral route", body),
]
]
adv_dis_table = Table(adv_dis_data, colWidths=[8.5*cm, 8.5*cm])
adv_dis_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), GREEN),
("BACKGROUND", (1,0), (1,0), ACCENT),
("BACKGROUND", (0,1), (0,1), LIGHT_GREEN),
("BACKGROUND", (1,1), (1,1), colors.HexColor("#fee2e2")),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#cbd5e1")),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(adv_dis_table)
story.append(Spacer(1, 8))
# ── MEMORY AID ──────────────────────────────────────────────────────
story.append(section_block("🧠 MEMORY AID — Mnemonic", bg=colors.HexColor("#7c3aed")))
story.append(Spacer(1, 6))
mnemonic_data = [
[
Paragraph("<b>P</b>", ParagraphStyle("ML", parent=body, fontSize=18, textColor=MED_BLUE, fontName="Helvetica-Bold", alignment=TA_CENTER)),
Paragraph("<b>A</b>", ParagraphStyle("ML", parent=body, fontSize=18, textColor=ACCENT, fontName="Helvetica-Bold", alignment=TA_CENTER)),
Paragraph("<b>R</b>", ParagraphStyle("ML", parent=body, fontSize=18, textColor=GREEN, fontName="Helvetica-Bold", alignment=TA_CENTER)),
Paragraph("<b>E</b>", ParagraphStyle("ML", parent=body, fontSize=18, textColor=ORANGE, fontName="Helvetica-Bold", alignment=TA_CENTER)),
Paragraph("<b>N</b>", ParagraphStyle("ML", parent=body, fontSize=18, textColor=colors.HexColor("#7c3aed"), fontName="Helvetica-Bold", alignment=TA_CENTER)),
Paragraph("<b>T</b>", ParagraphStyle("ML", parent=body, fontSize=18, textColor=colors.HexColor("#0891b2"), fontName="Helvetica-Bold", alignment=TA_CENTER)),
],
[
Paragraph("Patient\ncannot\nswallow", ParagraphStyle("MS", parent=body, fontSize=8, alignment=TA_CENTER)),
Paragraph("Absorbed\npoorly\norally", ParagraphStyle("MS", parent=body, fontSize=8, alignment=TA_CENTER)),
Paragraph("Rapid\nonset\nneeded", ParagraphStyle("MS", parent=body, fontSize=8, alignment=TA_CENTER)),
Paragraph("Evades\nfirst-pass\nmetabolism", ParagraphStyle("MS", parent=body, fontSize=8, alignment=TA_CENTER)),
Paragraph("Needs\nprecise\ndose", ParagraphStyle("MS", parent=body, fontSize=8, alignment=TA_CENTER)),
Paragraph("Time-release\ndepot\npossible", ParagraphStyle("MS", parent=body, fontSize=8, alignment=TA_CENTER)),
],
]
mnemonic_table = Table(mnemonic_data, colWidths=[2.83*cm]*6)
mnemonic_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), YELLOW_BG),
("BACKGROUND", (0,1), (-1,1), GREY_BG),
("BOX", (0,0), (-1,-1), 1, colors.HexColor("#7c3aed")),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#c4b5fd")),
("LEFTPADDING", (0,0), (-1,-1), 4),
("RIGHTPADDING", (0,0), (-1,-1), 4),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("ALIGN", (0,0), (-1,-1), "CENTER"),
]))
story.append(mnemonic_table)
story.append(Spacer(1, 8))
# ── TEXTBOOK QUOTE ──────────────────────────────────────────────────
quote_box_data = [[
Paragraph(
'<i>"Parenteral administration provides the most control over the dose of drug '
'delivered to the body. However, this route of administration is irreversible and '
'may cause pain, fear, local tissue damage, and infections."</i><br/>'
'<b>— Lippincott Illustrated Reviews: Pharmacology</b>',
quote_style
)
]]
quote_table = Table(quote_box_data, colWidths=[17*cm])
quote_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), YELLOW_BG),
("BOX", (0,0), (-1,-1), 1.5, ORANGE),
("LEFTPADDING", (0,0), (-1,-1), 14),
("RIGHTPADDING", (0,0), (-1,-1), 14),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING",(0,0), (-1,-1), 8),
]))
story.append(quote_table)
story.append(Spacer(1, 8))
# ── FOOTER ──────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#cbd5e1")))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Sources: Lippincott Illustrated Reviews: Pharmacology | Goodman & Gilman's Pharmacological Basis of Therapeutics | "
"Sabiston Textbook of Surgery • Generated by Orris AI • June 2026",
footer_style
))
# ── BUILD ─────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
python3 /home/daytona/workspace/parenteral-notes/generate_pdf.py
ls -lh /home/daytona/workspace/parenteral-notes/Parenteral_Administration_ExamNotes.pdf
Parenteral Administration ExamNotes
PDF Document · PDF
| Section | Content |
|---|---|
| Definition box | What parenteral means + all routes listed |
| 6 Key Purposes | Each purpose in its own coloured card with bullet points and clinical examples |
| Routes Comparison Table | IV, IM, SC, ID - onset, bioavailability, advantages, limitations |
| Advantages vs Disadvantages | Side-by-side comparison table |
| Memory Aid (PARENT mnemonic) | Patient/Absorbed/Rapid/Evades/Needs/Time-release |
| Textbook Quote | Direct citation from Lippincott Pharmacology |
| Sources | Lippincott, Goodman & Gilman's, Sabiston Surgery |