Tell me what are the things I have to include for 5 mark question on parotid duct as a BDS student
| Point | Detail |
|---|---|
| Parotid calculus (sialolithiasis) | Stones typically form in the main duct; cause pain and swelling on eating (obstructive sialadenitis) |
| Parotitis | Pressure over gland causes purulent saliva to emerge from the duct orifice in suppurative parotitis |
| Malignancy | Blood may be expressed from the duct opening |
| Duct injury | Deep cheek lacerations can transect the duct; repair by primary anastomosis over a stent (20-22G silastic catheter); buccal nerve injury commonly coexists |
| Bidigital palpation | Terminal part of the duct is palpated bidigitally (finger inside cheek + outside) |
| Rolling finger test | As duct rounds over the taut masseter, it can be felt by rolling the finger over the muscle |
| Frey's syndrome | After parotid surgery, auriculotemporal nerve fibers (parasympathetic) re-innervate sweat glands, causing gustatory sweating |
| Methylene blue test | Injected through duct orifice to detect duct injury in cheek lacerations |
Create a quick reference PDF with parotid duct anatomy diagram and clinical points
Detailed labeled anatomical diagram of the parotid duct (Stensen's duct) showing: the parotid gland on the side of the face, the duct emerging from the anterior border of the gland at the level of the tragus, running horizontally across the masseter muscle, turning medially at the anterior border of masseter, piercing the buccinator muscle, and opening into the oral cavity opposite the upper second molar tooth. Labels should include: Parotid gland, Stensen's duct, Masseter muscle, Buccinator muscle, Parotid papilla (opening), Upper 2nd molar tooth, Accessory parotid gland, Buccal branch of facial nerve, Tragus of ear, Surface marking line. Clean medical illustration style on white background, suitable for a BDS anatomy quick reference card.
mkdir -p /home/daytona/workspace/parotid-duct && curl -s "https://cdn.orris.care/image-gen/d4c2256e50ff49ddaac834f4f45cb39f.png" -o /home/daytona/workspace/parotid-duct/diagram.png && echo "Downloaded: $(du -h /home/daytona/workspace/parotid-duct/diagram.png)"
~/parotid-duct/make_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, Image, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak
PAGE_W, PAGE_H = A4
MARGIN = 1.8 * cm
# ── Colour palette ───────────────────────────────────────────────
NAVY = colors.HexColor("#1a3a5c")
TEAL = colors.HexColor("#0d7a8a")
GOLD = colors.HexColor("#e8a020")
LGRAY = colors.HexColor("#f4f6f9")
MGRAY = colors.HexColor("#d0d8e4")
RED = colors.HexColor("#c0392b")
WHITE = colors.white
BLACK = colors.black
doc = SimpleDocTemplate(
"/home/daytona/workspace/parotid-duct/Parotid_Duct_Quick_Reference.pdf",
pagesize=A4,
leftMargin=MARGIN, rightMargin=MARGIN,
topMargin=1.5*cm, bottomMargin=1.5*cm,
)
styles = getSampleStyleSheet()
# Custom styles
def S(name, **kw):
return ParagraphStyle(name, **kw)
title_style = S("Title2",
fontName="Helvetica-Bold", fontSize=20, textColor=WHITE,
spaceAfter=4, alignment=TA_CENTER, leading=24)
subtitle_style = S("Subtitle2",
fontName="Helvetica", fontSize=10, textColor=colors.HexColor("#cce0f0"),
spaceAfter=2, alignment=TA_CENTER, leading=13)
section_head = S("SectionHead",
fontName="Helvetica-Bold", fontSize=11, textColor=WHITE,
spaceBefore=0, spaceAfter=0, alignment=TA_LEFT, leading=14,
leftIndent=6)
body = S("Body2",
fontName="Helvetica", fontSize=9.2, textColor=BLACK,
spaceAfter=3, leading=13, alignment=TA_JUSTIFY)
bullet_style = S("Bullet2",
fontName="Helvetica", fontSize=9, textColor=BLACK,
spaceAfter=2, leading=12, leftIndent=12, bulletIndent=0)
bold_label = S("BoldLabel",
fontName="Helvetica-Bold", fontSize=9, textColor=NAVY,
spaceAfter=1, leading=12)
clinical_head = S("ClinHead",
fontName="Helvetica-Bold", fontSize=9.5, textColor=RED,
spaceAfter=2, leading=13)
note_style = S("NoteStyle",
fontName="Helvetica-Oblique", fontSize=8.2, textColor=colors.HexColor("#555555"),
spaceAfter=2, leading=11, alignment=TA_CENTER)
story = []
# ══════════════════════════════════════════════════════════════════
# HEADER BANNER
# ══════════════════════════════════════════════════════════════════
header_data = [[
Paragraph("PAROTID DUCT (STENSEN'S DUCT)", title_style),
Paragraph("BDS Quick Reference · Head & Neck Anatomy", subtitle_style),
]]
header_table = Table(header_data, colWidths=[PAGE_W - 2*MARGIN])
header_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("ROUNDEDCORNERS", [8]),
("TOPPADDING", (0,0), (-1,-1), 14),
("BOTTOMPADDING", (0,0), (-1,-1), 14),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(header_table)
story.append(Spacer(1, 10))
# ══════════════════════════════════════════════════════════════════
# ANATOMY DIAGRAM
# ══════════════════════════════════════════════════════════════════
def section_banner(text, color=TEAL):
cell = Table([[Paragraph(text, section_head)]], colWidths=[PAGE_W - 2*MARGIN])
cell.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),
]))
return cell
story.append(section_banner("ANATOMICAL DIAGRAM"))
story.append(Spacer(1, 6))
img = Image("/home/daytona/workspace/parotid-duct/diagram.png",
width=PAGE_W - 2*MARGIN - 0.4*cm, height=9.5*cm,
kind="proportional")
img_table = Table([[img]], colWidths=[PAGE_W - 2*MARGIN])
img_table.setStyle(TableStyle([
("ALIGN", (0,0), (-1,-1), "CENTER"),
("BACKGROUND", (0,0), (-1,-1), LGRAY),
("ROUNDEDCORNERS",[6]),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
]))
story.append(img_table)
story.append(Spacer(1, 10))
# ══════════════════════════════════════════════════════════════════
# TWO-COLUMN LAYOUT: Anatomy Left | Clinical Right
# ══════════════════════════════════════════════════════════════════
COL = (PAGE_W - 2*MARGIN - 0.4*cm) / 2
def card(rows_content, header_text, header_color=TEAL, col_w=COL):
"""Build a styled card table."""
header_row = [Paragraph(header_text, section_head)]
data = [[header_row]] + [[r] for r in rows_content]
col_style = [
("BACKGROUND", (0,0), (0,0), header_color),
("BACKGROUND", (0,1), (-1,-1), LGRAY),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 7),
("RIGHTPADDING", (0,0), (-1,-1), 7),
("LINEBELOW", (0,0), (-1,-2), 0.3, MGRAY),
("ROUNDEDCORNERS",[6]),
]
t = Table(data, colWidths=[col_w])
t.setStyle(TableStyle(col_style))
return t
def bp(text):
return Paragraph(f"<bullet>•</bullet> {text}", bullet_style)
def bb(label, text):
return Paragraph(f"<b><font color='#1a3a5c'>{label}:</font></b> {text}", bullet_style)
# ── LEFT column: Anatomy ─────────────────────────────────────────
anat_rows = [
bb("Also called", "Stensen's duct (Niels Stensen, 1661)"),
bb("Length", "~5 cm"),
bb("Calibre", "~0.6 mm internal diameter"),
bb("Lining", "Low cuboidal epithelium"),
bb("Wall", "Smooth muscle + fibrous tissue"),
Spacer(1, 4),
Paragraph("<b><font color='#0d7a8a'>COURSE (Step by Step)</font></b>", bold_label),
bp("Emerges from <b>anterior border of parotid gland</b> at level of tragus"),
bp("Runs <b>superficial to masseter</b> horizontally"),
bp("Receives duct from <b>accessory parotid gland</b>"),
bp("Turns <b>medially</b> at anterior border of masseter"),
bp("Pierces <b>buccinator</b> obliquely"),
bp("Runs between buccinator and oral mucosa"),
bp("Opens at <b>parotid papilla</b> opposite <b>upper 2nd molar</b>"),
Spacer(1, 4),
Paragraph("<b><font color='#0d7a8a'>SURFACE MARKING</font></b>", bold_label),
bp("Middle third of line: <b>intertragal notch → midpoint of philtrum</b>"),
Spacer(1, 4),
Paragraph("<b><font color='#0d7a8a'>RELATIONS</font></b>", bold_label),
bb("Facial nerve", "Buccal branch lies inferolateral to duct"),
bb("Accessory gland", "Lies on masseter above duct; drains into it"),
bb("Facial nerve rule", "Always <b>lateral</b> to duct"),
]
# ── RIGHT column: Clinical Points ────────────────────────────────
clin_rows = [
Paragraph("<b><font color='#c0392b'>OPENING / ORIFICE</font></b>", bold_label),
bp("Vestibule of mouth, buccal mucosa"),
bp("Opposite crown of <b>upper 2nd molar tooth</b>"),
bp("Examine by retracting cheek with spatula"),
Spacer(1, 4),
Paragraph("<b><font color='#c0392b'>CLINICAL POINTS</font></b>", bold_label),
bb("Parotitis", "Pressure on gland → pus from orifice in suppurative parotitis"),
bb("Malignancy", "Blood expressed from duct opening"),
bb("Sialolithiasis", "Stones in duct → pain + swelling on eating"),
bb("Duct injury", "Deep cheek cuts; repair by anastomosis over silastic stent (20-22G)"),
bb("Buccal nerve", "Often co-injured due to close proximity to duct"),
bb("Methylene blue", "Injected through papilla to detect duct injury in lacerations"),
bb("Bidigital palpation", "Terminal duct felt with finger inside cheek + outside"),
bb("Rolling test", "Duct felt by rolling finger over taut masseter"),
bb("Frey's syndrome", "Post-parotidectomy gustatory sweating; auriculotemporal nerve misguided innervation"),
bb("Sialocele", "Saliva collection after parotid surgery"),
Spacer(1, 4),
Paragraph("<b><font color='#c0392b'>NERVE SUPPLY</font></b>", bold_label),
bb("Parasympathetic", "Lesser petrosal nerve → Otic ganglion → Auriculotemporal nerve"),
bb("Sympathetic", "Superior cervical ganglion → ext. carotid plexus"),
]
left_card = card(anat_rows, "ANATOMY", TEAL, COL)
right_card = card(clin_rows, "CLINICAL POINTS", RED, COL)
two_col = Table([[left_card, Spacer(0.4*cm, 1), right_card]],
colWidths=[COL, 0.4*cm, COL])
two_col.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
]))
story.append(two_col)
story.append(Spacer(1, 10))
# ══════════════════════════════════════════════════════════════════
# EXAM QUICK-FIRE TABLE
# ══════════════════════════════════════════════════════════════════
story.append(section_banner("EXAM QUICK-FIRE FACTS", NAVY))
story.append(Spacer(1, 6))
qf_data = [
[Paragraph("<b>Feature</b>", bold_label), Paragraph("<b>Answer</b>", bold_label)],
["Length of duct", "~5 cm"],
["Internal calibre", "~0.6 mm"],
["Muscle pierced by duct", "Buccinator"],
["Muscle crossed superficially", "Masseter"],
["Opening opposite", "Upper 2nd molar tooth"],
["Nerve always lateral to duct", "Facial nerve (buccal branch)"],
["Surface marking landmark", "Intertragal notch → midpoint of philtrum"],
["Duct lining epithelium", "Low cuboidal"],
["Secretomotor relay station", "Otic ganglion"],
["Postganglionic secretomotor nerve", "Auriculotemporal nerve"],
["Accessory gland duct drains into", "Stensen's duct"],
]
qf_widths = [(PAGE_W - 2*MARGIN) * 0.48, (PAGE_W - 2*MARGIN) * 0.52]
qf_table = Table(qf_data, colWidths=qf_widths, repeatRows=1)
qf_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), NAVY),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LGRAY]),
("LINEBELOW", (0,0), (-1,-1), 0.3, MGRAY),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(qf_table)
story.append(Spacer(1, 8))
# ══════════════════════════════════════════════════════════════════
# FOOTER
# ══════════════════════════════════════════════════════════════════
story.append(HRFlowable(width="100%", thickness=0.5, color=MGRAY))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Sources: Scott-Brown's Otorhinolaryngology | Bailey & Love's Surgery | Cummings Otolaryngology | S Das Manual on Clinical Surgery",
note_style))
story.append(Paragraph(
"For educational use · BDS Anatomy Quick Reference",
note_style))
doc.build(story)
print("PDF created successfully.")
cd /home/daytona/workspace/parotid-duct && python make_pdf.py
ls -lh /home/daytona/workspace/parotid-duct/
Parotid Duct Quick Reference
PDF Document · PDF
Refer this and give points on clinical anatomy
| Condition | Key Point |
|---|---|
| Parotid abscess | Spread from duct opening; drain by Hilton's method (horizontal incision below angle of mandible) |
| Frey's syndrome | Post-parotidectomy; auriculotemporal nerve aberrant regeneration → gustatory sweating |
| Parotidectomy | Preserve facial nerve; remove gland in two parts (superficial + deep) |
| Mixed parotid tumour | Painless, slow, no nerve involvement = benign; pain + nerve involvement = malignant change |
| Parotid calculi | Sialogram (radio-opaque dye) for diagnosis; bidigital / spatula examination |
Exam tip: For a 5-marker asking clinical anatomy, cover all 5 points above with their key details. Frey's syndrome mechanism is a favourite short-answer question on its own.
Like this give answer for 5mark on waldeyers ring
| Component | Location |
|---|---|
| Pharyngeal tonsil (Adenoids) | Roof and posterior wall of nasopharynx (posterosuperior) - midline |
| Tubal tonsils (Gerlach's tonsil) | Near opening of Eustachian tube in nasopharynx (superolateral) |
| Palatine tonsils | Between palatoglossal and palatopharyngeal arches (anterolateral) - largest and most clinically significant |
| Lingual tonsil | Posterior 1/3 of tongue (anteroinferior) |
| Lateral pharyngeal bands | Lymphoid tissue behind the posterior pillars |
Memory aid: "A Tongue Produces Large Lymphoid rings" - Adenoid, Tubal, Palatine, Lingual
ADENOIDS (nasopharynx - roof/posterior wall)
|
TUBAL TONSILS TUBAL TONSILS
(near Eustachian (near Eustachian
tube opening) tube opening)
|
PALATINE TONSIL PALATINE TONSIL
(between arches) (between arches)
|
LINGUAL TONSIL (post 1/3 tongue)
| Fact | Answer |
|---|---|
| Most common component affected by lymphoma | Palatine tonsil |
| Type of lymphoma at Waldeyer's ring | Non-Hodgkin's Lymphoma (NHL) |
| Adenoid hypertrophy complication | Conductive hearing loss (blocks ET opening) |
| Immunoglobulin predominantly produced | IgA (mucosal immunity) |
| Cells that proliferate in germinal centres | B lymphocytes |
| Age of adenoid physiological hypertrophy | 3-7 years |
| What happens to Waldeyer's ring after puberty | Involution (shrinks) |