Fracture of clavicle Fracture of humerus Osteomyelitis Tennis elbow Frozen shoulder RCT Epulis Dental Carsies Dental cyst Dental fistula Gringivitis Renula
| Type | Features |
|---|---|
| Granulomatous (fibrous) epulis | Commonest; slow-growing, firm, red, sessile or pedunculated; arises from periodontal membrane; benign but recurs if root not excised |
| Sarcomatous epulis | Rapid growth, soft, bluish-red, bleeds easily |
| Myelomatous epulis (periosteal osteoclastoma) | Sessile, soft, lobulated, purplish; egg-shell crackling; soap-bubble X-ray appearance; may undergo malignant change |
| Carcinomatous epulis | Infiltrating epithelioma at gum or tooth socket; invades bone, ulcerates; lymph node enlargement always present |
| Giant cell epulis (peripheral giant cell granuloma) | Solitary, bluish-red, 10-20 mm; between deciduous bicuspids/incisors; can be induced by dental implants; histologically resembles giant cell tumor |
| Congenital epulis | Present at birth; usually on maxillary gingiva; a form of granular cell tumor |
| Epulis gravidarum | In pregnancy; pyogenic granuloma subtype |
| Simple (Intraoral) | Plunging (Cervical) | |
|---|---|---|
| Location | Floor of mouth only | Extends through/around mylohyoid into neck |
| Mechanism | Ductal obstruction/extravasation | Mucus extends beyond floor of mouth into infra-mylohyoid space |
| Frequency | More common | Less common |
Summary Table
| # | Condition | Key Organism/Cause | Key Feature | Treatment |
|---|---|---|---|---|
| 1 | Clavicle Fracture | Direct blow | Midshaft most common; arm slumps down | Sling 4-8 wks; ORIF if displaced |
| 2 | Humerus Fracture | Trauma | Radial nerve palsy (shaft); 4-part classification (proximal) | Conservative or ORIF/arthroplasty |
| 3 | Osteomyelitis | S. aureus | Acute: fever + bone pain; Chronic: discharging sinus | IV antibiotics; surgery (sequestrectomy) |
| 4 | Tennis Elbow | Repetitive wrist use | Lateral epicondyle pain; +ve Maudsley test | Physio, brace, steroid injection; ECRB release |
| 5 | Frozen Shoulder | Capsular fibrosis | Global ROM loss; 70% women; 5x in diabetics | Steroid injection, physio, MUA, capsular release |
| 6 | RCT | Degeneration/trauma | Supraspinatus most common; night pain; drop arm test | Physio; arthroscopic/open repair |
| 7 | Epulis | Reactive gingival lesion | "Upon the gum"; fibrous type commonest | Surgical excision with root |
| 8 | Dental Caries | S. mutans | Acid demineralization; stages: white spot → cavity → abscess | Fluoride, filling, RCT, extraction |
| 9 | Dental Cyst | Necrotic tooth pulp (radicular); unerupted tooth (dentigerous) | Periapical radiolucency; cholesterol crystals in fluid | RCT/apicectomy or enucleation |
| 10 | Dental Fistula | Periapical abscess tracking | Sinus opening on gum/skin draining pus | Treat source (RCT/extraction); tract closes spontaneously |
| 11 | Gingivitis | Dental plaque | Bleeding on probing; no bone loss | Scaling, oral hygiene, chlorhexidine |
| 12 | Ranula | Sublingual gland obstruction | Bluish translucent floor-of-mouth swelling | Excision + sublingual gland removal |
Give in short and RCT is of root canal treatment in that
| Type | Features |
|---|---|
| Fibrous (commonest) | Firm, red, sessile/pedunculated; from periodontal membrane |
| Granulomatous | Granulation around carious tooth |
| Sarcomatous | Rapid growth, soft, bluish-red, bleeds easily |
| Myelomatous | Soap-bubble X-ray; egg-shell crackling; can turn malignant |
| Carcinomatous | Infiltrating; lymph node enlargement |
| Giant cell | Peripheral giant cell granuloma; bluish-red; in children |
| Radicular (Dental) Cyst | Dentigerous Cyst | |
|---|---|---|
| Association | Non-vital/carious tooth | Unerupted tooth (crown) |
| Origin | Cell rests of Malassez at apex | Reduced enamel epithelium |
| X-ray | Periapical radiolucency | Pericoronal radiolucency |
| Fluid | Clear + cholesterol crystals | Straw-coloured fluid |
| Treatment | RCT ± apicectomy | Enucleation + extraction |
Quick Recall Summary
| Condition | One-liner |
|---|---|
| Clavicle Fracture | Midshaft most common; sling 4-8 wks |
| Humerus Fracture | Radial nerve (shaft); K-wires (supracondylar in children) |
| Osteomyelitis | S. aureus; MRI earliest; sequestrectomy for chronic |
| Tennis Elbow | ECRB degeneration; Maudsley test; physio + steroid |
| Frozen Shoulder | Capsular fibrosis; diabetics 5x risk; MUA/capsular release |
| RCT | Pulp removal + gutta-percha obturation to save tooth |
| Epulis | Gingival lesion; fibrous = commonest; excise with root |
| Dental Caries | S. mutans; white spot → abscess; fluoride prevents |
| Dental Cyst | Radicular (dead tooth) vs Dentigerous (unerupted tooth) |
| Dental Fistula | Sinus from abscess; treat source → closes spontaneously |
| Gingivitis | Bleeding gums; no bone loss; scaling + hygiene |
| Ranula | Bluish floor-of-mouth cyst; excise + sublingual gland |
Create a summary PDF/Word document for exam revision
ls /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace
mkdir -p /home/daytona/workspace/exam-revision && ls /home/daytona/skills/docx/s…
~/exam-revision/create_doc.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
HeadingLevel, AlignmentType, BorderStyle, WidthType, ShadingType,
VerticalAlign, PageNumber, Header, Footer, TableOfContents
} = require('docx');
const fs = require('fs');
// ─── helpers ────────────────────────────────────────────────────────────────
const bold = (text, size = 22) =>
new TextRun({ text, bold: true, size, font: 'Calibri' });
const normal = (text, size = 20) =>
new TextRun({ text, size, font: 'Calibri' });
const italic = (text, size = 20) =>
new TextRun({ text, italics: true, size, font: 'Calibri' });
const h1 = (text) =>
new Paragraph({
heading: HeadingLevel.HEADING_1,
spacing: { before: 320, after: 120 },
children: [new TextRun({ text, bold: true, size: 28, color: 'FFFFFF', font: 'Calibri' })],
shading: { type: ShadingType.SOLID, color: '1F4E79' },
indent: { left: 100 },
});
const h2 = (text) =>
new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 260, after: 100 },
children: [new TextRun({ text, bold: true, size: 24, color: 'FFFFFF', font: 'Calibri' })],
shading: { type: ShadingType.SOLID, color: '2E75B6' },
indent: { left: 80 },
});
const h3 = (text) =>
new Paragraph({
heading: HeadingLevel.HEADING_3,
spacing: { before: 160, after: 80 },
children: [new TextRun({ text, bold: true, size: 22, color: '1F4E79', font: 'Calibri' })],
});
const bullet = (text, level = 0) =>
new Paragraph({
bullet: { level },
spacing: { after: 60 },
children: [new TextRun({ text, size: 20, font: 'Calibri' })],
});
const bulletBold = (label, value) =>
new Paragraph({
bullet: { level: 0 },
spacing: { after: 60 },
children: [
new TextRun({ text: label, bold: true, size: 20, font: 'Calibri' }),
new TextRun({ text: value, size: 20, font: 'Calibri' }),
],
});
const sub_bullet = (text) => bullet(text, 1);
const spacer = () => new Paragraph({ spacing: { after: 120 }, children: [] });
// ─── table helper ────────────────────────────────────────────────────────────
function makeTable(headers, rows, colWidths) {
const borderStyle = {
style: BorderStyle.SINGLE,
size: 4,
color: '2E75B6',
};
const allBorders = {
top: borderStyle, bottom: borderStyle,
left: borderStyle, right: borderStyle,
insideHorizontal: borderStyle, insideVertical: borderStyle,
};
const headerRow = new TableRow({
tableHeader: true,
children: headers.map((h, i) =>
new TableCell({
width: { size: colWidths[i], type: WidthType.DXA },
borders: allBorders,
shading: { type: ShadingType.SOLID, color: '1F4E79' },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: h, bold: true, color: 'FFFFFF', size: 18, font: 'Calibri' })],
})],
})
),
});
const dataRows = rows.map((row, ri) =>
new TableRow({
children: row.map((cell, ci) =>
new TableCell({
width: { size: colWidths[ci], type: WidthType.DXA },
borders: allBorders,
shading: { type: ShadingType.SOLID, color: ri % 2 === 0 ? 'DEEAF1' : 'FFFFFF' },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({
children: [new TextRun({ text: cell, size: 18, font: 'Calibri' })],
})],
})
),
})
);
return new Table({
width: { size: 9200, type: WidthType.DXA },
rows: [headerRow, ...dataRows],
});
}
// ─── CONTENT ─────────────────────────────────────────────────────────────────
const content = [];
// Title page
content.push(
new Paragraph({ spacing: { before: 1200, after: 200 }, alignment: AlignmentType.CENTER,
children: [new TextRun({ text: 'EXAM REVISION NOTES', bold: true, size: 52, color: '1F4E79', font: 'Calibri' })] }),
new Paragraph({ alignment: AlignmentType.CENTER, spacing: { after: 120 },
children: [new TextRun({ text: 'Orthopaedics & Dental Conditions', bold: true, size: 32, color: '2E75B6', font: 'Calibri' })] }),
new Paragraph({ alignment: AlignmentType.CENTER, spacing: { after: 800 },
children: [new TextRun({ text: '12 Key Topics for Medical / Dental Students', italics: true, size: 24, color: '595959', font: 'Calibri' })] }),
new Paragraph({ alignment: AlignmentType.CENTER,
children: [new TextRun({ text: '─────────────────────────────────────────', color: '2E75B6', size: 20, font: 'Calibri' })] }),
spacer(), spacer(),
);
// ═══════════════════════════ SECTION A ═══════════════════════════
content.push(h1('SECTION A: ORTHOPAEDIC CONDITIONS'));
// 1. CLAVICLE FRACTURE
content.push(h2('1. Fracture of Clavicle'), spacer());
content.push(bulletBold('Common Site: ', 'Middle third (most common ~80%)'));
content.push(bulletBold('Cause: ', 'Direct blow to shoulder; midportion is weakest (no muscular/ligamentous attachment)'));
content.push(h3('Classification (Neer - for distal fractures):'));
content.push(bullet('Type I – Fracture distal to coracoclavicular ligaments (ligaments intact)'));
content.push(bullet('Type II – Fracture medial to ligaments → proximal fragment displaced superiorly (high nonunion risk)'));
content.push(bullet('Type III – Involves AC joint surface'));
content.push(h3('Clinical Features:'));
content.push(bullet('Pain, swelling, deformity over clavicle'));
content.push(bullet('Arm slumps inward and downward'));
content.push(bullet('Restricted ROM; palpable fracture; crepitus'));
content.push(h3('Investigations:'));
content.push(bullet('X-ray AP view (standard); 45° cephalad tilt if unclear; CT for complex cases'));
content.push(h3('Treatment:'));
content.push(bulletBold('Undisplaced: ', 'Sling or figure-of-eight brace × 4–8 weeks'));
content.push(bulletBold('Displaced / comminuted: ', 'ORIF (plate + screw or IM nail)'));
content.push(bullet('Indications for surgery: displacement >100%, shortening >2 cm, comminution, open fracture, neurovascular injury'));
content.push(h3('Complications:'));
content.push(bullet('Nonunion, malunion, brachial plexus injury, subclavian vessel injury, pneumothorax'));
content.push(spacer());
// 2. HUMERUS FRACTURE
content.push(h2('2. Fracture of Humerus'), spacer());
content.push(makeTable(
['Type', 'Common Cause', 'Key Nerve Injury', 'Treatment'],
[
['Proximal (surgical/anatomical neck)', 'Elderly, osteoporosis, FOOSH', 'Axillary nerve', 'Sling; ORIF or hemiarthroplasty if displaced'],
['Shaft', 'Direct blow, road traffic accident', 'Radial nerve → wrist drop', 'U-slab/functional brace; IM nail if displaced'],
['Supracondylar (children)', 'Fall on outstretched hand (hyperextension)', 'Anterior interosseous nerve / brachial artery', 'Closed reduction + percutaneous K-wires (urgent if NV compromise)'],
],
[2200, 2200, 2200, 2600]
));
content.push(spacer());
content.push(h3('Important Points:'));
content.push(bullet('Neer 4-part classification for proximal humerus: head, shaft, greater tuberosity, lesser tuberosity segments'));
content.push(bullet('Tardy ulnar palsy – late complication of supracondylar fracture → malunion → cubitus valgus'));
content.push(bullet('Volkmann\'s ischaemic contracture – emergency complication of supracondylar fracture (brachial artery)'));
content.push(bullet('AVN – risk with anatomical neck fracture (disrupts blood supply to humeral head)'));
content.push(spacer());
// 3. OSTEOMYELITIS
content.push(h2('3. Osteomyelitis'), spacer());
content.push(bulletBold('Definition: ', 'Infection of bone, most commonly bacterial'));
content.push(bulletBold('Commonest Organism: ', 'Staphylococcus aureus (all ages); Salmonella (sickle cell); Pseudomonas (IV drug users)'));
content.push(h3('Types:'));
content.push(makeTable(
['Type', 'Population', 'Features', 'X-ray Change'],
[
['Acute haematogenous', 'Children', 'Fever, bone pain, warmth, tenderness, reluctance to move', 'Changes after 10–21 days'],
['Subacute', 'Adults', 'Pain, swelling, bony tenderness, chin numbness (jaw)', 'Changes after 3 weeks'],
['Chronic', 'Adults (late)', 'Discharging sinus, sequestrum (dead bone), involucrum (new bone)', 'Sequestrum, sclerosis'],
],
[2000, 1800, 3200, 2200]
));
content.push(spacer());
content.push(h3('Jaw Osteomyelitis (3 types):'));
content.push(bullet('Acute – infants after measles/scarlet fever; maxilla or mandible'));
content.push(bullet('Subacute – most common; adults; from apical abscess/tooth extraction; chin numbness (mental nerve)'));
content.push(bullet('Chronic – months after original disease; sequestrum on X-ray'));
content.push(h3('Investigations:'));
content.push(bullet('MRI – earliest and most sensitive (changes within 3–5 days)'));
content.push(bullet('X-ray – changes appear after 10–21 days'));
content.push(bullet('Blood cultures, raised WBC/ESR/CRP'));
content.push(h3('Treatment:'));
content.push(bulletBold('Acute: ', 'IV Flucloxacillin × 4–6 weeks; surgical drainage if abscess'));
content.push(bulletBold('Chronic: ', 'Sequestrectomy + saucerization + long-term antibiotics'));
content.push(spacer());
// 4. TENNIS ELBOW
content.push(h2('4. Tennis Elbow (Lateral Epicondylitis)'), spacer());
content.push(bulletBold('Definition: ', 'Degenerative tendinopathy (tendinosis, NOT true inflammation) at ECRB origin on lateral epicondyle'));
content.push(bulletBold('Cause: ', 'Repetitive wrist extension/supination – tennis, gardening, carpentry'));
content.push(bulletBold('Pathology: ', 'Angiofibroblastic degeneration of extensor carpi radialis brevis (ECRB)'));
content.push(h3('Clinical Features:'));
content.push(bullet('Pain at lateral epicondyle, aggravated by activity'));
content.push(bullet('Reduced grip strength'));
content.push(bulletBold('Maudsley\'s Test: ', 'Pain at lateral epicondyle on resisted middle finger extension'));
content.push(bulletBold('Cozen\'s Test: ', 'Pain on resisted wrist extension'));
content.push(h3('Investigations:'));
content.push(bullet('Clinical diagnosis; Ultrasound – thickened hypoechoic tendon + neovascularisation on Doppler'));
content.push(h3('Treatment (stepwise):'));
content.push(bullet('1. Rest, physiotherapy, counterforce brace (clasp), NSAIDs'));
content.push(bullet('2. Corticosteroid injection – short-term relief (high recurrence)'));
content.push(bullet('3. PRP injection – emerging evidence for longer-term benefit'));
content.push(bullet('4. Surgery (refractory >6–12 months) – ECRB release (open or arthroscopic); ~85% good outcome'));
content.push(spacer());
// 5. FROZEN SHOULDER
content.push(h2('5. Frozen Shoulder (Adhesive Capsulitis)'), spacer());
content.push(bulletBold('Definition: ', 'Synovial inflammation → reactive capsular fibrosis → global painful restriction of shoulder movement'));
content.push(bulletBold('Epidemiology: ', '~2% population; age 40–70 yrs; 70% women; Diabetes mellitus = 5× increased risk'));
content.push(h3('Risk Factors:'));
content.push(makeTable(
['Factor', 'Detail'],
[
['Diabetes mellitus', '5× increased risk; bilateral in 50% of diabetics'],
['Age / Sex', '>49 years, female predominance'],
['Immobilisation', 'Any cause – post-fracture, post-op, stroke, MI'],
['Endocrine', 'Hypothyroidism, hyperthyroidism, hyperlipidaemia'],
['Others', 'Cervical disc disease, autoimmune disease'],
],
[3000, 6200]
));
content.push(spacer());
content.push(h3('Stages:'));
content.push(bullet('Stage 1 – FREEZING (0–3 months): Progressive pain; ROM starts to reduce'));
content.push(bullet('Stage 2 – FROZEN (3–12 months): Pain subsides; severe global stiffness'));
content.push(bullet('Stage 3 – THAWING (12–24 months): Gradual spontaneous return of movement'));
content.push(h3('Clinical Features:'));
content.push(bullet('Global restriction of ALL shoulder movements – external rotation lost first and most'));
content.push(bullet('Night pain; axillary fold thickening on palpation'));
content.push(bullet('Arthrogram: reduced joint volume (<10 mL vs normal 30 mL)'));
content.push(h3('Treatment:'));
content.push(bulletBold('Stage 1: ', 'NSAIDs + intra-articular corticosteroid injection'));
content.push(bulletBold('Stage 2: ', 'Physiotherapy (stretching), hydrodilatation (distension arthrography)'));
content.push(bulletBold('Refractory: ', 'MUA (Manipulation Under Anaesthesia) or arthroscopic capsular release'));
content.push(spacer());
// 6. RCT
content.push(h2('6. Root Canal Treatment (RCT)'), spacer());
content.push(bulletBold('Definition: ', 'Endodontic procedure to remove infected/necrotic pulp and seal the root canal system to save the tooth'));
content.push(h3('Indications:'));
content.push(bullet('Irreversible pulpitis (persistent spontaneous pain)'));
content.push(bullet('Pulp necrosis'));
content.push(bullet('Periapical abscess / dental fistula'));
content.push(bullet('Dental cyst (radicular cyst) – RCT ± apicectomy'));
content.push(h3('Steps of RCT:'));
content.push(makeTable(
['Step', 'Procedure'],
[
['1. Access', 'Access cavity through crown to expose pulp chamber'],
['2. Extirpation', 'Remove pulp tissue with barbed broach/files'],
['3. Canal shaping', 'Hand or rotary NiTi files to shape canals (crown-down technique)'],
['4. Irrigation', 'Sodium hypochlorite (NaOCl) – antimicrobial; EDTA – removes smear layer'],
['5. Obturation', 'Fill canals with gutta-percha + sealer (lateral/vertical condensation)'],
['6. Restoration', 'Permanent coronal restoration; usually full-coverage crown'],
],
[1200, 8000]
));
content.push(spacer());
content.push(h3('Outcome:'));
content.push(bullet('Saves the tooth; eliminates infection'));
content.push(bullet('Associated periapical abscess/cyst/fistula resolves after successful RCT'));
content.push(bullet('Failure → re-RCT, apicectomy, or extraction'));
content.push(spacer());
// ═══════════════════════════ SECTION B ═══════════════════════════
content.push(h1('SECTION B: DENTAL / ORAL CONDITIONS'));
// 7. EPULIS
content.push(h2('7. Epulis'), spacer());
content.push(bulletBold('Meaning: ', '"Upon the gum" – any benign lesion on the gingiva'));
content.push(h3('Types:'));
content.push(makeTable(
['Type', 'Features', 'Key Point'],
[
['Fibrous (Commonest)', 'Firm, red, sessile/pedunculated; from periodontal membrane', 'Recurs if root not excised'],
['Granulomatous', 'Mass of granulation around carious tooth', 'False epulis'],
['Sarcomatous', 'Rapid growth, soft, bluish-red, bleeds easily', 'Malignant potential'],
['Myelomatous', 'Sessile, purplish, egg-shell crackling, soap-bubble X-ray', 'Can undergo malignant change'],
['Carcinomatous', 'Infiltrating epithelioma; invades bone, ulcerates', 'Lymph nodes always enlarged'],
['Giant Cell', '10–20 mm, bluish-red, between bicuspids/incisors', 'Peripheral giant cell granuloma'],
['Epulis Gravidarum', 'Pregnancy-related pyogenic granuloma', 'Regresses post-partum'],
],
[2200, 4000, 3000]
));
content.push(spacer());
content.push(bulletBold('Treatment: ', 'Surgical excision including root/base; complete excision prevents recurrence'));
content.push(spacer());
// 8. DENTAL CARIES
content.push(h2('8. Dental Caries'), spacer());
content.push(bulletBold('Definition: ', 'Progressive acid-mediated bacterial destruction of tooth structure (enamel → dentine → pulp)'));
content.push(bulletBold('Key Organism: ', 'Streptococcus mutans (initiation); Lactobacillus (progression)'));
content.push(h3('Pathogenesis:'));
content.push(bullet('Bacteria + dietary sugar → lactic acid → demineralises hydroxyapatite → cavity'));
content.push(h3('Stages:'));
content.push(makeTable(
['Stage', 'Feature', 'Treatment'],
[
['1. White spot', 'Demineralisation – reversible, no cavity', 'Fluoride remineralisation'],
['2. Enamel cavity', 'Visible pit/cavity, no pain', 'Composite/amalgam filling'],
['3. Dentine caries', 'Sensitivity to sweet/cold/hot', 'Filling with liner'],
['4. Pulpitis', 'Spontaneous throbbing pain', 'RCT or extraction'],
['5. Periapical abscess', 'Severe pain, swelling, fever, sinus', 'RCT or extraction + antibiotics'],
],
[1600, 3000, 4600]
));
content.push(spacer());
content.push(h3('Prevention:'));
content.push(bulletBold('Fluoride: ', 'Most effective method – fluoridated water, toothpaste, topical gel'));
content.push(bullet('Oral hygiene (brushing/flossing), diet modification, fissure sealants'));
content.push(spacer());
// 9. DENTAL CYST
content.push(h2('9. Dental Cyst'), spacer());
content.push(makeTable(
['Feature', 'Radicular (Dental) Cyst', 'Dentigerous Cyst'],
[
['Also called', 'Periapical cyst', 'Follicular odontome'],
['Association', 'Non-vital/carious tooth', 'Unerupted permanent tooth (crown)'],
['Origin', 'Cell rests of Malassez (at apex)', 'Reduced enamel epithelium (crown)'],
['Common site', 'Upper jaw (maxilla)', 'Lower 3rd molar, upper canine'],
['X-ray finding', 'Periapical radiolucency at root apex', 'Pericoronal radiolucency around crown'],
['Cyst fluid', 'Clear; cholesterol crystals', 'Straw-coloured fluid'],
['Bone sign', 'Egg-shell crackling / fluctuation', 'Egg-shell crackling / fluctuation'],
['Treatment', 'RCT ± apicectomy (enucleation)', 'Enucleation + extraction of unerupted tooth'],
],
[2300, 3450, 3450]
));
content.push(spacer());
content.push(bulletBold('Note: ', 'Both cysts enlarge slowly by bone resorption. Untreated dentigerous cyst can involve entire mandible.'));
content.push(spacer());
// 10. DENTAL FISTULA
content.push(h2('10. Dental Fistula (Dental Sinus)'), spacer());
content.push(bulletBold('Definition: ', 'Abnormal sinus tract draining pus from a periapical abscess to the surface'));
content.push(h3('Types:'));
content.push(bulletBold('Intraoral (parulis / gum boil): ', 'Opens on gingival mucosa near the offending tooth'));
content.push(bulletBold('Extraoral (cutaneous): ', 'Pus tracks through facial tissue to skin'));
content.push(sub_bullet('Median mental sinus – from lower incisor abscess → drains at midline of chin'));
content.push(sub_bullet('Submasseteric abscess – from lower 3rd molar'));
content.push(h3('Clinical Features:'));
content.push(bullet('Painless/mildly painful opening on gum or skin'));
content.push(bullet('Purulent discharge from sinus'));
content.push(bullet('Offending tooth is non-vital (no response to cold/EPT testing)'));
content.push(bullet('X-ray: periapical radiolucency at root apex of causative tooth'));
content.push(h3('Treatment:'));
content.push(bulletBold('Key principle: ', 'Treat the source, NOT the tract'));
content.push(bullet('RCT or extraction of causative tooth → fistula closes spontaneously'));
content.push(bullet('No need to surgically excise the sinus tract'));
content.push(spacer());
// 11. GINGIVITIS
content.push(h2('11. Gingivitis'), spacer());
content.push(bulletBold('Definition: ', 'Inflammation of gingiva WITHOUT bone or attachment loss – fully reversible'));
content.push(h3('Aetiology:'));
content.push(makeTable(
['Cause', 'Example'],
[
['Plaque-induced (commonest)', 'Poor oral hygiene → dental plaque accumulation'],
['Hormonal', 'Pregnancy (epulis gravidarum), puberty'],
['Drug-induced', 'Phenytoin, nifedipine, cyclosporine → gingival hyperplasia'],
['Systemic disease', 'Diabetes, leukaemia, HIV'],
['Nutritional', 'Vitamin C deficiency (scurvy – scorbutic gingivitis)'],
['Acute (ANUG)', 'Fusobacterium + Treponema; stress/immunosuppression'],
],
[3000, 6200]
));
content.push(spacer());
content.push(h3('Clinical Features:'));
content.push(bullet('Red, swollen gums; bleeding on probing (BOP) – key sign'));
content.push(bullet('Loss of stippled texture; dusky red colour'));
content.push(bullet('NO bone loss on X-ray; no attachment loss'));
content.push(h3('ANUG (Acute Necrotizing Ulcerative Gingivitis):'));
content.push(bullet('Punched-out ulcers at interdental papillae with grey pseudomembrane'));
content.push(bullet('Fetid halitosis, metallic taste, pain, fever'));
content.push(bullet('Treatment: Metronidazole + debridement + oral hygiene'));
content.push(h3('Key Distinction:'));
content.push(makeTable(
['Feature', 'Gingivitis', 'Periodontitis'],
[
['Bone loss', 'None', 'Present'],
['Attachment loss', 'None', 'Present'],
['Reversibility', 'Fully reversible', 'Partially irreversible'],
['Treatment', 'Scaling + OHI', 'Scaling, root planing, surgery'],
],
[2500, 3350, 3350]
));
content.push(spacer());
// 12. RANULA
content.push(h2('12. Ranula'), spacer());
content.push(bulletBold('Definition: ', 'Extravasation pseudocyst from sublingual salivary gland in the floor of the mouth'));
content.push(bulletBold('Name origin: ', '"Rana" = frog; resembles underbelly of a frog'));
content.push(bulletBold('Cause: ', 'Obstruction/trauma to sublingual gland or duct (spontaneous or post-surgical)'));
content.push(h3('Types:'));
content.push(makeTable(
['Feature', 'Simple (Intraoral)', 'Plunging (Cervical)'],
[
['Location', 'Floor of mouth only', 'Extends through/around mylohyoid into neck'],
['Frequency', 'Common', 'Less common'],
['Presentation', 'Sublingual swelling', 'Neck swelling ± oral component'],
['Imaging', 'Not needed (clinical)', 'MRI preferred'],
],
[2500, 3350, 3350]
));
content.push(spacer());
content.push(h3('Clinical Features:'));
content.push(bullet('Smooth, dome-shaped swelling, floor of mouth'));
content.push(bulletBold('Characteristic: ', 'Bluish translucent appearance'));
content.push(bullet('Large lesion → elevates tongue → dysphagia, dysarthria, dyspnoea'));
content.push(bullet('Plunging ranula mimics lymphatic malformation (differentiated by histology: no epithelial lining in ranula)'));
content.push(h3('Investigations:'));
content.push(bullet('Simple intraoral: clinical diagnosis only'));
content.push(bullet('Plunging / uncertain / recurrent: MRI (best delineates extent)'));
content.push(h3('Treatment:'));
content.push(makeTable(
['Method', 'Recurrence Rate', 'Note'],
[
['Simple aspiration', 'Very high', 'Not recommended as definitive treatment'],
['Marsupialization', '~80%', 'Inadequate for plunging ranula'],
['Excision of ranula alone', 'Moderate', 'Better but still significant'],
['Excision + sublingual gland (GOLD STANDARD)', '3.6%', 'Best outcome; preserve lingual nerve'],
['OK-432 sclerotherapy', 'Variable', 'Non-surgical option in children'],
],
[3000, 1800, 4400]
));
content.push(spacer());
// ═══════════════════════════ QUICK RECALL ═══════════════════════════
content.push(h1('QUICK RECALL TABLE – All 12 Conditions'));
content.push(makeTable(
['#', 'Condition', 'Cause / Organism', 'Key Feature', 'Treatment'],
[
['1', 'Clavicle Fracture', 'Direct blow', 'Midshaft most common; arm slumps down', 'Sling 4–8 wks; ORIF if displaced'],
['2', 'Humerus Fracture', 'Trauma / FOOSH', 'Radial n. palsy (shaft); K-wires (supracondylar)', 'Sling / ORIF / IM nail; K-wires in children'],
['3', 'Osteomyelitis', 'S. aureus', 'MRI earliest; sequestrum = chronic', 'IV flucloxacillin; sequestrectomy'],
['4', 'Tennis Elbow', 'Repetitive wrist extension', 'ECRB degeneration; +ve Maudsley test', 'Physio, brace, steroid; ECRB release'],
['5', 'Frozen Shoulder', 'Capsular fibrosis', '3 stages; 5× in diabetics; ER lost first', 'Steroid inj., physio, MUA, capsular release'],
['6', 'Root Canal Treatment (RCT)', 'Pulp necrosis / infection', 'Gutta-percha obturation; saves tooth', 'Access → shape → irrigate → obturate → crown'],
['7', 'Epulis', 'Reactive gingival lesion', 'Fibrous = commonest; "upon the gum"', 'Excision with root/base'],
['8', 'Dental Caries', 'S. mutans', 'White spot → cavity → abscess; fluoride prevents', 'Fluoride / filling / RCT / extraction'],
['9', 'Dental Cyst', 'Necrotic pulp / unerupted tooth', 'Radicular (dead tooth); Dentigerous (unerupted)', 'RCT ± apicectomy; enucleation'],
['10', 'Dental Fistula', 'Periapical abscess tracking', 'Sinus on gum or chin skin; treat source only', 'RCT/extraction → closes spontaneously'],
['11', 'Gingivitis', 'Dental plaque', 'Bleeding gums; NO bone loss (vs periodontitis)', 'Scaling, OHI, chlorhexidine'],
['12', 'Ranula', 'Sublingual gland obstruction', 'Bluish translucent floor-of-mouth cyst', 'Excision + sublingual gland (3.6% recurrence)'],
],
[300, 1500, 1700, 2500, 3200]
));
content.push(spacer());
// Footer note
content.push(new Paragraph({
alignment: AlignmentType.CENTER, spacing: { before: 400 },
children: [new TextRun({ text: 'Prepared for Exam Revision | Orthopaedics & Dental Conditions | 12 Key Topics', italics: true, size: 16, color: '808080', font: 'Calibri' })],
}));
// ─── BUILD DOCUMENT ──────────────────────────────────────────────────────────
const doc = new Document({
creator: 'Orris Medical Notes',
title: 'Exam Revision – Orthopaedics & Dental Conditions',
description: '12 key conditions for medical/dental student exam revision',
styles: {
default: {
document: {
run: { font: 'Calibri', size: 20 },
},
},
},
sections: [{
properties: {
page: {
margin: { top: 720, right: 720, bottom: 720, left: 720 },
},
},
headers: {
default: new Header({
children: [new Paragraph({
alignment: AlignmentType.RIGHT,
children: [new TextRun({ text: 'Exam Revision Notes – Orthopaedics & Dental', size: 16, color: '808080', font: 'Calibri' })],
})],
}),
},
footers: {
default: new Footer({
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [
new TextRun({ text: 'Page ', size: 16, color: '808080', font: 'Calibri' }),
new TextRun({ children: [PageNumber.CURRENT], size: 16, color: '808080', font: 'Calibri' }),
new TextRun({ text: ' of ', size: 16, color: '808080', font: 'Calibri' }),
new TextRun({ children: [PageNumber.TOTAL_PAGES], size: 16, color: '808080', font: 'Calibri' }),
],
})],
}),
},
children: content,
}],
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync('/home/daytona/workspace/exam-revision/Exam_Revision_Ortho_Dental.docx', buffer);
console.log('SUCCESS: Document created');
}).catch(err => {
console.error('ERROR:', err);
process.exit(1);
});
cd /home/daytona/workspace/exam-revision && node create_doc.js 2>&1
python /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/worksp…
cd /home/daytona/workspace/exam-revision && python /home/daytona/skills/docx/scr…
python /home/daytona/skills/docx/scripts/office/soffice.py --headless --convert-…
cp /home/daytona/workspace/exam-revision/Exam_Revision_Ortho_Dental.docx /tmp/te…
cp /tmp/test.pdf /home/daytona/workspace/exam-revision/Exam_Revision_Ortho_Denta…
Exam Revision Ortho Dental
Word Document · DOCX
Exam Revision Ortho Dental
PDF Document · PDF