I am mbbs student and tomorrow is my 1st day of third year and tomorrow is my posting on dental ward and I don't know about dental history taking and all the other things so please guide me
dental history taking MBBS student oral medicine clinical examination guide
https://geekymedics.com/taking-a-dental-history-osce-guide
dental ward posting MBBS student what to expect extraoral intraoral examination teeth charting
"Good morning, I am [your name], a medical student. I would like to take your history if you don't mind."
| # | Section |
|---|---|
| 1 | Chief Complaint (CC) |
| 2 | History of Presenting Complaint (HPC) |
| 3 | Past Dental History (PDH) |
| 4 | Past Medical History (PMH) |
| 5 | Drug History + Allergies |
| 6 | Social History |
| 7 | Family History |
| Letter | Stands For | Questions to Ask |
|---|---|---|
| S | Site | "Where exactly is the pain? Can you point to it?" |
| O | Onset | "When did it start? Did it come on suddenly or gradually?" |
| C | Character | "How would you describe the pain? Throbbing, sharp, dull, constant?" |
| R | Radiation | "Does the pain spread anywhere - ear, jaw, neck?" |
| A | Associations | "Any swelling, fever, bad taste, difficulty swallowing?" |
| T | Time course | "Is it getting better, worse, or staying the same?" |
| E | Exacerbating/Relieving | "What makes it worse? (cold/hot drinks, biting?) What relieves it?" |
| S | Severity | "On a scale of 0-10, how bad is the pain?" |
| Condition | Why it Matters |
|---|---|
| Diabetes | Slow healing, infection risk, periodontal disease |
| Hypertension | Drug interactions (epinephrine in LA), bleeding risk |
| Heart disease (valvular, rheumatic) | Antibiotic prophylaxis needed before procedures |
| Bleeding disorders / anticoagulants | Risk of post-extraction haemorrhage |
| Epilepsy | Drug interactions, gingival hyperplasia (phenytoin) |
| HIV/immunosuppression | Oral candidiasis, kaposi sarcoma |
| Pregnancy | Timing of treatment, drugs to avoid, gingival changes |
| Liver disease | Clotting factor deficiency, drug metabolism |
| Renal disease | Drug dosing adjustments |
Upper Right | Upper Left
18 17 16 15 14 13 12 11 | 21 22 23 24 25 26 27 28
48 47 46 45 44 43 42 41 | 31 32 33 34 35 36 37 38
Lower Right | Lower Left
| Condition | Key Features |
|---|---|
| Dental caries | Cavity/black discoloration in tooth |
| Acute pulpitis | Severe spontaneous toothache |
| Periapical abscess | Swelling, pus, tender tooth |
| Gingivitis | Red, swollen, bleeding gums - no bone loss |
| Periodontitis | Gum disease with bone loss, pockets, loose teeth |
| Oral ulcers | Aphthous (painful, white center, red halo), traumatic, herpetic |
| Oral submucous fibrosis | Pale, stiff cheeks, restricted mouth opening - betel nut |
| Leukoplakia | White patch that can't be scraped off - pre-malignant |
| Erythroplakia | Red patch - higher malignant potential than leukoplakia |
| Oral candidiasis | White curdy patches that CAN be scraped off |
| Ludwig's angina | Bilateral submandibular/sublingual space infection - emergency! |
Create a one-page quick reference cheat sheet (PDF) I can print and bring tomorrow
ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or not found"
mkdir -p /home/daytona/workspace/dental-guide && python3 -c "from reportlab.lib.…
~/dental-guide/make_cheatsheet.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.pdfgen import canvas
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Table, TableStyle
OUTPUT = "/home/daytona/workspace/dental-guide/Dental_Ward_Cheatsheet.pdf"
W, H = A4 # 595 x 842 pt
# Colour palette
NAVY = colors.HexColor("#1a3a5c")
TEAL = colors.HexColor("#0d7377")
LTBLUE = colors.HexColor("#e8f4f8")
YELLOW = colors.HexColor("#fff9e6")
ORANGE = colors.HexColor("#f4a261")
RED = colors.HexColor("#e63946")
WHITE = colors.white
GRAY = colors.HexColor("#f0f0f0")
DKGRAY = colors.HexColor("#444444")
def draw_box(c, x, y, w, h, fill=WHITE, stroke=NAVY, radius=4):
c.setFillColor(fill)
c.setStrokeColor(stroke)
c.setLineWidth(0.8)
c.roundRect(x, y, w, h, radius, fill=1, stroke=1)
def header_text(c, x, y, w, h, text, bg=NAVY, fg=WHITE, size=8):
draw_box(c, x, y, w, h, fill=bg, stroke=bg, radius=3)
c.setFillColor(fg)
c.setFont("Helvetica-Bold", size)
c.drawCentredString(x + w/2, y + h/2 - size/3, text)
def body_text(c, x, y, text, size=6.5, color=DKGRAY, bold=False):
c.setFillColor(color)
font = "Helvetica-Bold" if bold else "Helvetica"
c.setFont(font, size)
c.drawString(x, y, text)
def bullet(c, x, y, text, size=6.2, color=DKGRAY):
c.setFillColor(TEAL)
c.setFont("Helvetica", size)
c.drawString(x, y, "•")
c.setFillColor(color)
c.drawString(x + 6, y, text)
def draw_divider(c, x, y, w, color=TEAL):
c.setStrokeColor(color)
c.setLineWidth(0.5)
c.line(x, y, x+w, y)
def make_pdf():
c = canvas.Canvas(OUTPUT, pagesize=A4)
c.setTitle("Dental Ward Cheat Sheet - MBBS 3rd Year")
# ── MAIN BACKGROUND ──────────────────────────────────────────────
c.setFillColor(GRAY)
c.rect(0, 0, W, H, fill=1, stroke=0)
# ── TOP HEADER BAR ───────────────────────────────────────────────
c.setFillColor(NAVY)
c.rect(0, H-28, W, 28, fill=1, stroke=0)
c.setFillColor(WHITE)
c.setFont("Helvetica-Bold", 13)
c.drawCentredString(W/2, H-20, "DENTAL WARD QUICK REFERENCE | MBBS 3rd Year Clinical Posting")
c.setFont("Helvetica", 7)
c.setFillColor(colors.HexColor("#aad4e8"))
c.drawCentredString(W/2, H-26, "History Taking • Examination • Common Conditions • Investigations")
MARGIN = 10*mm
COL_GAP = 3*mm
TOTAL_W = W - 2*MARGIN
C1W = TOTAL_W * 0.33
C2W = TOTAL_W * 0.33
C3W = TOTAL_W * 0.34
X1 = MARGIN
X2 = X1 + C1W + COL_GAP
X3 = X2 + C2W + COL_GAP
TOP_Y = H - 35
# ════════════════════════════════════════════════════════════════
# COLUMN 1
# ════════════════════════════════════════════════════════════════
y = TOP_Y
# --- History Format ---
BOX_H = 8
header_text(c, X1, y-BOX_H, C1W, BOX_H, "📋 HISTORY FORMAT", bg=NAVY)
y -= BOX_H + 1
draw_box(c, X1, y-72, C1W, 72, fill=LTBLUE)
steps = [
("1", "Chief Complaint (CC)", "Patient's own words"),
("2", "HPC", "SOCRATES for pain"),
("3", "Past Dental Hx", "Attendance, extractions, LA"),
("4", "Past Medical Hx", "DM, HTN, heart, bleeding"),
("5", "Drug Hx + Allergies", "Penicillin, NSAIDs, latex"),
("6", "Social Hx", "Tobacco, betel nut, alcohol"),
("7", "Family Hx", "Oral cancer, bleeding d/o"),
]
sy = y - 6
for num, title, detail in steps:
c.setFillColor(TEAL)
c.setFont("Helvetica-Bold", 6.5)
c.drawString(X1+3, sy, f"{num}.")
c.setFillColor(NAVY)
c.setFont("Helvetica-Bold", 6.2)
c.drawString(X1+10, sy, title)
c.setFillColor(DKGRAY)
c.setFont("Helvetica", 6)
c.drawString(X1+10, sy-7, detail)
sy -= 17 if num != "7" else 0
y -= 74
# --- SOCRATES ---
y -= 3
header_text(c, X1, y-BOX_H, C1W, BOX_H, "🩺 SOCRATES (Pain History)", bg=TEAL)
y -= BOX_H + 1
soc = [
("S", "Site", "Where? Point to it"),
("O", "Onset", "Sudden/gradual? When?"),
("C", "Character", "Throbbing/sharp/dull?"),
("R", "Radiation", "Ear, jaw, neck?"),
("A", "Associations", "Swelling, fever, taste?"),
("T", "Time course", "Better / worse?"),
("E", "Exac/Relieving", "Hot/cold/biting? Drugs?"),
("S", "Severity", "0–10 scale"),
]
bh = len(soc)*9 + 4
draw_box(c, X1, y-bh, C1W, bh, fill=WHITE)
sy = y - 8
for letter, word, detail in soc:
c.setFillColor(ORANGE)
c.setFont("Helvetica-Bold", 7.5)
c.drawString(X1+3, sy, letter)
c.setFillColor(NAVY)
c.setFont("Helvetica-Bold", 6.2)
c.drawString(X1+11, sy, word)
c.setFillColor(DKGRAY)
c.setFont("Helvetica", 6)
c.drawString(X1+42, sy, detail)
sy -= 9
y -= bh + 2
# --- Key Drugs Causing Oral SE ---
y -= 3
header_text(c, X1, y-BOX_H, C1W, BOX_H, "💊 DRUGS → ORAL SIDE EFFECTS", bg=colors.HexColor("#6b4c9a"))
y -= BOX_H + 1
drugs = [
("Phenytoin", "Gingival hyperplasia"),
("Amlodipine/Nifedipine", "Gingival enlargement"),
("Bisphosphonates", "Jaw osteonecrosis (BRONJ)"),
("Steroids/Chemo", "Candidiasis, mucositis"),
("Anticholinergics", "Xerostomia (dry mouth)"),
("Methotrexate", "Oral ulcers"),
("Warfarin/Heparin", "Post-extraction bleeding"),
]
dh = len(drugs)*9 + 4
draw_box(c, X1, y-dh, C1W, dh, fill=YELLOW)
sy = y - 8
for drug, effect in drugs:
c.setFillColor(colors.HexColor("#6b4c9a"))
c.setFont("Helvetica-Bold", 6)
c.drawString(X1+3, sy, drug)
c.setFillColor(DKGRAY)
c.setFont("Helvetica", 6)
c.drawString(X1+3, sy-6, f" → {effect}")
sy -= 13
y -= dh + 2
# ════════════════════════════════════════════════════════════════
# COLUMN 2
# ════════════════════════════════════════════════════════════════
y = TOP_Y
# --- Extra-Oral Exam ---
header_text(c, X2, y-BOX_H, C2W, BOX_H, "👁 EXTRA-ORAL EXAMINATION", bg=colors.HexColor("#2d6a4f"))
y -= BOX_H + 1
eo = [
"Face: Symmetry, swelling, scar, sinus",
"Eyes: Proptosis (space-occupying lesion?)",
"Lips: Colour, commissures, ulcers",
"Lymph nodes: Submental → Submandibular",
" → Preauricular → Cervical chain",
" Note: Size, consistency, tenderness",
"TMJ: Opening (normal ≥40 mm / 3 fingers)",
" Click, crepitus, deviation on opening?",
]
eh = len(eo)*9 + 4
draw_box(c, X2, y-eh, C2W, eh, fill=colors.HexColor("#f0fff4"))
sy = y - 8
for line in eo:
c.setFillColor(colors.HexColor("#2d6a4f") if not line.startswith(" ") else DKGRAY)
c.setFont("Helvetica-Bold" if not line.startswith(" ") else "Helvetica", 6.2)
if not line.startswith(" "):
c.drawString(X2+3, sy, "▸ " + line)
else:
c.drawString(X2+6, sy, line.strip())
sy -= 9
y -= eh + 2
# --- Intra-Oral Exam ---
y -= 3
header_text(c, X2, y-BOX_H, C2W, BOX_H, "🦷 INTRA-ORAL EXAMINATION", bg=TEAL)
y -= BOX_H + 1
io_items = [
("Lips", "Inner mucosa, frenulum"),
("Buccal mucosa", "Both sides, Stensen's duct"),
("Gingiva", "Colour, contour, BOP, pocket"),
("Teeth", "Caries, fracture, mobility, #"),
("Hard palate", "Swelling, torus palatinus"),
("Soft palate", "Movement on 'Aah'"),
("Tongue", "Dorsum, lateral borders ⚠, ventral"),
("Floor of mouth", "Wharton's duct, swelling"),
("Oropharynx", "Tonsils, posterior wall"),
]
ih = len(io_items)*10 + 4
draw_box(c, X2, y-ih, C2W, ih, fill=LTBLUE)
sy = y - 8
for area, detail in io_items:
c.setFillColor(TEAL)
c.setFont("Helvetica-Bold", 6.2)
c.drawString(X2+3, sy, area + ":")
c.setFillColor(DKGRAY)
c.setFont("Helvetica", 6)
c.drawString(X2+3, sy-6.5, " " + detail)
sy -= 12
y -= ih + 2
# --- FDI Tooth Chart ---
y -= 3
header_text(c, X2, y-BOX_H, C2W, BOX_H, "🔢 FDI TOOTH NUMBERING", bg=colors.HexColor("#c77dff"))
y -= BOX_H + 1
draw_box(c, X2, y-48, C2W, 48, fill=colors.HexColor("#fdf4ff"))
c.setFillColor(DKGRAY)
c.setFont("Helvetica-Bold", 6)
c.drawCentredString(X2+C2W/2, y-9, "Upper Right (1) | Upper Left (2)")
c.setFont("Courier-Bold", 5.8)
c.setFillColor(NAVY)
c.drawCentredString(X2+C2W/2, y-17, "18 17 16 15 14 13 12 11 | 21 22 23 24 25 26 27 28")
draw_divider(c, X2+4, y-22, C2W-8, color=colors.HexColor("#c77dff"))
c.drawCentredString(X2+C2W/2, y-28, "48 47 46 45 44 43 42 41 | 31 32 33 34 35 36 37 38")
c.setFont("Helvetica-Bold", 6)
c.setFillColor(DKGRAY)
c.drawCentredString(X2+C2W/2, y-36, "Lower Right (4) | Lower Left (3)")
c.setFont("Helvetica", 5.8)
c.drawCentredString(X2+C2W/2, y-44, "C=Caries F=Filled X=Extracted /=Missing RCT=Root Canal")
y -= 50
# ════════════════════════════════════════════════════════════════
# COLUMN 3
# ════════════════════════════════════════════════════════════════
y = TOP_Y
# --- Common Conditions ---
header_text(c, X3, y-BOX_H, C3W, BOX_H, "📌 COMMON CONDITIONS", bg=RED)
y -= BOX_H + 1
conds = [
("Dental Caries", "Cavity/black lesion on tooth"),
("Pulpitis (Rev.)", "Pain with hot/cold, resolves fast"),
("Pulpitis (Irrev.)", "Spontaneous throbbing, worse @ night"),
("Periapical Abscess", "Const. pain, tender to bite, swelling"),
("Gingivitis", "Red/swollen gums, bleeding, no bone loss"),
("Periodontitis", "Bone loss, pocketing, loose teeth"),
("Aphthous Ulcer", "Painful, white center + red halo"),
("Oral Candidiasis", "White curdy patches — scraped off"),
("Leukoplakia", "White patch — NOT scraped off ⚠"),
("Erythroplakia", "Red patch — HIGH malignant risk ⚠⚠"),
("Oral Sub. Fibrosis", "Pale stiff cheeks, limited opening"),
("Ludwig's Angina", "Bilateral submandibular — EMERGENCY!"),
]
ch = len(conds)*10 + 4
draw_box(c, X3, y-ch, C3W, ch, fill=WHITE)
sy = y - 8
for cond, desc in conds:
flag = "⚠" in desc or "EMERGENCY" in desc
c.setFillColor(RED if "EMERGENCY" in desc else (colors.HexColor("#c44b4b") if "⚠" in desc else NAVY))
c.setFont("Helvetica-Bold", 6.2)
c.drawString(X3+3, sy, cond)
c.setFillColor(DKGRAY)
c.setFont("Helvetica", 5.8)
c.drawString(X3+3, sy-6.5, " " + desc)
sy -= 12
y -= ch + 2
# --- Medical Hx Red Flags ---
y -= 3
header_text(c, X3, y-BOX_H, C3W, BOX_H, "⚕ MEDICAL Hx RED FLAGS", bg=colors.HexColor("#d62828"))
y -= BOX_H + 1
flags = [
("Diabetes", "Poor healing, infxn risk, perio disease"),
("Hypertension", "Drug interactions (LA + epi)"),
("Cardiac / RHD", "Antibiotic prophylaxis before procedure"),
("Anticoagulants", "Post-extraction haemorrhage"),
("Epilepsy", "Phenytoin → gingival hyperplasia"),
("Pregnancy", "Avoid X-rays, certain drugs"),
("HIV / Immuno-supp", "Candida, Kaposi sarcoma"),
("Bisphosphonate use", "BRONJ risk — avoid extractions"),
]
fh = len(flags)*10 + 4
draw_box(c, X3, y-fh, C3W, fh, fill=colors.HexColor("#fff5f5"))
sy = y - 8
for cond, detail in flags:
c.setFillColor(colors.HexColor("#d62828"))
c.setFont("Helvetica-Bold", 6.2)
c.drawString(X3+3, sy, cond + ":")
c.setFillColor(DKGRAY)
c.setFont("Helvetica", 5.8)
c.drawString(X3+3, sy-6.5, " " + detail)
sy -= 12
y -= fh + 2
# --- Investigations ---
y -= 3
header_text(c, X3, y-BOX_H, C3W, BOX_H, "🔬 INVESTIGATIONS", bg=colors.HexColor("#457b9d"))
y -= BOX_H + 1
inv = [
("IOPA X-ray", "Individual tooth, periapical region"),
("OPG (Panoramic)", "Full mouth view — overview"),
("CBCT", "3D imaging for implants/surgery"),
("FNAC", "Swellings / lymph nodes"),
("Biopsy", "Suspicious lesions (leukoplakia etc)"),
("CBC + Blood sugar", "Before extraction"),
("PT/INR", "Anticoagulant patients"),
("Vitality test", "Electric pulp / cold test"),
]
ivh = len(inv)*10 + 4
draw_box(c, X3, y-ivh, C3W, ivh, fill=LTBLUE)
sy = y - 8
for test, use in inv:
c.setFillColor(colors.HexColor("#457b9d"))
c.setFont("Helvetica-Bold", 6.2)
c.drawString(X3+3, sy, test + ":")
c.setFillColor(DKGRAY)
c.setFont("Helvetica", 5.8)
c.drawString(X3+3, sy-6.5, " " + use)
sy -= 12
y -= ivh + 2
# ── BOTTOM FOOTER BAR ────────────────────────────────────────────
c.setFillColor(NAVY)
c.rect(0, 0, W, 14, fill=1, stroke=0)
c.setFillColor(WHITE)
c.setFont("Helvetica-Bold", 6)
c.drawString(MARGIN, 5, "⚠ Lateral borders of tongue = most common site for oral cancer")
c.setFont("Helvetica", 6)
c.drawCentredString(W/2, 5, "BETEL NUT / TOBACCO Hx is MANDATORY in every Indian dental patient")
c.setFont("Helvetica-Bold", 6)
c.setFillColor(colors.HexColor("#aad4e8"))
c.drawRightString(W - MARGIN, 5, "Good luck on your posting! 🦷")
c.save()
print(f"PDF saved: {OUTPUT}")
make_pdf()
cd /home/daytona/workspace/dental-guide && python3 make_cheatsheet.py
ls -lh /home/daytona/workspace/dental-guide/Dental_Ward_Cheatsheet.pdf
Dental Ward Cheatsheet
PDF Document · PDF