attachment
attachment

Analysis this question paper and give perfect answer

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources

Rajiv Gandhi University of Health Sciences - III BDS

ORAL PATHOLOGY AND MICROBIOLOGY (RS3) - Nov 2021

Q.P. Code: 1188 - Complete Answers


LONG ESSAYS (2 x 10 = 20 Marks)


Q1. Enumerate Potentially Malignant Disorders. Write in detail about Leukoplakia. (10 Marks)

A. Potentially Malignant Disorders (PMDs) of Oral Cavity

The WHO (2005, updated 2017) defines Oral Potentially Malignant Disorders (OPMDs) as "clinical presentations that carry a risk of cancer development in the oral cavity, whether in a clinically definable precursor lesion or in clinically normal oral mucosa."
List of OPMDs:
  1. Leukoplakia (most common)
  2. Erythroplakia (highest malignant transformation rate - ~50%)
  3. Erythroleukoplakia (speckled leukoplakia)
  4. Oral submucous fibrosis (OSMF)
  5. Oral lichen planus (erosive/atrophic forms)
  6. Actinic keratosis (actinic cheilitis)
  7. Palatal changes due to reverse smoking
  8. Discoid lupus erythematosus
  9. Dyskeratosis congenita

B. Leukoplakia - Detailed Account

Definition: Leukoplakia is defined as "a white plaque of questionable risk having excluded (other) known diseases or disorders that carry no increased risk for cancer." (WHO, 2005)
  • It is the most common OPMD, with a prevalence of 0.2-3.4% globally.
Etiology:
  • Tobacco - single most important factor (smokers have 6x risk); includes cigarettes, bidis, cigars, smokeless tobacco
  • Alcohol - potentiates tobacco
  • Candida albicans (Candidal leukoplakia)
  • Human Papillomavirus (HPV-16, 18)
  • Sanguinaria (herbal toothpaste ingredient)
  • Ultraviolet radiation (for lip involvement)
  • Nutritional deficiencies (iron, B12, folate)
  • Idiopathic (up to 20% cases)
Sites: Buccal mucosa (most common overall), floor of mouth + ventral tongue (highest malignant potential), lower lip, commissures, palate, alveolar mucosa.
Clinical Classification:
TypeFeatures
HomogeneousUniform flat white plaque; smooth or finely wrinkled; low malignant potential
Non-homogeneousIrregular surface; higher malignant potential
- ErythroleukoplakiaMixed red and white areas (speckled)
- VerrucousIrregular, corrugated, exophytic
- NodularSmall red/white nodular projections
Proliferative Verrucous (PVL)Multifocal, irreversible, highest malignant potential; F>M; HPV-associated
Histopathology:
  • Epithelium shows hyperkeratosis (hyperorthokeratosis or hyperparakeratosis)
  • Acanthosis (thickened spinous layer)
  • Epithelial dysplasia - graded as:
    • Mild dysplasia (lower 1/3 of epithelium)
    • Moderate dysplasia (lower 2/3)
    • Severe dysplasia (>2/3 but not full thickness)
    • Carcinoma in situ (full thickness involvement, basement membrane intact)
Features of Epithelial Dysplasia (WHO Criteria):
  • Abnormal mitoses (in upper layers)
  • Loss of polarity of basal cells
  • Drop-shaped rete ridges
  • Increased nuclear:cytoplasmic ratio
  • Nuclear hyperchromatism
  • Individual cell keratinization (dyskeratosis)
  • Increased and abnormal mitoses
  • Basal cell hyperplasia
  • Loss of cell cohesion
Malignant Transformation Rate: 0.7-2.9% (overall); floor of mouth/ventral tongue has the highest rate.
Risk factors for malignant transformation:
  • Non-homogeneous/speckled type
  • Floor of mouth or ventral tongue location
  • Female gender, non-smoker (paradoxically higher)
  • Presence of moderate-severe dysplasia
  • Large lesion (>200 mm²)
  • Duration > 5 years
Investigations:
  • Biopsy (mandatory) - punch, incisional, or excisional
  • Toluidine blue staining (vital staining)
  • Lugol's iodine
  • Chemiluminescence (ViziLite)
  • Loss of Heterozygosity (LOH) studies
Treatment:
  • Eliminate etiological factors (tobacco cessation)
  • Antifungal if Candida-associated
  • Surgical excision (gold standard)
  • Laser ablation (CO2 laser)
  • Photodynamic therapy
  • Topical/systemic retinoids (high recurrence)
  • Regular follow-up (every 3-6 months)
Prognosis: Recurrence rate 10-34%; lesions at high-risk sites require lifelong surveillance.

Q2. Classify Neural Tumors and Describe Neurofibromatosis. (10 Marks)

A. Classification of Neural Tumors

I. Benign Neural Tumors:
  1. Traumatic neuroma
  2. Palisaded encapsulated neuroma (PEN)
  3. Neurofibroma (solitary vs. plexiform)
  4. Schwannoma (neurilemmoma)
  5. Granular cell tumor
  6. Mucosal neuroma (MEN 2B)
II. Malignant Neural Tumors:
  1. Malignant Peripheral Nerve Sheath Tumor (MPNST)
  2. Malignant granular cell tumor
  3. Neuroblastoma
  4. Primitive neuroectodermal tumor (PNET)

B. Neurofibromatosis - Detailed Description

