attachment
attachment

Viva answers to all these questions and cross questions that could be asked

Reading File
These are oral medicine/oral radiology questions - a dental specialty exam paper. Given my budget constraints, I'll answer comprehensively from my knowledge base across all 12 questions with viva-style Q&A format.
Finding Sources
No dedicated oral radiology/oral medicine textbook is in the library. I'll answer from my comprehensive knowledge base now.Here is a complete viva answer guide for every question on your paper, with the most likely cross-questions and their answers included under each topic.

ORAL RADIOLOGY & ORAL MEDICINE - VIVA ANSWER GUIDE


SECTION B - LONG ANSWER QUESTIONS


Q1. Components of X-Ray Machine + Factors Controlling X-Ray Beam

Main Answer

Components of an X-Ray Machine:
1. X-Ray Tube (Heart of the machine)
  • Glass/metal envelope - houses the cathode and anode under high vacuum
  • Cathode: Contains the filament (tungsten wire) + focusing cup (molybdenum). Filament produces electrons by thermionic emission when heated
  • Anode: Target where electrons strike and X-rays are produced. Two types:
    • Stationary anode (dental units) - tungsten target embedded in copper rod
    • Rotating anode (medical units) - distributes heat over a larger area
2. Tubehead
  • Metallic housing (lead-lined) containing the X-ray tube
  • Insulating oil surrounds the tube to dissipate heat and for electrical insulation
  • Lead collimator/diaphragm restricts beam size
  • Aluminum filter removes long-wavelength (low-energy) X-rays
  • Position indicating device (PID)/cone directs the beam
3. Transformer Unit
  • Step-up transformer: Increases voltage to 60-120 kVp for X-ray production
  • Step-down transformer: Reduces voltage to ~3-5V to heat the filament
  • Autotransformer: Compensates for fluctuations in line voltage
4. Control Panel
  • kVp selector (controls quality/penetrating power)
  • mA selector (controls quantity/number of X-rays)
  • Time selector (exposure duration)
  • On/off switch
5. Extension arm/Yoke - positions the tubehead

Factors Controlling the X-Ray Beam:
A. Quality (Penetrating Power) - controlled by kVp
  • Higher kVp → shorter wavelength → more penetrating beam → harder radiation
  • Increasing kVp increases quantity as well
  • Filter (Al) - removes soft/low-energy X-rays, hardens the beam
  • Added filtration: 1.5 mm Al equivalent at <70 kVp; 2.5 mm Al at ≥70 kVp
B. Quantity (Number of Photons) - controlled by mA and time
  • mA controls filament heating → controls electron cloud → controls X-ray photon number
  • Time (seconds) controls duration of exposure
  • mAs = mA × time = measure of total X-ray output
  • Increasing mA doubles quantity without affecting quality
  • Target-film distance (inverse square law): Doubling distance reduces intensity by 1/4
C. Other factors:
  • Target material: Tungsten (Z=74) preferred - high atomic number = higher efficiency, high melting point
  • Tube current (mA): More electrons → more X-ray photons
  • Voltage waveform: Constant potential (DC) vs pulsating DC - constant potential produces more efficient, higher average energy beam

Cross Questions:

Q: What is thermionic emission? A: Release of electrons from a heated metal surface. When tungsten filament is heated to ~2200°C, electrons gain enough energy to escape the metal surface, forming an electron cloud.
Q: What is the difference between kVp and kV? A: kV is the constant voltage; kVp (kilovolt peak) is the maximum voltage in a pulsating DC circuit. In dental radiology, kVp is used because most units use pulsating DC.
Q: What is the line focus principle (Benson heel effect)? A: The anode face is angled (~20°) to the central ray. This makes the effective focal spot smaller than the actual focal spot, improving image sharpness while allowing a larger area for heat dissipation. The heel effect causes unequal intensity across the beam - less intensity at the anode side.
Q: What is the inverse square law? A: Intensity is inversely proportional to the square of the distance from the source. I1/I2 = D2²/D1². If distance doubles, intensity reduces to one-fourth.
Q: What is total filtration in dental X-ray units? A: Total filtration = inherent filtration + added filtration. Inherent filtration = glass envelope + insulating oil + tubehead seal = approximately 0.5-1.0 mm Al equivalent. Added filtration is an aluminum disk placed at the port. Total should be ≥1.5 mm Al at <70 kVp and ≥2.5 mm Al at ≥70 kVp.
Q: What is the purpose of the focusing cup? A: Made of molybdenum, it surrounds the filament and carries a slight negative charge. This focuses the electron beam onto a small area of the anode target (focal spot), improving image sharpness.
Q: What is space charge effect? A: When a large electron cloud surrounds the filament, new electrons are repelled by the existing negative cloud. This limits current at low kVp. At high kVp, electrons are pulled away quickly, reducing space charge effect.

Q2. Speckled Leukoplakia - Predisposing Factors, Clinical Features, DD, Investigations, Management

Main Answer

Definition: Speckled leukoplakia (also called speckled erythroleukoplakia or erythroleukoplakia) is a white patch mixed with areas of redness/erythroplakia that cannot be rubbed off and cannot be attributed to any other diagnosable disease. It has the highest malignant transformation rate among all leukoplakia subtypes.
Predisposing Factors:
  1. Tobacco: Smoking (cigarette, bidi, hookah), smokeless tobacco (pan, gutka, khaini) - most important
  2. Alcohol: Synergistic effect with tobacco
  3. Candida albicans: Strongly associated with speckled leukoplakia - present in 80-90% of cases (Candida-associated leukoplakia)
  4. HPV (Human Papillomavirus): HPV 16 and 18 may play a role
  5. Syphilis: Tertiary syphilis associated with leukoplakia (historically syphilitic glossitis)
  6. Nutritional deficiency: Iron, vitamin B12, folate deficiency
  7. Chronic irritation: Ill-fitting dentures, sharp teeth, galvanism
  8. UV radiation: For lip lesions
  9. Immunosuppression
Clinical Features:
  • Site: Buccal mucosa (most common), lateral border of tongue, floor of mouth (highest malignant potential), soft palate, lip
  • Appearance: White patches interspersed with red/erythematous areas - "speckled" appearance
  • The red component indicates areas of atrophy with mucosal thinning
  • Cannot be wiped off (unlike candidiasis)
  • May be asymptomatic or have mild burning sensation
  • Irregular surface - may be granular or nodular
  • Most dangerous form: Floor of mouth + ventral tongue = "sublingual keratosis" - highest malignant transformation (~40%)
  • Malignant transformation rate: 15-40% (highest among all leukoplakia types)
Differential Diagnosis:
  1. Erythroplakia - pure red lesion, no white component
  2. Homogeneous leukoplakia - uniformly white, no red areas, lower risk
  3. Oral Lichen Planus (erosive/atrophic) - bilateral, Wickham's striae present
  4. Candidiasis (pseudomembranous) - white plaques that CAN be wiped off, leaving raw surface
  5. Lupus erythematosus - characteristic silvery-white radiating striae
  6. Squamous cell carcinoma - ulceration, induration, fixation
  7. Verrucous carcinoma - verrucous white lesion, typically buccal mucosa
  8. Chemical/thermal burn - history, unilateral
Investigations:
  1. Biopsy (most important) - incisional biopsy from the most suspicious (reddest) area
    • Histology: Hyperkeratosis, acanthosis, degrees of epithelial dysplasia (mild/moderate/severe)
    • Look for: koilocytes (HPV), Candida hyphae (PAS stain)
  2. Exfoliative cytology - screening tool, not definitive
  3. Toluidine blue staining - vital staining; stains dysplastic/malignant tissue blue; guides biopsy site
  4. Brush biopsy (OralCDx) - trans-epithelial sampling
  5. PAS stain - for Candida hyphae
  6. Culture - if Candidal infection suspected
  7. Blood investigations - CBC, iron studies, B12, folate, fasting blood sugar (immunosuppression)
  8. Autofluorescence (VELscope) - normal tissue fluoresces green; dysplastic tissue loses fluorescence (dark areas)
  9. Lugol's iodine - normal glycogen-containing epithelium stains brown; dysplastic tissue remains unstained
Management:
Step 1: Address etiological factors
  • Cessation of tobacco and alcohol (mandatory)
  • Antifungal therapy if Candida present: Fluconazole 150 mg weekly for 4-6 weeks, or nystatin suspension
  • Remove local irritants
Step 2: Based on dysplasia grade (histology):
  • No dysplasia / mild dysplasia: Eliminate risk factors, observe every 3 months
  • Moderate dysplasia: Surgical removal or ablation
  • Severe dysplasia / carcinoma in situ: Mandatory complete excision
Step 3: Treatment modalities:
  • Surgical excision (scalpel) - gold standard for localized lesions
  • Laser ablation (CO2 laser) - preferred; precise, less scarring, can treat large areas
  • Cryotherapy
  • Photodynamic therapy (PDT)
  • Electrocautery
Medical management (adjunctive):
  • Vitamin A / retinoids (systemic) - promote normal differentiation; high recurrence on stopping
  • Beta-carotene
  • Vitamin C and E (antioxidants)
  • Bleomycin (topical) - for non-responding cases
Follow-up: Lifelong, every 3-6 months (high recurrence and malignant potential)

Cross Questions:

Q: What is the WHO definition of leukoplakia? A: A white patch or plaque that cannot be characterized clinically or pathologically as any other disease. It is a diagnosis of exclusion.
Q: What is the malignant transformation rate of different leukoplakia types? A: Homogeneous: 1-3%; Non-homogeneous (speckled/nodular/verrucous): 15-40%. Floor of mouth and ventral tongue carry the highest risk.
Q: Why does speckled leukoplakia have higher malignant potential? A: The red areas represent atrophic epithelium with loss of surface keratin and mucosal thinning, allowing carcinogens easier access to the basal layer. These areas typically show moderate-to-severe dysplasia on histology.
Q: What is Candida's role in leukoplakia? A: Candida produces nitrosamines that have carcinogenic potential. It also produces enzyme acetaldehyde which is carcinogenic. PAS stain detects Candida hyphae invading the epithelium.
Q: What are the grades of epithelial dysplasia? A: Mild: lower 1/3 of epithelium involved; Moderate: lower 2/3; Severe: >2/3 but basement membrane intact; Carcinoma in situ: full thickness dysplasia without BM breach.
Q: What is the difference between leukoplakia and leukoedema? A: Leukoedema is a bilateral, diffuse grayish-white opalescence of the buccal mucosa that disappears on stretching - it is a normal variant. Leukoplakia does NOT disappear on stretching and is a potentially malignant disorder.

SECTION C - SHORT ANSWER QUESTIONS


Q1. Radiation Caries

Definition: Radiation caries is a rapidly progressive, rampant form of dental caries occurring as a sequela of radiation therapy to the head and neck region (particularly salivary glands).
Pathogenesis:
  1. Radiation-induced xerostomia (primary cause) - radiation damages salivary acini (serous cells more sensitive than mucous cells). Parotid gland most sensitive.
  2. Loss of saliva's protective functions: antimicrobial (IgA, lysozyme), buffering (bicarbonate), remineralization, washing/flushing action
  3. Changes in oral flora: shift to more cariogenic organisms - Streptococcus mutans, Lactobacillus, Candida
  4. Radiation-induced changes in enamel/dentin - direct damage to odontoblasts and organic matrix
  5. Reduced ability to maintain oral hygiene (trismus, mucositis, pain)
Clinical Features:
  • Onset: 3-6 months post-radiation (rapid onset distinguishes it from ordinary caries)
  • Site: Atypical sites - cervical region (most characteristic), incisal edges, cusp tips
  • Pattern: Circumferential/belt-like caries encircling the cervical region
  • Rapid progression to crown amputation
  • Black/brown discoloration
  • Affects teeth that are normally caries-resistant
Prevention (key exam point):
  • Pre-radiation: dental extraction of compromised teeth, restorations, fluoride trays fabricated
  • Daily 1% sodium fluoride gel in custom trays (most important preventive measure)
  • Pilocarpine (muscarinic agonist) stimulates residual salivary gland tissue
  • Artificial saliva substitutes
  • Chlorhexidine rinses
  • Amifostine (radioprotective agent) given IV before radiation
Treatment: Same as regular caries but more aggressive approach; avoid extractions post-radiation (risk of osteoradionecrosis)

Cross Questions:

Q: What dose of radiation causes xerostomia? A: Significant xerostomia occurs at doses >26 Gy. Permanent, severe xerostomia occurs at doses >60 Gy.
Q: What is osteoradionecrosis and how is it related to radiation caries? A: ORN is avascular necrosis of bone following radiation. Radiation causes endarteritis, fibrosis and hypoxia-hypovascular-hypocellular tissue. Extraction post-radiation can trigger ORN because the bone cannot heal. This is why all dental extractions should be done pre-radiation with adequate healing time (minimum 10-14 days before radiation starts).
Q: What cells are most sensitive to radiation? A: Rapidly dividing cells - serous acinar cells of parotid gland, oral mucosal cells, bone marrow cells. Mucous cells of submandibular/sublingual glands are relatively less sensitive.

Q2. Radiographic Features and Differential Diagnosis of Chronic Osteomyelitis

Radiographic Features of Chronic Osteomyelitis:
  1. Ill-defined radiolucency (bone destruction) mixed with areas of sclerosis
  2. Sequestrum - dense, radiopaque dead bone fragment separated from living bone, surrounded by a radiolucent halo (Involucrum)
  3. Involucrum - shell of new periosteal bone surrounding the sequestrum
  4. Cloaca - channel/opening in the cortex through which pus discharges
  5. Periosteal reaction - "onion peel" or "sunray" appearance (more in Garre's osteomyelitis)
  6. Mixed radiolucent-radiopaque pattern - "moth-eaten" appearance
  7. Cortical erosion and destruction
  8. Pathological fracture in severe cases
  9. Loss of lamina dura
  10. On CT: better delineation of sequestrum, cortical breach, periosteal reaction
Special Type - Garre's Chronic Sclerosing Osteomyelitis:
  • Periosteal reaction with onion-skin lamination (most characteristic)
  • Primarily children and adolescents, mandible
  • Associated with carious lower first molar
Diffuse Sclerosing Osteomyelitis:
  • Widespread sclerosis with ill-defined radiopacity
  • No clear sequestrum
Differential Diagnosis:
  1. Fibrous dysplasia - "ground glass" opacity, expansion without cortical destruction, no sequestrum
  2. Ossifying fibroma - well-defined, mixed radiolucent-radiopaque, no inflammatory features
  3. Cemento-osseous dysplasia (florid) - bilateral, lobular opacities with radiolucent rim, older women
  4. Osteosarcoma - periosteal reaction ("sunray"), destructive but no sequestrum, associated soft tissue mass; younger age
  5. Metastatic carcinoma - multiple punched-out lesions, history of primary tumor
  6. Paget's disease - "cotton wool" appearance, enlargement of jaw, hypercementosis
  7. Actinomycosis - "honeycomb" or "soap bubble" pattern, sulfur granules, neck swelling

Cross Questions:

Q: What is a sequestrum? How does it look radiographically? A: It is a fragment of dead, avascular, necrotic bone separated from the surrounding living bone. Radiographically it appears as a dense (radiopaque) bone fragment surrounded by a radiolucent halo (representing the inflammatory granulation tissue around it).
Q: What is Garre's osteomyelitis? A: Chronic non-suppurative sclerosing osteomyelitis (Garre's disease) is a periostitis ossificans. It presents as hard bony expansion of the mandible with onion-peel periosteal layering on X-ray. Common in children with carious lower first molar.
Q: What imaging is best for osteomyelitis? A: MRI is most sensitive for early changes (bone marrow edema). CT shows cortical destruction and sequestrum best. Plain radiographs require >30-50% bone mineral loss before changes are visible. Tc-99m bone scan shows increased uptake in active disease.

Q3. Collimation and Filtration

Collimation:
Definition: Restriction of the X-ray beam to the area of clinical interest.
Types of Collimators:
  1. Lead diaphragm collimator - circular opening; used in intraoral radiography; beam diameter ≤7 cm at the patient's face (BDA/ADA recommendation)
  2. Rectangular collimator - rectangular opening matching the size of the periapical film; reduces radiation dose by ~60-70% compared to round collimator; MOST effective in dose reduction
  3. Tubular/cylindrical cone - open-ended cylinder; also acts as beam indicator
Benefits of collimation:
  • Reduces patient radiation dose
  • Reduces scatter radiation (improves image quality)
  • Limits irradiation to area of interest
Filtration:
Definition: Removal of low-energy (long-wavelength) X-rays that have no diagnostic value but increase patient dose.
Types:
  1. Inherent filtration - glass envelope of X-ray tube + insulating oil + tubehead seal = ~0.5-1.0 mm Al equivalent. Cannot be altered.
  2. Added filtration - aluminum disk placed at the port of the X-ray tube. Can be added/changed.
  3. Total filtration = Inherent + Added
