Pharmacy medicine how to identify tablet name short form
pharmacy tablet name short forms abbreviations identification guide
https://chartercollege.edu/news-hub/72-abbreviations-every-p…
| Short Form | Full Meaning |
|---|---|
| tab. | Tablet |
| cap. / caps. | Capsule |
| syr. | Syrup |
| soln. / sol. | Solution |
| supp. | Suppository |
| ung. | Ointment |
| top. | Topical |
| SL | Sublingual (under tongue) |
| INJ | Injection |
| MDI | Metered-dose inhaler |
| SR / XR / ER / CR / LA | Slow Release / Extended Release / Controlled Release / Long Acting |
Tablet name suffixes you'll see on the tablet itself:
- SR - Sustained Release (e.g., Metformin SR)
- XR / ER - Extended Release (e.g., Glucophage XR)
- CR - Controlled Release (e.g., Paxil CR)
- LA - Long Acting (e.g., Nitrospan LA)
- DS - Double Strength (e.g., Bactrim DS)
- OD - Once Daily formulation (e.g., Telma OD)
- XL - Extra Long (e.g., Glucotrol XL)
- CD - Controlled Delivery
- EC - Enteric Coated (e.g., Aspirin EC)
- FC - Film Coated
- DT - Dispersible Tablet
- ODT - Orally Disintegrating Tablet
- MR - Modified Release
| Short Form | Meaning |
|---|---|
| OD / q.d. | Once a day |
| BD / b.i.d. | Twice a day |
| TDS / t.i.d. | Three times a day |
| QDS / q.i.d. | Four times a day |
| PRN | As needed |
| q4h | Every 4 hours |
| q6h | Every 6 hours |
| q8h | Every 8 hours |
| q12h | Every 12 hours |
| HS / h.s. | At bedtime |
| a.c. | Before meals |
| p.c. | After meals |
| stat. | Immediately / at once |
| ATC | Around the clock |
| Short Form | Meaning |
|---|---|
| PO | By mouth (per os) |
| SL | Sublingual (under tongue) |
| SC / SubQ | Subcutaneous (under skin) |
| IM | Intramuscular |
| IV | Intravenous |
| PR | Per rectum |
| PV | Per vagina |
| TOP | Topical |
| INH | Inhaled |
| OD | Right eye (oculus dexter) |
| OS | Left eye (oculus sinister) |
| OU | Both eyes |
| AD | Right ear |
| AS | Left ear |
| AU | Both ears |
| Short Form | Meaning |
|---|---|
| i / ii / iii | 1 / 2 / 3 tablets (Roman numerals) |
| ss | Half (1/2) |
| g | Gram |
| mg | Milligram |
| mcg / µg | Microgram |
| mL | Millilitre |
| tsp | Teaspoon (5 mL) |
| tbsp | Tablespoon (15 mL) |
| gtt | Drop |
| Abbreviation | Drug Name |
|---|---|
| APAP | Acetaminophen (Paracetamol / Tylenol) |
| ASA | Acetylsalicylic Acid (Aspirin) |
| PCM | Paracetamol |
| MTX | Methotrexate |
| INH | Isoniazid |
| SMX / TMP | Sulfamethoxazole / Trimethoprim |
| ACV | Acyclovir |
| OCP | Oral Contraceptive Pill |
| HCQ | Hydroxychloroquine |
| MgSO4 | Magnesium Sulfate |
| NTG | Nitroglycerin |
| KCl | Potassium Chloride |
| NaCl | Sodium Chloride (saline) |
Metformin 500 mg tabs - Sig: i tab PO BID c meals
| Short Form | Meaning |
|---|---|
| Rx | Prescription |
| sig. | Write on label / instructions |
| DAW | Dispense as written |
| disp. | Dispense |
| d.c. | Discontinue |
| NR | No refill |
| UD / u.d. | As directed |
| c | With |
| s | Without |
| aa | Of each |
Create a quick reference PDF of tablet abbreviations to keep handy
mkdir -p /home/daytona/workspace/pharmacy-pdf && ls /home/daytona/workspace/pharmacy-pdf/
~/pharmacy-pdf/create_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import KeepTogether
OUTPUT = "/home/daytona/workspace/pharmacy-pdf/Pharmacy_Tablet_Abbreviations.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
C_NAVY = colors.HexColor("#1A3A5C")
C_TEAL = colors.HexColor("#0B7A75")
C_AMBER = colors.HexColor("#F4A300")
C_LTBLUE = colors.HexColor("#D6EAF8")
C_LTTEAL = colors.HexColor("#D0EFED")
C_LTAMBER = colors.HexColor("#FEF3CD")
C_WHITE = colors.white
C_GREY = colors.HexColor("#F2F4F5")
C_DKGREY = colors.HexColor("#555555")
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=15*mm, rightMargin=15*mm,
topMargin=15*mm, bottomMargin=15*mm,
title="Pharmacy Tablet Abbreviations – Quick Reference",
author="Orris Pharmacy Guide"
)
styles = getSampleStyleSheet()
# Custom styles
TITLE_STYLE = ParagraphStyle("title", fontSize=20, textColor=C_WHITE,
alignment=TA_CENTER, fontName="Helvetica-Bold",
spaceAfter=2)
SUBTITLE_STYLE = ParagraphStyle("subtitle", fontSize=10, textColor=C_LTBLUE,
alignment=TA_CENTER, fontName="Helvetica",
spaceAfter=0)
SECTION_STYLE = ParagraphStyle("section", fontSize=11, textColor=C_WHITE,
fontName="Helvetica-Bold", alignment=TA_LEFT,
spaceBefore=4, spaceAfter=2)
NOTE_STYLE = ParagraphStyle("note", fontSize=7.5, textColor=C_DKGREY,
fontName="Helvetica-Oblique", alignment=TA_CENTER,
spaceBefore=4)
FOOTER_STYLE = ParagraphStyle("footer", fontSize=7, textColor=C_DKGREY,
fontName="Helvetica", alignment=TA_CENTER)
W = A4[0] - 30*mm # usable width
def section_header(title, color=C_NAVY):
data = [[Paragraph(title, SECTION_STYLE)]]
tbl = Table(data, colWidths=[W])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("ROUNDEDCORNERS", [4]),
]))
return tbl
def abbrev_table(rows, col_widths, header_bg=C_TEAL, row_bg=C_LTTEAL, alt_bg=C_WHITE):
"""Build a two-column abbreviation table."""
header = [Paragraph(f"<b>{rows[0][0]}</b>", ParagraphStyle("th", fontSize=8.5,
textColor=C_WHITE, fontName="Helvetica-Bold")),
Paragraph(f"<b>{rows[0][1]}</b>", ParagraphStyle("th", fontSize=8.5,
textColor=C_WHITE, fontName="Helvetica-Bold"))]
body = []
for i, (abbr, meaning) in enumerate(rows[1:]):
bg = row_bg if i % 2 == 0 else alt_bg
body.append([
Paragraph(f"<b>{abbr}</b>", ParagraphStyle("ab", fontSize=8.5,
textColor=C_NAVY, fontName="Helvetica-Bold")),
Paragraph(meaning, ParagraphStyle("mn", fontSize=8.5,
textColor=C_DKGREY, fontName="Helvetica"))
])
all_rows = [header] + body
bg_cmds = [("BACKGROUND", (0, 0), (-1, 0), header_bg)]
for i, row in enumerate(body):
bg = row_bg if i % 2 == 0 else alt_bg
bg_cmds.append(("BACKGROUND", (0, i+1), (-1, i+1), bg))
tbl = Table(all_rows, colWidths=col_widths)
tbl.setStyle(TableStyle([
*bg_cmds,
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING",(0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("ROWBACKGROUNDS", (0,0), (-1,-1), []),
]))
return tbl
# ── Data ─────────────────────────────────────────────────────────────────────
DOSAGE_FORMS = [
("Abbreviation", "Meaning"),
("tab.", "Tablet"),
("cap. / caps.", "Capsule"),
("syr.", "Syrup"),
("soln. / sol.", "Solution"),
("supp.", "Suppository"),
("ung.", "Ointment / Cream"),
("top.", "Topical"),
("SL", "Sublingual (under tongue)"),
("INJ", "Injection"),
("MDI", "Metered-Dose Inhaler"),
("liq.", "Liquid"),
("susp.", "Suspension"),
("elix.", "Elixir"),
("pwd.", "Powder"),
]
TABLET_SUFFIXES = [
("Suffix", "Meaning"),
("SR", "Sustained Release"),
("XR / ER", "Extended Release"),
("CR", "Controlled Release"),
("LA", "Long Acting"),
("DS", "Double Strength"),
("OD", "Once Daily formulation"),
("XL", "Extra Long acting"),
("CD", "Controlled Delivery"),
("EC", "Enteric Coated"),
("FC", "Film Coated"),
("DT", "Dispersible Tablet"),
("ODT", "Orally Disintegrating Tablet"),
("MR", "Modified Release"),
("IR", "Immediate Release"),
]
FREQUENCY = [
("Abbreviation", "Meaning"),
("OD / q.d.", "Once daily"),
("BD / b.i.d.", "Twice a day"),
("TDS / t.i.d.", "Three times a day"),
("QDS / q.i.d.", "Four times a day"),
("PRN", "As needed"),
("q4h", "Every 4 hours"),
("q6h", "Every 6 hours"),
("q8h", "Every 8 hours"),
("q12h", "Every 12 hours"),
("HS / h.s.", "At bedtime"),
("a.c.", "Before meals"),
("p.c.", "After meals"),
("stat.", "Immediately / at once"),
("ATC", "Around the clock"),
("q.o.d.", "Every other day"),
("q.w.", "Every week"),
]
ROUTE = [
("Abbreviation", "Meaning"),
("PO", "By mouth (per os)"),
("SL", "Sublingual (under tongue)"),
("SC / SubQ", "Subcutaneous (under skin)"),
("IM", "Intramuscular"),
("IV", "Intravenous"),
("PR", "Per rectum"),
("PV", "Per vagina"),
("TOP", "Topical"),
("INH", "Inhaled"),
("OD", "Right eye"),
("OS", "Left eye"),
("OU", "Both eyes"),
("AD", "Right ear"),
("AS", "Left ear"),
("AU", "Both ears"),
("ID", "Intradermal"),
]
QUANTITY = [
("Abbreviation", "Meaning"),
("i / ii / iii", "1 / 2 / 3 tablets"),
("ss", "Half (½)"),
("g", "Gram"),
("mg", "Milligram"),
("mcg / µg", "Microgram"),
("mL", "Millilitre"),
("tsp", "Teaspoon (5 mL)"),
("tbsp", "Tablespoon (15 mL)"),
("gtt", "Drop(s)"),
("fl.", "Fluid"),
]
DRUG_NAMES = [
("Abbreviation", "Drug Name"),
("APAP", "Acetaminophen / Paracetamol"),
("ASA", "Acetylsalicylic Acid (Aspirin)"),
("PCM", "Paracetamol"),
("MTX", "Methotrexate"),
("INH", "Isoniazid"),
("SMX/TMP", "Sulfamethoxazole / Trimethoprim"),
("ACV", "Acyclovir"),
("OCP", "Oral Contraceptive Pill"),
("HCQ", "Hydroxychloroquine"),
("MgSO4", "Magnesium Sulfate"),
("NTG", "Nitroglycerin"),
("KCl", "Potassium Chloride"),
("NaCl", "Sodium Chloride (Saline)"),
("HCTZ", "Hydrochlorothiazide"),
("PPI", "Proton Pump Inhibitor"),
("NSAID", "Non-Steroidal Anti-Inflammatory Drug"),
("CCB", "Calcium Channel Blocker"),
("ACE-I", "ACE Inhibitor"),
("ARB", "Angiotensin Receptor Blocker"),
]
GENERAL = [
("Abbreviation", "Meaning"),
("Rx", "Prescription"),
("sig.", "Write on label / instructions"),
("DAW", "Dispense as written"),
("disp.", "Dispense"),
("d.c.", "Discontinue"),
("NR", "No refill"),
("UD / u.d.", "As directed"),
("c", "With"),
("s", "Without"),
("aa", "Of each"),
("ad lib.", "As much as desired"),
("amt.", "Amount"),
("et", "And"),
("BP", "Blood pressure"),
("SOB", "Shortness of breath"),
("TPN", "Total parenteral nutrition"),
("ASAP", "As soon as possible"),
]
# ── Build story ───────────────────────────────────────────────────────────────
story = []
# Title banner
title_data = [[
Paragraph("💊 Pharmacy Tablet Abbreviations", TITLE_STYLE),
]]
title_row2 = [[
Paragraph("Quick Reference Card • For Professional Use", SUBTITLE_STYLE),
]]
banner = Table(title_data + title_row2, colWidths=[W])
banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_NAVY),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
]))
story.append(banner)
story.append(Spacer(1, 5*mm))
# --- Two-column layout helper ---
def two_col(left_items, right_items, gap=4*mm):
cw = (W - gap) / 2
tbl = Table([[left_items, right_items]], colWidths=[cw, cw], hAlign="LEFT")
tbl.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
]))
return tbl
cw_half = (W - 4*mm) / 2
# Row 1: Dosage Forms | Tablet Suffixes
left1 = [
section_header("📋 Dosage Form Abbreviations", C_TEAL),
Spacer(1, 2),
abbrev_table(DOSAGE_FORMS, [cw_half*0.35, cw_half*0.65], C_TEAL, C_LTTEAL),
]
right1 = [
section_header("🏷️ Tablet Name Suffixes", C_NAVY),
Spacer(1, 2),
abbrev_table(TABLET_SUFFIXES, [cw_half*0.35, cw_half*0.65], C_NAVY, C_LTBLUE),
]
# Wrap each list into a Table (single column) so two_col works
def vcol(items):
rows = [[item] for item in items]
t = Table(rows, colWidths=[cw_half])
t.setStyle(TableStyle([
("LEFTPADDING", (0,0),(-1,-1), 0),
("RIGHTPADDING",(0,0),(-1,-1), 2),
("TOPPADDING", (0,0),(-1,-1), 0),
("BOTTOMPADDING",(0,0),(-1,-1), 2),
("VALIGN", (0,0),(-1,-1), "TOP"),
]))
return t
story.append(two_col(vcol(left1), vcol(right1)))
story.append(Spacer(1, 4*mm))
# Row 2: Frequency | Route
left2 = [
section_header("⏰ Frequency / Timing", colors.HexColor("#6B3FA0")),
Spacer(1, 2),
abbrev_table(FREQUENCY,
[cw_half*0.38, cw_half*0.62],
colors.HexColor("#6B3FA0"),
colors.HexColor("#EDE7F6")),
]
right2 = [
section_header("💉 Route of Administration", colors.HexColor("#B04A00")),
Spacer(1, 2),
abbrev_table(ROUTE,
[cw_half*0.35, cw_half*0.65],
colors.HexColor("#B04A00"),
colors.HexColor("#FBE9E7")),
]
story.append(two_col(vcol(left2), vcol(right2)))
story.append(Spacer(1, 4*mm))
# Row 3: Quantity | General Prescription
left3 = [
section_header("⚖️ Quantity & Units", colors.HexColor("#0A6C3C")),
Spacer(1, 2),
abbrev_table(QUANTITY,
[cw_half*0.38, cw_half*0.62],
colors.HexColor("#0A6C3C"),
colors.HexColor("#D5F0E3")),
]
right3 = [
section_header("📝 General Prescription", colors.HexColor("#7A4317")),
Spacer(1, 2),
abbrev_table(GENERAL,
[cw_half*0.35, cw_half*0.65],
colors.HexColor("#7A4317"),
colors.HexColor("#FDF3E7")),
]
story.append(two_col(vcol(left3), vcol(right3)))
story.append(Spacer(1, 4*mm))
# Full-width: Common Drug Name Short Forms
story.append(section_header("💊 Common Drug Name Abbreviations", colors.HexColor("#C0392B")))
story.append(Spacer(1, 2))
# 3-column drug table
drug_rows = DRUG_NAMES[1:] # skip header
col3_w = W / 3
# split into 3 columns
per_col = (len(drug_rows) + 2) // 3
cols = [drug_rows[i*per_col:(i+1)*per_col] for i in range(3)]
max_rows = max(len(c) for c in cols)
for c in cols:
while len(c) < max_rows:
c.append(("", ""))
drug_tbl_data = []
for r in range(max_rows):
row = []
for c in cols:
ab, mn = c[r]
row.append(Paragraph(f"<b>{ab}</b>" if ab else "", ParagraphStyle("da", fontSize=8.5, textColor=C_NAVY, fontName="Helvetica-Bold")))
row.append(Paragraph(mn, ParagraphStyle("dm", fontSize=8.5, textColor=C_DKGREY, fontName="Helvetica")))
drug_tbl_data.append(row)
cw6 = W / 6
drug_tbl = Table(drug_tbl_data, colWidths=[cw6*0.55, cw6*1.45]*3)
drug_bg = []
for i in range(max_rows):
bg = colors.HexColor("#FDECEA") if i % 2 == 0 else C_WHITE
drug_bg.append(("BACKGROUND", (0, i), (-1, i), bg))
drug_tbl.setStyle(TableStyle([
*drug_bg,
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING",(0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(drug_tbl)
story.append(Spacer(1, 4*mm))
# Example prescription box
ex_style = ParagraphStyle("ex", fontSize=8.5, textColor=C_NAVY, fontName="Helvetica",
leading=13, leftIndent=6, rightIndent=6)
ex_bold = ParagraphStyle("exb", fontSize=8.5, textColor=C_NAVY, fontName="Helvetica-Bold",
leading=13)
example_data = [[
Paragraph("<b>📖 How to Read a Prescription Example</b>",
ParagraphStyle("exh", fontSize=9, textColor=C_NAVY, fontName="Helvetica-Bold")),
Paragraph(
"<b>Metformin 500 mg tab – Sig: i tab PO BID c meals</b>",
ParagraphStyle("exrx", fontSize=9, textColor=C_TEAL, fontName="Helvetica-Bold")
),
Paragraph(
"→ <b>Metformin 500 mg</b> = Drug name + strength | "
"<b>tab</b> = Tablet | <b>i</b> = One | "
"<b>PO</b> = By mouth | <b>BID</b> = Twice daily | "
"<b>c meals</b> = With meals",
ex_style
),
]]
ex_tbl = Table([[item] for item in example_data[0]], colWidths=[W])
ex_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_LTAMBER),
("BOX", (0,0), (-1,-1), 1, C_AMBER),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("LEFTPADDING", (0,0),(-1,-1), 8),
("RIGHTPADDING",(0,0),(-1,-1), 8),
]))
story.append(ex_tbl)
story.append(Spacer(1, 3*mm))
# Footer
story.append(HRFlowable(width=W, thickness=0.5, color=C_DKGREY))
story.append(Paragraph(
"Reference: PTCB Standards | ISMP Error-Prone Abbreviations List | International Pharmacy Practice • "
"Always verify against current institutional guidelines • Generated by Orris | July 2026",
FOOTER_STYLE
))
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
cd /home/daytona/workspace/pharmacy-pdf && python create_pdf.py 2>&1
ROWBACKGROUNDS command with an empty list causes a division-by-zero. Let me fix that.~/pharmacy-pdf/create_pdf.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/pharmacy-pdf/create_pdf.py'
cd /home/daytona/workspace/pharmacy-pdf && python create_pdf.py 2>&1
Pharmacy Tablet Abbreviations
PDF Document · PDF
| Section | Contents |
|---|---|
| Dosage Form Abbreviations | tab, cap, syr, soln, supp, ung, SL, INJ, MDI, and more |
| Tablet Name Suffixes | SR, XR, ER, CR, LA, DS, OD, EC, DT, ODT, MR, IR |
| Frequency / Timing | OD, BD, TDS, QDS, PRN, q4h-q12h, HS, a.c., p.c., stat |
| Route of Administration | PO, SL, SC, IM, IV, PR, INH, eye/ear routes |
| Quantity & Units | Roman numerals, g, mg, mcg, mL, tsp, tbsp, gtt |
| General Prescription | Rx, sig, DAW, disp, d.c., c/s, UD, and more |
| Common Drug Abbreviations | APAP, ASA, MTX, INH, HCQ, NTG, NSAID, ACE-I, ARB, and more |
| Example Rx decoded | Full walkthrough of a sample prescription |