Definition: A group of autosomal dominant neurocutaneous disorders (phakomatoses) characterized by multiple neurofibromas, cafe-au-lait spots, and predisposition to tumors.
Types:
FeatureNF-1 (von Recklinghausen's)NF-2
GeneNF1 on chromosome 17q11.2NF2 on chromosome 22q12
Gene productNeurofibrominMerlin/Schwannomin
Prevalence1:3000 (most common)1:25,000
Main featuresMultiple neurofibromas + cafe-au-lait spotsBilateral acoustic neuromas
NF-1 (Von Recklinghausen's Disease):
Diagnostic Criteria (NIH) - 2 or more of:
  1. Six or more cafe-au-lait macules (>5mm prepubertal; >15mm postpubertal)
  2. Two or more neurofibromas of any type, OR one plexiform neurofibroma
  3. Freckling in axillary or inguinal region (Crowe's sign)
  4. Optic glioma
  5. Two or more Lisch nodules (iris hamartomas)
  6. Distinctive osseous lesion (sphenoid dysplasia, thinning of long bone cortex)
  7. First-degree relative with NF-1
Oral Manifestations:
  • Neurofibroma of tongue, buccal mucosa, gingiva
  • Plexiform neurofibroma causing macroglossia
  • Enlargement of mandibular foramen and mental foramen
  • Rarefaction of lamina dura
  • Temporomandibular joint defects
  • Irregular alveolar bone trabeculation
Histopathology of Neurofibroma:
  • Unencapsulated proliferation of spindle-shaped Schwann cells, fibroblasts, and perineurial cells
  • Wavy nuclei ("buckled" or "carrot-shaped") in a loose myxoid stroma
  • S-100 protein positive (Schwann cells)
  • No palisading (unlike schwannoma)
  • Mast cells are characteristic
Histopathology of Schwannoma (for comparison):
  • Encapsulated
  • Antoni A areas: compact cellular areas with nuclear palisading (Verocay bodies)
  • Antoni B areas: loose, myxoid, hypocellular areas
Complications of NF-1:
  • Malignant transformation to MPNST (~10%)
  • Learning disabilities
  • Optic nerve glioma
  • Scoliosis
  • Epilepsy
  • Hypertension (pheochromocytoma)
  • Plexiform neurofibromas - pathognomonic
Cafe-au-lait spots: Light brown macules; described as "coast of California" irregular borders in NF-1 (vs. "coast of Maine" smooth borders in McCune-Albright).

SHORT ESSAYS (8 x 5 = 40 Marks)


Q3. Radiological Variants of Dentigerous Cyst (5 Marks)

Definition: A dentigerous cyst (follicular cyst) is an odontogenic cyst arising from separation of the follicular epithelium from the crown of an unerupted/impacted tooth.
Standard Radiological Features:
  • Well-defined, corticated (sclerotic border) unilocular radiolucency
  • Attached at the cemento-enamel junction (CEJ) of an unerupted tooth
  • Crown is always within the cystic lumen
Radiological Variants (3 types):
1. Central (Pericoronal) Variant - Most Common (90%)
  • Radiolucency symmetrically surrounds the crown
  • Crown projects into the cystic space centrally
  • Attached at CEJ all around
2. Lateral Variant
  • Cyst develops laterally along the root
  • Partially erupted tooth; cyst enlarges to one side
  • Radiolucency seen on one side of the root
  • Must be differentiated from periodontal cyst and lateral periodontal cyst
3. Circumferential Variant
  • Cystic sac extends around the entire tooth including the roots
  • Envelopes the entire tooth (crown + part of root)
  • Rare; important to distinguish from odontogenic keratocyst (OKC)
Additional Features:
  • Size: usually 1.5-2 cm but can be very large
  • Displacement of adjacent teeth
  • Root resorption of adjacent teeth (uncommon)
  • Cortication may be lost if secondarily infected
  • Can cause marked jaw expansion
  • Associated tooth: most common - mandibular 3rd molar > maxillary canine > maxillary 3rd molar > mandibular 2nd premolar
Differential Diagnosis: Odontogenic keratocyst, ameloblastoma (unicystic), adenomatoid odontogenic tumor (AOT)

Q4. Solitary Bone Cyst (Simple Bone Cyst / Traumatic Bone Cyst) (5 Marks)

Definition: A non-neoplastic, non-epithelial lined (empty) cavity in bone, also called:
  • Simple bone cyst
  • Traumatic bone cyst
  • Hemorrhagic bone cyst
  • Idiopathic bone cavity
  • Unicameral bone cyst
Etiology: Unknown; trauma theory - intramedullary hemorrhage fails to organize and resorbs, leaving an empty cavity.
Clinical Features:
  • Age: 10-20 years (second decade); M = F or slight male predominance
  • Usually asymptomatic (discovered incidentally on routine X-ray)
  • Rarely: mild expansion, pain
  • Vital teeth (important distinguishing feature)
  • No paresthesia
  • Most common jaw site: symphysis/parasymphysis of mandible (premolar-molar region)
Radiological Features:
  • Well-defined unilocular radiolucency
  • Thin or absent corticated border
  • Characteristic "scalloping" between roots of teeth - radiolucency scallops upward between the roots (like "fallen leaves")
  • No root resorption
  • No displacement of teeth
  • No expansion (usually)
  • Empty cavity on aspiration (no fluid)
Histopathology:
  • No epithelial lining (differentiates from true cysts)
  • Thin fibrous connective tissue lining the bone cavity
  • May contain loose connective tissue, blood, or hemosiderin deposits
  • Giant cells, cholesterol clefts occasionally present
Treatment: Surgical exploration - curettage of the bony walls to stimulate bleeding and subsequent bone formation. Spontaneous resolution can occur.
Prognosis: Excellent; recurrence is rare.

Q5. Pindborg Tumour (Calcifying Epithelial Odontogenic Tumour - CEOT) (5 Marks)

Definition: A benign, locally aggressive odontogenic epithelial neoplasm first described by Jens Jorgen Pindborg in 1955.
Synonyms: Calcifying Epithelial Odontogenic Tumor (CEOT), Pindborg tumor
Incidence: ~1% of all odontogenic tumors; rare
Clinical Features:
  • Age: 30-50 years (4th-5th decade)
  • No sex predilection
  • Location: Mandible > Maxilla (2:1); premolar-molar region
  • Slow-growing, painless expansion
  • Two variants:
    • Intraosseous (central) - most common (94%)
    • Extraosseous (peripheral) - rare (6%), presents as gingival swelling
  • Associated with impacted tooth in 50% of cases
Radiological Features:
  • Unilocular or multilocular radiolucency
  • Mixed radiolucent-radiopaque (pathognomonic: "driven snow" appearance)
  • Irregular calcifications within the radiolucency
  • Associated crown of impacted tooth
  • Indistinct borders (locally aggressive)
Histopathology (key features):
  • Sheets, islands, and strands of polyhedral epithelial cells with prominent intercellular bridges
  • Cells have abundant eosinophilic cytoplasm
  • Marked nuclear pleomorphism with hyperchromatism (bizarre giant nuclei) - despite this, behavior is benign
  • Amyloid-like material (Liesegang rings/concentric calcification) - pathognomonic
    • Amyloid stains positive with Congo red, thioflavin T
    • Shows apple-green birefringence under polarized light
  • Liesegang rings - concentric calcifications within amyloid deposits
  • "Driven snow" calcifications correspond to these Liesegang rings on X-ray
Treatment: Conservative surgical excision with marginal resection; enucleation + curettage for smaller lesions.
Recurrence rate: ~14%

Q6. A, B, C, D, E Rule of Malignant Melanoma (5 Marks)

The traditional ABCD rule was extended to the ABCDE rule for early detection of malignant melanoma:
LetterFeatureNormalSuspicious
AAsymmetrySymmetrical (fold equals both halves)Asymmetrical - one half doesn't match the other
BBorderRegular, well-defined smooth borderIrregular, notched, scalloped, or indistinct borders
CColorUniform single colorVariegated - multiple shades of brown, black, red, white, blue
DDiameter<6mm>6mm (size of a pencil eraser); however, amelanotic melanomas can be smaller
EEvolutionStable lesionAny change in size, shape, color, bleeding, itching over time
Additional rules sometimes added:
  • F - Funny looking (ugly duckling sign) - different from other nevi on the patient
  • EFG rule for nodular melanoma: Elevated, Firm, Growing
Oral Malignant Melanoma:
  • Rare (0.5% of all melanomas)
  • Palate and maxillary alveolar ridge most common sites
  • Often presents as painless brown-black macule or nodule
  • May be amelanotic (pink)
  • Poor prognosis: 5-year survival ~20%
  • Staging: Clark's levels, Breslow's thickness
Clark's Levels:
  • Level I: Intraepidermal (in situ)
  • Level II: Into papillary dermis
  • Level III: Filling papillary dermis
  • Level IV: Into reticular dermis
  • Level V: Into subcutaneous fat
Breslow's Thickness: Most important prognostic factor
  • <1 mm: Good prognosis
  • 4 mm: Poor prognosis

Q7. Lipoma (5 Marks)

Definition: A benign mesenchymal neoplasm composed of mature adipose tissue. Most common benign soft tissue tumor in the body; however, relatively rare in the oral cavity (~4% of all benign oral tumors).
Etiology:
  • Unknown; not clearly linked to obesity
  • Trauma, chromosomal abnormality (12q13-15 translocation)
Clinical Features:
  • Age: 40-60 years (middle-aged adults)
  • Site: Buccal mucosa (most common) > floor of mouth > tongue > palate > lips
  • Presents as a soft, fluctuant, painless, well-circumscribed, sessile or pedunculated yellowish submucosal swelling
  • Overlying mucosa: normal or yellowish tinge (if superficial)
  • Doughy consistency (like normal fat)
  • Compressible, non-tender
  • Slow-growing
Variants:
  1. Simple lipoma - most common; purely adipose
  2. Fibrolipoma - with fibrous stroma (most common intraoral variant)
  3. Myxolipoma - myxoid stroma
  4. Angiolipoma - with vascular component; more painful
  5. Spindle cell lipoma - spindle cells + adipocytes
  6. Pleomorphic lipoma - floret giant cells
  7. Sialolipoma - contains salivary gland elements
  8. Infiltrating lipoma - locally infiltrating
Histopathology:
  • Lobules of mature adipocytes (large cells with clear cytoplasm and peripheral/flattened nuclei)
  • Thin fibrous capsule surrounds the tumor
  • Thin fibrous septae divide the lobules
  • Signet ring cells (fat displaces nucleus to periphery)
  • In fibrolipoma: fibrous tissue admixed
  • Lipoblasts absent (differentiates from liposarcoma)
Investigations:
  • MRI: T1 bright (fat signal), T2 bright
  • Fine needle aspiration: adipose tissue
Treatment: Conservative surgical excision; recurrence rare.
Differential Diagnosis: Mucocele (blue, fluctuant), dermoid cyst, lipomatosis, liposarcoma (rare in oral cavity)

Q8. Reed-Sternberg Cells (5 Marks)

Definition: Reed-Sternberg (RS) cells are large, binucleated or multinucleated neoplastic cells that are the hallmark of Hodgkin Lymphoma (HL). First described independently by Dorothy Reed and Carl Sternberg in 1902.
Origin: Derived from germinal center B lymphocytes (confirmed by molecular studies showing clonal IGH gene rearrangements and somatic hypermutation).
Classic Morphology:
  • Large cell (15-45 micrometers in diameter)
  • Binucleated (most characteristic) or multinucleated
  • Two mirror-image nuclei ("owl-eye" appearance) - most pathognomonic feature
  • Each nucleus contains a single large eosinophilic "owl-eye" nucleolus surrounded by a halo
  • Abundant pale/eosinophilic cytoplasm
  • Nuclear membrane is prominent and thick
Variants of RS cells:
VariantDescriptionAssociated HL subtype
Classic RSBinucleated, owl-eye nucleoliMixed cellularity, nodular sclerosis
Lacunar cellsRetraction artifact in formalin; nucleus sits in clear space (lacuna)Nodular sclerosis
Mononuclear (Hodgkin cell)Single nucleus, prominent nucleolusAll subtypes
Lymphocytic/Histiocytic (L&H/"Popcorn")Multilobated nucleus, small nucleolus, pale chromatinNodular lymphocyte predominant HL
Immunohistochemistry:
  • CD15 positive (Leu-M1) - granulocyte marker
  • CD30 positive (Ki-1) - activation marker
  • CD45 negative (LCA)
  • CD20 negative (usually)
  • PAX5 weakly positive
  • EBV (LMP-1) positive in 40% of cases (especially mixed cellularity)
Background cellular milieu: RS cells stimulate surrounding reactive cells: T lymphocytes (CD4+), eosinophils, plasma cells, macrophages, neutrophils - this "reactive background" is essential for diagnosis.
Subtypes of Classic Hodgkin Lymphoma (WHO):
  1. Nodular sclerosis (most common, 65-70%) - lacunar cells
  2. Mixed cellularity (25%) - classic RS cells
  3. Lymphocyte-rich (5%)
  4. Lymphocyte-depleted (rare, worst prognosis)

Q9. Primary Sicca Syndrome (Sjogren's Syndrome) (5 Marks)

Definition: Primary Sjogren's syndrome (pSS) is a chronic autoimmune exocrinopathy characterized by lymphocytic infiltration and destruction of salivary and lacrimal glands, causing xerostomia (dry mouth) and keratoconjunctivitis sicca (dry eyes) in the absence of another connective tissue disorder.
(Secondary SS occurs in association with rheumatoid arthritis, SLE, scleroderma, etc.)
Etiology/Pathogenesis:
  • Autoimmune: T-cell and B-cell mediated
  • Autoantigens: SS-A/Ro and SS-B/La antigens
  • Genetic: HLA-DR3, HLA-B8 association
  • Possible triggers: EBV, HCV, retroviruses
  • Female predominance (9:1); peak age 40-60 years
Clinical Features:
Ocular:
  • Keratoconjunctivitis sicca - gritty/sandy feeling in eyes
  • Reduced Schirmer's test (<5mm in 5 minutes)
Oral:
  • Xerostomia (dry mouth): difficulty chewing, swallowing, speaking
  • Erythematous mucosa, lobulated/fissured tongue (bald tongue)
  • Rampant cervical caries (dry mouth reduces buffering)
  • Candidiasis (frequent complication)
  • Bilateral parotid gland enlargement (firm, non-tender)
  • Dysphagia
Systemic:
  • Arthralgia/arthritis
  • Raynaud's phenomenon
  • Peripheral neuropathy
  • Renal tubular acidosis
  • Lymphoma (B-cell NHL; 40x increased risk - most serious complication)
Diagnostic Tests:
  • Schirmer's tear test
  • Rose Bengal staining
  • Minor salivary gland biopsy (lip biopsy - gold standard)
  • Sialometry (unstimulated salivary flow <1.5 mL/15 min)
  • Scintigraphy of parotid
  • Anti-Ro/SS-A and Anti-La/SS-B antibodies (positive in ~70%)
  • ANA, RF positive
Histopathology of Minor Salivary Gland Biopsy:
  • Lymphocytic infiltration in periductal and periacinar areas
  • Focus score: >1 focus (>50 lymphocytes) per 4mm² - diagnostic
  • Acinar atrophy and loss
  • Epimyoepithelial islands (in parotid)
Classification: American-European Consensus Group Criteria (2002); ACR/EULAR 2016 criteria.
Treatment:
  • Symptomatic: artificial saliva, pilocarpine (muscarinic agonist), cevimeline
  • Artificial tears, lubricating eye drops
  • Preventive: fluoride, antifungals
  • Systemic: hydroxychloroquine, corticosteroids, rituximab (for systemic features)

Q10. Histopathology of Fibrous Dysplasia (5 Marks)

Definition: A benign, non-neoplastic fibro-osseous lesion where normal medullary bone is replaced by abnormally proliferating fibrous tissue containing irregular woven bone trabeculae. Results from a somatic mutation in the GNAS1 gene (chromosome 20q13.2) encoding the alpha-subunit of Gs protein.
Types:
  1. Monostotic (70-80%): Single bone involvement; most common in jaws
  2. Polyostotic (20-30%): Multiple bones
  3. Craniofacial subtype
  4. McCune-Albright Syndrome: Polyostotic FD + cafe-au-lait spots ("coast of Maine" smooth borders) + endocrine hyperfunction (precocious puberty)
  5. Mazabraud syndrome: FD + intramuscular myxomas
Histopathology - Key Features:
1. Fibrous Component:
  • Cellular fibrous stroma with spindle-shaped fibroblasts arranged in a swirling/whorled (storiform) pattern
  • Loose to moderately dense connective tissue
  • No encapsulation - lesion merges with surrounding bone
2. Bony Component (most characteristic):
  • Irregular, curvilinear ("Chinese letters" or "alphabet soup") trabeculae of woven bone
  • Trabeculae lack osteoblastic rimming (important differentiating feature from ossifying fibroma)
  • Woven bone (immature bone) - not lamellar
  • Trabeculae vary in size and shape
  • Some areas may show more calcification in older lesions (maturing to lamellar bone)
3. Giant cells:
  • Occasional osteoclast-like giant cells at edges of trabeculae
  • Foamy histiocytes may be present
4. Blood vessels:
  • Scattered thin-walled blood vessels in the stroma
Distinguishing Fibrous Dysplasia from Ossifying Fibroma:
FeatureFibrous DysplasiaOssifying Fibroma
Bone trabeculaeChinese letter/irregular woven boneRounded/spherical bony lamellae
Osteoblastic rimmingABSENTPRESENT
BorderBlends with normal boneWell-defined, encapsulated
RecurrenceLow (burns out after puberty)Tends to recur
Radiological correlation:
  • "Ground glass" appearance (most classic)
  • "Orange peel" or "fingerprint" pattern
  • Bowing/expansion of cortex without perforation

SHORT ANSWERS (5 x 2 = 10 Marks)


Q11. Thistle Tube Pulp Chamber (2 Marks)

  • A morphological variant/shape of the pulp chamber seen on periapical radiographs
  • Resembles a "thistle tube" or "vase shape" - narrow at the top (cervical region) and wide/bulbous inferiorly
  • Characteristically seen in dentinogenesis imperfecta (Type I, II, III) (hereditary opalescent dentin)
  • Also called "Shell teeth" variant in Type III (Brandywine type)
  • The pulp chambers and canals are partially or completely obliterated by abnormal dentin deposition
  • Teeth appear translucent/opalescent clinically with amber-brown discoloration
  • Results from the gene mutation in DSPP gene (dentin sialophosphoprotein) for Types II and III

Q12. Touton Type Giant Cells (2 Marks)

  • A specific type of multinucleated giant cell (MGC) with a characteristic morphology
  • Morphology:
    • Ring/wreath of nuclei arranged in a circle in the center of the cell
    • Central homogeneous eosinophilic cytoplasm (inside the ring of nuclei)
    • Peripheral foamy/xanthomatous cytoplasm (outside the ring - lipid-laden)
    • "Wreath-like" or "garland-like" arrangement of nuclei
  • Seen in:
    • Xanthoma and xanthomatosis
    • Juvenile xanthogranuloma (JXG) - most characteristic
    • Necrobiotic xanthogranuloma
    • Dermatofibroma
    • Xanthomatous giant cell arteritis
  • Distinguished from: Langhan's cells (nuclei at periphery in horseshoe), Foreign body giant cells (nuclei scattered throughout)

Q13. Tadpole Shaped Cells (2 Marks)

  • Tadpole cells (also called "tadpole-shaped cells") are a cytological/histological feature
  • Morphology: Cells with a broad head and a tapering tail resembling a tadpole
  • Seen in:
    • Rhabdomyosarcoma (embryonal type) - most classic association in oral pathology
    • Squamous cell carcinoma (individual dyskeratotic cells)
    • Spindle cell carcinoma - pleomorphic carcinoma
  • In rhabdomyosarcoma:
    • Represent primitive rhabdomyoblasts
    • Cells show eosinophilic cytoplasm with eccentric nuclei
    • Cross-striations may be visible in well-differentiated areas
    • Desmin, MyoD1, myogenin positive on IHC
  • Also described in: some carcinomas showing squamous differentiation with keratinization

Q14. Snail Track Ulcer (2 Marks)

  • A characteristic pattern of oral ulceration
  • Morphology: Serpiginous (snake-like/winding), shallow, superficial ulcers with irregular, undermined edges - resembling the slime trail left by a snail
  • Seen in:
    • Secondary syphilis - most classic and important association
      • Multiple, painless, shallow, serpiginous ulcers on oral mucosa
      • "Mucous patches" of secondary syphilis when on mucosa
      • Highly infectious (Treponema pallidum present)
    • Tertiary syphilis (gummatous ulcers, more destructive)
  • Other associations:
    • Herpes zoster (when herpetic vesicles rupture and coalesce)
    • Erythema multiforme (occasional)
  • Diagnosis: Dark field microscopy, VDRL, FTA-ABS tests

Q15. Cafe-au-lait Spots (2 Marks)

  • Definition: Flat, well-demarcated, hyperpigmented macules with a color resembling "coffee with milk" (light brown/tan); due to melanin accumulation in keratinocytes
  • Significance: These are cutaneous markers of several systemic syndromes
FeatureNF-1 (von Recklinghausen)McCune-Albright Syndrome
Number6 or more (diagnostic)Fewer, but larger
Size>5mm (pre-pubertal); >15mm (post-pubertal)Large
BorderIrregular - "Coast of California"Smooth - "Coast of Maine"
DistributionGeneralizedUnilateral (follows Blaschko's lines)
  • Normal population: Up to 1-2 cafe-au-lait spots are normal
  • Syndromes associated:
    1. Neurofibromatosis type 1 (NF-1) - 6+ spots are diagnostic criterion
    2. McCune-Albright syndrome (polyostotic fibrous dysplasia)
    3. Legius syndrome (SPRED1 gene)
    4. Bloom syndrome
    5. Fanconi anemia
    6. Tuberous sclerosis (rarely)
  • Axillary and inguinal freckling (Crowe's sign) = small cafe-au-lait spots in body folds; specific for NF-1

All answers prepared for Rajiv Gandhi University of Health Sciences, III BDS Oral Pathology & Microbiology (RS3), Q.P. Code: 1188, Nov 2021 exam. Diagrams of fibrous dysplasia trabeculae, RS cells, and dentigerous cyst variants should be drawn where indicated in the actual exam.

Create a comprehensive study guide PDF for oral pathology

Reading File
Running Command

ls /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/oral-path-guide

Writing File

~/oral-path-guide/generate_study_guide.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, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
from reportlab.lib.colors import HexColor
import os

OUTPUT_PATH = "/home/daytona/workspace/oral-path-guide/Oral_Pathology_Study_Guide.pdf"

# ── Color Palette ──────────────────────────────────────────────────
NAVY       = HexColor("#1A237E")
TEAL       = HexColor("#00695C")
ORANGE     = HexColor("#E65100")
LIGHT_BLUE = HexColor("#E3F2FD")
LIGHT_GREEN= HexColor("#E8F5E9")
LIGHT_ORANGE=HexColor("#FFF3E0")
LIGHT_TEAL = HexColor("#E0F2F1")
GOLD       = HexColor("#F9A825")
WHITE      = colors.white
DARK_GRAY  = HexColor("#37474F")
MID_GRAY   = HexColor("#90A4AE")
LIGHT_GRAY = HexColor("#ECEFF1")
RED_DARK   = HexColor("#B71C1C")
PURPLE     = HexColor("#4A148C")

# ── Styles ─────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, **kw)

title_style = S("DocTitle",
    fontSize=28, textColor=WHITE, fontName="Helvetica-Bold",
    alignment=TA_CENTER, leading=34, spaceAfter=6)

subtitle_style = S("DocSubtitle",
    fontSize=14, textColor=HexColor("#B3E5FC"), fontName="Helvetica",
    alignment=TA_CENTER, leading=18)

part_style = S("Part",
    fontSize=20, textColor=WHITE, fontName="Helvetica-Bold",
    alignment=TA_CENTER, leading=26)

h1_style = S("H1",
    fontSize=16, textColor=NAVY, fontName="Helvetica-Bold",
    spaceBefore=14, spaceAfter=6, leading=20,
    borderPad=4)

h2_style = S("H2",
    fontSize=13, textColor=TEAL, fontName="Helvetica-Bold",
    spaceBefore=10, spaceAfter=4, leading=17)

h3_style = S("H3",
    fontSize=11, textColor=ORANGE, fontName="Helvetica-Bold",
    spaceBefore=8, spaceAfter=3, leading=14)

body_style = S("Body",
    fontSize=10, textColor=DARK_GRAY, fontName="Helvetica",
    spaceBefore=3, spaceAfter=3, leading=14, alignment=TA_JUSTIFY)

bullet_style = S("Bullet",
    fontSize=10, textColor=DARK_GRAY, fontName="Helvetica",
    spaceBefore=2, spaceAfter=2, leading=13,
    leftIndent=16, bulletIndent=6)

note_style = S("Note",
    fontSize=9.5, textColor=RED_DARK, fontName="Helvetica-BoldOblique",
    spaceBefore=4, spaceAfter=4, leading=13,
    leftIndent=10)

mnemonic_style = S("Mnemonic",
    fontSize=10, textColor=PURPLE, fontName="Helvetica-Bold",
    spaceBefore=4, spaceAfter=4, leading=14,
    leftIndent=10)

def B(text): return f"<b>{text}</b>"
def I(text): return f"<i>{text}</i>"
def BI(text): return f"<b><i>{text}</i></b>"
def C(text, c): return f'<font color="{c}">{text}</font>'

def p(text, style=None): return Paragraph(text, style or body_style)
def h1(text): return Paragraph(text, h1_style)
def h2(text): return Paragraph(text, h2_style)
def h3(text): return Paragraph(text, h3_style)
def bp(text): return Paragraph(f"• {text}", bullet_style)
def note(text): return Paragraph(f"★ {text}", note_style)
def mnemonic(text): return Paragraph(f"🔑 {text}", mnemonic_style)
def sp(n=6): return Spacer(1, n)
def hr(): return HRFlowable(width="100%", thickness=0.5, color=MID_GRAY, spaceAfter=4, spaceBefore=4)

def colored_box(content_list, bg_color=LIGHT_BLUE, border_color=NAVY):
    """Wrap content in a colored box using a 1-cell table."""
    inner = Table([[content_list]], colWidths=["100%"])
    inner.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg_color),
        ("BOX", (0,0), (-1,-1), 1, border_color),
        ("TOPPADDING", (0,0), (-1,-1), 8),
        ("BOTTOMPADDING", (0,0), (-1,-1), 8),
        ("LEFTPADDING", (0,0), (-1,-1), 10),
        ("RIGHTPADDING", (0,0), (-1,-1), 10),
    ]))
    return inner

def make_table(headers, rows, col_widths=None, header_bg=NAVY, alt_bg=LIGHT_BLUE):
    """Helper to build a styled table."""
    data = [[Paragraph(B(h), S("th", fontSize=9.5, textColor=WHITE,
                               fontName="Helvetica-Bold", leading=13))
             for h in headers]]
    for i, row in enumerate(rows):
        data.append([Paragraph(str(cell),
                               S(f"td{i}", fontSize=9, textColor=DARK_GRAY,
                                 fontName="Helvetica", leading=12))
                     for cell in row])
    page_w = A4[0] - 4*cm
    if col_widths is None:
        col_widths = [page_w / len(headers)] * len(headers)
    t = Table(data, colWidths=col_widths)
    style = [
        ("BACKGROUND", (0,0), (-1,0), header_bg),
        ("TEXTCOLOR", (0,0), (-1,0), WHITE),
        ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
        ("FONTSIZE", (0,0), (-1,0), 9.5),
        ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, alt_bg]),
        ("GRID", (0,0), (-1,-1), 0.4, MID_GRAY),
        ("TOPPADDING", (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING", (0,0), (-1,-1), 6),
        ("RIGHTPADDING", (0,0), (-1,-1), 6),
        ("VALIGN", (0,0), (-1,-1), "TOP"),
    ]
    t.setStyle(TableStyle(style))
    return t

# ══════════════════════════════════════════════════════════════════
# PAGE TEMPLATE WITH HEADER/FOOTER
# ══════════════════════════════════════════════════════════════════
class OralPathDocTemplate(BaseDocTemplate):
    def __init__(self, filename, **kw):
        BaseDocTemplate.__init__(self, filename, **kw)
        frame = Frame(self.leftMargin, self.bottomMargin,
                      self.width, self.height, id="main")
        template = PageTemplate(id="main", frames=frame,
                                onPage=self._on_page)
        self.addPageTemplates([template])

    def _on_page(self, canvas, doc):
        canvas.saveState()
        # Header bar (skip page 1 - cover)
        if doc.page > 1:
            canvas.setFillColor(NAVY)
            canvas.rect(0, A4[1]-1.1*cm, A4[0], 1.1*cm, fill=1, stroke=0)
            canvas.setFont("Helvetica-Bold", 9)
            canvas.setFillColor(WHITE)
            canvas.drawString(1.5*cm, A4[1]-0.75*cm, "ORAL PATHOLOGY & MICROBIOLOGY – COMPREHENSIVE STUDY GUIDE")
            canvas.drawRightString(A4[0]-1.5*cm, A4[1]-0.75*cm, f"Page {doc.page}")

            # Footer
            canvas.setFillColor(LIGHT_GRAY)
            canvas.rect(0, 0, A4[0], 0.8*cm, fill=1, stroke=0)
            canvas.setFont("Helvetica", 7.5)
            canvas.setFillColor(DARK_GRAY)
            canvas.drawCentredString(A4[0]/2, 0.28*cm,
                "III BDS – Rajiv Gandhi University of Health Sciences  |  For Educational Purposes Only")
        canvas.restoreState()


# ══════════════════════════════════════════════════════════════════
# COVER PAGE
# ══════════════════════════════════════════════════════════════════
def cover_page():
    elems = []
    # Big colored header block
    cover_table = Table(
        [[Paragraph("ORAL PATHOLOGY", title_style)],
         [Paragraph("& MICROBIOLOGY", title_style)],
         [sp(4)],
         [Paragraph("COMPREHENSIVE STUDY GUIDE", subtitle_style)],
         [sp(8)],
         [Paragraph("III BDS  •  Rajiv Gandhi University of Health Sciences, Karnataka", subtitle_style)],
        ],
        colWidths=[A4[0]-4*cm]
    )
    cover_table.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), NAVY),
        ("TOPPADDING", (0,0), (-1,-1), 10),
        ("BOTTOMPADDING", (0,0), (-1,-1), 10),
        ("LEFTPADDING", (0,0), (-1,-1), 20),
        ("RIGHTPADDING", (0,0), (-1,-1), 20),
        ("BOX", (0,0), (-1,-1), 2, GOLD),
    ]))
    elems.append(sp(30))
    elems.append(cover_table)
    elems.append(sp(20))

    # Info boxes
    info = [
        ("📚 Topics Covered", "Potentially Malignant Disorders  •  Leukoplakia  •  Neural Tumors  •  Neurofibromatosis  •  Dentigerous Cyst  •  Solitary Bone Cyst  •  Pindborg Tumour  •  Malignant Melanoma  •  Lipoma  •  Reed-Sternberg Cells  •  Sjogren's Syndrome  •  Fibrous Dysplasia  •  Oral Infections & More"),
        ("🎯 Exam Focus", "Long Essays  •  Short Essays  •  Short Answers  •  Key Mnemonics  •  Comparison Tables  •  Histopathology Highlights"),
        ("📅 Edition", "Based on RGUHS QP Code 1188  •  17-Nov-2021  |  Updated 2024"),
    ]
    for icon_title, desc in info:
        t = Table([[Paragraph(B(icon_title), S("it", fontSize=11, textColor=TEAL,
                                               fontName="Helvetica-Bold", leading=14)),
                    Paragraph(desc, S("id", fontSize=9.5, textColor=DARK_GRAY,
                                     fontName="Helvetica", leading=13))
                   ]],
                  colWidths=[5*cm, A4[0]-4*cm-5*cm])
        t.setStyle(TableStyle([
            ("BACKGROUND", (0,0), (-1,-1), LIGHT_BLUE),
            ("BOX", (0,0), (-1,-1), 1, NAVY),
            ("TOPPADDING", (0,0), (-1,-1), 8),
            ("BOTTOMPADDING", (0,0), (-1,-1), 8),
            ("LEFTPADDING", (0,0), (-1,-1), 10),
            ("RIGHTPADDING", (0,0), (-1,-1), 10),
            ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
        ]))
        elems.append(t)
        elems.append(sp(8))

    elems.append(PageBreak())
    return elems