Required total filtration (NCRP/BDA guidelines):
  • <70 kVp: ≥1.5 mm Al equivalent
  • ≥70 kVp: ≥2.5 mm Al equivalent
Types of filtration by material:
  • Aluminum (Al): Most common. Removes low-energy X-rays.
  • Copper (Cu): Used in higher energy equipment; more effective at hardening the beam.
  • Thoraeus filter: Combined K-edge filter (tin + copper + aluminum) - used in radiation therapy
Effects of filtration:
  • Reduces skin dose (removes soft radiation that would be absorbed by skin)
  • Hardens the beam (increases average photon energy)
  • Reduces patient dose by ~5x
  • Slightly reduces image contrast but increases overall diagnostic quality

Cross Questions:

Q: What is the difference between collimation and filtration? A: Collimation restricts the SIZE and SHAPE of the X-ray beam. Filtration modifies the QUALITY (energy composition) of the beam by removing low-energy photons. Both reduce radiation dose.
Q: What is the recommended diameter of a round collimated beam at the patient's skin surface? A: ≤7 cm (BDA recommendation). FDA in the USA recommends ≤7 cm.
Q: Which is more effective - rectangular or round collimation? A: Rectangular collimation reduces radiation dose by ~60-70% compared to round collimation. It reduces scatter radiation and gonadal dose significantly.

Q4. Forms of Oral Lichen Planus

Definition: Oral Lichen Planus (OLP) is a chronic, cell-mediated immune disease affecting oral mucosa. T-cell mediated cytotoxic attack on basal keratinocytes.
Reticular form (most common):
  • Interlacing white lines/striae called "Wickham's striae"
  • Bilateral symmetrical distribution - buccal mucosa (most common site)
  • Usually asymptomatic
  • Low malignant potential
Papular form:
  • Small, pinpoint white papules
  • Often seen along with reticular pattern
  • Asymptomatic
Plaque form:
  • Irregular white patch resembling homogeneous leukoplakia
  • Tongue dorsum and buccal mucosa
  • Difficult to differentiate from leukoplakia - biopsy required
Atrophic/Erythematous form:
  • Red, thin, atrophic mucosa with fine white striae at periphery
  • Burning sensation - most symptomatic non-erosive form
  • Often seen on gingiva as "desquamative gingivitis"
Erosive form (second most common):
  • Irregular, shallow erosions/ulcers with a fibrinous yellow pseudomembrane
  • White striae radiating from ulcer margins
  • Very painful, significant burning
  • Highest malignant transformation potential (2-5%)
  • Posterior buccal mucosa, tongue, gingiva
Bullous/Vesicular form (rarest):
  • Vesicles/bullae that rupture quickly, leaving erosions
  • Rarest form
  • Tongue, buccal mucosa
Desquamative Gingivitis:
  • Gingival manifestation of atrophic/erosive OLP
  • Bright red, painful, easily bleeding gingiva with desquamation
  • Also seen in MMP (mucous membrane pemphigoid) and pemphigus vulgaris

Cross Questions:

Q: What are Wickham's striae? A: Fine, lacy, interlacing white lines/striae seen in reticular OLP. They represent areas of hypergranulosis and are pathognomonic of lichen planus. Described by Louis Wickham in 1895.
Q: What is the histopathology of OLP? A: Hyperorthokeratosis or hyperparakeratosis; saw-tooth rete ridges; band-like dense subepithelial lymphocytic infiltrate (predominantly T cells); liquefaction/hydropic degeneration of basal cell layer; Max Joseph spaces (cleft between epithelium and connective tissue); Civatte bodies/colloid bodies (apoptotic basal keratinocytes).
Q: What is the malignant transformation rate of OLP? A: ~1-3% (WHO classifies OLP as a potentially malignant disorder). Erosive form has the highest risk. Sites with highest risk: tongue and floor of mouth.
Q: How do you differentiate OLP from lichenoid reaction? A: OLP is idiopathic, bilateral, symmetrical, chronic. Lichenoid reaction is due to a specific trigger (drugs - NSAIDs, antihypertensives, antidiabetics; dental restorations - amalgam). Lichenoid reactions may be unilateral and resolve on removing the causative agent.
Q: How is OLP treated? A: Topical corticosteroids are first-line (triamcinolone acetonide 0.1% paste or clobetasol 0.05%). Systemic steroids for severe/widespread disease. Tacrolimus 0.1% topical (calcineurin inhibitor) - second-line. Hydroxychloroquine for resistant cases. Reassurance for asymptomatic reticular form.

Q5. Treatment of Oral Submucous Fibrosis (OSMF)

Definition: OSMF is a chronic, progressive, potentially malignant disorder characterized by fibrosis of the lamina propria and deeper connective tissue causing trismus and burning sensation.
Malignant transformation rate: 7-13%
Treatment is based on staging (Pindborg/Haider/Khanna & Andrade staging):
Stage I (Opening >35 mm) - Medical management:
  • Cessation of areca nut/betel quid (most important - mandatory)
  • Lycopene 8 mg BD for 3 months (antioxidant)
  • Antioxidant supplements: Vitamin A, C, E, B-complex
  • Micronutrient supplementation: Zinc, iron
Stage II (Opening 25-35 mm) - Intralesional injections:
  1. Intralesional corticosteroids (most widely used):
    • Triamcinolone acetonide (10-40 mg/mL) + hyaluronidase (1500 IU) - given together
    • Dexamethasone (4 mg/mL)
    • Mechanism: Anti-inflammatory, reduces collagen synthesis, promotes collagenase activity
    • Given weekly/biweekly × 10-20 sittings
    • Side effects: Cushing's syndrome with repeated use
  2. Hyaluronidase alone - breaks down hyaluronic acid in ground substance, improves diffusion
  3. Placentrex (human placental extract) - promotes vasodilation, softens fibrotic tissue
  4. IFN-gamma (Interferon-gamma) - anti-fibrotic, inhibits TGF-β, activates collagenase; most effective but expensive
  5. Pentoxifylline - xanthine derivative, vasodilator, anti-fibrotic
Stage III (Opening 15-25 mm) - Surgery:
  1. Fibrotomy - incision and excision of fibrous bands
  2. Nasolabial flap - most commonly used flap for intraoral reconstruction post-excision
  3. Split-thickness skin graft - for larger defects
  4. Buccal fat pad flap - simple, reliable, used for posterior buccal mucosa
  5. Radial forearm free flap - for severe cases
Additional measures:
  • Physiotherapy: Mechanical jaw-opening exercises (Therabite appliance, stacked tongue blades)
  • Heat therapy: Warm saline gargles, transcutaneous electrical nerve stimulation
  • Lycopene + Antioxidants at all stages
  • Sublingual misoprostol - angiogenic, promotes healing

Cross Questions:

Q: What is the etiology of OSMF? A: Areca nut (betel nut) is the primary cause. Arecoline (alkaloid in areca nut) stimulates fibroblasts to increase collagen production and inhibits collagenase. Betel quid with or without tobacco, gutka. Less common: chili, nutritional deficiency, autoimmunity, genetic predisposition.
Q: What is the most important step in OSMF management? A: Complete cessation of areca nut/betel quid chewing is the most important and mandatory step. Without this, all other treatment will fail and the disease will progress.
Q: What are the histological features of OSMF? A: Epithelial atrophy, hyperkeratosis, juxta-epithelial inflammatory infiltrate (early), dense avascular fibrosis replacing the lamina propria and submucosa (late stage), hyalinization of collagen bundles, reduction in vascularity, muscle degeneration.

Q6. Position Distance Rule (PDR)

Definition: The Position Distance Rule (also called the Position Indicating Device Distance Rule) is a radiation protection principle related to distance from the X-ray source.
In panoramic/cephalometric radiography context, it refers to tube-shift technique.
More accurately tested as - the Clark's Rule / SLOB Rule (Same Lingual Opposite Buccal):
Tube-Shift Technique (Parallax/Clark's Rule):
Used to determine the buccolingual position of an object (e.g., impacted tooth, root canal, foreign body) by taking two radiographs with the tube shifted horizontally or vertically.
SLOB Rule:
  • Same - Lingual: Object on the lingual side moves in the SAME direction as the tube shift
  • Opposite - Buccal: Object on the buccal side moves in the OPPOSITE direction to the tube shift
Position Distance Rule in Radiation Protection:
According to NCRP (National Council on Radiation Protection) and BDA guidelines:
  • The operator must stand at least 6 feet (1.8 meters) from the X-ray tube during exposure, OR
  • Stand behind a lead-lined barrier/partition
  • The operator should position themselves at an angle of 90°-135° to the primary beam (not in direct line)
  • Never hold the film/sensor or patient during exposure
Related - Inverse Square Law:
  • Intensity ∝ 1/distance²
  • At 6 feet, the scatter radiation is negligible
  • Primary beam at 0°; scatter radiation is maximum perpendicular to the primary beam is approximately equal to scatter at 90°

Cross Questions:

Q: What is the Clark's rule? A: Also called SLOB (Same Lingual Opposite Buccal) rule. When two periapical radiographs are taken with horizontal tube shift, an object on the lingual side moves in the same direction as the tube, while a buccal object moves in the opposite direction. Used to locate impacted teeth, extra canals, foreign bodies, and supernumerary teeth.
Q: What is the recommended distance for the operator during X-ray exposure? A: Minimum 6 feet (1.8 m) from the tube, outside the primary beam, ideally behind a protective barrier. Standing at 90°-135° to the beam reduces scatter radiation exposure.
Q: What angle should the operator stand relative to the primary beam? A: 90°-135° to the primary beam. At this angle, scatter radiation is lowest.

Q7. Differential Diagnosis of Ameloblastoma

Ameloblastoma: Benign but locally aggressive odontogenic epithelial tumor; most common in mandible posterior body and ramus.
Radiographic appearance: Multilocular radiolucency with "soap bubble" or "honeycomb" pattern; cortical expansion; root resorption; displaced teeth.
Differential Diagnosis:
A. Multilocular radiolucencies:
  1. Odontogenic Keratocyst (OKC/KCOT):
    • Scalloped margins, corticated border, minimal cortical expansion
    • Associated with impacted tooth; parakeratin-lined cyst
    • Part of Gorlin-Goltz syndrome
    • Higher recurrence rate
  2. Central Giant Cell Granuloma (CGCG):
    • Anterior mandible (crosses midline), young females
    • "Wispy" septa - root divergence (not resorption typically)
    • Soap bubble pattern
  3. Aneurysmal Bone Cyst (ABC):
    • Rapidly expanding, young individuals
    • "Blown-out" cortex, blood-filled spaces
    • May have "eggshell" thinning
  4. Cherubism:
    • Bilateral expansion of posterior mandible
    • Young children, familial
    • Bilateral multilocular pattern
  5. Odontogenic Myxoma:
    • "Tennis racket" / "honeycomb" / "soap bubble" septa at right angles
    • No cortical perforation early; can be aggressive
  6. Ameloblastic fibroma:
    • Younger patients, small lesion
    • Associated with unerupted tooth, well-defined margins
  7. Dentigerous cyst:
    • Unilocular, associated with crown of impacted tooth
    • Well-defined corticated margin
B. Unilocular variants (unicystic ameloblastoma DD):
  1. Dentigerous cyst
  2. Radicular cyst
  3. OKC
  4. Simple bone cyst
C. For solid/multicystic ameloblastoma, also consider:
  • Arteriovenous malformation
  • Paget's disease (cotton wool)
  • Ossifying fibroma

Cross Questions:

Q: What is the most common type of ameloblastoma? A: Conventional solid/multicystic ameloblastoma (>85% of cases). Others: unicystic ameloblastoma (10-15%), peripheral/extraosseous ameloblastoma (1-2%).
Q: What are the histological patterns of ameloblastoma? A: Follicular (most common) - epithelial islands with central stellate reticulum-like cells and peripheral columnar cells showing reverse polarity; Plexiform - anastomosing cords; Acanthomatous - squamous metaplasia in center; Granular cell; Desmoplastic; Basal cell type.
Q: What is "reverse polarity" in ameloblastoma? A: In normal ameloblasts, the nucleus is at the secretory end. In ameloblastoma, the nucleus is moved to the opposite end (away from basement membrane) - called reverse nuclear polarity or reverse polarization. This is a key histological feature.
Q: What is the treatment of ameloblastoma? A: Resection with 1-1.5 cm bony margins is the treatment of choice for conventional ameloblastoma (high recurrence with curettage alone - 50-90%). Unicystic ameloblastoma can be managed with enucleation + curettage. Carnoy's solution/peripheral ostectomy used as adjunct.

Q8. Properties of X-Rays

Physical Properties:
  1. Travel in straight lines at the speed of light (3 × 10⁸ m/s)
  2. Invisible - cannot be seen, felt, tasted, or smelled
  3. No mass, no charge - electromagnetic radiation (photons)
  4. Polyenergetic/heterogeneous - produced as a spectrum, not single wavelength
  5. Short wavelength, high frequency - wavelength: 0.01-10 nm for diagnostic X-rays
  6. Travel in divergent beam from focal spot
  7. Cannot be focused by lens (unlike visible light)
Interactions with Matter (key properties):
  1. Penetration - can penetrate matter; degree depends on kVp and density/atomic number of material
  2. Attenuation - reduction of beam intensity as it passes through matter (absorption + scatter)
    • Photoelectric effect (main in diagnostic range): X-ray photon completely absorbed by inner shell electron; characteristic radiation released; proportional to Z³ and inversely proportional to E³
    • Compton scatter: X-ray knocks out outer shell electron; photon deflected with reduced energy; main source of scatter radiation in diagnostic radiology
    • Coherent/classical scatter: Low energy X-rays deflected without ionization; not significant diagnostically
    • Pair production: Occurs >1.02 MeV; not relevant in diagnostic radiology
  3. Ionization - knocks electrons from atoms, creating ion pairs; basis of biological damage
Biological Properties:
  1. Cause biological damage - ionization leads to free radical formation; DNA strand breaks; mutagenic and carcinogenic
  2. Latent period - effects not immediately apparent
  3. Stochastic effects - (no threshold, probability proportional to dose): cancer, genetic mutations
  4. Deterministic/tissue effects - (threshold exists, severity increases with dose): cataracts, erythema, sterility, radiation sickness
  5. More damaging to rapidly dividing cells (Law of Bergonie and Tribondeau)
Photographic properties:
  1. Affect photographic film - expose silver halide crystals; basis of radiographic imaging
  2. Cause fluorescence - certain materials (calcium tungstate, rare earth phosphors) glow when irradiated - used in intensifying screens
Other properties:
  1. Produce secondary/scatter radiation
  2. Can produce characteristic radiation from target material
  3. Subject to inverse square law - intensity ∝ 1/d²

Cross Questions:

Q: How are X-rays produced? A: Two mechanisms: (1) Bremsstrahlung radiation - electrons decelerate as they pass near/interact with nucleus; kinetic energy converted to X-ray photons; produces the continuous spectrum. (2) Characteristic radiation - electrons eject inner shell electrons; outer shell electrons fill the vacancy; difference in binding energies emitted as characteristic X-ray photon.
Q: What is the Law of Bergonie and Tribondeau? A: Cells are more radiosensitive if they are: (1) highly mitotic/rapidly dividing, (2) undifferentiated, (3) have a long mitotic future. Exceptions: small lymphocytes are highly sensitive despite being non-dividing; oocytes are highly sensitive.
Q: What is the difference between stochastic and deterministic effects? A: Stochastic effects have no threshold dose; the probability increases with dose but severity does not change (e.g., cancer, genetic mutations). Deterministic effects have a threshold dose below which they do not occur; severity increases with dose above threshold (e.g., cataracts at >5 Gy, acute radiation sickness).

Q9. Radiographic Features of Osteosarcoma

Osteosarcoma of the Jaw:
  • Rare but most common primary malignant bone tumor overall
  • Jaw osteosarcoma: 10-15 years older than long bone osteosarcoma (3rd-4th decade)
  • Mandible > Maxilla; mandibular body most common
Radiographic Features:
  1. "Sunray" / "Sunburst" pattern (MOST CHARACTERISTIC)
    • Radiating spicules of tumor bone perpendicular to the cortical surface
    • Represents periosteal reaction with tumor bone formation along vessels
  2. Codman's triangle
    • Periosteal bone forms a triangular shadow at the periphery where the tumor lifts the periosteum
    • Represents the elevated periosteum at the periphery of the lesion
    • NOT pathognomonic - also seen in Ewing's sarcoma, aggressive infections, ABC
  3. "Widened periodontal ligament space" (EARLIEST sign in jaw osteosarcoma)
    • Symmetrical widening of PDL space around teeth
    • More specific to jaw osteosarcoma than sunray pattern
    • Due to tumor infiltrating PDL space
  4. Ill-defined, irregular radiolucency with bone destruction (osteolytic type)
  5. Mixed radiolucent-radiopaque lesion (most common presentation)
  6. Radiopaque/sclerotic appearance (osteoblastic/osteosclerotic type)
  7. Cortical destruction and breakthrough
  8. Root resorption may occur (less common than other tumors)
  9. Moth-eaten pattern of bone destruction
  10. On CT/MRI: Cortical destruction, soft tissue mass extension, periosteal reaction better seen; MRI shows extent of medullary involvement and soft tissue mass
Types based on radiographic appearance:
  • Osteolytic: predominantly radiolucent
  • Osteoblastic: predominantly radiopaque
  • Mixed (most common ~50%): mixed RL-RO

Cross Questions:

Q: What is the earliest radiographic sign of jaw osteosarcoma? A: Symmetrical widening of the periodontal ligament space (PDL space) around the roots of teeth. This is due to tumor infiltration of the periodontal ligament. This sign is relatively specific to jaw osteosarcoma.
Q: How does jaw osteosarcoma differ from long bone osteosarcoma? A: Jaw OS presents in older patients (3rd-4th decade vs 2nd decade), has a better prognosis (5-year survival ~40% vs 20% for long bone), lower rate of pulmonary metastasis, better response to surgery. Sun-ray pattern is less common in jaw; PDL widening is more specific to jaw.
Q: What is the Codman's triangle and is it pathognomonic? A: Codman's triangle is a triangular area of periosteal new bone formed at the edge of a rapidly growing lesion (tumor/infection lifts periosteum; periosteum lays down bone at periphery while center breaks through). It is NOT pathognomonic of osteosarcoma - also seen in Ewing's sarcoma, aggressive osteomyelitis, and aneurysmal bone cyst.
Q: What are the differential diagnoses of osteosarcoma of the jaw? A: Ewing's sarcoma (more lytic, "onion peel" periosteal reaction), chondrosarcoma, fibrosarcoma, metastatic carcinoma, Paget's disease (older patients), chronic osteomyelitis, ameloblastoma (no periosteal reaction).

Q10. Globulomaxillary Cyst

Note: Globulomaxillary "cyst" is now considered a CONTROVERSIAL ENTITY - this is very important to mention in a viva!
Historical concept: Classified as a fissural cyst arising from epithelium trapped at the fusion of the globular process of medial nasal process and the maxillary process during embryonic development (between lateral incisor and canine).
Current concept (important!): Research by Christ (1970) showed that this area does not contain epithelial remnants of fusion; rather the "cyst" is a collective term for any cyst occurring at this site. Most lesions previously called globulomaxillary cysts are actually:
  • Lateral periodontal cyst (most common true entity)
  • Odontogenic Keratocyst (OKC)
  • Periapical/radicular cyst of non-vital lateral incisor
  • Ameloblastoma
  • Adenomatoid odontogenic tumor (AOT)
Radiographic Features (of the lesion at this site):
  1. Inverted pear-shaped / teardrop-shaped radiolucency between the lateral incisor and canine (classic description)
  2. Divergence/displacement of roots of lateral incisor and canine
  3. Well-defined, corticated margins
  4. Root resorption (uncommon)
  5. Located between the roots, not at the apex (unlike periapical cyst)
Location: Between maxillary lateral incisor (22/12) and canine (23/13)
Clinical features:
  • Usually asymptomatic
  • May cause swelling in labial/palatal region
  • Teeth involved are VITAL (unless secondarily infected)
Treatment: Enucleation; treat the true underlying lesion appropriately

Cross Questions:

Q: Is globulomaxillary cyst a true fissural cyst? A: No. It is now considered a controversial entity. The concept of fissural cysts has largely been abandoned because embryological studies show that the areas of facial process fusion (including globulomaxillary region) are fully mesenchymalized before any epithelium could be trapped. The term is now used as a descriptive/location term rather than a pathological entity.
Q: What are the vital tests findings in globulomaxillary lesion? A: The involved teeth (lateral incisor and canine) are typically VITAL, which distinguishes it from a periapical cyst (which requires non-vital tooth). However, if secondary infection occurs, vitality may be affected.
Q: What is the radiographic shape of a globulomaxillary cyst? A: Classic description is an inverted pear or teardrop shape, located between the lateral incisor and canine, with root divergence of these teeth.
Q: Name other fissural cysts (now considered controversial): A: Nasopalatine duct cyst (incisive canal cyst) - still widely accepted; Nasolabial cyst; Median palatal cyst; Median alveolar cyst; Median mandibular cyst. Most of these are now reclassified as non-fissural odontogenic or nasopalatine duct-origin cysts.

QUICK SUMMARY TABLE - Key Numbers to Remember

TopicKey Number
Radiation caries onset3-6 months post-RT
Radiation for xerostomia>26 Gy significant; >60 Gy permanent
OLP malignant transformation1-3%
Speckled leukoplakia transformation15-40%
OSMF malignant transformation7-13%
Total filtration <70kVp1.5 mm Al
Total filtration ≥70kVp2.5 mm Al
Round collimator max diameter≤7 cm at skin
Operator distance≥6 feet (1.8 m)
Operator angle to beam90-135°
OLP biopsy: Basal layer degenerationCivatte bodies
Ameloblastoma recurrence (curettage)50-90%
PDL widening inOsteosarcoma (earliest sign)
Sunray pattern - seen inOsteosarcoma (most characteristic)

TOP COMMON VIVA TRAPS

  1. Globulomaxillary cyst is NOT a true fissural cyst - always mention this
  2. Codman's triangle is NOT pathognomonic of osteosarcoma
  3. Sequestrum looks RADIOPAQUE (dense dead bone) surrounded by radiolucent halo
  4. Radiation caries hits cervical areas - atypical sites unlike normal caries
  5. Speckled leukoplakia has the HIGHEST malignant potential among leukoplakia types
  6. OSMF primary step = stop areca nut before any medical/surgical treatment
  7. Rectangular collimation reduces dose by 60-70% - more than round collimation
  8. Widening of PDL space = earliest sign of jaw osteosarcoma
  9. Reticular OLP = most common form; Bullous = rarest; Erosive = highest malignant potential
  10. Bremsstrahlung = continuous spectrum; Characteristic = line spectrum in X-ray productionAll 12 questions from your paper are covered above. Here is a quick orientation to the guide:
What's included for each question:
  • A structured main answer covering all required points
  • 4-6 probable cross-questions with clean, direct answers
  • Key numbers, comparisons, and distinguishing features highlighted
High-priority viva traps to NOT miss:
  • Globulomaxillary "cyst" - always call it controversial/no longer a true fissural cyst
  • Codman's triangle - NOT pathognomonic of osteosarcoma
  • PDL widening = earliest jaw osteosarcoma sign (examiners love this)
  • SLOB rule for PDR cross-question
  • Reticular OLP = most common; Erosive = highest malignant potential
  • Speckled leukoplakia has the highest malignant transformation rate among all leukoplakia subtypes
  • Rectangular collimator reduces dose more than round - always specify the 60-70% figure
Good luck with your viva!

Create a study PDF with key figures and conversion tables for radiation topics

Reading File
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or not found"

Running Command

mkdir -p /home/daytona/workspace/radiation-study && python3 -c "import reportlab; print('reportlab ok')" && python3 -c "from reportlab.lib.pagesizes import A4; print(A4)"

Writing File

~/radiation-study/build_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether, PageBreak
)
from reportlab.platypus.flowables import Flowable
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.graphics.shapes import Drawing, Rect, String, Line, Circle, Polygon
from reportlab.graphics.charts.barcharts import VerticalBarChart
from reportlab.graphics import renderPDF
import math

