Make cases according to osce station in ent
ls -la /home/daytona/workspace/ 2>/dev/null | head -20
mkdir -p /home/daytona/workspace/ent-osce && ls /home/daytona/skills/docx/
~/ent-osce/create_ent_osce.js
const fs = require('fs');
const { Document, Packer, Paragraph, TextRun, HeadingLevel, AlignmentType, PageBreak } = require('docx');
const cases = [
{
title: "Station 1: Acute Otitis Media in a Child",
type: "Focused history + counseling",
stem: "A 4-year-old child presents with ear pain and fever for 2 days.",
tasks: [
"Take a focused ENT history",
"Explain likely diagnosis and initial management to parent",
"Give safety-net advice"
],
keyPoints: [
"History: otalgia, fever, recent URTI, hearing change, otorrhea",
"Red flags: mastoid swelling, persistent vomiting, severe systemic toxicity",
"Management: analgesia first, selective antibiotics per local protocol",
"Counseling on hydration, follow-up, and return precautions"
]
},
{
title: "Station 2: Chronic Suppurative Otitis Media",
type: "Examination interpretation + management plan",
stem: "A 22-year-old has recurrent foul-smelling ear discharge and reduced hearing in the right ear.",
tasks: [
"Interpret otoscopy findings provided",
"Classify disease and complications risk",
"Outline treatment and referral"
],
keyPoints: [
"Differentiate tubotympanic vs atticoantral disease",
"Identify unsafe features suggesting cholesteatoma",
"Aural toilet + topical therapy + water precautions",
"Indications for imaging and otology referral"
]
},
{
title: "Station 3: Sudden Sensorineural Hearing Loss",
type: "Emergency triage + initial treatment",
stem: "A 50-year-old reports sudden unilateral hearing loss since this morning.",
tasks: [
"Take urgent focused history",
"Interpret tuning fork test findings",
"Start immediate management"
],
keyPoints: [
"Time-critical ENT emergency",
"Differentiate conductive vs sensorineural loss (Rinne/Weber)",
"Urgent steroids per protocol and same-day ENT/audiology",
"Exclude stroke/neurologic red flags"
]
},
{
title: "Station 4: Benign Paroxysmal Positional Vertigo",
type: "Procedure station",
stem: "A 45-year-old has brief vertigo episodes on turning in bed.",
tasks: [
"Explain and perform Dix-Hallpike (simulated)",
"Interpret findings",
"Demonstrate Epley maneuver counseling"
],
keyPoints: [
"Positional, brief, triggered vertigo supports BPPV",
"Look for torsional upbeat nystagmus in posterior canal BPPV",
"Explain post-maneuver advice",
"Identify central vertigo red flags"
]
},
{
title: "Station 5: Epistaxis Initial Management",
type: "Acute emergency management",
stem: "A 63-year-old with hypertension presents with active anterior epistaxis.",
tasks: [
"Perform immediate first-aid steps",
"Take focused bleeding history",
"Plan escalation if bleeding continues"
],
keyPoints: [
"ABCDE, sit forward, pinch soft nose, topical vasoconstrictor",
"Check anticoagulants, trauma, recurrent bleeds",
"Cautery if point visualized; otherwise anterior packing",
"Posterior bleed suspicion requires urgent senior/ENT input"
]
},
{
title: "Station 6: Allergic Rhinitis",
type: "History + long-term management counseling",
stem: "A 19-year-old has sneezing, watery rhinorrhea, and nasal blockage for months.",
tasks: [
"Elicit symptom pattern and triggers",
"Differentiate from infective rhinitis",
"Provide stepwise treatment plan"
],
keyPoints: [
"Trigger/seasonal pattern, atopy history",
"Allergen avoidance and saline irrigation",
"Intranasal corticosteroid technique counseling",
"When to add antihistamine or refer"
]
},
{
title: "Station 7: Acute Rhinosinusitis",
type: "Clinical reasoning",
stem: "A 32-year-old has facial pain, purulent nasal discharge, and blocked nose for 9 days.",
tasks: [
"Take focused history and assess severity",
"Distinguish viral from bacterial pattern",
"Provide evidence-based management"
],
keyPoints: [
"Most cases viral and self-limiting",
"Analgesia, saline, intranasal steroids as indicated",
"Antibiotics only when criteria met",
"Red flags: orbital symptoms, severe frontal headache, neuro signs"
]
},
{
title: "Station 8: Nasal Polyp Evaluation",
type: "Examination image interpretation",
stem: "Endoscopic image shows pale glistening masses in both nasal cavities.",
tasks: [
"Interpret likely diagnosis",
"Identify associated conditions",
"Outline management"
],
keyPoints: [
"Differentiate polyp from turbinate hypertrophy",
"Assess asthma, aspirin-exacerbated respiratory disease",
"Topical steroids and saline douching",
"Surgical referral if refractory"
]
},
{
title: "Station 9: Peritonsillar Abscess (Quinsy)",
type: "Emergency recognition",
stem: "A 27-year-old has severe unilateral sore throat, muffled voice, and trismus.",
tasks: [
"Identify diagnosis from history/exam",
"Assess airway risk",
"Initiate urgent management"
],
keyPoints: [
"Features: uvular deviation, hot-potato voice, drooling",
"Urgent ENT assessment for drainage",
"IV/PO antibiotics per protocol + analgesia + hydration",
"Airway compromise signs mandate immediate escalation"
]
},
{
title: "Station 10: Recurrent Tonsillitis and Tonsillectomy Counseling",
type: "Shared decision-making",
stem: "A 16-year-old reports recurrent disabling tonsillitis episodes over 2 years.",
tasks: [
"Confirm episode frequency and severity",
"Discuss conservative vs surgical options",
"Explain benefits/risks of tonsillectomy"
],
keyPoints: [
"Use accepted episode thresholds and impact on life",
"Discuss hemorrhage, pain, recovery time",
"Safety-net for post-tonsillectomy bleeding",
"Document informed consent discussion"
]
},
{
title: "Station 11: Hoarseness and Suspected Laryngeal Lesion",
type: "Cancer red-flag station",
stem: "A 58-year-old smoker has hoarseness for 8 weeks.",
tasks: [
"Take focused risk-factor history",
"Identify red flags needing urgent referral",
"Counsel patient on next steps"
],
keyPoints: [
"Persistent hoarseness >3 weeks needs visualization",
"Risk factors: smoking, alcohol, HPV, reflux",
"Urgent laryngoscopy pathway",
"Address smoking cessation empathetically"
]
},
{
title: "Station 12: Stridor in a Child",
type: "Pediatric airway emergency",
stem: "A 2-year-old presents with noisy breathing and respiratory distress.",
tasks: [
"Perform immediate airway assessment",
"Differentiate croup vs epiglottitis clues",
"Outline emergency management priorities"
],
keyPoints: [
"Minimal handling, oxygen, senior help early",
"Look for drooling, tripod posture, toxic appearance",
"Do not force throat exam in severe airway compromise",
"Escalate to anesthesia/ENT for airway control"
]
},
{
title: "Station 13: Foreign Body in Ear",
type: "Procedure planning + communication",
stem: "A 7-year-old inserted a bead in the left ear.",
tasks: [
"Take focused history and assess urgency",
"Choose safe removal strategy",
"Counsel caregiver"
],
keyPoints: [
"Avoid repeated traumatic attempts",
"Contraindication to irrigation (button battery, organic swelling objects)",
"Need for ENT referral/sedation in uncooperative child",
"Post-removal canal/TM check"
]
},
{
title: "Station 14: Foreign Body Aspiration / Upper Airway Concern",
type: "Acute assessment",
stem: "A 3-year-old had sudden coughing while playing with small toy parts and now has noisy breathing.",
tasks: [
"Assess airway stability",
"Elicit choking event history",
"Plan urgent referral and investigations"
],
keyPoints: [
"Partial vs complete airway obstruction recognition",
"Do not delay specialist review in high suspicion",
"Rigid bronchoscopy pathway when indicated",
"Continuous monitoring and escalation"
]
},
{
title: "Station 15: Neck Lump in Adult",
type: "Head and neck cancer workup",
stem: "A 52-year-old has a painless enlarging neck mass for 6 weeks.",
tasks: [
"Take focused history for malignancy risk",
"Perform structured neck lump examination",
"Outline urgent referral pathway"
],
keyPoints: [
"Persistent adult neck mass is malignant until proven otherwise",
"Assess upper aerodigestive symptoms and systemic features",
"Urgent imaging + FNA/cytology pathway",
"Clear communication of urgency"
]
},
{
title: "Station 16: Thyroid Nodule (ENT-linked Neck Assessment)",
type: "Examination + investigation planning",
stem: "A 40-year-old presents with anterior neck swelling noticed for 3 months.",
tasks: [
"Perform focused thyroid/neck exam",
"Identify compressive/red flag symptoms",
"Plan first-line investigations"
],
keyPoints: [
"Assess mobility with swallowing and nodal status",
"TSH and thyroid ultrasound basics",
"FNA indications based on imaging risk",
"Urgent referral if voice change/rapid growth"
]
},
{
title: "Station 17: Facial Nerve Palsy",
type: "Neurologic-ENT differentiation",
stem: "A 34-year-old wakes with sudden right facial weakness.",
tasks: [
"Differentiate UMN vs LMN pattern",
"Assess eye protection needs",
"Start initial management and counseling"
],
keyPoints: [
"Forehead involvement suggests LMN palsy",
"Corneal protection is essential",
"Steroid window for Bell palsy per protocol",
"Recognize atypical features requiring urgent imaging"
]
},
{
title: "Station 18: Obstructive Sleep Apnea (ENT Clinic)",
type: "Clinic counseling and risk assessment",
stem: "A 47-year-old with obesity has loud snoring and daytime somnolence.",
tasks: [
"Take sleep-focused history",
"Identify OSA risk and complications",
"Discuss investigation and management options"
],
keyPoints: [
"Screen with symptom/risk tools",
"Complications: cardiovascular and driving risk",
"Weight loss, CPAP, and selected surgical options",
"Safety counseling regarding driving/work"
]
},
{
title: "Station 19: Ménière Disease",
type: "Differential diagnosis station",
stem: "A 41-year-old has episodic vertigo with tinnitus and fluctuating hearing loss.",
tasks: [
"Recognize symptom triad",
"Differentiate from vestibular migraine and BPPV",
"Outline management plan"
],
keyPoints: [
"Episodic vertigo + tinnitus + fluctuating SNHL",
"Lifestyle and trigger management",
"Symptom control medications per protocol",
"ENT/audiovestibular follow-up"
]
},
{
title: "Station 20: Post-thyroidectomy Hematoma",
type: "Postoperative emergency",
stem: "A patient 4 hours after thyroid surgery develops neck swelling, voice change, and breathing difficulty.",
tasks: [
"Recognize life-threatening complication",
"Initiate immediate emergency response",
"Communicate with team and patient"
],
keyPoints: [
"Airway emergency: call for help immediately",
"Release wound sutures/clips if rapidly deteriorating per protocol",
"Prepare for definitive airway and return to theater",
"Closed-loop communication and documentation"
]
}
];
const children = [];
children.push(new Paragraph({
text: "Comprehensive ENT OSCE Stations (20 Cases)",
heading: HeadingLevel.TITLE,
alignment: AlignmentType.CENTER
}));
children.push(new Paragraph({
children: [new TextRun({ text: "Designed for undergraduate and postgraduate clinical OSCE practice.", italics: true })],
alignment: AlignmentType.CENTER
}));
children.push(new Paragraph({ text: "" }));
cases.forEach((c, idx) => {
children.push(new Paragraph({ text: c.title, heading: HeadingLevel.HEADING_1 }));
children.push(new Paragraph({ children: [new TextRun({ text: `Station Type: ${c.type}`, bold: true })] }));
children.push(new Paragraph({ children: [new TextRun({ text: `Candidate Instructions: ${c.stem}` })] }));
children.push(new Paragraph({ text: "Tasks:", heading: HeadingLevel.HEADING_2 }));
c.tasks.forEach(t => children.push(new Paragraph({ text: t, bullet: { level: 0 } })));
children.push(new Paragraph({ text: "Examiner Key Points (Marking Guide):", heading: HeadingLevel.HEADING_2 }));
c.keyPoints.forEach(k => children.push(new Paragraph({ text: k, bullet: { level: 0 } })));
if (idx < cases.length - 1) {
children.push(new Paragraph({ children: [new PageBreak()] }));
}
});
const doc = new Document({
sections: [{ children }]
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync('/home/daytona/workspace/ent-osce/ENT_OSCE_20_Cases.docx', buffer);
console.log('DOCX created successfully');
});node /home/daytona/workspace/ent-osce/create_ent_osce.js && ls -la /home/daytona/workspace/ent-osce/
Make cases according to osce station in ent