# ══════════════════════════════════════════════════════════════════
# TABLE OF CONTENTS
# ══════════════════════════════════════════════════════════════════
def toc_page():
    elems = []
    elems.append(sp(10))
    elems.append(h1("TABLE OF CONTENTS"))
    elems.append(hr())
    elems.append(sp(6))

    toc_items = [
        ("PART A – LONG ESSAYS", "", NAVY, True),
        ("1.", "Potentially Malignant Disorders & Leukoplakia", DARK_GRAY, False),
        ("2.", "Neural Tumors & Neurofibromatosis", DARK_GRAY, False),
        ("PART B – SHORT ESSAYS", "", NAVY, True),
        ("3.", "Radiological Variants of Dentigerous Cyst", DARK_GRAY, False),
        ("4.", "Solitary Bone Cyst (Traumatic Bone Cyst)", DARK_GRAY, False),
        ("5.", "Pindborg Tumour (CEOT)", DARK_GRAY, False),
        ("6.", "ABCDE Rule of Malignant Melanoma", DARK_GRAY, False),
        ("7.", "Lipoma", DARK_GRAY, False),
        ("8.", "Reed-Sternberg Cells", DARK_GRAY, False),
        ("9.", "Primary Sicca Syndrome (Sjogren's Syndrome)", DARK_GRAY, False),
        ("10.", "Histopathology of Fibrous Dysplasia", DARK_GRAY, False),
        ("PART C – SHORT ANSWERS", "", NAVY, True),
        ("11.", "Thistle Tube Pulp Chamber", DARK_GRAY, False),
        ("12.", "Touton Type Giant Cells", DARK_GRAY, False),
        ("13.", "Tadpole Shaped Cells", DARK_GRAY, False),
        ("14.", "Snail Track Ulcer", DARK_GRAY, False),
        ("15.", "Cafe-au-lait Spots", DARK_GRAY, False),
        ("PART D – QUICK REVISION", "", NAVY, True),
        ("", "Key Comparison Tables", DARK_GRAY, False),
        ("", "Important Mnemonics", DARK_GRAY, False),
        ("", "Examination Tips", DARK_GRAY, False),
    ]

    for num, title, color, is_header in toc_items:
        if is_header:
            elems.append(sp(6))
            row_bg = NAVY
            txt = Paragraph(f"{num} {title}" if num else title,
                            S("toch", fontSize=11, textColor=WHITE,
                              fontName="Helvetica-Bold", leading=15))
        else:
            row_bg = LIGHT_BLUE if int(toc_items.index((num,title,color,is_header))) % 2 == 0 else WHITE
            txt = Paragraph(f"{num}  {title}",
                            S("tocb", fontSize=10, textColor=color,
                              fontName="Helvetica", leading=14))
        t = Table([[txt]], colWidths=[A4[0]-4*cm])
        t.setStyle(TableStyle([
            ("BACKGROUND", (0,0), (-1,-1), row_bg),
            ("TOPPADDING", (0,0), (-1,-1), 5 if is_header else 4),
            ("BOTTOMPADDING", (0,0), (-1,-1), 5 if is_header else 4),
            ("LEFTPADDING", (0,0), (-1,-1), 12),
            ("RIGHTPADDING", (0,0), (-1,-1), 12),
            ("BOX", (0,0), (-1,-1), 0.3, MID_GRAY),
        ]))
        elems.append(t)

    elems.append(PageBreak())
    return elems