# ── Colour palette ──────────────────────────────────────────────────────────
NAVY      = colors.HexColor("#1a2a4a")
TEAL      = colors.HexColor("#0d7377")
GOLD      = colors.HexColor("#f5a623")
LIGHT_BG  = colors.HexColor("#eef4fb")
LIGHT_TL  = colors.HexColor("#e0f5f5")
RED_ACC   = colors.HexColor("#c0392b")
GREEN_ACC = colors.HexColor("#27ae60")
ORANGE    = colors.HexColor("#e67e22")
PURPLE    = colors.HexColor("#8e44ad")
WHITE     = colors.white
GREY_LT   = colors.HexColor("#f2f2f2")
GREY_MID  = colors.HexColor("#bdc3c7")

W, H = A4

# ── Styles ───────────────────────────────────────────────────────────────────
base = getSampleStyleSheet()

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

TITLE_S  = S("title_s",  fontName="Helvetica-Bold",   fontSize=24, textColor=WHITE,       alignment=TA_CENTER, spaceAfter=4)
SUB_S    = S("sub_s",    fontName="Helvetica",         fontSize=11, textColor=LIGHT_BG,    alignment=TA_CENTER, spaceAfter=2)
H1_S     = S("h1_s",     fontName="Helvetica-Bold",   fontSize=14, textColor=NAVY,        spaceBefore=12, spaceAfter=4)
H2_S     = S("h2_s",     fontName="Helvetica-Bold",   fontSize=11, textColor=WHITE,       spaceBefore=2, spaceAfter=2)
BODY_S   = S("body_s",   fontName="Helvetica",         fontSize=9,  textColor=colors.black, leading=14, spaceAfter=3)
SMALL_S  = S("small_s",  fontName="Helvetica",         fontSize=8,  textColor=colors.HexColor("#444444"), leading=12)
BOLD_S   = S("bold_s",   fontName="Helvetica-Bold",   fontSize=9,  textColor=NAVY)
NOTE_S   = S("note_s",   fontName="Helvetica-Oblique",fontSize=8,  textColor=RED_ACC, leading=12)
FOOT_S   = S("foot_s",   fontName="Helvetica",         fontSize=7,  textColor=GREY_MID, alignment=TA_CENTER)
CELL_HDR = S("cell_hdr", fontName="Helvetica-Bold",   fontSize=8,  textColor=WHITE,       alignment=TA_CENTER, leading=10)
CELL_S   = S("cell_s",   fontName="Helvetica",         fontSize=8,  textColor=colors.black, alignment=TA_CENTER, leading=10)
CELL_L   = S("cell_l",   fontName="Helvetica",         fontSize=8,  textColor=colors.black, alignment=TA_LEFT,   leading=10)
CELL_BL  = S("cell_bl",  fontName="Helvetica-Bold",   fontSize=8,  textColor=NAVY,        alignment=TA_LEFT,   leading=10)

# ── Helpers ───────────────────────────────────────────────────────────────────
def hdr_para(text, style=H2_S, bg=NAVY):
    """Coloured header bar with white text via single-cell table."""
    t = Table([[Paragraph(text, style)]], colWidths=[W - 4*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("LEFTPADDING",  (0,0), (-1,-1), 8),
        ("RIGHTPADDING", (0,0), (-1,-1), 8),
        ("TOPPADDING",   (0,0), (-1,-1), 5),
        ("BOTTOMPADDING",(0,0), (-1,-1), 5),
        ("ROUNDEDCORNERS", (0,0), (-1,-1), [4,4,4,4]),
    ]))
    return t

def box_table(data, col_widths, header_rows=1,
              hdr_bg=NAVY, alt_bg=LIGHT_BG, border=TEAL):
    style = [
        ("BACKGROUND",   (0,0), (-1, header_rows-1), hdr_bg),
        ("TEXTCOLOR",    (0,0), (-1, header_rows-1), WHITE),
        ("FONTNAME",     (0,0), (-1, header_rows-1), "Helvetica-Bold"),
        ("FONTSIZE",     (0,0), (-1,-1), 8),
        ("ALIGN",        (0,0), (-1,-1), "CENTER"),
        ("VALIGN",       (0,0), (-1,-1), "MIDDLE"),
        ("GRID",         (0,0), (-1,-1), 0.4, border),
        ("ROWBACKGROUNDS",(0, header_rows), (-1,-1), [WHITE, alt_bg]),
        ("TOPPADDING",   (0,0), (-1,-1), 4),
        ("BOTTOMPADDING",(0,0), (-1,-1), 4),
        ("LEFTPADDING",  (0,0), (-1,-1), 5),
        ("RIGHTPADDING", (0,0), (-1,-1), 5),
    ]
    return Table(data, colWidths=col_widths, style=TableStyle(style), repeatRows=header_rows)

def bullet(text, indent=0.3):
    return Paragraph(f"<bullet>&#8226;</bullet> {text}", 
                     ParagraphStyle("bul", fontName="Helvetica", fontSize=8.5,
                                    textColor=colors.black, leading=13,
                                    leftIndent=indent*cm, spaceAfter=2))

def red_bullet(text):
    return Paragraph(f"<font color='#c0392b'><b>!</b></font>  {text}",
                     ParagraphStyle("rbul", fontName="Helvetica", fontSize=8.5,
                                    textColor=colors.black, leading=13,
                                    leftIndent=0.4*cm, spaceAfter=2))

def sp(n=1): return Spacer(1, n*0.35*cm)

# ── Custom Flowables ──────────────────────────────────────────────────────────

class TitleBlock(Flowable):
    """Full-width gradient-style title block."""
    def __init__(self, w=W-4*cm, h=3.8*cm):
        super().__init__()
        self.W = w; self.H = h
    def wrap(self, *args): return self.W, self.H
    def draw(self):
        c = self.canv
        # Background gradient (simulate with rects)
        steps = 30
        for i in range(steps):
            r = NAVY.red   + (TEAL.red   - NAVY.red)   * i / steps
            g = NAVY.green + (TEAL.green - NAVY.green)  * i / steps
            b = NAVY.blue  + (TEAL.blue  - NAVY.blue)   * i / steps
            c.setFillColorRGB(r, g, b)
            c.rect(self.W*i/steps, 0, self.W/steps+1, self.H, fill=1, stroke=0)
        # Gold accent bar
        c.setFillColor(GOLD)
        c.rect(0, self.H-0.18*cm, self.W, 0.18*cm, fill=1, stroke=0)
        c.rect(0, 0, self.W, 0.12*cm, fill=1, stroke=0)
        # Title text
        c.setFillColor(WHITE)
        c.setFont("Helvetica-Bold", 22)
        c.drawCentredString(self.W/2, self.H - 1.2*cm, "ORAL RADIOLOGY")
        c.setFont("Helvetica-Bold", 17)
        c.drawCentredString(self.W/2, self.H - 2.0*cm, "Radiation Study Guide")
        c.setFont("Helvetica", 10)
        c.setFillColor(LIGHT_BG)
        c.drawCentredString(self.W/2, self.H - 2.65*cm,
                            "Key Figures · Conversion Tables · Clinical Thresholds · Exam Mnemonics")
        c.setFont("Helvetica-Oblique", 8)
        c.setFillColor(GOLD)
        c.drawCentredString(self.W/2, self.H - 3.15*cm, "Oral Medicine & Oral Radiology  |  BDS / MDS Viva Preparation")


class XRayTubeDiagram(Flowable):
    """Schematic of X-ray tube components."""
    def __init__(self, w=16*cm, h=7.5*cm):
        super().__init__()
        self.W = w; self.H = h
    def wrap(self, *args): return self.W, self.H
    def draw(self):
        c = self.canv
        W, H = self.W, self.H
        # Glass envelope
        c.setStrokeColor(TEAL); c.setLineWidth(1.5)
        c.setFillColor(colors.HexColor("#e8f8f8"))
        c.roundRect(0.3*cm, 0.8*cm, W-0.6*cm, H-1.4*cm, 0.5*cm, fill=1, stroke=1)
        # Label
        c.setFont("Helvetica-Bold", 8); c.setFillColor(TEAL)
        c.drawString(0.5*cm, H-0.55*cm, "Glass/Metal Envelope (Vacuum)")

        # Cathode assembly
        cx = 1.8*cm
        c.setFillColor(NAVY); c.setStrokeColor(NAVY); c.setLineWidth(1)
        c.rect(cx-0.35*cm, H/2-1.1*cm, 0.7*cm, 2.2*cm, fill=1, stroke=0)
        # Filament coil symbol
        c.setStrokeColor(GOLD); c.setLineWidth(2); c.setFillColor(GOLD)
        for i in range(5):
            y = H/2 - 0.6*cm + i*0.22*cm
            c.arc(cx-0.12*cm, y, cx+0.12*cm, y+0.2*cm, 0, 180)
        c.setFont("Helvetica-Bold", 8); c.setFillColor(NAVY)
        c.drawCentredString(cx, 0.45*cm, "CATHODE")
        c.setFont("Helvetica", 7); c.setFillColor(colors.black)
        c.drawCentredString(cx, 0.22*cm, "(Tungsten filament)")

        # Electron beam arrows
        ax_start = cx + 0.4*cm
        ax_end   = W - 3.2*cm
        c.setStrokeColor(GOLD); c.setLineWidth(1.2)
        for dy in [-0.25*cm, 0, 0.25*cm]:
            c.line(ax_start, H/2+dy, ax_end, H/2+dy)
            # arrowhead
            c.setFillColor(GOLD)
            c.polygon([ax_end, H/2+dy,
                       ax_end-0.22*cm, H/2+dy+0.1*cm,
                       ax_end-0.22*cm, H/2+dy-0.1*cm], fill=1)
        c.setFont("Helvetica-Oblique", 7); c.setFillColor(GOLD)
        c.drawCentredString((ax_start+ax_end)/2, H/2+0.45*cm, "electron beam")

        # Anode
        atx = W - 2.5*cm
        c.setFillColor(colors.HexColor("#b7950b"))
        c.polygon([atx, H/2-0.7*cm,
                   atx+0.9*cm, H/2,
                   atx, H/2+0.7*cm], fill=1, stroke=0)
        c.setFont("Helvetica-Bold", 8); c.setFillColor(NAVY)
        c.drawCentredString(atx+0.35*cm, 0.45*cm, "ANODE")
        c.setFont("Helvetica", 7); c.setFillColor(colors.black)
        c.drawCentredString(atx+0.35*cm, 0.22*cm, "(Tungsten target)")

        # X-ray beam downward
        bx = atx + 0.05*cm
        c.setStrokeColor(RED_ACC); c.setLineWidth(2)
        c.line(bx, H/2-0.7*cm, bx, 0.95*cm)
        # diverging rays
        c.setLineWidth(1)
        for angle in [-25, 0, 25]:
            rad = math.radians(270 + angle)
            ex = bx + 1.4*cm * math.cos(rad)
            ey = H/2-0.7*cm + 1.4*cm * math.sin(rad)
            c.line(bx, H/2-0.7*cm, ex, ey)
        c.setFont("Helvetica-Bold", 7.5); c.setFillColor(RED_ACC)
        c.drawCentredString(bx, 0.7*cm, "X-RAY BEAM")

        # Focusing cup label
        c.setFont("Helvetica", 7); c.setFillColor(PURPLE)
        c.drawString(0.1*cm, H/2+1.0*cm, "Focusing cup")
        c.setStrokeColor(PURPLE); c.setLineWidth(0.5)
        c.line(1.15*cm, H/2+0.9*cm, cx-0.35*cm, H/2+0.7*cm)

        # kV label
        c.setFont("Helvetica-Bold", 8); c.setFillColor(TEAL)
        c.drawCentredString(W/2, H-0.5*cm, "High Voltage (kVp 60-120)")
        c.setStrokeColor(TEAL); c.setLineWidth(0.8)
        c.line(1.5*cm, H-0.35*cm, W-1.5*cm, H-0.35*cm)


class InverseSquareDiagram(Flowable):
    """Visual of inverse square law with circles."""
    def __init__(self, w=13*cm, h=5.5*cm):
        super().__init__()
        self.W = w; self.H = h
    def wrap(self, *args): return self.W, self.H
    def draw(self):
        c = self.canv
        W, H = self.W, self.H
        ox, oy = 1.0*cm, H/2
        # source
        c.setFillColor(GOLD); c.setStrokeColor(GOLD)
        c.circle(ox, oy, 0.2*cm, fill=1)
        c.setFont("Helvetica-Bold", 7.5); c.setFillColor(NAVY)
        c.drawCentredString(ox, oy-0.55*cm, "Source")

        distances = [2.5, 5.5, 9.5]
        labels    = ["d", "2d", "3d"]
        intensities = ["I", "I/4", "I/9"]
        dot_counts  = [9, 4, 2]
        dot_color   = RED_ACC

        for idx, (dx, lbl, ints, ndots) in enumerate(
                zip(distances, labels, intensities, dot_counts)):
            xpos = ox + dx*cm
            # vertical line
            c.setStrokeColor(GREY_MID); c.setLineWidth(0.7)
            c.line(xpos, oy-1.3*cm, xpos, oy+1.3*cm)
            # dots representing intensity
            c.setFillColor(dot_color)
            cols = int(math.ceil(math.sqrt(ndots)))
            for d in range(ndots):
                row = d // cols; col = d % cols
                px = xpos - 0.25*cm + col*0.18*cm
                py = oy + 0.4*cm - row*0.22*cm
                c.circle(px, py, 0.055*cm, fill=1, stroke=0)
            # labels
            c.setFont("Helvetica-Bold", 8.5); c.setFillColor(TEAL)
            c.drawCentredString(xpos, oy-1.55*cm, lbl)
            c.setFont("Helvetica", 8); c.setFillColor(NAVY)
            c.drawCentredString(xpos, oy-1.9*cm, ints)

        # rays from source
        c.setStrokeColor(GOLD); c.setLineWidth(0.6)
        for angle in [-30, -15, 0, 15, 30]:
            rad = math.radians(angle)
            c.line(ox+0.2*cm, oy,
                   ox + 10.5*cm*math.cos(rad),
                   oy + 10.5*cm*math.sin(rad))

        # formula
        c.setFont("Helvetica-Bold", 10); c.setFillColor(NAVY)
        c.drawString(0.1*cm, 0.15*cm, "I  \u221d  1 / d\u00b2")
        c.setFont("Helvetica", 7.5); c.setFillColor(colors.black)
        c.drawString(2.5*cm, 0.15*cm, "   Doubling distance \u2192 intensity reduced to 1/4")


class BeamQualityBar(Flowable):
    """Horizontal bar showing kVp effect on beam quality."""
    def __init__(self, w=15*cm, h=2.6*cm):
        super().__init__()
        self.W = w; self.H = h
    def wrap(self, *args): return self.W, self.H
    def draw(self):
        c = self.canv
        W, H = self.W, self.H
        # gradient bar
        steps = 60
        for i in range(steps):
            t = i/steps
            r = colors.HexColor("#3498db").red   * (1-t) + RED_ACC.red   * t
            g = colors.HexColor("#3498db").green * (1-t) + RED_ACC.green * t
            b = colors.HexColor("#3498db").blue  * (1-t) + RED_ACC.blue  * t
            c.setFillColorRGB(r, g, b)
            c.rect(W*i/steps, H/2-0.3*cm, W/steps+1, 0.6*cm, fill=1, stroke=0)
        # border
        c.setStrokeColor(NAVY); c.setLineWidth(1)
        c.rect(0, H/2-0.3*cm, W, 0.6*cm, fill=0, stroke=1)
        # ticks
        kvps = [50, 60, 65, 70, 80, 90, 100, 120]
        for kv in kvps:
            x = W * (kv-50)/(120-50)
            c.setStrokeColor(WHITE); c.setLineWidth(0.8)
            c.line(x, H/2-0.28*cm, x, H/2+0.28*cm)
            c.setFont("Helvetica", 6.5); c.setFillColor(NAVY)
            c.drawCentredString(x, H/2-0.55*cm, str(kv))
        c.setFont("Helvetica-Bold", 7.5); c.setFillColor(NAVY)
        c.drawString(0, 0.1*cm, "50 kVp  (Soft / Low energy)")
        c.drawRightString(W, 0.1*cm, "120 kVp  (Hard / High energy)")
        c.setFont("Helvetica-Bold", 8); c.setFillColor(WHITE)
        c.drawCentredString(W/2, H/2-0.12*cm, "kVp (kilovoltage peak)")
        # filtration markers
        c.setStrokeColor(GOLD); c.setLineWidth(1.5)
        x70 = W * (70-50)/(120-50)
        c.line(x70, H/2+0.3*cm, x70, H/2+0.7*cm)
        c.setFont("Helvetica-Bold", 7); c.setFillColor(GOLD)
        c.drawCentredString(x70, H/2+0.78*cm, "70 kVp threshold")
        c.setFont("Helvetica", 6.5); c.setFillColor(TEAL)
        c.drawCentredString(W*0.15, H-0.1*cm, "Filter: 1.5 mm Al")
        c.drawCentredString(W*0.7,  H-0.1*cm, "Filter: 2.5 mm Al")


class RadiationScaleDiagram(Flowable):
    """Electromagnetic spectrum snippet showing X-ray position."""
    def __init__(self, w=15*cm, h=3.2*cm):
        super().__init__()
        self.W = w; self.H = h
    def wrap(self, *args): return self.W, self.H
    def draw(self):
        c = self.canv
        W, H = self.W, self.H
        segments = [
            ("Radio", colors.HexColor("#2980b9"), "10³m"),
            ("Micro", colors.HexColor("#27ae60"), "1mm"),
            ("IR",    colors.HexColor("#e67e22"), "700nm"),
            ("Visible",colors.HexColor("#f1c40f"),"400nm"),
            ("UV",    PURPLE,                     "10nm"),
            ("X-RAY", RED_ACC,                    "0.01nm"),
            ("Gamma", colors.HexColor("#922b21"), "0.001nm"),
        ]
        sw = W / len(segments)
        for i, (label, col, wl) in enumerate(segments):
            c.setFillColor(col)
            c.rect(i*sw, H/2, sw-1, H/2-0.1*cm, fill=1, stroke=0)
            c.setFillColor(WHITE if col != colors.HexColor("#f1c40f") else NAVY)
            c.setFont("Helvetica-Bold", 7)
            c.drawCentredString(i*sw + sw/2, H/2+0.5*cm, label)
            c.setFont("Helvetica", 6)
            c.setFillColor(NAVY)
            c.drawCentredString(i*sw + sw/2, H/2+0.22*cm, wl)
        # Arrow: increasing energy
        c.setStrokeColor(NAVY); c.setFillColor(NAVY); c.setLineWidth(1)
        c.line(0.1*cm, H/2-0.35*cm, W-0.1*cm, H/2-0.35*cm)
        c.polygon([W-0.1*cm, H/2-0.35*cm,
                   W-0.4*cm, H/2-0.22*cm,
                   W-0.4*cm, H/2-0.48*cm], fill=1)
        c.setFont("Helvetica-Bold", 7.5); c.setFillColor(NAVY)
        c.drawString(0.1*cm, H/2-0.6*cm, "Increasing Energy / Frequency")
        c.drawRightString(W, H/2-0.6*cm, "Decreasing Wavelength")
        # X-ray highlight box
        xi = 5 * sw
        c.setStrokeColor(GOLD); c.setLineWidth(2)
        c.rect(xi, H/2, sw-1, H/2-0.1*cm, fill=0, stroke=1)


# ── PAGE HEADER / FOOTER ──────────────────────────────────────────────────────
def on_page(canvas, doc):
    canvas.saveState()
    # Top bar
    canvas.setFillColor(NAVY)
    canvas.rect(0, H-0.65*cm, W, 0.65*cm, fill=1, stroke=0)
    canvas.setFillColor(GOLD)
    canvas.setFont("Helvetica-Bold", 8)
    canvas.drawString(1.5*cm, H-0.45*cm, "ORAL RADIOLOGY  |  Radiation Study Guide")
    canvas.setFillColor(LIGHT_BG)
    canvas.setFont("Helvetica", 8)
    canvas.drawRightString(W-1.5*cm, H-0.45*cm, f"Page {doc.page}")
    # Bottom bar
    canvas.setFillColor(TEAL)
    canvas.rect(0, 0, W, 0.4*cm, fill=1, stroke=0)
    canvas.setFillColor(WHITE)
    canvas.setFont("Helvetica", 6.5)
    canvas.drawCentredString(W/2, 0.12*cm, "BDS/MDS Viva Preparation  |  Oral Medicine & Oral Radiology")
    canvas.restoreState()

def on_first_page(canvas, doc):
    canvas.saveState()
    canvas.setFillColor(TEAL)
    canvas.rect(0, 0, W, 0.4*cm, fill=1, stroke=0)
    canvas.setFillColor(WHITE); canvas.setFont("Helvetica", 6.5)
    canvas.drawCentredString(W/2, 0.12*cm, "BDS/MDS Viva Preparation  |  Oral Medicine & Oral Radiology")
    canvas.restoreState()