# ══════════════════════════════════════════════════════════════════
# PART A – LONG ESSAYS
# ══════════════════════════════════════════════════════════════════
def part_a():
    elems = []

    # Part Banner
    banner = Table([[Paragraph("PART A — LONG ESSAYS  (2 × 10 = 20 Marks)", part_style)]],
                   colWidths=[A4[0]-4*cm])
    banner.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), NAVY),
        ("TOPPADDING", (0,0), (-1,-1), 12),
        ("BOTTOMPADDING", (0,0), (-1,-1), 12),
        ("BOX", (0,0), (-1,-1), 2, GOLD),
    ]))
    elems.append(banner)
    elems.append(sp(14))

    # ── Q1: Leukoplakia ──────────────────────────────────────────
    elems.append(h1("Q1. Potentially Malignant Disorders & Leukoplakia"))
    elems.append(hr())
    elems.append(sp(4))

    elems.append(h2("A. Oral Potentially Malignant Disorders (OPMDs)"))
    elems.append(p(f"{B('WHO Definition (2005, revised 2017):')} Clinical presentations that carry a risk of cancer development in the oral cavity, whether in a clinically definable precursor lesion or in clinically normal oral mucosa."))
    elems.append(sp(4))
    elems.append(p(B("Complete List of OPMDs:")))

    opmd_items = [
        ("1", "Leukoplakia", "Most common OPMD; 0.2–3.4% prevalence"),
        ("2", "Erythroplakia", "Highest malignant transformation (~50%)"),
        ("3", "Erythroleukoplakia (Speckled)", "Mixed red + white; intermediate risk"),
        ("4", "Oral Submucous Fibrosis (OSMF)", "Areca nut chewing; Indian subcontinent"),
        ("5", "Oral Lichen Planus", "Erosive/atrophic types carry risk"),
        ("6", "Actinic Keratosis / Cheilitis", "UV radiation; lower lip"),
        ("7", "Palatal changes (Reverse smoking)", "Nicotinic stomatitis"),
        ("8", "Discoid Lupus Erythematosus", "Autoimmune; mucosal form"),
        ("9", "Dyskeratosis Congenita", "X-linked; leukoplakia + nail dystrophy + skin pigmentation"),
    ]
    elems.append(make_table(["#", "Disorder", "Key Feature"],
                            opmd_items, [1*cm, 7*cm, 8.5*cm]))
    elems.append(sp(10))

    elems.append(h2("B. Leukoplakia – In Detail"))
    elems.append(p(f"{B('Definition:')} A white plaque of questionable risk having excluded other known diseases or disorders that carry no increased risk for cancer. {I('(WHO 2005)')}"))
    elems.append(sp(4))

    elems.append(h3("Etiology"))
    etiol = [
        ("Tobacco (most important)", "Cigarettes, bidis, hookah, smokeless – 6× increased risk"),
        ("Alcohol", "Potentiates tobacco effect synergistically"),
        ("Candida albicans", "Superimposed infection; may cause 'candidal leukoplakia'"),
        ("HPV (16, 18)", "Especially in Proliferative Verrucous Leukoplakia (PVL)"),
        ("Sanguinaria", "Herbal toothpaste ingredient; alveolar leukoplakia"),
        ("UV Radiation", "Actinic cheilitis of lips"),
        ("Nutritional deficiency", "Iron, B12, folate"),
        ("Idiopathic", "Up to 20% of cases; higher malignant potential"),
    ]
    elems.append(make_table(["Cause", "Notes"], etiol, [7.5*cm, 9*cm]))
    elems.append(sp(8))

    elems.append(h3("Sites & Malignant Potential"))
    sites = [
        ("Buccal Mucosa", "Most common overall site"),
        ("Floor of Mouth + Ventral Tongue", "HIGHEST malignant transformation potential"),
        ("Lower Lip", "Actinic involvement; moderate risk"),
        ("Commissures, Gingiva, Palate", "Variable"),
        ("Retromolar Pad", "High risk"),
    ]
    elems.append(make_table(["Site", "Note"], sites, [8*cm, 8.5*cm]))
    elems.append(sp(8))

    elems.append(h3("Clinical Classification"))
    clin = [
        ("Homogeneous", "Uniform flat white plaque; smooth/finely wrinkled surface", "LOW"),
        ("Non-homogeneous – Erythroleukoplakia", "Mixed red and white (speckled)", "HIGH"),
        ("Non-homogeneous – Verrucous", "Irregular, corrugated, exophytic surface", "HIGH"),
        ("Non-homogeneous – Nodular", "Small red/white nodular projections", "HIGH"),
        ("Proliferative Verrucous (PVL)", "Multifocal, irreversible; F>M; HPV assoc.", "HIGHEST"),
    ]
    elems.append(make_table(["Type", "Features", "Malignant Risk"],
                            clin, [4.5*cm, 9*cm, 3*cm]))
    elems.append(sp(8))

    elems.append(h3("Histopathology & Epithelial Dysplasia Grading"))
    elems.append(p("The epithelium shows hyperkeratosis (hyperorthokeratosis or hyperparakeratosis) and acanthosis. The key finding is epithelial dysplasia graded as:"))
    dysplasia = [
        ("Mild", "Lower 1/3 of epithelium involved", "Low risk"),
        ("Moderate", "Lower 2/3 of epithelium", "Intermediate"),
        ("Severe", ">2/3 but basement membrane intact", "High risk"),
        ("Carcinoma in Situ", "Full thickness; BM intact", "Treat as malignant"),
    ]
    elems.append(make_table(["Grade", "Extent", "Clinical Implication"],
                            dysplasia, [4*cm, 8*cm, 4.5*cm]))
    elems.append(sp(6))
    elems.append(p(B("WHO Criteria for Dysplasia (any 5+ = dysplasia):")))
    for feat in [
        "Loss of polarity of basal cells",
        "Basal cell hyperplasia",
        "Drop-shaped rete ridges",
        "Increased nuclear:cytoplasmic (N:C) ratio",
        "Nuclear hyperchromatism & pleomorphism",
        "Abnormal mitoses (esp. in upper layers)",
        "Individual cell keratinization (dyskeratosis)",
        "Loss of cellular cohesion",
        "Two-cell-thick or thicker suprabasal mitoses",
    ]:
        elems.append(bp(feat))
    elems.append(sp(8))

    elems.append(h3("Risk Factors for Malignant Transformation"))
    elems.append(mnemonic("Mnemonic: 'FANSLD' – Female, Alveolar/FOM, Non-smoker, Size >200mm², Long duration, Dysplasia present"))
    risk = [
        ("Non-homogeneous type", "High"),
        ("Floor of mouth / ventral tongue", "High"),
        ("Female gender, non-smoker (paradox)", "High"),
        ("Moderate-severe dysplasia on biopsy", "Very High"),
        ("Size > 200 mm2", "High"),
        ("Duration > 5 years", "Moderate"),
        ("Idiopathic leukoplakia", "Higher than tobacco-related"),
        ("PVL subtype", "Highest – nearly all transform"),
    ]
    elems.append(make_table(["Risk Factor", "Level"], risk, [10*cm, 6.5*cm]))
    elems.append(sp(8))

    elems.append(h3("Management"))
    mgmt = [
        ("Step 1", "Eliminate etiology (tobacco cessation, antifungals)"),
        ("Step 2", "Biopsy – punch/incisional (mandatory for diagnosis and dysplasia grading)"),
        ("Step 3", "Surgical excision (gold standard) or CO2 laser ablation"),
        ("Step 4", "Photodynamic therapy (PDT) – alternative"),
        ("Step 5", "Topical retinoids (high recurrence ~30%)"),
        ("Step 6", "Lifelong follow-up every 3–6 months"),
    ]
    elems.append(make_table(["Step", "Action"], mgmt, [2.5*cm, 14*cm]))
    elems.append(sp(4))
    elems.append(note("Overall malignant transformation rate: 0.7–2.9%. Recurrence after treatment: 10–34%."))
    elems.append(sp(10))
    elems.append(PageBreak())

    # ── Q2: Neural Tumors & Neurofibromatosis ──────────────────────
    elems.append(h1("Q2. Neural Tumors – Classification & Neurofibromatosis"))
    elems.append(hr())
    elems.append(sp(4))

    elems.append(h2("A. Classification of Neural Tumors"))
    neural_class = [
        ("Traumatic Neuroma", "Benign", "Non-neoplastic; most common; lip/mental nerve"),
        ("Palisaded Encapsulated Neuroma (PEN)", "Benign", "Palate; encapsulated; no systemic association"),
        ("Neurofibroma", "Benign", "NF-1 associated; plexiform is pathognomonic"),
        ("Schwannoma (Neurilemmoma)", "Benign", "Encapsulated; Antoni A & B; S-100+"),
        ("Granular Cell Tumor", "Benign", "Tongue; pseudoepitheliomatous hyperplasia above"),
        ("Mucosal Neuroma", "Benign", "MEN 2B; tongue/lips"),
        ("MPNST", "Malignant", "Arises in NF-1; poor prognosis"),
        ("Neuroblastoma", "Malignant", "Children; adrenal/jaw"),
        ("PNET", "Malignant", "Primitive neuroectodermal tumor"),
        ("Malignant Granular Cell Tumor", "Malignant", "Rare; rapid growth"),
    ]
    elems.append(make_table(["Tumor", "Nature", "Key Feature"],
                            neural_class, [6*cm, 3*cm, 7.5*cm]))
    elems.append(sp(10))

    elems.append(h2("B. Neurofibromatosis – Types"))
    nf_types = [
        ("Gene", "NF1 – chr. 17q11.2", "NF2 – chr. 22q12"),
        ("Gene product", "Neurofibromin (tumor suppressor)", "Merlin / Schwannomin"),
        ("Prevalence", "1 : 3,000 (most common)", "1 : 25,000"),
        ("Inheritance", "Autosomal dominant (50% new mutation)", "Autosomal dominant"),
        ("Hallmark", "Multiple neurofibromas + CAL spots", "Bilateral acoustic neuromas"),
        ("Lisch nodules", "Present (iris hamartomas)", "Absent"),
    ]
    elems.append(make_table(["Feature", "NF-1 (von Recklinghausen)", "NF-2"],
                            nf_types, [4.5*cm, 7.5*cm, 4.5*cm]))
    elems.append(sp(10))

    elems.append(h2("C. NF-1 Diagnostic Criteria (NIH) – 2 or more required"))
    elems.append(mnemonic("Mnemonic: 'CALF On Spine' – CAL spots (6+), Axillary freckling, Lisch nodules, Fibromas (2+), Optic glioma, Neurofibromas (plexiform), Skeletal dysplasia, First-degree relative"))
    nih = [
        ("1", "Six or more cafe-au-lait macules", ">5 mm prepubertal; >15 mm postpubertal"),
        ("2", "Two or more neurofibromas / 1 plexiform", "Plexiform is pathognomonic of NF-1"),
        ("3", "Axillary / inguinal freckling", "Crowe's sign"),
        ("4", "Optic pathway glioma", "Most common CNS tumor in NF-1"),
        ("5", "Two or more Lisch nodules", "Iris hamartomas on slit-lamp"),
        ("6", "Distinctive osseous lesion", "Sphenoid dysplasia; tibial bowing"),
        ("7", "First-degree relative with NF-1", "Using above criteria"),
    ]
    elems.append(make_table(["#", "Criterion", "Details"], nih, [1*cm, 7*cm, 8.5*cm]))
    elems.append(sp(8))

    elems.append(h3("Oral Manifestations of NF-1"))
    for item in [
        "Neurofibroma of tongue, buccal mucosa, gingiva",
        "Plexiform neurofibroma causing macroglossia or facial asymmetry",
        "Enlargement of mandibular canal and mental foramen",
        "Loss/rarefaction of lamina dura",
        "Irregular alveolar bone trabeculation",
        "TMJ abnormalities; coronoid hyperplasia",
        "Premature exfoliation of teeth (rare)",
    ]:
        elems.append(bp(item))
    elems.append(sp(8))

    elems.append(h3("Histopathology of Neurofibroma vs Schwannoma"))
    histo_nn = [
        ("Encapsulation", "ABSENT (unencapsulated)", "PRESENT (well-encapsulated)"),
        ("Cell types", "Schwann cells + fibroblasts + perineurial cells", "Schwann cells predominantly"),
        ("Nuclear shape", "Wavy / buckled ('carrot-shaped') nuclei", "Elongated; palisaded"),
        ("Architecture", "Loose myxoid stroma", "Antoni A (palisaded) + Antoni B (loose)"),
        ("Verocay bodies", "Absent", "PRESENT (nuclear palisading around acellular zones)"),
        ("Mast cells", "Characteristic, numerous", "Fewer"),
        ("S-100 protein", "Positive (Schwann cells)", "Strongly positive"),
        ("Palisading", "ABSENT", "PRESENT"),
    ]
    elems.append(make_table(["Feature", "Neurofibroma", "Schwannoma"],
                            histo_nn, [5*cm, 6.5*cm, 5*cm]))
    elems.append(sp(6))
    elems.append(note("Complications of NF-1: Malignant transformation (MPNST ~10%), learning disabilities, epilepsy, hypertension (pheochromocytoma), scoliosis, optic glioma."))
    elems.append(PageBreak())

    return elems