# ── BUILD ─────────────────────────────────────────────────────────────────────
def build():
    path = "/home/daytona/workspace/radiation-study/Radiation_Study_Guide.pdf"
    doc = SimpleDocTemplate(
        path, pagesize=A4,
        leftMargin=2*cm, rightMargin=2*cm,
        topMargin=1.2*cm, bottomMargin=1.2*cm,
        title="Oral Radiology Radiation Study Guide",
        author="Oral Radiology Viva Prep"
    )
    story = []
    CW = W - 4*cm  # content width

    # ═══════════════════════════════════════════════════════════════════════
    # TITLE BLOCK
    # ═══════════════════════════════════════════════════════════════════════
    story.append(TitleBlock(CW, 3.8*cm))
    story.append(sp(1.5))

    # Quick nav pills (simulated as coloured table cells)
    nav_data = [["X-RAY TUBE", "RADIATION UNITS", "FILTRATION", "DOSE LIMITS", "INVERSE SQ.", "EM SPECTRUM"]]
    nav_cols = [CW/6]*6
    nav_t = Table(nav_data, colWidths=nav_cols)
    nav_t.setStyle(TableStyle([
        ("BACKGROUND",  (0,0),(0,0), TEAL),
        ("BACKGROUND",  (1,0),(1,0), NAVY),
        ("BACKGROUND",  (2,0),(2,0), TEAL),
        ("BACKGROUND",  (3,0),(3,0), RED_ACC),
        ("BACKGROUND",  (4,0),(4,0), NAVY),
        ("BACKGROUND",  (5,0),(5,0), TEAL),
        ("TEXTCOLOR",   (0,0),(-1,-1), WHITE),
        ("FONTNAME",    (0,0),(-1,-1), "Helvetica-Bold"),
        ("FONTSIZE",    (0,0),(-1,-1), 7),
        ("ALIGN",       (0,0),(-1,-1), "CENTER"),
        ("TOPPADDING",  (0,0),(-1,-1), 4),
        ("BOTTOMPADDING",(0,0),(-1,-1), 4),
    ]))
    story.append(nav_t)
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 1 – X-RAY TUBE DIAGRAM
    # ═══════════════════════════════════════════════════════════════════════
    story.append(hdr_para("  1.  X-RAY TUBE — COMPONENTS & LABELLED DIAGRAM", bg=NAVY))
    story.append(sp())
    story.append(XRayTubeDiagram(CW, 7.5*cm))
    story.append(sp())

    # Components table
    comp_data = [
        [Paragraph("Component", CELL_HDR), Paragraph("Material", CELL_HDR),
         Paragraph("Function", CELL_HDR), Paragraph("Key Fact", CELL_HDR)],
        [Paragraph("Filament", CELL_BL), Paragraph("Tungsten wire", CELL_S),
         Paragraph("Thermionic emission — produces electrons when heated to ~2200°C", CELL_L),
         Paragraph("Heated by step-down transformer (3-5 V)", CELL_L)],
        [Paragraph("Focusing cup", CELL_BL), Paragraph("Molybdenum", CELL_S),
         Paragraph("Negative charge concentrates electron beam onto focal spot", CELL_L),
         Paragraph("Reduces focal spot size → sharper image", CELL_L)],
        [Paragraph("Anode (target)", CELL_BL), Paragraph("Tungsten (Z=74)", CELL_S),
         Paragraph("Electrons strike target → X-rays produced (Bremsstrahlung + characteristic)", CELL_L),
         Paragraph("High Z + high melting point (3422°C)", CELL_L)],
        [Paragraph("Glass/metal envelope", CELL_BL), Paragraph("Borosilicate / metal", CELL_S),
         Paragraph("Maintains vacuum; prevents electron scattering", CELL_L),
         Paragraph("~10⁻⁶ mmHg vacuum", CELL_L)],
        [Paragraph("Step-up transformer", CELL_BL), Paragraph("Copper coils", CELL_S),
         Paragraph("Increases voltage to 60-120 kVp for X-ray production", CELL_L),
         Paragraph("Controls quality (kVp)", CELL_L)],
        [Paragraph("Step-down transformer", CELL_BL), Paragraph("Copper coils", CELL_S),
         Paragraph("Reduces voltage to 3-5 V to heat the filament", CELL_L),
         Paragraph("Controls quantity (mA)", CELL_L)],
        [Paragraph("Insulating oil", CELL_BL), Paragraph("Transformer oil", CELL_S),
         Paragraph("Heat dissipation + electrical insulation", CELL_L),
         Paragraph("Surrounds X-ray tube inside tubehead", CELL_L)],
        [Paragraph("Al filter", CELL_BL), Paragraph("Aluminum (Al)", CELL_S),
         Paragraph("Removes low-energy (long λ) X-rays that irradiate patient but add no image info", CELL_L),
         Paragraph("1.5 mm (<70kVp) / 2.5 mm (≥70kVp)", CELL_L)],
        [Paragraph("Collimator", CELL_BL), Paragraph("Lead", CELL_S),
         Paragraph("Restricts beam size to area of interest; reduces patient dose and scatter", CELL_L),
         Paragraph("Round ≤7cm; Rect saves 60-70% dose", CELL_L)],
    ]
    comp_t = box_table(comp_data,
                       col_widths=[2.5*cm, 2.3*cm, 6.0*cm, 4.0*cm],
                       hdr_bg=TEAL)
    story.append(comp_t)
    story.append(sp())

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 2 – X-RAY PRODUCTION
    # ═══════════════════════════════════════════════════════════════════════
    story.append(sp(0.5))
    story.append(hdr_para("  2.  X-RAY PRODUCTION — BREMSSTRAHLUNG vs CHARACTERISTIC", bg=TEAL))
    story.append(sp())

    prod_data = [
        [Paragraph("Feature", CELL_HDR), Paragraph("Bremsstrahlung (Braking Radiation)", CELL_HDR),
         Paragraph("Characteristic Radiation", CELL_HDR)],
        [Paragraph("Mechanism", CELL_BL),
         Paragraph("Electrons decelerate near nucleus; kinetic energy → X-ray photon", CELL_L),
         Paragraph("Electrons eject inner-shell electrons; outer shell fills vacancy → photon", CELL_L)],
        [Paragraph("Spectrum", CELL_BL), Paragraph("Continuous spectrum", CELL_S),
         Paragraph("Line spectrum (discrete energies)", CELL_S)],
        [Paragraph("% of X-rays", CELL_BL), Paragraph("~99% of dental X-rays", CELL_S),
         Paragraph("~1% (only when kVp exceeds binding energy)", CELL_S)],
        [Paragraph("Energy range", CELL_BL), Paragraph("0 → max (kVp)", CELL_S),
         Paragraph("Fixed energies specific to target element", CELL_S)],
        [Paragraph("Dependency", CELL_BL), Paragraph("Depends on kVp and Z of target", CELL_S),
         Paragraph("Depends on target element (Z)", CELL_S)],
        [Paragraph("Tungsten K-edge", CELL_BL), Paragraph("N/A", CELL_S),
         Paragraph("Kα = 59.3 keV; Kβ = 67.2 keV (for W)", CELL_S)],
    ]
    story.append(box_table(prod_data, [2.5*cm, 5.5*cm, 5.5*cm], hdr_bg=NAVY))
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 3 – RADIATION UNITS CONVERSION TABLE
    # ═══════════════════════════════════════════════════════════════════════
    story.append(PageBreak())
    story.append(hdr_para("  3.  RADIATION UNITS — COMPLETE CONVERSION TABLE", bg=NAVY))
    story.append(sp())

    units_data = [
        [Paragraph("Quantity", CELL_HDR), Paragraph("Old Unit", CELL_HDR),
         Paragraph("SI Unit", CELL_HDR), Paragraph("Conversion", CELL_HDR),
         Paragraph("Definition / Notes", CELL_HDR)],
        # Exposure
        [Paragraph("EXPOSURE", ParagraphStyle("cat", fontName="Helvetica-Bold", fontSize=8,
                    textColor=WHITE, alignment=TA_LEFT, leading=10)),
         Paragraph("Roentgen (R)", CELL_S), Paragraph("Coulomb/kg (C/kg)", CELL_S),
         Paragraph("1 R = 2.58 × 10⁻⁴ C/kg", CELL_L),
         Paragraph("Ionization of air; only for X-rays and gamma rays in air", CELL_L)],
        # Absorbed dose
        [Paragraph("ABSORBED DOSE", ParagraphStyle("cat", fontName="Helvetica-Bold", fontSize=8,
                    textColor=WHITE, alignment=TA_LEFT, leading=10)),
         Paragraph("rad", CELL_S), Paragraph("Gray (Gy)", CELL_S),
         Paragraph("1 Gy = 100 rad\n1 rad = 0.01 Gy\n1 mGy = 100 mrad", CELL_L),
         Paragraph("Energy absorbed per unit mass (J/kg); applies to any radiation in any material", CELL_L)],
        # Equivalent dose
        [Paragraph("EQUIVALENT DOSE", ParagraphStyle("cat", fontName="Helvetica-Bold", fontSize=8,
                    textColor=WHITE, alignment=TA_LEFT, leading=10)),
         Paragraph("rem", CELL_S), Paragraph("Sievert (Sv)", CELL_S),
         Paragraph("1 Sv = 100 rem\n1 rem = 0.01 Sv\n1 mSv = 100 mrem", CELL_L),
         Paragraph("Absorbed dose × radiation weighting factor (Wr); accounts for biological effectiveness", CELL_L)],
        # Effective dose
        [Paragraph("EFFECTIVE DOSE", ParagraphStyle("cat", fontName="Helvetica-Bold", fontSize=8,
                    textColor=WHITE, alignment=TA_LEFT, leading=10)),
         Paragraph("rem", CELL_S), Paragraph("Sievert (Sv)", CELL_S),
         Paragraph("Same unit as equivalent dose", CELL_L),
         Paragraph("Equivalent dose × tissue weighting factor (Wt); whole-body risk estimate", CELL_L)],
        # Activity
        [Paragraph("ACTIVITY", ParagraphStyle("cat", fontName="Helvetica-Bold", fontSize=8,
                    textColor=WHITE, alignment=TA_LEFT, leading=10)),
         Paragraph("Curie (Ci)", CELL_S), Paragraph("Becquerel (Bq)", CELL_S),
         Paragraph("1 Ci = 3.7×10¹⁰ Bq\n1 Bq = 2.7×10⁻¹¹ Ci", CELL_L),
         Paragraph("Rate of radioactive decay; 1 Bq = 1 disintegration/sec", CELL_L)],
    ]
    # colour alternating rows by category
    units_t = Table(units_data, colWidths=[2.6*cm, 2.0*cm, 2.2*cm, 3.5*cm, 4.5*cm])
    cat_bg  = NAVY
    units_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), TEAL),
        ("TEXTCOLOR",     (0,0), (-1,0), WHITE),
        ("BACKGROUND",    (0,1), (-1,1), NAVY),
        ("BACKGROUND",    (0,2), (-1,2), TEAL),
        ("BACKGROUND",    (0,3), (-1,3), NAVY),
        ("BACKGROUND",    (0,4), (-1,4), TEAL),
        ("BACKGROUND",    (0,5), (-1,5), NAVY),
        ("TEXTCOLOR",     (0,1), (0,-1), WHITE),
        ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#aaaaaa")),
        ("FONTSIZE",      (0,0), (-1,-1), 8),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
        ("ROWBACKGROUNDS",(0,0), (-1,-1), [TEAL, NAVY]),
        ("TEXTCOLOR",     (1,1), (-1,-1), WHITE),
    ]))
    story.append(units_t)
    story.append(sp())

    # Radiation Weighting Factors
    story.append(hdr_para("  3a.  RADIATION WEIGHTING FACTORS (Wr) — ICRP 2007", bg=TEAL))
    story.append(sp())
    wr_data = [
        [Paragraph("Radiation Type", CELL_HDR), Paragraph("Weighting Factor (Wr)", CELL_HDR),
         Paragraph("Notes", CELL_HDR)],
        ["X-rays, Gamma rays, Beta", Paragraph("1", CELL_S), "Least damaging per unit absorbed dose"],
        ["Protons (>2 MeV)", Paragraph("2", CELL_S), "Moderate biological effectiveness"],
        ["Neutrons < 1 MeV", Paragraph("2.5 – 20", CELL_S), "Depends on energy; most variable"],
        ["Neutrons 1–50 MeV", Paragraph("10 – 20", CELL_S), "High energy neutrons most damaging"],
        ["Alpha particles, fission fragments", Paragraph("20", CELL_S), "Most biologically damaging (short range, dense ionization)"],
    ]
    story.append(box_table(wr_data, [4.5*cm, 3.5*cm, 6.8*cm], hdr_bg=NAVY))
    story.append(sp())

    # Tissue Weighting Factors
    story.append(hdr_para("  3b.  TISSUE WEIGHTING FACTORS (Wt) — ICRP 2007", bg=TEAL))
    story.append(sp())
    wt_data = [
        [Paragraph("Wt", CELL_HDR), Paragraph("Tissues/Organs", CELL_HDR)],
        ["0.12 (each)", "Bone marrow (red), Colon, Lung, Stomach, Breast, Remainder tissues"],
        ["0.08 (each)", "Gonads"],
        ["0.04 (each)", "Urinary bladder, Oesophagus, Liver, Thyroid"],
        ["0.01 (each)", "Bone surface, Brain, Salivary glands, Skin"],
        ["SUM = 1.00", "Total body weighting factor"],
    ]
    story.append(box_table(wt_data, [3*cm, 11.8*cm], hdr_bg=NAVY))
    story.append(sp(0.5))
    story.append(Paragraph("<font color='#c0392b'><b>Dental relevance:</b></font>  Thyroid Wt = 0.04; Bone marrow Wt = 0.12; Salivary glands Wt = 0.01. "
                           "Use thyroid shield + lead apron to protect these tissues.", BODY_S))
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 4 – DOSE LIMITS
    # ═══════════════════════════════════════════════════════════════════════
    story.append(PageBreak())
    story.append(hdr_para("  4.  RADIATION DOSE LIMITS (ICRP 2007 / AERB India)", bg=NAVY))
    story.append(sp())

    dose_data = [
        [Paragraph("Category", CELL_HDR), Paragraph("Effective Dose Limit", CELL_HDR),
         Paragraph("Equivalent Dose – Lens of Eye", CELL_HDR),
         Paragraph("Equivalent Dose – Skin / Extremities", CELL_HDR)],
        [Paragraph("Radiation workers\n(occupational)", CELL_BL),
         Paragraph("20 mSv/year (averaged over 5 years)\nMax 50 mSv in any single year", CELL_S),
         Paragraph("20 mSv/year\n(ICRP 2011 update)", CELL_S),
         Paragraph("500 mSv/year", CELL_S)],
        [Paragraph("Pregnant radiation worker", CELL_BL),
         Paragraph("1 mSv for remainder of pregnancy\n(abdomen surface)", CELL_S),
         Paragraph("—", CELL_S), Paragraph("—", CELL_S)],
        [Paragraph("General public", CELL_BL),
         Paragraph("1 mSv/year", CELL_S),
         Paragraph("15 mSv/year\n(old ICRP 60 = 150 mSv)", CELL_S),
         Paragraph("50 mSv/year", CELL_S)],
        [Paragraph("Students (<18 yrs)", CELL_BL),
         Paragraph("6 mSv/year (if using radiation)", CELL_S),
         Paragraph("15 mSv/year", CELL_S),
         Paragraph("50 mSv/year", CELL_S)],
    ]
    story.append(box_table(dose_data, [3.2*cm, 4.5*cm, 3.5*cm, 3.6*cm], hdr_bg=RED_ACC))
    story.append(sp())

    # Typical dental doses table
    story.append(hdr_para("  4a.  TYPICAL EFFECTIVE DOSES — DENTAL RADIOGRAPHY", bg=TEAL))
    story.append(sp())
    dental_dose_data = [
        [Paragraph("Radiograph", CELL_HDR), Paragraph("Approximate Effective Dose", CELL_HDR),
         Paragraph("Equivalent Background Radiation", CELL_HDR)],
        ["Periapical (D-speed film)", "~8 µSv", "~1 day natural background"],
        ["Periapical (F-speed / digital)", "~1-2 µSv", "<1 day"],
        ["Bitewing (digital)", "~5 µSv", "~17 hours"],
        ["Full mouth series (18 films, rect. collimation)", "~35 µSv", "~4 days"],
        ["Panoramic (OPG)", "~14-24 µSv", "~2-3 days"],
        ["Lateral cephalogram", "~5-6 µSv", "~20 hours"],
        ["CBCT (small FOV)", "~40-100 µSv", "~1-2 weeks"],
        ["CBCT (large FOV)", "~100-600 µSv", "~2-8 weeks"],
        ["Chest X-ray (for comparison)", "~20 µSv", "~3 days"],
        ["Annual natural background (India avg.)", "~2400 µSv (2.4 mSv)", "365 days"],
    ]
    story.append(box_table(dental_dose_data, [4.5*cm, 4.5*cm, 5.8*cm], hdr_bg=NAVY))
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 5 – FILTRATION TABLE
    # ═══════════════════════════════════════════════════════════════════════
    story.append(hdr_para("  5.  FILTRATION — COMPLETE REFERENCE TABLE", bg=NAVY))
    story.append(sp())
    story.append(BeamQualityBar(CW, 2.6*cm))
    story.append(sp())

    filt_data = [
        [Paragraph("Type", CELL_HDR), Paragraph("Source", CELL_HDR),
         Paragraph("Composition", CELL_HDR), Paragraph("Amount", CELL_HDR), Paragraph("Notes", CELL_HDR)],
        ["Inherent filtration", "Built into tube", "Glass envelope + oil + tubehead seal",
         "~0.5–1.0 mm Al equiv.", "Cannot be altered; fixed"],
        ["Added filtration", "External disk at port", "Aluminum (most common)\nCopper (high kVp units)",
         "Variable", "Can be changed; added by manufacturer/operator"],
        ["Total filtration", "Inherent + Added", "Combined", 
         "≥1.5 mm Al (<70 kVp)\n≥2.5 mm Al (≥70 kVp)",
         "NCRP / BDA / AERB requirement"],
        ["Thoraeus filter", "Therapeutic units", "Tin (Sn) + Cu + Al",
         "Used in radiotherapy", "K-edge filter; hardens beam maximally"],
        ["Compensating filter", "Panoramic / Ceph.", "Wedge/step shape Al",
         "Variable", "Equalises beam for different tissue thicknesses"],
    ]
    story.append(box_table(filt_data, [2.8*cm, 2.5*cm, 3.2*cm, 3.0*cm, 3.3*cm], hdr_bg=TEAL))
    story.append(sp())

    # Collimation comparison
    story.append(hdr_para("  5a.  COLLIMATION TYPES — COMPARISON", bg=TEAL))
    story.append(sp())
    col_data = [
        [Paragraph("Type", CELL_HDR), Paragraph("Shape", CELL_HDR),
         Paragraph("Beam Size at Skin", CELL_HDR), Paragraph("Dose Reduction", CELL_HDR),
         Paragraph("Scatter Reduction", CELL_HDR), Paragraph("Use", CELL_HDR)],
        ["Round / Circular", "Circle", "≤7 cm diameter", "Baseline", "Moderate", "Intraoral (routine)"],
        ["Rectangular", "Rectangle (~3×4 cm)", "Matches film size", "60–70% vs round", "Maximum", "BEST practice"],
        ["Cylindrical cone", "Open cylinder", "Round (variable)", "Moderate", "Good", "Beam indicator / PID"],
        ["Lead diaphragm", "Adjustable aperture", "Variable", "Adjustable", "Adjustable", "Medical units"],
    ]
    story.append(box_table(col_data, [2.5*cm, 2.5*cm, 2.8*cm, 2.5*cm, 2.3*cm, 2.2*cm], hdr_bg=NAVY))
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 6 – INVERSE SQUARE LAW
    # ═══════════════════════════════════════════════════════════════════════
    story.append(PageBreak())
    story.append(hdr_para("  6.  INVERSE SQUARE LAW — FORMULA, DIAGRAM & WORKED EXAMPLES", bg=NAVY))
    story.append(sp())
    story.append(InverseSquareDiagram(CW, 5.5*cm))
    story.append(sp())

    # Formula box
    formula_data = [[
        Paragraph("<b>I₁ / I₂  =  D₂² / D₁²</b>", 
                  ParagraphStyle("form", fontName="Helvetica-Bold", fontSize=13,
                                 textColor=NAVY, alignment=TA_CENTER)),
        Paragraph("Where:<br/>I = Intensity (radiation exposure rate)<br/>"
                  "D = Distance from source<br/>"
                  "Subscript 1 = original; 2 = new position",
                  ParagraphStyle("formn", fontName="Helvetica", fontSize=9,
                                 textColor=colors.black, leading=14)),
    ]]
    ft = Table(formula_data, colWidths=[CW*0.4, CW*0.6])
    ft.setStyle(TableStyle([
        ("BACKGROUND",    (0,0),(0,0), LIGHT_BG),
        ("BACKGROUND",    (1,0),(1,0), GREY_LT),
        ("GRID",          (0,0),(-1,-1), 1, TEAL),
        ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
        ("LEFTPADDING",   (0,0),(-1,-1), 10),
        ("TOPPADDING",    (0,0),(-1,-1), 10),
        ("BOTTOMPADDING", (0,0),(-1,-1), 10),
    ]))
    story.append(ft)
    story.append(sp())

    # Worked examples
    ex_data = [
        [Paragraph("Scenario", CELL_HDR), Paragraph("Given", CELL_HDR),
         Paragraph("Solution", CELL_HDR), Paragraph("Answer", CELL_HDR)],
        ["Distance doubled (d → 2d)", "I₁, D₁=d, D₂=2d",
         "I₂ = I₁ × (d/2d)² = I₁ × ¼", "Intensity = I/4  (75% reduction)"],
        ["Distance tripled (d → 3d)", "I₁, D₁=d, D₂=3d",
         "I₂ = I₁ × (d/3d)² = I₁ × 1/9", "Intensity = I/9  (89% reduction)"],
        ["Distance halved (d → d/2)", "I₁, D₁=d, D₂=d/2",
         "I₂ = I₁ × (d/0.5d)² = I₁ × 4", "Intensity = 4I  (quadrupled)"],
        ["Operator protection (6 ft rule)", "D=6 ft from source",
         "I₂ = I₁ × (1ft/6ft)² = I₁/36", "Intensity at 6 ft = 1/36th of source"],
        ["PID change: 8 in → 16 in", "mA, kVp constant; D doubles",
         "I₂ = I₁/4; compensate by 4× mAs", "Exposure time/mAs must be quadrupled"],
    ]
    story.append(box_table(ex_data, [3.5*cm, 3.0*cm, 5.0*cm, 3.3*cm], hdr_bg=TEAL))
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 7 – EM SPECTRUM
    # ═══════════════════════════════════════════════════════════════════════
    story.append(hdr_para("  7.  ELECTROMAGNETIC SPECTRUM — X-RAY POSITION", bg=NAVY))
    story.append(sp())
    story.append(RadiationScaleDiagram(CW, 3.2*cm))
    story.append(sp())

    em_data = [
        [Paragraph("Property", CELL_HDR), Paragraph("X-Ray Values (Diagnostic)", CELL_HDR),
         Paragraph("Notes", CELL_HDR)],
        ["Wavelength", "0.01 – 0.5 nm  (10 – 500 pm)", "Shorter λ = harder beam = higher energy"],
        ["Frequency", "6×10¹⁷ – 3×10¹⁹ Hz", "f = c/λ"],
        ["Energy (keV)", "10 – 150 keV", "Dental: ~60-90 keV peak energy"],
        ["Speed", "3 × 10⁸ m/s (speed of light)", "Same for all EM radiation"],
        ["Nature", "Electromagnetic (transverse waves, photons)", "No mass, no charge"],
        ["Ionisation", "Yes — directly ionising", "Knocks orbital electrons → ion pairs"],
        ["Min. wavelength λmin", "λmin = 12.4 / kVp (in Angstroms)", "Duane-Hunt law; higher kVp → shorter λmin"],
    ]
    story.append(box_table(em_data, [3.5*cm, 5.5*cm, 5.8*cm], hdr_bg=TEAL))
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 8 – BIOLOGICAL EFFECTS
    # ═══════════════════════════════════════════════════════════════════════
    story.append(hdr_para("  8.  BIOLOGICAL EFFECTS — CLASSIFICATION & THRESHOLDS", bg=NAVY))
    story.append(sp())

    bio_data = [
        [Paragraph("Feature", CELL_HDR), Paragraph("Stochastic Effects", CELL_HDR),
         Paragraph("Deterministic (Tissue) Effects", CELL_HDR)],
        ["Definition", "Probabilistic — chance of occurrence increases with dose",
         "Severity increases with dose once threshold exceeded"],
        ["Threshold dose", "NONE — any dose carries some risk",
         "YES — threshold must be exceeded"],
        ["Severity vs. dose", "Severity FIXED (does not change with dose)",
         "Severity INCREASES with dose above threshold"],
        ["Examples", "Cancer induction, genetic mutations, heritable effects",
         "Cataract (>0.5 Gy lens), epilation, skin erythema, radiation sickness, sterility"],
        ["Threshold doses", "None",
         "Temporary epilation: 3-5 Gy\nPermanent epilation: >7 Gy\nCataract: >0.5 Gy (ICRP 2011)\nAcute radiation sickness: >1 Gy whole body\nLD50/30: ~3-5 Gy whole body"],
        ["Protection principle", "ALARA — As Low As Reasonably Achievable",
         "Keep below threshold; dose limits set at fraction of threshold"],
        ["Relevant law", "Bergonie & Tribondeau law: more radiosensitive if rapidly dividing, undifferentiated, long mitotic future",
         "Same law applies; threshold-based protection is key"],
    ]
    story.append(box_table(bio_data, [3.0*cm, 5.5*cm, 6.3*cm], hdr_bg=RED_ACC))
    story.append(sp())

    # Cell sensitivity order
    story.append(hdr_para("  8a.  RADIOSENSITIVITY ORDER (HIGH → LOW)", bg=TEAL))
    story.append(sp())
    sens_data = [
        [Paragraph("Radiosensitivity", CELL_HDR), Paragraph("Cell / Tissue Types", CELL_HDR)],
        [Paragraph("HIGH", ParagraphStyle("hs", fontName="Helvetica-Bold", fontSize=8,
                   textColor=WHITE, alignment=TA_CENTER, leading=10)),
         "Lymphocytes, Bone marrow (stem cells), Gonads (spermatogonia, oocytes), "
         "Intestinal crypts, Lens epithelium"],
        [Paragraph("MODERATE", ParagraphStyle("ms", fontName="Helvetica-Bold", fontSize=8,
                   textColor=WHITE, alignment=TA_CENTER, leading=10)),
         "Salivary gland acinar cells (esp. serous/parotid), Endothelial cells, "
         "Fibroblasts, Oral mucosa, Skin basal cells"],
        [Paragraph("LOW", ParagraphStyle("ls", fontName="Helvetica-Bold", fontSize=8,
                   textColor=WHITE, alignment=TA_CENTER, leading=10)),
         "Muscle cells, Mature RBCs, Nerve cells (neurons), Cartilage, "
         "Mature bone (osteocytes)"],
    ]
    sens_t = Table(sens_data, colWidths=[2.5*cm, 12.3*cm])
    sens_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), NAVY),
        ("TEXTCOLOR",     (0,0), (-1,0), WHITE),
        ("BACKGROUND",    (0,1), (0,1), RED_ACC),
        ("BACKGROUND",    (0,2), (0,2), ORANGE),
        ("BACKGROUND",    (0,3), (0,3), GREEN_ACC),
        ("TEXTCOLOR",     (0,1), (0,-1), WHITE),
        ("FONTNAME",      (1,1), (1,-1), "Helvetica"),
        ("FONTSIZE",      (0,0), (-1,-1), 8),
        ("GRID",          (0,0), (-1,-1), 0.5, GREY_MID),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ]))
    story.append(sens_t)
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 9 – FACTORS CONTROLLING BEAM (SUMMARY)
    # ═══════════════════════════════════════════════════════════════════════
    story.append(PageBreak())
    story.append(hdr_para("  9.  FACTORS CONTROLLING X-RAY BEAM — QUALITY & QUANTITY", bg=NAVY))
    story.append(sp())

    ctrl_data = [
        [Paragraph("Factor", CELL_HDR), Paragraph("Affects Quality\n(Penetrating Power)", CELL_HDR),
         Paragraph("Affects Quantity\n(Number of Photons)", CELL_HDR),
         Paragraph("Effect on Patient Dose", CELL_HDR), Paragraph("Effect on Image", CELL_HDR)],
        [Paragraph("↑ kVp", CELL_BL), "YES — harder beam, shorter λ",
         "YES — also increases quantity", "↑ dose (but less skin dose if filter used)",
         "↓ contrast; ↑ grey shades"],
        [Paragraph("↑ mA", CELL_BL), "NO", "YES — more electrons → more X-rays",
         "↑ dose proportionally", "↑ density/darkness"],
        [Paragraph("↑ Time", CELL_BL), "NO", "YES — longer exposure = more X-rays",
         "↑ dose proportionally", "↑ density; ↑ motion blur risk"],
        [Paragraph("↑ mAs (mA×t)", CELL_BL), "NO", "YES", "↑ dose", "↑ density"],
        [Paragraph("↑ Filtration (Al)", CELL_BL), "YES — removes soft X-rays",
         "Slight ↓ (soft X-rays removed)", "↓ skin dose significantly",
         "Slight ↓ contrast; better quality"],
        [Paragraph("↑ Distance (SID)", CELL_BL), "NO", "YES — reduced by inverse sq. law",
         "↓ dose (1/d²)", "↓ magnification; ↑ sharpness"],
        [Paragraph("Rectangular collimation", CELL_BL), "NO", "NO",
         "↓ 60-70% vs round", "↓ scatter → ↑ contrast"],
        [Paragraph("↑ Target Z number", CELL_BL), "YES — more efficient X-ray production",
         "YES", "N/A (fixed by design)", "N/A"],
    ]
    story.append(box_table(ctrl_data, [2.5*cm, 2.8*cm, 2.8*cm, 2.8*cm, 3.9*cm], hdr_bg=TEAL))
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 10 – RADIATION PROTECTION RULES
    # ═══════════════════════════════════════════════════════════════════════
    story.append(hdr_para("  10.  RADIATION PROTECTION — RULES, DISTANCES & GUIDELINES", bg=NAVY))
    story.append(sp())

    prot_data = [
        [Paragraph("Rule / Guideline", CELL_HDR), Paragraph("Requirement", CELL_HDR),
         Paragraph("Rationale", CELL_HDR)],
        ["Operator distance", "Minimum 6 feet (1.8 m) from X-ray tube",
         "Scatter radiation drops to negligible levels at 6 ft (inverse sq. law → 1/36 of source)"],
        ["Operator angle", "Stand at 90°–135° to primary beam",
         "Primary beam at 0°; scatter is least at 90°–135°; never stand in primary beam path"],
        ["Protective barriers", "2.5 mm Pb equivalent (primary barrier)\n1.5 mm Pb (secondary barrier)",
         "For walls/partitions between operator and X-ray source"],
        ["Lead apron for patient", "0.25 mm Pb equivalent (thyroid collar + apron)",
         "Protects thyroid (Wt=0.04) and bone marrow (Wt=0.12)"],
        ["Film holding devices", "ALWAYS use film holder / XCP / hemostat",
         "Never hold film with fingers in primary beam"],
        ["ALARA principle", "As Low As Reasonably Achievable",
         "Minimise dose with best technique, fastest film, digital sensors, rectangular collimation"],
        ["Pregnant patients", "Delay if possible; if essential — lead apron + thyroid collar mandatory",
         "Embryo/foetus highly radiosensitive (stochastic + deterministic risk)"],
        ["Film speed", "Use fastest available (F-speed / digital sensor)",
         "F-speed ~60% less dose than D-speed; digital 50-80% less than film"],
        ["CBCT restriction", "Only when conventional radiography inadequate",
         "CBCT doses 5–100x higher than OPG; justify each exposure (JUSTIFICATION principle)"],
    ]
    story.append(box_table(prot_data, [3.5*cm, 5.0*cm, 6.3*cm], hdr_bg=RED_ACC))
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 11 – MNEMONICS & QUICK RECALL
    # ═══════════════════════════════════════════════════════════════════════
    story.append(hdr_para("  11.  MNEMONICS & EXAM QUICK-RECALL", bg=NAVY))
    story.append(sp())

    mnem_data = [
        [Paragraph("Topic", CELL_HDR), Paragraph("Mnemonic / Memory Aid", CELL_HDR),
         Paragraph("What it means", CELL_HDR)],
        ["X-ray tube components", "F-FAT (Filament, Focusing cup, Anode, Tube envelope)",
         "4 core components of the X-ray tube"],
        ["Clark's / SLOB rule", "SLOB = Same Lingual Opposite Buccal",
         "Object on LINGUAL side moves SAME direction as tube shift; BUCCAL moves OPPOSITE"],
        ["X-ray properties", "PIPE-SCIF\n(Penetrate, Ionise, Photographic, Excite-fluoresce,\nStraight lines, Cause bio damage, Invisible, Fast=c)",
         "All key properties of X-rays in one word"],
        ["Bergonie & Tribondeau", "MORE = More radiosensitive if:\nMitotic rate high, Oocyte-like (undifferentiated),\nReproduction likely (long mitotic future), Evolving rapidly",
         "Law of radiosensitivity"],
        ["Radiation units (old→SI)", "R → C/kg  |  rad → Gy  |  rem → Sv  |  Ci → Bq",
         "Divide rem/rad by 100 to get Sv/Gy; 1 Ci = 3.7×10¹⁰ Bq"],
        ["Filtration requirements", "<70 kVp = 1.5 mm Al  |  ≥70 kVp = 2.5 mm Al",
         "More kVp needs more filtration"],
        ["Stochastic vs deterministic", "S = no-threshold, Same severity; D = has threshold, Dose-dependent severity",
         "S for Stochastic = no Safe dose; D for Deterministic = Dose threshold"],
        ["Dose limit (worker)", "20 mSv/year average; max 50 mSv single year",
         "ICRP 2007 occupational limit"],
        ["Collimation dose saving", "Rectangular saves 60-70%; Round max 7 cm",
         "Always prefer rectangular for minimal dose"],
        ["Inverse square law quick calc", "2× distance → ¼ intensity; 3× → 1/9; ½ → 4×",
         "Square the ratio of distances (reciprocal)"],
    ]
    story.append(box_table(mnem_data, [3.2*cm, 5.5*cm, 6.1*cm], hdr_bg=PURPLE))
    story.append(sp(1.5))

    # ═══════════════════════════════════════════════════════════════════════
    # SECTION 12 – MASTER KEY-NUMBERS REFERENCE CARD
    # ═══════════════════════════════════════════════════════════════════════
    story.append(hdr_para("  12.  MASTER KEY-NUMBERS REFERENCE CARD", bg=TEAL))
    story.append(sp())

    kn_data = [
        [Paragraph("Parameter", CELL_HDR), Paragraph("Value", CELL_HDR),
         Paragraph("Parameter", CELL_HDR), Paragraph("Value", CELL_HDR)],
        ["Speed of X-rays", "3×10⁸ m/s",
         "Tungsten melting point", "3422°C"],
        ["Tungsten atomic number", "74",
         "Tungsten filament temp (thermionic emission)", "~2200°C"],
        ["Anode angle (dental)", "~20° (line focus principle)",
         "Dental kVp range", "60–90 kVp"],
        ["Total filtration <70 kVp", "≥1.5 mm Al equiv.",
         "Total filtration ≥70 kVp", "≥2.5 mm Al equiv."],
        ["Round collimator max dia.", "≤7 cm at skin",
         "Rect. collimation dose saving", "60–70%"],
        ["Operator distance", "≥6 feet (1.8 m)",
         "Operator angle to beam", "90–135°"],
        ["Occupational dose limit", "20 mSv/year (avg)",
         "Max single year (occupational)", "50 mSv"],
        ["Public dose limit", "1 mSv/year",
         "Pregnant worker abdominal limit", "1 mSv (remainder)"],
        ["Cataract threshold (ICRP 2011)", "0.5 Gy",
         "LD50/30 whole body", "~3–5 Gy"],
        ["1 Gy =", "100 rad",
         "1 Sv =", "100 rem"],
        ["1 Ci =", "3.7×10¹⁰ Bq",
         "1 R =", "2.58×10⁻⁴ C/kg"],
        ["Digital sensor dose saving vs F-film", "50–80% reduction",
         "F-speed vs D-speed saving", "~60% reduction"],
        ["Periapical dose (digital)", "~1–2 µSv",
         "OPG (panoramic) dose", "~14–24 µSv"],
        ["CBCT small FOV dose", "~40–100 µSv",
         "Annual background (India)", "~2400 µSv"],
        ["Duane-Hunt law", "λmin = 12.4 / kVp (Å)",
         "Wr for X-rays", "1"],
        ["Wt for thyroid", "0.04",
         "Wt for bone marrow", "0.12"],
    ]
    kn_t = Table(kn_data, colWidths=[CW*0.28, CW*0.22, CW*0.28, CW*0.22])
    kn_t.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), 8),
        ("GRID",          (0,0), (-1,-1), 0.4, TEAL),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_BG]),
        ("BACKGROUND",    (0,1), (0,-1), LIGHT_TL),
        ("BACKGROUND",    (2,1), (2,-1), LIGHT_TL),
        ("FONTNAME",      (0,1), (0,-1), "Helvetica-Bold"),
        ("FONTNAME",      (2,1), (2,-1), "Helvetica-Bold"),
        ("FONTSIZE",      (0,1), (0,-1), 7.5),
        ("FONTSIZE",      (2,1), (2,-1), 7.5),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(kn_t)
    story.append(sp(2))

    # Footer note
    story.append(HRFlowable(width=CW, thickness=1, color=TEAL))
    story.append(sp(0.5))
    story.append(Paragraph(
        "<font color='#c0392b'><b>Exam Tip:</b></font>  "
        "Always state BOTH old and SI units when asked. Mention ALARA, inverse square law, "
        "and rectangular collimation proactively in any radiation protection question. "
        "PDL space widening is the EARLIEST sign in jaw osteosarcoma. "
        "Rectangular collimation saves 60-70% dose compared to round.",
        NOTE_S))
    story.append(sp(0.3))
    story.append(Paragraph(
        "Prepared for BDS/MDS Oral Medicine & Oral Radiology Viva  |  Based on ICRP 2007 / NCRP / AERB / BDA Guidelines",
        FOOT_S))

    doc.build(story, onFirstPage=on_first_page, onLaterPages=on_page)
    print("PDF built successfully:", path)

build()
Running Command

cd /home/daytona/workspace/radiation-study && python3 build_pdf.py 2>&1

Running Command

python3 -c "from reportlab.pdfgen import canvas; c=canvas.Canvas('/tmp/t.pdf'); print([m for m in dir(c) if 'poly' in m.lower() or 'path' in m.lower()])"

canvas.polygon doesn't exist - I need to use canvas.drawPath with a path object. Let me fix all polygon calls:
Editing File

~/radiation-study/build_pdf.py

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/radiation-study/build_pdf.py'
Now fix the remaining polygon calls in InverseSquareDiagram and RadiationScaleDiagram:
Editing File

~/radiation-study/build_pdf.py

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/radiation-study/build_pdf.py'
Running Command

cd /home/daytona/workspace/radiation-study && python3 build_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/radiation-study/Radiation_Study_Guide.pdf

Your study PDF is ready. Here's the download link:

Radiation Study Guide

PDF Document · PDF


What's inside the PDF (4 pages, colour-coded):
SectionContent
1. X-Ray Tube DiagramCustom labelled schematic (cathode, filament, focusing cup, anode, beam) + full components table with materials and functions
2. X-Ray ProductionBremsstrahlung vs Characteristic radiation comparison table
3. Radiation UnitsComplete old-unit → SI conversion table (R/C/kg, rad/Gy, rem/Sv, Ci/Bq) + Radiation Weighting Factors (Wr) + Tissue Weighting Factors (Wt)
4. Dose LimitsICRP 2007 occupational and public limits + typical dental radiograph doses (periapical, OPG, CBCT, etc.)
5. FiltrationFiltration types table + beam quality gradient bar + collimation types comparison
6. Inverse Square LawVisual diagram with dot-density representation + formula box + 5 worked examples
7. EM SpectrumColour-coded spectrum showing X-ray position + properties table with Duane-Hunt law
8. Biological EffectsStochastic vs deterministic table + radiosensitivity order (high/moderate/low)
9. Beam Control FactorsHow kVp, mA, time, filtration, distance each affect quality, quantity, dose, and image
10. Radiation ProtectionAll operator rules, distances, angles, barriers, ALARA
11. MnemonicsSLOB rule, PIPE-SCIF, Bergonie & Tribondeau memory aid, quick conversion tricks
12. Master Key-Numbers Card32 critical numbers in one reference table - the page to study the night before your viva
attachment
attachment