# ══════════════════════════════════════════════════════════════════
# PART B – SHORT ESSAYS
# ══════════════════════════════════════════════════════════════════
def part_b():
    elems = []

    banner = Table([[Paragraph("PART B — SHORT ESSAYS  (8 × 5 = 40 Marks)", part_style)]],
                   colWidths=[A4[0]-4*cm])
    banner.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), TEAL),
        ("TOPPADDING", (0,0), (-1,-1), 12),
        ("BOTTOMPADDING", (0,0), (-1,-1), 12),
        ("BOX", (0,0), (-1,-1), 2, GOLD),
    ]))
    elems.append(banner)
    elems.append(sp(14))

    # Q3 Dentigerous Cyst ────────────────────────────────────────
    elems.append(h1("Q3. Radiological Variants of Dentigerous Cyst"))
    elems.append(hr())
    elems.append(p(f"{B('Definition:')} Odontogenic cyst arising from separation of follicular epithelium from the crown of an unerupted/impacted tooth, attached at the cemento-enamel junction (CEJ)."))
    elems.append(sp(4))
    elems.append(h3("Standard Radiological Features"))
    for f in [
        "Well-defined unilocular radiolucency with corticated (sclerotic) border",
        "Crown of unerupted tooth projects into the cystic lumen",
        "Attached at the cemento-enamel junction (CEJ) all around",
        "Most common associated tooth: mandibular 3rd molar > maxillary canine > maxillary 3rd molar",
    ]:
        elems.append(bp(f))
    elems.append(sp(6))
    elems.append(h3("Three Radiological Variants"))
    variants = [
        ("Central\n(Pericoronal)", "90% of cases", "Radiolucency symmetrically surrounds the crown; crown projects centrally into the cystic space; attached all around at CEJ", "Most common; classic appearance"),
        ("Lateral", "Rare", "Cyst develops to one side of the crown/root; radiolucency on lateral aspect; partially erupted tooth often", "Mimic periodontal/lateral periodontal cyst"),
        ("Circumferential", "Rare", "Cystic sac envelops the entire tooth including root surface; cyst surrounds crown AND portion of root", "Distinguish from OKC & ameloblastoma"),
    ]
    elems.append(make_table(["Variant", "Frequency", "Radiological Description", "Clinical Note"],
                            variants, [2.5*cm, 2*cm, 8*cm, 4*cm]))
    elems.append(sp(6))
    elems.append(note("DD: OKC (scalloped edges, often displaces teeth more), Unicystic Ameloblastoma, AOT (pericoronal + calcifications), Eruption cyst (soft tissue)"))
    elems.append(sp(10))

    # Q4 Solitary Bone Cyst ────────────────────────────────────────
    elems.append(h1("Q4. Solitary Bone Cyst (Traumatic Bone Cyst)"))
    elems.append(hr())
    elems.append(p(f"{B('Synonyms:')} Simple bone cyst • Traumatic bone cyst • Hemorrhagic bone cyst • Idiopathic bone cavity • Unicameral bone cyst"))
    elems.append(p(f"{B('Etiology (Trauma Theory):')} Intramedullary hemorrhage fails to organize → fluid resorbs → empty bony cavity remains."))
    elems.append(sp(6))
    elems.append(h3("Clinical Features"))
    sbc_clin = [
        ("Age", "10–20 years (2nd decade)"),
        ("Sex", "Slight male predominance"),
        ("Site", "Symphysis / parasymphysis of mandible (premolar-molar region)"),
        ("Symptoms", "Usually ASYMPTOMATIC – found on routine X-ray"),
        ("Vitality of teeth", "VITAL (key distinguishing feature)"),
        ("Aspiration", "Empty cavity (no fluid) or blood-tinged fluid"),
    ]
    elems.append(make_table(["Feature", "Details"], sbc_clin, [4.5*cm, 12*cm]))
    elems.append(sp(6))
    elems.append(h3("Radiological Features (Key)"))
    for r in [
        "Well-defined unilocular radiolucency",
        "THIN or absent corticated border",
        "Characteristic SCALLOPING between roots – radiolucency scallops upward between roots ('fallen leaves' pattern)",
        "No root resorption; no displacement of teeth",
        "No expansion (usually); cortex intact",
    ]:
        elems.append(bp(r))
    elems.append(sp(4))
    elems.append(h3("Histopathology"))
    elems.append(p(f"• {B('No epithelial lining')} – this is NOT a true cyst!"))
    elems.append(p("• Thin fibrous connective tissue wall"))
    elems.append(p("• May contain loose CT, hemosiderin deposits, occasional giant cells"))
    elems.append(sp(4))
    elems.append(p(f"{B('Treatment:')} Surgical exploration + curettage of bony walls → stimulates bleeding and new bone formation. Spontaneous resolution can occur."))
    elems.append(note("Prognosis: Excellent. Recurrence very rare."))
    elems.append(sp(10))

    # Q5 Pindborg Tumour ───────────────────────────────────────────
    elems.append(h1("Q5. Pindborg Tumour (CEOT – Calcifying Epithelial Odontogenic Tumour)"))
    elems.append(hr())
    elems.append(p(f"First described by {B('Jens Jorgen Pindborg')} in {B('1955')}. Benign, locally aggressive odontogenic epithelial neoplasm. Rare (~1% of odontogenic tumors)."))
    elems.append(sp(6))
    elems.append(h3("Clinical Features"))
    ceot = [
        ("Age", "30–50 years (4th–5th decade)"),
        ("Sex", "No predilection"),
        ("Location", "Mandible > Maxilla (2:1); premolar-molar region"),
        ("Behavior", "Slow-growing, painless swelling; locally aggressive"),
        ("Associated tooth", "Impacted tooth in ~50%"),
        ("Variants", "Central/intraosseous (94%) vs Peripheral/extraosseous (6%)"),
    ]
    elems.append(make_table(["Feature", "Details"], ceot, [4.5*cm, 12*cm]))
    elems.append(sp(6))
    elems.append(h3("Radiological Features"))
    for r in [
        "Unilocular or multilocular radiolucency",
        "Mixed radiolucent-radiopaque pattern",
        "'DRIVEN SNOW' appearance – irregular calcifications scattered through radiolucency (PATHOGNOMONIC)",
        "Associated crown of impacted tooth",
        "Indistinct/irregular borders (locally aggressive)",
    ]:
        elems.append(bp(r))
    elems.append(sp(6))
    elems.append(h3("Histopathology (HIGH YIELD)"))
    ceot_histo = [
        ("Cells", "Sheets, islands, strands of polyhedral epithelial cells; prominent intercellular bridges"),
        ("Nuclei", "Marked pleomorphism with hyperchromatism – 'BIZARRE giant nuclei' (despite benign behavior!)"),
        ("Amyloid-like material", "Homogeneous eosinophilic material between cells; stains +ve with Congo red; apple-green birefringence under polarized light (PATHOGNOMONIC)"),
        ("Liesegang rings", "Concentric calcifications within amyloid deposits; correspond to 'driven snow' on X-ray"),
        ("Cytoplasm", "Abundant eosinophilic cytoplasm"),
    ]
    elems.append(make_table(["Feature", "Description"], ceot_histo, [4.5*cm, 12*cm]))
    elems.append(sp(4))
    elems.append(note("Treatment: Conservative excision with marginal resection. Recurrence ~14%."))
    elems.append(sp(10))

    # Q6 ABCDE Melanoma ────────────────────────────────────────────
    elems.append(h1("Q6. A, B, C, D, E Rule of Malignant Melanoma"))
    elems.append(hr())
    abcde = [
        ("A", "ASYMMETRY", "Normal mole: symmetrical", "Suspicious: one half doesn't mirror the other"),
        ("B", "BORDER", "Regular, smooth, well-defined", "Irregular, notched, scalloped, or indistinct"),
        ("C", "COLOR", "Uniform single shade of brown", "Variegated: multiple shades of brown, black, red, white, blue"),
        ("D", "DIAMETER", "< 6 mm", "> 6 mm (size of pencil eraser); small amelanotic melanomas can be < 6 mm"),
        ("E", "EVOLUTION", "Stable lesion over time", "Any change in size, shape, color, or new symptom (bleeding, itching, crusting)"),
    ]
    elems.append(make_table(["Letter", "Stands for", "Normal", "Suspicious Finding"],
                            abcde, [1.5*cm, 3.5*cm, 5*cm, 6.5*cm]))
    elems.append(sp(8))
    elems.append(h3("Clark's Levels (Invasion Depth)"))
    clark = [
        ("I", "Confined to epidermis (in situ)"),
        ("II", "Into papillary dermis"),
        ("III", "Fills papillary dermis"),
        ("IV", "Into reticular dermis"),
        ("V", "Into subcutaneous fat – worst prognosis"),
    ]
    elems.append(make_table(["Level", "Description"], clark, [2.5*cm, 14*cm]))
    elems.append(sp(6))
    elems.append(h3("Breslow's Thickness"))
    elems.append(p("Most important single prognostic factor for melanoma:"))
    breslow = [
        ("< 1 mm", "Good prognosis; sentinel node biopsy based on other features"),
        ("1–2 mm", "Intermediate"),
        ("2–4 mm", "Poor prognosis"),
        ("> 4 mm", "Very poor; high risk of distant metastasis"),
    ]
    elems.append(make_table(["Thickness", "Prognosis"], breslow, [4*cm, 12.5*cm]))
    elems.append(sp(6))
    elems.append(h3("Oral Malignant Melanoma"))
    for item in [
        "Rare – ~0.5% of all melanomas",
        "Sites: hard palate and maxillary alveolar ridge (most common)",
        "Presents as painless brown-black macule or nodule; may be AMELANOTIC (pink)",
        "Often advanced at diagnosis",
        "Poor prognosis: 5-year survival ~15–20%",
        "No primary treatment consensus; wide local excision + immunotherapy",
    ]:
        elems.append(bp(item))
    elems.append(sp(10))

    # Q7 Lipoma ───────────────────────────────────────────────────
    elems.append(h1("Q7. Lipoma"))
    elems.append(hr())
    elems.append(p(f"Most common benign soft tissue tumor in the body. {B('Relatively rare in the oral cavity (~4% of benign oral tumors).')} Composed of mature adipocytes."))
    elems.append(sp(6))
    elems.append(h3("Clinical Features"))
    lip_clin = [
        ("Age", "40–60 years (middle-aged adults)"),
        ("Site", "Buccal mucosa (most common) > floor of mouth > tongue > palate > lips"),
        ("Appearance", "Soft, compressible, fluctuant, well-circumscribed, sessile or pedunculated"),
        ("Color", "Yellowish or normal overlying mucosa"),
        ("Surface", "Smooth; non-tender"),
        ("Growth", "Slow-growing"),
    ]
    elems.append(make_table(["Feature", "Detail"], lip_clin, [4.5*cm, 12*cm]))
    elems.append(sp(6))
    elems.append(h3("Variants of Lipoma"))
    lip_var = [
        ("Simple lipoma", "Pure mature adipose tissue – most common"),
        ("Fibrolipoma", "Fibrous stroma + adipose; most common intraoral variant"),
        ("Myxolipoma", "Myxoid stroma prominent"),
        ("Angiolipoma", "Vascular component; more painful; multiple lesions"),
        ("Spindle cell lipoma", "Spindle cells + adipocytes; CD34+"),
        ("Pleomorphic lipoma", "Floret giant cells; elderly males"),
        ("Sialolipoma", "Contains entrapped salivary gland elements; jaws"),
        ("Infiltrating lipoma", "Locally infiltrating; no capsule; higher recurrence"),
    ]
    elems.append(make_table(["Variant", "Distinguishing Feature"], lip_var, [4.5*cm, 12*cm]))
    elems.append(sp(6))
    elems.append(h3("Histopathology"))
    for h in [
        "Lobules of MATURE adipocytes (large, clear cytoplasm with peripheral, flattened/scalloped nuclei)",
        "Thin fibrous capsule surrounds the tumor",
        "Thin fibrous septa dividing lobules",
        "Signet ring appearance – fat displaces nucleus to periphery",
        "NO lipoblasts (differentiates from liposarcoma)",
        "In fibrolipoma: dense fibrous tissue admixed with fat",
    ]:
        elems.append(bp(h))
    elems.append(sp(4))
    elems.append(p(f"{B('Treatment:')} Conservative surgical excision. Recurrence rare."))
    elems.append(sp(10))

    # Q8 Reed-Sternberg Cells ─────────────────────────────────────
    elems.append(h1("Q8. Reed-Sternberg Cells"))
    elems.append(hr())
    elems.append(p(f"Hallmark of {B('Hodgkin Lymphoma (HL)')}. Large, binucleated/multinucleated neoplastic B-cells. First described by {B('Dorothy Reed (1902)')} and {B('Carl Sternberg (1898)')}."))
    elems.append(p(f"{B('Origin:')} Germinal center B lymphocytes (confirmed by clonal IGH gene rearrangements + somatic hypermutation – Küppers 1994)."))
    elems.append(sp(6))
    elems.append(h3("Classic Morphology"))
    for m in [
        "Large cell – 15 to 45 micrometres diameter",
        "BINUCLEATED (most characteristic) – mirror-image nuclei side by side",
        "Each nucleus: single large eosinophilic 'OWL-EYE NUCLEOLUS' surrounded by a pale halo",
        "Prominent, thick nuclear membrane",
        "Abundant pale/eosinophilic cytoplasm",
    ]:
        elems.append(bp(m))
    elems.append(sp(6))
    elems.append(h3("Variants"))
    rs_var = [
        ("Classic RS", "Binucleated, owl-eye nucleoli", "Mixed cellularity, Nodular sclerosis"),
        ("Lacunar cell", "Nucleus sits in clear space (retraction artifact in formalin)", "Nodular sclerosis (pathognomonic)"),
        ("Mononuclear (Hodgkin cell)", "Single nucleus, prominent nucleolus", "All subtypes"),
        ("L&H / 'Popcorn' cell", "Multilobated nucleus, small nucleolus, pale chromatin", "Nodular lymphocyte predominant HL"),
    ]
    elems.append(make_table(["Variant", "Morphology", "Associated Subtype"],
                            rs_var, [3.5*cm, 7*cm, 6*cm]))
    elems.append(sp(6))
    elems.append(h3("Immunohistochemistry"))
    ihc = [
        ("CD15 (Leu-M1)", "POSITIVE – most important"),
        ("CD30 (Ki-1)", "POSITIVE – activation marker"),
        ("CD45 (LCA)", "NEGATIVE"),
        ("CD20", "NEGATIVE (usually; positive in NLPHL)"),
        ("PAX5", "Weakly positive"),
        ("EBV (LMP-1)", "Positive in ~40% (especially mixed cellularity)"),
    ]
    elems.append(make_table(["Marker", "Result"], ihc, [6*cm, 10.5*cm]))
    elems.append(sp(6))
    elems.append(h3("Subtypes of Classical Hodgkin Lymphoma (WHO 2022)"))
    hl_sub = [
        ("Nodular Sclerosis", "65–70%", "Lacunar cells; collagen bands; mediastinum", "Best prognosis"),
        ("Mixed Cellularity", "~25%", "Classic RS cells; EBV+; HIV-associated", "Intermediate"),
        ("Lymphocyte-rich", "~5%", "Rare RS cells; lymphocyte-predominant background", "Very good"),
        ("Lymphocyte-depleted", "Rare", "Numerous RS; few lymphocytes; HIV", "Worst prognosis"),
    ]
    elems.append(make_table(["Subtype", "Frequency", "Features", "Prognosis"],
                            hl_sub, [5*cm, 2.5*cm, 6.5*cm, 2.5*cm]))
    elems.append(sp(10))

    # Q9 Sjogren's Syndrome ────────────────────────────────────────
    elems.append(h1("Q9. Primary Sicca Syndrome (Sjogren's Syndrome)"))
    elems.append(hr())
    elems.append(p(f"{B('Definition:')} Chronic autoimmune exocrinopathy with lymphocytic infiltration of exocrine glands, causing xerostomia (dry mouth) and keratoconjunctivitis sicca (dry eyes) WITHOUT an associated connective tissue disease (primary)."))
    elems.append(p(f"{B('Secondary SS:')} Features above + another CTD (RA, SLE, scleroderma, primary biliary cirrhosis)."))
    elems.append(sp(6))
    elems.append(h3("Epidemiology & Etiology"))
    sj_epid = [
        ("Sex", "Female : Male = 9 : 1"),
        ("Age", "Peak 40–60 years; can occur at any age"),
        ("Genetics", "HLA-DR3, HLA-B8 association"),
        ("Autoantigens", "SS-A/Ro and SS-B/La (anti-Ro and anti-La antibodies)"),
        ("Triggers", "EBV, HCV, HTLV-1, retroviruses"),
    ]
    elems.append(make_table(["Feature", "Details"], sj_epid, [4.5*cm, 12*cm]))
    elems.append(sp(6))
    elems.append(h3("Clinical Features"))
    sj_clin = [
        ("Xerostomia", "Dry mouth; difficulty chewing, swallowing, speaking"),
        ("Parotid swelling", "Bilateral, firm, non-tender recurrent swelling"),
        ("Oral candidiasis", "Very common complication"),
        ("Rampant caries", "Cervical caries due to reduced buffering"),
        ("Tongue", "Lobulated, fissured, atrophic (bald tongue)"),
        ("Keratoconjunctivitis sicca", "Gritty/sandy eye sensation; reduced tears"),
        ("Schirmer's test", "< 5 mm in 5 minutes (abnormal)"),
        ("Systemic", "Arthralgia, Raynaud's, neuropathy, renal tubular acidosis"),
        ("Lymphoma risk", "40× increased risk of B-cell NHL (most serious complication)"),
    ]
    elems.append(make_table(["Feature", "Details"], sj_clin, [4.5*cm, 12*cm]))
    elems.append(sp(6))
    elems.append(h3("Histopathology of Minor Salivary Gland Biopsy (Gold Standard)"))
    for h in [
        "Periductal and periacinar LYMPHOCYTIC infiltration (predominantly CD4+ T cells)",
        "FOCUS SCORE: >1 focus per 4 mm² = DIAGNOSTIC (1 focus = >50 lymphocytes per 4 mm²)",
        "Acinar atrophy and loss of glandular architecture",
        "Ductal dilatation with metaplasia",
        "Epimyoepithelial islands in parotid (lymphoepithelial lesion)",
    ]:
        elems.append(bp(h))
    elems.append(sp(6))
    elems.append(h3("Diagnostic Tests Summary"))
    sj_diag = [
        ("Schirmer's test", "< 5 mm/5 min", "Lacrimal gland function"),
        ("Rose Bengal / Lissamine green staining", "Corneal damage visualization", "Ocular surface"),
        ("Minor SG biopsy", "Focus score ≥ 1/4mm²", "Gold standard"),
        ("Sialometry", "< 1.5 mL/15 min (unstimulated)", "Salivary flow"),
        ("Parotid scintigraphy", "Reduced uptake & excretion", "Gland function"),
        ("Anti-Ro/SS-A", "Positive ~70%", "Most sensitive autoantibody"),
        ("Anti-La/SS-B", "Positive ~50%", "More specific than anti-Ro"),
    ]
    elems.append(make_table(["Test", "Diagnostic Threshold", "What It Assesses"],
                            sj_diag, [5*cm, 5*cm, 6.5*cm]))
    elems.append(sp(6))
    elems.append(note("Treatment: Pilocarpine (muscarinic agonist) for dry mouth; artificial tears; fluoride for caries prevention; hydroxychloroquine/rituximab for systemic disease."))
    elems.append(sp(10))

    # Q10 Fibrous Dysplasia ──────────────────────────────────────
    elems.append(h1("Q10. Histopathology of Fibrous Dysplasia"))
    elems.append(hr())
    elems.append(p(f"{B('Definition:')} A benign, non-neoplastic fibro-osseous lesion where normal medullary bone is replaced by fibrous tissue containing irregular trabeculae of woven bone."))
    elems.append(p(f"{B('Pathogenesis:')} Somatic activating mutation in {B('GNAS1 gene (chromosome 20q13.2)')} encoding Gs-alpha protein → abnormal osteoblast differentiation → woven bone instead of lamellar bone."))
    elems.append(sp(6))
    elems.append(h3("Types"))
    fd_types = [
        ("Monostotic", "Single bone", "70–80%", "Jaws most common; mandible > maxilla"),
        ("Polyostotic", "Multiple bones", "20–30%", "Skull, ribs, femur, jaws"),
        ("McCune-Albright Syndrome", "Polyostotic FD + CAL spots (coast of Maine) + endocrine dysfunction", "Rare", "Precocious puberty, hyperthyroidism"),
        ("Mazabraud Syndrome", "FD + intramuscular myxomas", "Rare", "—"),
    ]
    elems.append(make_table(["Type", "Features", "Frequency", "Notes"],
                            fd_types, [3.5*cm, 7*cm, 2.5*cm, 3.5*cm]))
    elems.append(sp(6))
    elems.append(h3("Histopathology – HIGH YIELD"))
    elems.append(p(B("1. Fibrous component:")))
    for f in [
        "Cellular fibrous stroma with spindle-shaped fibroblasts/osteoprogenitor cells",
        "SWIRLING / STORIFORM arrangement (like 'rushing water')",
        "Loose to moderately dense connective tissue",
        "NO capsule – lesion blends imperceptibly with surrounding normal bone",
    ]:
        elems.append(bp(f))
    elems.append(sp(4))
    elems.append(p(B("2. Bony component (MOST characteristic):")))
    for f in [
        "Irregular, curvilinear trabeculae of WOVEN BONE",
        "'CHINESE LETTERS' or 'ALPHABET SOUP' pattern – trabeculae resemble Chinese characters",
        "Trabeculae lack OSTEOBLASTIC RIMMING (key feature – differentiates from ossifying fibroma)",
        "Woven bone (immature), not lamellar",
        "Variable size and shape of trabeculae",
        "In older lesions: maturation to lamellar bone may occur",
    ]:
        elems.append(bp(f))
    elems.append(sp(4))
    elems.append(p(B("3. Additional features:")))
    for f in [
        "Scattered osteoclast-like giant cells at edges of trabeculae",
        "Foamy histiocytes/lipid-laden cells occasionally",
        "Thin-walled blood vessels in stroma",
        "NO inflammatory cells (unless secondarily infected)",
    ]:
        elems.append(bp(f))
    elems.append(sp(6))
    elems.append(h3("Critical Comparison: Fibrous Dysplasia vs Ossifying Fibroma"))
    fd_vs_of = [
        ("Bone trabeculae shape", "'Chinese letters' / irregular woven bone", "Rounded/spherical bony lamellae or osteoid"),
        ("Osteoblastic rimming", "ABSENT", "PRESENT"),
        ("Border of lesion", "BLENDS with surrounding bone (no capsule)", "Well-defined, encapsulated / 'shell out' easily"),
        ("Recurrence", "Low; self-limiting after puberty ('burns out')", "Tends to recur; may be aggressive"),
        ("Radiological", "'Ground glass' / 'orange peel'", "Mixed RL-RO with defined border"),
        ("Patient age", "Children/adolescents", "Middle-aged adults; F>M"),
    ]
    elems.append(make_table(["Feature", "Fibrous Dysplasia", "Ossifying Fibroma"],
                            fd_vs_of, [5*cm, 6*cm, 5.5*cm]))
    elems.append(note("Radiology: 'Ground glass' (most classic), 'Orange peel', 'Fingerprint' pattern. Bowing/expansion of cortex without perforation."))
    elems.append(PageBreak())

    return elems


# ══════════════════════════════════════════════════════════════════
# PART C – SHORT ANSWERS
# ══════════════════════════════════════════════════════════════════
def part_c():
    elems = []

    banner = Table([[Paragraph("PART C — SHORT ANSWERS  (5 × 2 = 10 Marks)", part_style)]],
                   colWidths=[A4[0]-4*cm])
    banner.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), ORANGE),
        ("TOPPADDING", (0,0), (-1,-1), 12),
        ("BOTTOMPADDING", (0,0), (-1,-1), 12),
        ("BOX", (0,0), (-1,-1), 2, GOLD),
    ]))
    elems.append(banner)
    elems.append(sp(14))

    # Q11 Thistle Tube ─────────────────────────────────────────────
    elems.append(h1("Q11. Thistle Tube Pulp Chamber"))
    elems.append(hr())
    elems.append(p(f"A morphological description of pulp chamber shape seen on periapical radiographs, characteristic of {B('Dentinogenesis Imperfecta (DI)')}."))
    elems.append(sp(4))
    for f in [
        f"{B('Shape:')} Resembles a 'thistle tube' or vase – narrow at the cervical region, bulbous/wide at the inferior portion",
        f"{B('Condition:')} Dentinogenesis Imperfecta Types I, II, III (hereditary opalescent dentin)",
        f"{B('Gene:')} DSPP gene mutation (dentin sialophosphoprotein) – Types II and III",
        f"{B('Radiological:')} Pulp chambers and canals are partially or completely OBLITERATED by abnormal dentin deposition",
        f"{B('Type III (Brandywine):')} Particularly known for thistle tube appearance + 'shell teeth' (extremely thin dentin)",
        f"{B('Clinical correlation:')} Teeth appear amber/brownish-blue (opalescent); fracture-prone; worn occlusal surfaces",
    ]:
        elems.append(bp(f))
    elems.append(sp(10))

    # Q12 Touton Giant Cells ───────────────────────────────────────
    elems.append(h1("Q12. Touton Type Giant Cells"))
    elems.append(hr())
    elems.append(p("A distinctive type of multinucleated giant cell with a characteristic morphology named after Karl Touton."))
    elems.append(sp(4))
    elems.append(h3("Morphology"))
    for f in [
        f"{B('Ring/wreath of nuclei')} arranged in a circle in the center of the cell (ring = 'garland' appearance)",
        f"{B('Central homogeneous eosinophilic cytoplasm')} – inside the ring of nuclei",
        f"{B('Peripheral foamy/xanthomatous (lipid-laden) cytoplasm')} – outside the ring of nuclei",
        "Memory aid: 'Touton = two zones of cytoplasm separated by a wreath of nuclei'",
    ]:
        elems.append(bp(f))
    elems.append(sp(4))
    elems.append(h3("Associated Conditions"))
    touton = [
        ("Juvenile Xanthogranuloma (JXG)", "MOST CLASSIC association; Touton cells are pathognomonic"),
        ("Xanthoma / Xanthomatosis", "Foam cells + Touton giant cells"),
        ("Necrobiotic xanthogranuloma", "Periorbital; paraproteinemia"),
        ("Dermatofibroma", "Occasionally seen"),
    ]
    elems.append(make_table(["Condition", "Note"], touton, [6*cm, 10.5*cm]))
    elems.append(sp(4))
    elems.append(h3("Comparison of Giant Cell Types"))
    gc_compare = [
        ("Touton", "Wreath of nuclei centrally; foamy periphery", "JXG, xanthoma"),
        ("Langhan's", "Nuclei arranged in horseshoe/U-shape at periphery", "Tuberculosis, sarcoid, fungal"),
        ("Foreign body", "Nuclei scattered randomly throughout cytoplasm", "Foreign body reaction"),
        ("Osteoclast", "Multiple nuclei, large ruffled border", "Normal bone; giant cell lesions"),
    ]
    elems.append(make_table(["Type", "Nuclear Arrangement", "Seen In"],
                            gc_compare, [3.5*cm, 7*cm, 6*cm]))
    elems.append(sp(10))

    # Q13 Tadpole Cells ────────────────────────────────────────────
    elems.append(h1("Q13. Tadpole Shaped Cells"))
    elems.append(hr())
    elems.append(p(f"Cells with a {B('broad head and a tapering tail')} resembling a tadpole, representing a specific cytological/histological finding."))
    elems.append(sp(4))
    elems.append(h3("Morphology"))
    for f in [
        "Broad end (head): contains the nucleus with eosinophilic cytoplasm",
        "Narrow tapering end (tail): cytoplasmic elongation",
        "Eosinophilic cytoplasm; eccentric nuclei",
        "In rhabdomyosarcoma: primitive rhabdomyoblasts adopting this shape",
    ]:
        elems.append(bp(f))
    elems.append(sp(4))
    elems.append(h3("Associated Conditions"))
    tadpole = [
        ("Embryonal Rhabdomyosarcoma", "MOST CLASSIC association in oral pathology; primitive rhabdomyoblasts"),
        ("Spindle Cell / Sarcomatoid Carcinoma", "Pleomorphic carcinoma with spindle/tadpole cells"),
        ("Squamous Cell Carcinoma (poorly diff.)", "Keratinizing dyskeratotic cells"),
    ]
    elems.append(make_table(["Condition", "Note"], tadpole, [6*cm, 10.5*cm]))
    elems.append(sp(4))
    elems.append(p(f"{B('IHC (Rhabdomyosarcoma):')} Desmin, MyoD1, Myogenin positive; MYOD1 is most specific."))
    elems.append(sp(10))

    # Q14 Snail Track Ulcer ────────────────────────────────────────
    elems.append(h1("Q14. Snail Track Ulcer"))
    elems.append(hr())
    elems.append(p(f"A {B('serpiginous (winding, snake-like)')} pattern of superficial oral ulceration that resembles the slime trail left by a snail."))
    elems.append(sp(4))
    elems.append(h3("Characteristics"))
    for f in [
        "Shallow, superficial ulcers with irregular, winding margins",
        "Undermined edges; base covered with grayish-white slough",
        "Multiple coalescing ulcers forming a serpiginous pattern",
        "Highly PAINLESS despite appearance (important diagnostic clue)",
        "Highly infectious (Treponema pallidum organisms present in the lesion)",
    ]:
        elems.append(bp(f))
    elems.append(sp(4))
    elems.append(h3("Associated Conditions"))
    snail = [
        ("Secondary Syphilis", "MOST CLASSIC – mucous patches that coalesce into snail-track pattern; painless"),
        ("Herpes Zoster (intraoral)", "Ruptured vesicles coalesce along dermatomal distribution"),
        ("Erythema Multiforme", "Occasionally produces serpiginous ulcers"),
        ("Tertiary Syphilis", "Gummatous ulcers on palate; more destructive"),
    ]
    elems.append(make_table(["Condition", "Note"], snail, [5.5*cm, 11*cm]))
    elems.append(sp(4))
    elems.append(p(f"{B('Diagnosis of Syphilis:')} Dark-field microscopy (gold standard for primary) • VDRL/RPR (screening) • FTA-ABS/TPPA (confirmatory)"))
    elems.append(p(f"{B('Treatment:')} Benzathine penicillin G (drug of choice)"))
    elems.append(sp(10))

    # Q15 Cafe-au-lait ─────────────────────────────────────────────
    elems.append(h1("Q15. Cafe-au-lait Spots"))
    elems.append(hr())
    elems.append(p(f"Flat, well-demarcated, light brown hyperpigmented macules; color resembles 'coffee with milk.' Represent {B('melanin accumulation in keratinocytes')} (not melanocytes)."))
    elems.append(sp(4))
    elems.append(h3("Key Comparison: NF-1 vs McCune-Albright"))
    cal_compare = [
        ("Number", "6 or more (diagnostic criterion)", "Fewer, larger spots"),
        ("Size threshold", ">5 mm prepubertal; >15 mm postpubertal", "Large; >1.5 cm often"),
        ("Border", "Irregular – 'COAST OF CALIFORNIA'", "Smooth – 'COAST OF MAINE'"),
        ("Distribution", "Generalized / scattered", "Unilateral; follows Blaschko's lines"),
        ("Associated features", "Neurofibromas, Lisch nodules, MPNST risk", "Polyostotic FD, endocrine hyperfunction"),
    ]
    elems.append(make_table(["Feature", "NF-1 (von Recklinghausen)", "McCune-Albright Syndrome"],
                            cal_compare, [4.5*cm, 6.5*cm, 5.5*cm]))
    elems.append(sp(6))
    elems.append(h3("Syndromes with Cafe-au-lait Spots"))
    cal_syn = [
        ("NF-1 (von Recklinghausen)", "6+ spots diagnostic; NF1 gene (chr 17)"),
        ("McCune-Albright Syndrome", "Polyostotic FD + precocious puberty + CAL (GNAS1 mutation)"),
        ("Legius Syndrome", "NF-1 like; SPRED1 mutation; no neurofibromas"),
        ("Bloom Syndrome", "BLM gene; photosensitivity; chromosomal instability"),
        ("Fanconi Anemia", "FANC gene family; aplastic anemia; increased malignancy risk"),
        ("Tuberous Sclerosis", "Ashleaf hypopigmented patches more typical; CAL occasional"),
    ]
    elems.append(make_table(["Syndrome", "Key Feature"], cal_syn, [6*cm, 10.5*cm]))
    elems.append(sp(4))
    elems.append(note("Normal individuals can have 1–2 cafe-au-lait spots. Only 6+ spots are diagnostic for NF-1."))
    elems.append(note("Crowe's sign (axillary freckling) = small cafe-au-lait spots in axillary/inguinal folds; specific for NF-1."))
    elems.append(PageBreak())

    return elems