Comprehensive treatment plan for proximal caries on first maxillary molar

analyse_media
Reading File
The AI vision analysis was limited due to the radiograph being held by hand against room lighting rather than a viewbox. I can see the radiograph shows what appears to be molar teeth. Let me provide a comprehensive treatment plan based on the clinical scenario described (proximal caries on first maxillary molar) combined with what is visible.

COMPREHENSIVE TREATMENT PLAN

Proximal Caries — First Maxillary Molar (Tooth #16 / Upper Right 6)


RADIOGRAPHIC INTERPRETATION NOTE

The radiograph provided is a periapical film being held against ambient light rather than a viewbox, which limits precise diagnosis. The image shows molar roots with root canal morphology visible. For definitive diagnosis, the film should be viewed on a proper light box or digitized and viewed on a calibrated monitor.
Based on your clinical scenario (proximal caries on maxillary first molar), the treatment plan below is organized by caries depth/severity:

STEP 1 — DIAGNOSIS & ASSESSMENT

Clinical Examination

  • Visual inspection: Check for cavitation, discoloration, food impaction in proximal contact area
  • Tactile probe: Soft/sticky enamel at mesial or distal surface
  • Transillumination (FOTI/DIFOTI): Orange-brown shadow in proximal enamel/dentin confirms caries
  • Percussion test: Rule out periapical involvement
  • Vitality/pulp testing: Cold test (Endo Ice), EPT — critical before deciding restorative vs. endodontic approach
  • Periodontal probing: Rule out periodontal pocket mimicking caries shadow

Radiographic Assessment

From the periapical X-ray, assess:
  • Depth of caries relative to the pulp chamber
    • Outer 1/3 enamel only
    • Inner 1/3 enamel / outer dentin
    • Middle dentin
    • Inner dentin (approaching pulp — <1 mm)
    • Apparent pulp exposure
  • Pulp chamber size and shape (large in young patients)
  • Periapical status: Intact lamina dura = healthy periodontium
  • Alveolar bone level
  • Root morphology: Maxillary first molar typically has 3 roots (MB, DB, palatal) and 3-4 canals (MB1, MB2, DB, P); MB2 presence (~60-70%)

STEP 2 — CARIES CLASSIFICATION

By Site (Black's Classification)

  • Class II — Proximal surface involving contact area
    • MO (Mesio-occlusal) if mesial surface only
    • DO (Disto-occlusal) if distal surface only
    • MOD if both surfaces involved

By ICDAS (International Caries Detection & Assessment System)

ICDAS ScoreLesionApproach
1-2Enamel only, no cavitationRemineralization
3Enamel breakdown, micro-cavitationPreventive/minimal intervention
4Shadow in dentin, no cavitationSeal or restore
5Distinct cavity, visible dentinRestoration mandatory
6Deep cavity, >1/2 dentin depthRestoration ± IPC/IDPC

STEP 3 — TREATMENT DECISION TREE

PROXIMAL CARIES (Upper First Molar)
          |
    ┌─────┴────────────────┐
    |                       |
ENAMEL ONLY            DENTIN INVOLVED
(ICDAS 1-3)           (ICDAS 4-6)
    |                       |
Remineralize           ┌───┴────────────────────┐
+ Monitor          SHALLOW/MID              DEEP DENTIN
                    DENTIN                  (< 1mm from pulp)
                       |                        |
               Composite resin          ┌───────┴──────────┐
               Class II restoration   VITAL TOOTH     NON-VITAL TOOTH
                                          |                 |
                                    IPC / IDPC             RCT
                                    + Restoration      + Post & Core
                                                       + Crown

STEP 4 — TREATMENT PROTOCOLS BY DEPTH


A. ENAMEL-ONLY PROXIMAL CARIES (Non-cavitated)

Aim: Remineralization — no cavity preparation
  1. Oral hygiene instruction - correct flossing technique for proximal surfaces
  2. Dietary counseling - reduce frequency of fermentable carbohydrates
  3. Fluoride therapy:
    • Topical fluoride varnish (5% NaF / 22,600 ppm) — applied professionally every 3-6 months
    • Home fluoride toothpaste (1000-1450 ppm, twice daily)
    • Fluoride gel tray if high caries risk
  4. Casein Phosphopeptide-Amorphous Calcium Phosphate (CPP-ACP) — e.g., GC Tooth Mousse — remineralizes subsurface enamel
  5. Resin infiltration (Icon, DMG):
    • For ICDAS 2-3 proximal lesions extending up to outer 1/3 dentin
    • Etch with 15% HCl gel → dry with ethanol → infiltrate with low-viscosity resin
    • Seals the lesion without cavity preparation (microinvasive dentistry)
  6. Review at 6 months with repeat bitewing radiograph

B. SHALLOW-TO-MID DENTIN PROXIMAL CARIES (Cavitated, ICDAS 5)

Procedure: Class II Composite Restoration

Step-by-step:

1. Anesthesia
  • Inferior alveolar nerve block NOT needed for maxillary molar
  • Posterior superior alveolar (PSA) nerve block for the distobuccal and palatal roots
  • Middle superior alveolar (MSA) or infiltration at apex for mesiobuccal root
  • Buccal infiltration (long buccal not needed for molars)
  • Local anesthetic: Lignocaine 2% with adrenaline 1:80,000
2. Rubber Dam Isolation
  • Mandatory for composite restoration
  • Clamp on the first maxillary molar (Clamp #14A or #8 for maxillary molars)
  • Full arch rubber dam sheet; punch hole; floss ligature if needed
3. Cavity Preparation — Proximal Box (MO/DO/MOD)
Access approach options:
  • Conventional Class II box preparation (when contact area already broken/large cavity)
    • Occlusal step: extend into fossa for retention and macro access
    • Proximal box: gingival floor 0.5-1.0 mm below contact area; axial wall follows DEJ curvature
    • Isthmus: ideally ≤1/4 of inter-cusp width to preserve cusp integrity
  • Tunnel preparation (conservative, if contact intact): Access from the occlusal groove without breaking the contact — only if lesion accessible and small
  • Proximal slot preparation (if no occlusal caries): Direct proximal access if no occlusal involvement
Bur sequence:
  • High-speed round bur (#245 pear-shaped or round carbide) for initial access
  • Remove caries with round bur at low speed or spoon excavator
  • Refine walls with straight fissure bur; margins in sound enamel
  • Ensure cavosurface angle ~90° for composite (butt joint margin)
Key principles:
  • Remove all infected dentin (soft, discolored) — use Caries Detector Dye (1% acid fuchsine/0.5% basic fuchsine) to confirm
  • Preserve affected (remineralizable) dentin when close to pulp
  • DO NOT create undercuts (composite is adhesively retained)
  • Rounded internal line angles
4. Sectional Matrix System (CRITICAL for Class II)
  • Use sectional matrix band (e.g., Palodent, Composi-Tight, V3 Ring)
  • NOT Tofflemire for composite — Tofflemire creates flat contact, composite needs tight convex contact
  • Wooden/rubber wedge placed gingivally:
    • Separates teeth
    • Prevents gingival flash
    • Creates apical seal
    • Deflects papilla for access
  • Ring (Palodent ring) stabilizes the band and creates a tight contact point
5. Lining / Base (if needed)
Dentin Depth RemainingTreatment
>2 mm to pulpNo lining needed; use bonding agent directly
1-2 mm to pulpCalcium hydroxide liner (Dycal) or RMGIC (GC Fuji Lining LC) on deepest point only (selective lining)
<1 mm / pulp proximityIndirect pulp capping — see Section C
6. Adhesive Protocol (Total-etch or Self-etch)
Preferred: 2-step self-etch (e.g., Clearfil SE Bond / Scotchbond Universal)
  • Etch enamel selectively with 37% phosphoric acid × 30 sec → rinse × 30 sec → blot dry (moist dentin)
  • Apply self-etch primer → 20 seconds → air thin
  • Apply bond → air thin → light cure 20 sec
Or Total-etch (e.g., Optibond FL):
  • 37% phosphoric acid: enamel 30 sec, dentin 15 sec (avoid over-etching dentin)
  • Rinse thoroughly; blot dry (leave dentin moist — no desiccation)
  • Prime; bond; light cure
7. Composite Resin Placement — Incremental Technique
Material: Nanofill or nanohybrid composite (e.g., Filtek Z350 XT, Tetric EvoCeram)
  • Shade match: A3 or A3.5 for posterior (dentin shade); A2 for enamel shade (optional)
  • Maximum increment thickness: 2 mm (prevents polymerization shrinkage stress and incomplete cure)
Placement sequence for Class II:
  1. First increment: Oblique/horizontal layer on gingival floor of proximal box (1-1.5 mm) → cure 20-40 sec
  2. Second increment: Complete the proximal box up to contact level → cure
  3. Third increment: Oblique layer on one cusp of occlusal step → cure
  4. Fourth increment: Remaining occlusal step (opposite oblique direction — "C-factor" technique) → cure
  5. Use composite instrument (Weston or ward carver) to adapt; pre-carve anatomy before curing
8. Matrix Removal and Finishing
  • Remove ring → slide wedge out gingivally → slide matrix band out
  • Check contact point with dental floss — should have resistance but floss passes
  • Check for gingival flash (use curved probe gingivally)
  • Adjust occlusion: Articulating paper (8-12 µm) in maximum intercuspation + lateral/protrusive movements
  • Finishing: Sequential Sof-Lex discs (coarse → fine → superfine → ultrafine) or composite finishing burs
  • Polishing: Rubber cups/points (Enhance, OptraFine) → aluminium oxide polishing paste
  • Final: Protect with unfilled resin coat (optional, DeTrey Gloss or similar)

C. DEEP DENTIN CARIES — VITAL TOOTH (< 1 mm from pulp, No pulp exposure)

Procedure: Indirect Pulp Capping (IPC) or Stepwise Excavation

Indirect Pulp Capping (IPC) — Single Visit

Indicated when: Deep caries with vital pulp, no symptoms of irreversible pulpitis, no spontaneous pain
  1. Complete removal of peripheral caries (DEJ, lateral walls must be sound)
  2. Leave a thin layer of affected (not infected) dentin over the pulp — do NOT risk exposure
  3. Apply Mineral Trioxide Aggregate (MTA) or Biodentine directly over the remaining deep dentin:
    • MTA: Superior biocompatibility, stimulates reparative dentin; 4 mm thickness
    • Biodentine: Faster setting (12 min), can use as dentine substitute, bonds to composite
    • Alternative: Calcium hydroxide (Dycal) — traditional, cheaper, but causes tunnel defects in reparative dentin
  4. RMGIC intermediate restoration (GC Fuji IX or Ketac Molar) as base/sealer
  5. Final composite restoration as above
  6. Review at 3, 6, 12 months: Vitality test must remain positive; check for reparative dentin formation on X-ray

Stepwise Excavation — Two Visit Approach

For very deep caries with high pulp exposure risk:
  • Visit 1: Remove peripheral infected dentin; leave deep softened dentin over pulp; seal with Dycal + RMGIC or Biodentine; temporize for 6-8 weeks
  • Visit 2: Re-enter; the remaining dentin will have hardened (reparative dentin forms); now complete excavation safely; final restoration

D. IRREVERSIBLE PULPITIS / PULP EXPOSURE (Non-vital or Symptomatic)

Procedure: Root Canal Treatment (RCT) + Permanent Restoration

Indications for RCT:

  • Spontaneous, lingering pain (>30 sec after cold stimulus)
  • History of severe toothache, night pain
  • Pulp exposure during excavation with profuse bleeding
  • Periapical pathology on radiograph (widened PDL space, periapical radiolucency)
  • Non-vital tooth (no response to cold/EPT)

Root Canal Treatment — Maxillary First Molar

Root and Canal Anatomy (important!):
  • 3 roots: Mesiobuccal (MB), Distobuccal (DB), Palatal
  • MB root: 2 canals in 60-70% (MB1 and MB2) — MUST look for MB2
  • DB root: 1 canal usually
  • Palatal root: 1 canal, largest, most accessible
  • Total canals: Usually 3 or 4 (when MB2 present)
  • Vertucci Classification: MB root often Type IV (two separate canals, two separate foramina)
Step-by-step RCT:
  1. Anesthesia — as above (PSA + infiltration); profound anesthesia critical
  2. Rubber dam — mandatory; clamped on tooth
  3. Access cavity preparation:
    • Trapezoidal/rhomboidal outline on occlusal surface
    • Corners at: MB cusp, DB cusp, mesiopalatal, and distobuccal positions
    • De-roof pulp chamber completely; remove pulp horns
    • Identify all 4 orifices: MB1 (most mesial), MB2 (slightly palatal to MB1 — use DG16 explorer in the dentinal groove between MB1 and palatal orifice), DB, P
  4. Working length determination:
    • Electronic apex locator (EAL) — e.g., Raypex 6, Root ZX
    • Confirm with periapical X-ray (paralleling technique)
    • Working length = radiographic apex − 0.5-1.0 mm (1.0 mm short of radiographic apex per ISO recommendations)
  5. Cleaning and shaping:
    • Coronal flaring first (Gates Glidden burs #2, 3 or orifice openers)
    • Hand files: K-files in step-back or crown-down technique
    • Rotary NiTi files preferred: e.g., ProTaper Gold (F1-F3), Reciproc Blue, WaveOne Gold
    • Final apical size: MB canals ~25-30; DB ~25-30; Palatal ~40-50 (wider canal)
    • Irrigation: 2.5-5.25% NaOCl (primary; dissolves organic tissue) + 17% EDTA (removes smear layer) + 2% CHX (final rinse, antimicrobial) — do NOT mix NaOCl and CHX (brown precipitate)
    • Final irrigation: NaOCl activation with Passive Ultrasonic Irrigation (PUI) or EndoActivator
    • Dry with paper points
  6. Obturation:
    • Master cone try-in: GP cone to working length; tug-back present
    • Sealer: AH Plus (epoxy resin), Sealapex (calcium hydroxide), or Biodentine-based (BioRoot RCS)
    • Lateral condensation: Cold GP + accessory cones → spreader insertion to ≤1 mm short of WL
    • Or Warm vertical compaction (System B / Calamus): Better adaptation, fills lateral canals
    • Coronal seal: RMGIC or IRM as immediate post-obturation base
    • Post-obturation radiograph to confirm: Homogeneous fill, 0.5-1.0 mm short of apex, no voids
  7. Coronal restoration:
    • After RCT: tooth becomes brittle, high fracture risk (especially cusps)
    • Gold standard: Full coverage crown (PFM or all-ceramic)
    • If tooth structure allows and patient is compliant: MOD composite with cuspal coverage using onlay
    • Minimum: Build-up with composite or core material (ParaCore, Luxacore) then crown

STEP 5 — RESTORATIVE MATERIAL SELECTION FOR CLASS II

SituationFirst ChoiceAlternative
Small-medium proximal cavity, vital toothNanohybrid/nanofill compositeBulk-fill composite (posterior)
Large cavity, heavily broken-downCeramic onlay / indirect compositePFM or zirconia crown
High caries risk, poor moisture controlRMGIC (Glass ionomer)Resin-modified GIC
Deciduous molar (similar scenario)Stainless steel crown / RMGICCompomer
After RCTPFM Crown / Zirconia crownLithium disilicate (e-max) onlay

STEP 6 — ADJUNCTIVE PERIODONTAL CONSIDERATIONS

Proximal caries on maxillary first molar frequently impinges on the biologic width when the gingival margin of the caries/restoration is subgingival:
  • If restoration margin is <2 mm from alveolar crest → crown lengthening procedure required before final restoration
  • Crown lengthening: Osseous surgery to re-establish 3 mm biologic width (1 mm sulcular epithelium + 1 mm junctional epithelium + 1 mm connective tissue attachment)
  • Wait 6-8 weeks after crown lengthening before final impression/restoration

STEP 7 — CONTACT POINT RESTORATION (Critical for Proximal Caries)

A tight, properly located contact point is essential to prevent:
  • Food impaction and plaque stagnation
  • Periodontal disease
  • Secondary caries
Requirements of a good contact point:
  • Located in the occlusal 1/3 to middle 1/3 junction of the proximal surface
  • Elliptical/circular contact (not a flat broad contact)
  • Passes floss with slight resistance
  • Embrasures open gingivally and buccal/lingually for self-cleansing

STEP 8 — POST-OPERATIVE CARE & REVIEW

Immediate instructions:
  • Avoid eating on that side for 24-48 hours (composite sets immediately but needs time to "mature")
  • Mild postoperative sensitivity to cold is normal for 2-4 weeks; reassure patient
  • Contact sensitivity/high bite: Return immediately — needs occlusal adjustment
Review schedule:
  • 1 week: Check bite, gingival health, contact area
  • 1 month: Assess sensitivity; check marginal integrity
  • 6 months: Bitewing radiograph for secondary caries, marginal seal, periapical status
  • Annual recall with professional cleaning and fluoride varnish
Preventive protocol going forward:
  1. Dietary advice (limit sugar frequency)
  2. Fluoride varnish 2-4× per year if high caries risk
  3. Correct flossing technique daily
  4. Consider fissure sealant on contralateral tooth if at risk
  5. Night guard if parafunctional habits (bruxism) detected

QUICK REFERENCE SUMMARY

Caries DepthTreatmentMaterial
Enamel only, no cavitationRemineralization + resin infiltrationFluoride, CPP-ACP, Icon
Shallow dentinClass II composite (direct)Nanohybrid composite
Mid dentinClass II composite + selective liningComposite + RMGIC lining
Deep dentin (<1mm from pulp), no symptomsIPC + composite or Stepwise excavationMTA / Biodentine
Irreversible pulpitis / exposureRCT + buildup + crownGP + AH Plus + Zirconia/PFM
Non-vital + periapical pathologyRCT + crownAs above

Key Viva/Clinical Points to Remember:
  • Maxillary first molar has 3 roots, 3-4 canals — always look for MB2
  • Sectional matrix (not Tofflemire) is mandatory for Class II composite contact points
  • Incremental placement (2 mm max) — never bulk cure composite in deep cavities
  • Biologic width violation needs crown lengthening before final restoration
  • After RCT on posterior teeth — crown is mandatory to prevent cusp fracture
  • MTA or Biodentine preferred over calcium hydroxide for indirect pulp caps (evidence-based)

For caries not reaching pulp

Proximal caries not reaching the pulp means the treatment path is entirely restorative - a Class II composite restoration. Here is the focused, step-by-step treatment plan:

CLASS II COMPOSITE RESTORATION

Proximal Caries — Maxillary First Molar (Caries Not Reaching Pulp)


PRE-OPERATIVE ASSESSMENT

Confirm before starting:
  • Vitality test: Positive response to cold (Endo Ice) — confirms vital pulp
  • No spontaneous pain, no lingering pain >10 seconds after cold stimulus
  • Radiograph: Caries does NOT approximate pulp chamber (>1-2 mm dentin remaining)
  • No periapical pathology (intact lamina dura, no PDL widening)
  • Percussion test: Negative (no tenderness)

INSTRUMENTS & MATERIALS CHECKLIST

CategoryItems
AnesthesiaLignocaine 2% + Adrenaline 1:80,000; topical anesthetic gel
IsolationRubber dam kit; Clamp #14A or #8 (maxillary molar); rubber dam forceps, frame, punch
Matrix systemSectional matrix band (Palodent/Composi-Tight/V3); wedge (wooden/rubber); separation ring
BursRound carbide #2, #4; pear-shaped #245; round diamond; tapered fissure; finishing burs
Caries removalSpoon excavator; caries indicator dye (optional)
Adhesive2-step self-etch OR total-etch bonding system
CompositeNanohybrid posterior composite (A3/A3.5 shade)
FinishingSof-Lex discs (coarse to superfine); rubber points/cups; polishing paste
LiningRMGIC (GC Fuji Lining LC) for deep areas approaching pulp

STEP-BY-STEP PROCEDURE


STEP 1 — LOCAL ANESTHESIA

  • Apply topical gel (benzocaine 20%) at injection site × 1-2 min
  • Posterior Superior Alveolar (PSA) nerve block: Needle at 45° to maxillary tuberosity, upward-backward-inward; 1.5 ml; anesthetizes DB and palatal roots
  • Buccal infiltration / MSA infiltration at apex of mesiobuccal root (upper first molar MSA is often absent; buccal infiltration at MB root apex is reliable)
  • Wait 3-5 minutes; confirm anesthesia (no response to cold, soft tissue numb)

STEP 2 — RUBBER DAM ISOLATION

  • Mandatory — composite moisture-sensitive; contamination ruins bond strength
  • Punch hole for tooth #16; place clamp (Clamp #14A — serrated jaws grip maxillary molar)
  • Stretch dam over clamp; stabilize with frame
  • Check dam is not obstructing the proximal area to be restored
  • Floss ligature if clamp is not retentive enough

STEP 3 — CAVITY PREPARATION

Determine access approach based on cavity size:

Option A: Conventional Class II Box Preparation

(Used when: Large caries, contact area already broken, significant cavitation)
Occlusal Step:
  • Enter through central fossa or marginal ridge with #245 pear-shaped carbide bur
  • Create isthmus connecting occlusal step to proximal box
  • Isthmus width: ≤1/4 inter-cusp distance (preserve cusp integrity)
  • Depth: Just into dentin, ~1.5-2 mm from occlusal surface
  • Round all internal line angles (no sharp corners — reduces stress concentration)
Proximal Box:
  • Gingival floor: 0.5-1.0 mm below the gingival extent of the caries (must be in sound dentin/enamel)
  • Axial wall: Follows contour of tooth, approximately 0.5 mm inside DEJ
  • Buccal and lingual walls: Diverge slightly toward the opening (for insertion of matrix band)
  • Break the contact area to allow band placement
  • All margins must be in sound, unsupported-enamel-free tooth structure
  • Cavosurface angle: 90° (butt joint) — no bevels for composite in posterior teeth

Option B: Conservative Proximal Slot Preparation

(Used when: Small-medium caries, no occlusal caries involvement)
  • Access directly from the proximal surface without opening the occlusal fossa
  • Preserves more tooth structure; sacrifices no sound occlusal enamel
  • Works well when proximal caries is visible/accessible and limited in extent

STEP 4 — CARIES REMOVAL

  1. Use round carbide bur at low speed (or large spoon excavator) to remove soft infected dentin
  2. Work from periphery toward pulp — remove all lateral/gingival infected dentin first
  3. Caries detector dye (1% acid fuchsine in propylene glycol): Apply 10 sec, rinse — stains infected dentin red; remove red-stained tissue; stop when no more staining
  4. At the deepest point (axio-pulpal line angle): Leave slightly firm, discolored but hard dentin if within 1-2 mm of pulp — this is affected (remineralizable) dentin, not infected
  5. All peripheral enamel margins and DEJ must be completely caries-free — confirmed with explorer (hard, not sticky)
  6. Refine walls with tapered fissure bur; ensure smooth, cleanable cavity walls

STEP 5 — LINING (IF NEEDED)

Remaining Dentin ThicknessAction
>2 mm to pulpNo lining — bonding agent directly on dentin
1-2 mm to pulpSelective lining on deepest area only: RMGIC (GC Fuji Lining LC) or Vitrebond — thin layer, do NOT cover entire floor
0.5-1 mm, pulp visible through dentin (pink spot)Indirect Pulp Cap: Biodentine or MTA on deepest dentin → RMGIC base → restore
Why NOT calcium hydroxide for routine lining?
  • Resorbs over time, leaves tunnel defects in reparative dentin
  • Weakens restoration base
  • MTA/Biodentine superior for proximity to pulp

STEP 6 — SECTIONAL MATRIX PLACEMENT

This is the most technically demanding step in a Class II composite.
Why sectional matrix (NOT Tofflemire)?
  • Tofflemire creates a flat contact — composite will have open/flat contact = food packing
  • Sectional matrix is pre-contoured (convex) → recreates a tight, anatomical contact point
Placement sequence:
  1. Select band: Choose correct height (gingival margin of band must cover gingival floor; occlusal margin must be at or just below the marginal ridge height)
  2. Insert wedge FIRST:
    • Wooden or plastic wedge inserted from buccal embrasure (or lingual — whichever is wider)
    • Push firmly until slight resistance — teeth should slightly separate (creates apical seal, prevents gingival composite flash)
    • Wedge stabilizes band against gingival floor
  3. Place matrix band: Slide the curved sectional band into the proximal space; convex side facing the cavity; band must hug gingival floor tightly
  4. Place separation ring: Palodent ring or Composi-Tight ring over the band, seated on buccal and lingual cusps — this presses band tightly against adjacent tooth, creating contact pressure
  5. Check:
    • Band extends 1-2 mm above marginal ridge (for overfill then carve-back)
    • No gap between band and gingival floor (probe check)
    • Band not covering buccal or lingual walls of preparation

STEP 7 — ADHESIVE PROTOCOL

Preferred: 2-step self-etch (e.g., Clearfil SE Bond 2, Scotchbond Universal)
  1. Selective enamel etch (optional but recommended for posteriors):
    • 37% phosphoric acid on enamel margins only × 15-20 sec
    • Rinse × 10 sec; blot dry (enamel); leave dentin visibly moist — do NOT desiccate
    • This improves enamel bond strength when using self-etch primer
  2. Apply primer (self-etch):
    • Paint actively over all dentin and enamel × 20 seconds
    • Air thin gently — do NOT blow off
  3. Apply adhesive resin (bond):
    • Single layer; spread evenly with microbrush
    • Air thin to thin, uniform, glossy layer — no pooling in line angles
    • Light cure: 20-40 seconds (check manufacturer; LED >1000 mW/cm²)
Alternative: Total-etch 3-step (Optibond FL — gold standard bond strength)
  • Etch enamel 30 sec, dentin 15 sec → rinse → blot moist → primer 30 sec → air thin → bond → cure

STEP 8 — COMPOSITE PLACEMENT (INCREMENTAL TECHNIQUE)

Material: Nanohybrid posterior composite (e.g., Filtek Z350 XT, Tetric EvoCeram, Venus Pearl)
  • Shade: A3 or A3.5 body shade for posterior molar
  • Maximum increment: 2 mm (polymerization shrinkage, incomplete cure if thicker)
Increment sequence — Class II:
INCREMENT 1 (Proximal box - gingival floor)
   ↓ 1-1.5 mm thick horizontal layer on gingival floor
   ↓ Adapt with flat plastic instrument
   ↓ CURE 20 sec

INCREMENT 2 (Complete proximal box to contact level)
   ↓ Oblique layer filling the proximal box up to just below the contact
   ↓ Burnish against the matrix band to ensure intimate contact
   ↓ CURE 20 sec

INCREMENT 3 (Occlusal step — first half, oblique)
   ↓ Oblique layer from one proximal wall to opposite pulpal floor
   ↓ "Leans" against one wall — reduces C-factor stress
   ↓ CURE 20 sec

INCREMENT 4 (Occlusal step — complete)
   ↓ Opposite oblique direction to increment 3
   ↓ Leave 0.5-1 mm proud of cavosurface — to be carved back
   ↓ Begin carving anatomy (triangular ridges, fossae, grooves) BEFORE curing
   ↓ CURE 40 sec (final increment gets longest cure)

ADDITIONAL ENAMEL LAYER (optional, 2-shade technique)
   ↓ Thinner, slightly lighter/more translucent composite over occlusal anatomy
   ↓ Mimics natural enamel translucency
   ↓ CURE 20 sec
Tips during placement:
  • Use composite instrument (Weston, Ora-Sculp, or LM-Arte set)
  • Keep composite moist with bond resin — prevents sticking to instrument
  • Slightly overfill marginal ridge — carve back to correct height
  • Ensure proximal box is completely filled — no voids (critical source of secondary caries)

STEP 9 — MATRIX REMOVAL & INITIAL CHECKS

  1. Remove separation ring first
  2. Remove wedge by pulling back (buccal direction)
  3. Slide matrix band out gingivally or buccally
  4. Immediately check:
    • Gingival flash: Curved probe along gingival margin — remove any excess with scalpel or flame-shaped diamond bur
    • Contact point: Pass dental floss — should require moderate pressure (slight snap), not fall through loosely, not lock/shred
    • Marginal ridge height: Compare to adjacent tooth; should be at same level

STEP 10 — OCCLUSAL ADJUSTMENT

Critical — high composite causes excessive loading → restoration failure or tooth pain
  1. Remove rubber dam BEFORE checking occlusion
  2. Place articulating paper (8-12 µm, Bausch) — patient taps in maximum intercuspation (MIP)
  3. Identify any premature contacts on the restoration (heavy blue/red marks)
  4. Adjust with finishing/polishing bur on high-speed until even contacts across all teeth
  5. Check lateral excursion (working and non-working side):
    • Composite should not have contacts in lateral excursion on posterior teeth (canine guidance / group function)
    • Remove any excursive contacts (causes fracture of restoration or cusp)
  6. Check protrusive movement as well
  7. Ask patient: "Does it feel high anywhere?" and "Does it feel sharp/uncomfortable when you bite?"

STEP 11 — FINISHING & POLISHING

Why polish? Smooth surface: resists plaque adhesion, reduces secondary caries, prevents gum irritation, improves aesthetics
Sequence:
StepToolPurpose
1. Gross contouringTapered finishing carbide bur (12-fluted) at high speedRemove excess, refine anatomy
2. Marginal finishingFlame-shaped fine diamond burSmooth cavosurface margins
3. Proximal finishingProximal finishing strips (Epitex, 3M) — coarse then fineSmooth proximal surfaces; do not damage adjacent tooth
4. Disc polishingSof-Lex discs: coarse → medium → fine → superfineProgressive smoothing of buccal/occlusal/lingual surfaces
5. Rubber cups/pointsEnhance (Dentsply) or Astropol pointsFine polishing; occlusal anatomy
6. Final glossOneGloss (Shofu); aluminium oxide paste + felt wheelHigh gloss finish; seals surface microporosities
7. Optional surface coatUnfilled resin (DeTrey Gloss / BisCover) — cureSeals microchannels, reduces early staining

STEP 12 — POST-OPERATIVE INSTRUCTIONS

Tell the patient:
  1. Some cold sensitivity for 2-4 weeks is normal — dentin was disturbed; reassure
  2. Avoid chewing on that side for 2-3 hours (allow full polymerization/composite maturation)
  3. Floss daily through the contact — essential to prevent secondary proximal caries
  4. Return immediately if: sharp pain on biting, spontaneous pain, restoration feels "high"

REVIEW PROTOCOL

TimeWhat to Check
1 weekGingival health at proximal; bite comfort; sensitivity subsiding
6 weeksSensitivity resolved; contact intact
6 monthsBitewing radiograph — marginal seal, secondary caries, proximal contact
1 year + annuallyRepeat bitewing; check for marginal staining, fracture lines

WHY EACH STEP MATTERS — EXAM SUMMARY

StepRationale
Sectional matrix (not Tofflemire)Creates tight, convex anatomical contact — prevents food packing
Wedge before bandPrevents gingival composite flash; separates teeth
Selective enamel etch with self-etch primerBoosts enamel bond strength without over-etching dentin
Moist bonding techniqueCollagen fibers in dentin must remain hydrated for optimal resin tag formation
2 mm incrementsDepth of cure limit; reduces polymerization shrinkage stress (C-factor)
Oblique incrementsReduces C-factor (ratio of bonded to unbonded surfaces); less internal stress
Occlusal adjustment before finishingRemoves premature contacts before polishing obscures marks
Proximal finishing stripsRemoves gingival flash and overhang that would cause plaque trap and periodontal disease
This is a shared conversation. Sign in to Orris to start your own chat.