# ══════════════════════════════════════════════════════════════════
# PART D – QUICK REVISION
# ══════════════════════════════════════════════════════════════════
def part_d():
    elems = []

    banner = Table([[Paragraph("PART D — QUICK REVISION & EXAM TIPS", part_style)]],
                   colWidths=[A4[0]-4*cm])
    banner.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), PURPLE),
        ("TOPPADDING", (0,0), (-1,-1), 12),
        ("BOTTOMPADDING", (0,0), (-1,-1), 12),
        ("BOX", (0,0), (-1,-1), 2, GOLD),
    ]))
    elems.append(banner)
    elems.append(sp(14))

    elems.append(h1("Key Mnemonics"))
    elems.append(hr())
    mnemonics_list = [
        ("OPMDs", "'LEAOP DLD' – Leukoplakia, Erythroplakia, Actinic cheilitis, OSMF, PVL, Discoid LE, Lichen planus, Dyskeratosis congenita"),
        ("NF-1 Criteria", "'CALF ON S' – CAL spots(6+), Axillary freckling, Lisch nodules, Fibromas(2+), Optic glioma, Neurofibromas(plexiform), Skeletal dysplasia"),
        ("CEOT (Pindborg)", "'DADS' – Driven snow, Amyloid, Dense calcification, Sheets of polyhedral cells"),
        ("Leukoplakia Risk", "'FANSLD' – Female, Alveolar/FOM, Non-smoker, Size>200mm², Long duration, Dysplasia"),
        ("Sjogren's", "'SAXE' – Salivary gland swelling, Autoantibodies(Ro/La), Xerophthalmia, Exocrinopathy"),
        ("RS cell IHC", "'CD30 and 15 are Positive, CD45 is Negative' = classic Hodgkin"),
        ("Giant cell types", "'TOLF' – Touton(wreath), Osteoclast(ruffled), Langhan's(horseshoe), Foreign body(scattered)"),
        ("Syphilis", "'123' – Primary(chancre), Secondary(snail track+rash), Tertiary(gumma)"),
    ]
    for abbrev, mnem in mnemonics_list:
        row = Table([[
            Paragraph(B(abbrev), S("ma", fontSize=10, textColor=PURPLE, fontName="Helvetica-Bold", leading=13)),
            Paragraph(mnem, S("mb", fontSize=9.5, textColor=DARK_GRAY, fontName="Helvetica", leading=13))
        ]], colWidths=[4.5*cm, A4[0]-4*cm-4.5*cm])
        row.setStyle(TableStyle([
            ("BACKGROUND", (0,0), (-1,-1), LIGHT_TEAL),
            ("BOX", (0,0), (-1,-1), 0.5, TEAL),
            ("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"),
        ]))
        elems.append(row)
        elems.append(sp(4))

    elems.append(sp(10))
    elems.append(h1("Master Comparison Table: Odontogenic Cysts"))
    elems.append(hr())
    cyst_comp = [
        ("Dentigerous Cyst", "2nd–3rd decade; M>F", "Unilocular RL; crown in cystic space; at CEJ", "Stratified sq. epi (2–3 layers); non-keratinized", "Enucleation; low recurrence"),
        ("OKC (KCOT)", "2nd decade; M>F", "Unilocular or multilocular; scalloped borders; parallel to long axis", "Thin parakeratinized corrugated surface; basal palisading; daughter cysts; satellite cysts", "High recurrence (25–60%); Carnoy's solution"),
        ("Radicular Cyst", "Any age; apex of non-vital tooth", "Well-defined RL at apex; tooth non-vital", "Stratified sq. epi; Rushton bodies; arcades of epi", "Enucleation; periapical surgery"),
        ("Solitary Bone Cyst", "10–20 years", "Scalloping between roots; empty cavity", "NO epithelial lining", "Exploration + curettage"),
    ]
    elems.append(make_table(["Cyst", "Demographics", "Radiology", "Histopathology", "Treatment"],
                            cyst_comp, [3.5*cm, 3*cm, 4*cm, 4*cm, 2*cm]))

    elems.append(sp(10))
    elems.append(h1("Exam Writing Tips"))
    elems.append(hr())
    tips = [
        "Always write a clear DEFINITION first – examiners reward structured openings.",
        "For Long Essays (10 marks): Introduction → Etiology → Clinical → Radiology → Histopathology → Treatment → Prognosis.",
        "For Short Essays (5 marks): Focus on 3–4 key aspects; draw a labeled diagram where relevant.",
        "For Short Answers (2 marks): Write 4–5 concise, factual bullet points; avoid lengthy prose.",
        "ALWAYS draw labeled diagrams for: Dentigerous cyst variants, Histopathology of CEOT, Fibrous dysplasia trabeculae, RS cells.",
        "Highlight HIGH-YIELD words by underlining: 'driven snow,' 'Chinese letters,' 'owl-eye nucleoli,' 'coast of California vs Maine.'",
        "Use comparison tables whenever asked to 'classify' or 'differentiate' – saves time and earns marks.",
        "For Sjogren's: Always mention Focus Score (>1/4mm²) – it's a favorite exam point.",
        "For Fibrous Dysplasia: 'Absent osteoblastic rimming' is the single most tested histopathological feature.",
        "For Leukoplakia: 'WHO 2005 definition' + 'malignant transformation rate 0.7–2.9%' = guaranteed marks.",
    ]
    for i, tip in enumerate(tips, 1):
        t = Table([[
            Paragraph(str(i), S("tn", fontSize=11, textColor=WHITE, fontName="Helvetica-Bold",
                                alignment=TA_CENTER, leading=14)),
            Paragraph(tip, S("tc", fontSize=10, textColor=DARK_GRAY, fontName="Helvetica", leading=13))
        ]], colWidths=[1.2*cm, A4[0]-4*cm-1.2*cm])
        t.setStyle(TableStyle([
            ("BACKGROUND", (0,0), (0,0), TEAL if i % 2 == 1 else NAVY),
            ("BACKGROUND", (1,0), (1,0), LIGHT_GREEN if i % 2 == 1 else LIGHT_BLUE),
            ("BOX", (0,0), (-1,-1), 0.5, MID_GRAY),
            ("TOPPADDING", (0,0), (-1,-1), 6),
            ("BOTTOMPADDING", (0,0), (-1,-1), 6),
            ("LEFTPADDING", (0,0), (-1,-1), 6),
            ("RIGHTPADDING", (0,0), (-1,-1), 8),
            ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
        ]))
        elems.append(t)
        elems.append(sp(3))

    elems.append(sp(20))
    # Footer note
    footer_box = Table([[
        Paragraph(
            "This study guide covers all questions from the RGUHS III BDS Oral Pathology & Microbiology paper "
            "(Q.P. Code 1188, Nov 2021). Content is prepared for educational purposes based on standard "
            "oral pathology textbooks including Neville, Regezi, and Shafer's. "
            "Always verify with your prescribed textbook and university notes.",
            S("fn", fontSize=8.5, textColor=DARK_GRAY, fontName="Helvetica-Oblique",
              alignment=TA_CENTER, leading=12))
    ]], colWidths=[A4[0]-4*cm])
    footer_box.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), LIGHT_GRAY),
        ("BOX", (0,0), (-1,-1), 1, MID_GRAY),
        ("TOPPADDING", (0,0), (-1,-1), 10),
        ("BOTTOMPADDING", (0,0), (-1,-1), 10),
        ("LEFTPADDING", (0,0), (-1,-1), 12),
        ("RIGHTPADDING", (0,0), (-1,-1), 12),
    ]))
    elems.append(footer_box)

    return elems


# ══════════════════════════════════════════════════════════════════
# BUILD
# ══════════════════════════════════════════════════════════════════
def build():
    doc = OralPathDocTemplate(
        OUTPUT_PATH,
        pagesize=A4,
        leftMargin=2*cm,
        rightMargin=2*cm,
        topMargin=1.8*cm,
        bottomMargin=1.5*cm,
    )

    story = []
    story += cover_page()
    story += toc_page()
    story += part_a()
    story += part_b()
    story += part_c()
    story += part_d()

    doc.build(story)
    print(f"PDF saved to: {OUTPUT_PATH}")

if __name__ == "__main__":
    build()
Running Command

cd /home/daytona/workspace/oral-path-guide && python generate_study_guide.py 2>&1

Running Command

ls -lh /home/daytona/workspace/oral-path-guide/Oral_Pathology_Study_Guide.pdf

Running Command

python3 -c " from pypdf import PdfReader r = PdfReader('/home/daytona/workspace/oral-path-guide/Oral_Pathology_Study_Guide.pdf') print(f'Total pages: {len(r.pages)}') for i, page in enumerate(r.pages[:3]): text = page.extract_text() print(f'--- Page {i+1} preview ---') print(text[:200]) "

Your comprehensive study guide PDF is ready! Here's what's inside:

Oral Pathology Study Guide

PDF Document · PDF


What's inside (20 pages)

Professional layout with:
  • Branded header/footer on every page (RGUHS III BDS)
  • Color-coded part banners (Navy, Teal, Orange, Purple)
  • All tables with alternating row shading
  • Highlighted exam notes in red

Structure:

PartContentMarks
Cover + TOCTitle page with topic index-
Part A – Long EssaysQ1: OPMDs + Leukoplakia (full detail with 6 tables)10+10
Q2: Neural Tumors + Neurofibromatosis (NIH criteria, histopath comparison)
Part B – Short EssaysQ3–Q10: All 8 short essay answers with clinical/radiological/histo tables5×8
Part C – Short AnswersQ11–Q15: Thistle tube, Touton cells, Tadpole cells, Snail track, CAL spots2×5
Part D – Quick Revision8 key mnemonics, master cyst comparison table, 10 exam writing tips-

High-yield features:

  • Every topic has structured tables (not just paragraphs)
  • Bold emphasis on examiner-favourite points ("Chinese letters," "owl-eye nucleoli," "driven snow," "coast of California vs Maine")
  • Mnemonic for each major topic
  • Comparison tables (FD vs Ossifying Fibroma, NF-1 vs NF-2, giant cell types)
This is a shared conversation. Sign in to Orris to start your own chat.