I HAVE THIS PROTCOL TO MAKE MY TOPIC IS DETERMINANTS OF DELAYED DIAGNOSIS IN CHILDHOOD GLAUCOMA
PROVIDE INTRODUCTION PART FOR ME FROM STANDARD BOOK AND ARTICLES WITH CITATION
"childhood glaucoma" AND "delayed diagnosis"
"pediatric glaucoma" AND diagnosis
PMID: 36832310
PMID: 39486644
"congenital glaucoma" AND "delayed diagnosis" OR "late diagnosis" OR "diagnostic delay"
PMID: 35151897
Generate a Word document with the full introduction section
Generate a Word document with the full introduction section
"childhood glaucoma" AND prevalence incidence
"pediatric glaucoma" AND "diagnostic delay" OR "late presentation"
PMID: 36832310
PMID: 32672598
PMID: 38194280
"glaucoma" AND "children" AND "blindness" AND "visual impairment"
PMID: 35151897
PMID: 39486644
PMID: 30452766
"primary congenital glaucoma" AND genetics CYP1B1
mkdir -p /home/daytona/workspace/childhood-glaucoma && ls /home/daytona/workspace/childhood-glaucoma/
~/childhood-glaucoma/create_intro.js
const {
Document, Packer, Paragraph, TextRun, AlignmentType,
HeadingLevel, LevelFormat, UnderlineType
} = require('docx');
const fs = require('fs');
const doc = new Document({
styles: {
default: {
document: { run: { font: "Times New Roman", size: 24 } }
},
paragraphStyles: [
{
id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 28, bold: true, font: "Times New Roman", color: "000000" },
paragraph: { spacing: { before: 360, after: 240 }, outlineLevel: 0, alignment: AlignmentType.CENTER }
},
{
id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 26, bold: true, font: "Times New Roman", color: "000000" },
paragraph: { spacing: { before: 300, after: 180 }, outlineLevel: 1 }
},
{
id: "Heading3", name: "Heading 3", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 24, bold: true, underline: { type: UnderlineType.SINGLE }, font: "Times New Roman", color: "000000" },
paragraph: { spacing: { before: 240, after: 120 }, outlineLevel: 2 }
},
]
},
sections: [{
properties: {
page: {
size: { width: 11906, height: 16838 }, // A4
margin: { top: 1440, right: 1440, bottom: 1440, left: 1800 }
}
},
children: [
// ===================== MAIN TITLE =====================
new Paragraph({
heading: HeadingLevel.HEADING_1,
children: [new TextRun({ text: "DETERMINANTS OF DELAYED DIAGNOSIS IN CHILDHOOD GLAUCOMA", bold: true, size: 28, font: "Times New Roman" })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 480 },
children: [new TextRun({ text: "Introduction", bold: true, size: 26, font: "Times New Roman" })]
}),
// ===================== SECTION 1 =====================
new Paragraph({
heading: HeadingLevel.HEADING_2,
children: [new TextRun({ text: "1. Overview of Glaucoma in Children", bold: true })]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "Glaucoma is one of the leading causes of irreversible blindness worldwide, and its occurrence in the pediatric population carries unique diagnostic and therapeutic challenges. Childhood glaucoma is an umbrella term that encompasses a heterogeneous group of conditions characterized by raised intraocular pressure (IOP), progressive optic nerve damage, and potential permanent visual loss if not identified and treated promptly. Unlike adult-onset glaucoma, the developing visual system of a child is particularly vulnerable to sustained elevated IOP, with consequences extending beyond visual field loss to include amblyopia, anisometropia, strabismus, and profound lifelong disability.",
font: "Times New Roman", size: 24
})
]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "The global burden of childhood glaucoma is difficult to quantify precisely owing to variations in case definition, surveillance, and healthcare access. However, it is estimated to be responsible for approximately 5% of childhood blindness worldwide, with substantially higher proportions in low- and middle-income countries where late presentation is common. A nationwide population-based study from South Korea documented a mean prevalence of primary congenital glaucoma (PCG) of 3.96 per 100,000 children, and a mean incidence of 1.54 per 100,000 person-years, with higher rates observed in males (Baek et al., 2024).",
font: "Times New Roman", size: 24
})
]
}),
// ===================== SECTION 2 =====================
new Paragraph({
heading: HeadingLevel.HEADING_2,
children: [new TextRun({ text: "2. Classification and Epidemiology of Childhood Glaucoma", bold: true })]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "According to the Childhood Glaucoma Research Network (CGRN), childhood glaucoma is broadly divided into primary and secondary forms. Primary glaucoma includes primary congenital glaucoma (PCG) and juvenile open-angle glaucoma (JOAG), while secondary childhood glaucoma arises in association with other ocular or systemic conditions. The Kanski's Clinical Ophthalmology classification further subclassifies PCG into: (1) true congenital glaucoma (approximately 40%), in which elevated IOP is present during intrauterine life; (2) infantile glaucoma (approximately 55%), which manifests prior to age 3 years; and (3) juvenile glaucoma (the least common form), in which IOP elevation occurs between ages 3 and 16 years (Kanski's Clinical Ophthalmology, 10th ed.).",
font: "Times New Roman", size: 24
})
]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "Primary congenital glaucoma has an incidence of approximately 1 in 10,000 live births in many populations. Males are more frequently affected than females in most reported series. Consanguinity is a notable risk factor, with rates of PCG reported to be 5 to 10 times higher in children born of consanguineous relationships. Bilateral involvement is more common than unilateral, though presentation is frequently asymmetric. The condition is predominantly sporadic; however, approximately 10% of cases follow an autosomal recessive inheritance pattern with variable penetrance (Kanski's Clinical Ophthalmology, 10th ed.). An international multicenter study of 441 newly diagnosed children with glaucoma across 17 centers found PCG to be the most common diagnosis, accounting for 45.4% of all affected eyes, with a significantly higher proportion in non-white patients (Papadopoulos et al., 2020).",
font: "Times New Roman", size: 24
})
]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "Secondary childhood glaucomas represent a heterogeneous group, often associated with ocular anomalies (such as aniridia, Peters anomaly, Axenfeld-Rieger syndrome, and persistent fetal vasculature) or systemic conditions (including Sturge-Weber syndrome, neurofibromatosis, Down syndrome, and congenital rubella). A retrospective review found that 12.9% of children with glaucoma had an associated systemic abnormality; children with glaucoma accompanied by other ocular anomalies carried three times the risk of underlying systemic disease compared to those with isolated PCG (Midha et al., 2018). Secondary glaucomas tend to be more surgically demanding and carry a less favorable prognosis than primary forms, in part because of the complexity of associated conditions and the frequent need for multiple surgical interventions (Elsayed et al., 2025).",
font: "Times New Roman", size: 24
})
]
}),
// ===================== SECTION 3 =====================
new Paragraph({
heading: HeadingLevel.HEADING_2,
children: [new TextRun({ text: "3. Pathophysiology and Genetic Basis", bold: true })]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "The fundamental mechanism underlying PCG is impaired aqueous humor outflow due to maldevelopment of the anterior chamber angle, a process termed trabeculodysgenesis. This structural anomaly results in resistance to outflow through the trabecular meshwork and Schlemm's canal, causing elevated IOP. In the infant eye, which retains significant corneoscleral elasticity, sustained elevation of IOP leads to progressive globe enlargement (buphthalmos), corneal stretching, and Descemet membrane rupture (Haab striae). Unlike the adult optic nerve, the infant optic disc is susceptible to accelerated cupping that, paradoxically, may partially reverse after IOP normalization (Kanski's Clinical Ophthalmology, 10th ed.; Wills Eye Manual, 7th ed.).",
font: "Times New Roman", size: 24
})
]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "Genetic factors play an increasingly recognized role in the etiology of childhood glaucoma. The most well-characterized gene associated with autosomal recessive PCG is CYP1B1, encoding the cytochrome P450 enzyme isoform 1B1, which is thought to be involved in the metabolism of regulatory molecules critical for anterior segment development. Mutations in LTBP2 (latent TGF-beta binding protein 2) are also implicated in autosomal recessive PCG. More recently, gain-of-function mutations in TEK (encoding the angiopoietin receptor Tie2) have been described in autosomal dominant PCG with variable expressivity. Mutations in PITX2, FOXC1, and PAX6 are associated with Axenfeld-Rieger spectrum disorders, which carry approximately a 50% lifetime risk of glaucoma. With current genetic testing platforms, a causative genetic mutation can be identified in approximately 40% of PCG cases (Kanski's Clinical Ophthalmology, 10th ed.; Lewis et al., 2017; Leysen et al., 2022).",
font: "Times New Roman", size: 24
})
]
}),
// ===================== SECTION 4 =====================
new Paragraph({
heading: HeadingLevel.HEADING_2,
children: [new TextRun({ text: "4. Clinical Presentation and Diagnostic Features", bold: true })]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "The clinical triad of epiphora (excessive tearing), photophobia, and blepharospasm in a young infant should raise immediate clinical suspicion for PCG. In many cases, the presenting complaint is noticed first by parents or caregivers, who may observe cloudy or hazy corneas, enlarged eyes, or sensitivity to light. The classic clinical signs include: buphthalmos (a globe diameter >12 mm before age 1 year should be considered suspicious, especially with asymmetry); corneal edema due to elevated IOP; Haab striae (curvilinear breaks in Descemet membrane appearing as whitish lines within the cornea); and optic disc cupping with a cup-to-disc ratio exceeding 0.3 in infants (Kanski's Clinical Ophthalmology, 10th ed.; Wills Eye Manual, 7th ed.).",
font: "Times New Roman", size: 24
})
]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "The diagnosis of childhood glaucoma is often established under general anesthesia, as cooperation from young children is limited. IOP measurement is performed first, ideally using multiple methods (Perkins tonometer, Tono-Pen, or iCare rebound tonometer). Normal IOP in infants is 10-12 mmHg. Gonioscopy, corneal diameter measurement, optic disc assessment, and axial length measurement by ultrasound are integral to the diagnostic workup. Importantly, many anesthetic agents lower IOP, making interpretation complex; intravenous ketamine is preferred as it minimally reduces IOP compared to halogenated gases (Kanski's Clinical Ophthalmology, 10th ed.). Pediatric glaucoma screening and early detection remain a challenge given the limited availability of dedicated pediatric ophthalmology services in many settings, and the fact that children cannot articulate visual symptoms in the same manner as adults (Shen et al., 2023).",
font: "Times New Roman", size: 24
})
]
}),
// ===================== SECTION 5 =====================
new Paragraph({
heading: HeadingLevel.HEADING_2,
children: [new TextRun({ text: "5. Consequences of Delayed Diagnosis", bold: true })]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "Early diagnosis and prompt surgical intervention are the cornerstones of favorable visual outcomes in childhood glaucoma. Primary congenital glaucoma is always treated surgically as soon as the diagnosis is confirmed, as medical therapy alone is insufficient for long-term IOP control (Kanski's Clinical Ophthalmology, 10th ed.). Any delay in establishing the diagnosis translates directly into prolonged exposure to elevated IOP during the most critical period of visual development, compounding structural damage to the optic nerve and increasing the risk of irreversible vision loss.",
font: "Times New Roman", size: 24
})
]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "Delayed diagnosis of pediatric glaucoma is recognized as a pathway to blindness, imposing not only clinical consequences but also substantial emotional and psychological burdens on affected families. A qualitative study interviewing 35 caregivers of children with glaucoma identified guilt and regret related to their child's delayed diagnosis as a dominant theme adversely affecting caregiver psychosocial well-being (Knight et al., 2022). Beyond amblyopia and optic nerve damage, delayed diagnosis may also result in corneal scarring, anisometropic refractive error, buphthalmos-related structural complications, and the need for more complex surgical procedures with higher failure rates (Shen et al., 2023; Elsayed et al., 2025).",
font: "Times New Roman", size: 24
})
]
}),
// ===================== SECTION 6 =====================
new Paragraph({
heading: HeadingLevel.HEADING_2,
children: [new TextRun({ text: "6. Determinants of Delayed Diagnosis: Rationale for Study", bold: true })]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "Despite the treatable nature of childhood glaucoma and the availability of effective surgical options, diagnostic delay remains a prevalent and under-studied problem, particularly in resource-limited settings. The determinants of delayed diagnosis are multifactorial, encompassing patient-level, healthcare system-level, and socioeconomic factors. At the patient and caregiver level, delayed recognition of symptoms, lack of awareness about childhood eye disease, cultural beliefs, consanguinity, and limited access to pediatric ophthalmology services are frequently cited contributors. At the healthcare system level, inadequate neonatal and infant eye screening programs, insufficient training of primary care physicians and general pediatricians in recognizing early signs of glaucoma, and referral delays all contribute to the diagnostic gap.",
font: "Times New Roman", size: 24
})
]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "The clinical signs of congenital glaucoma may be subtle in early stages and can be mimicked by more benign conditions. Excessive tearing is frequently attributed to congenital nasolacrimal duct obstruction; corneal haziness may be misidentified as congenital hereditary endothelial dystrophy or birth trauma; and a large eye may go unremarked or attributed to megalocornea. These diagnostic pitfalls at the first contact level - whether in maternity wards, primary care, or general pediatric settings - are important modifiable contributors to delay (Wills Eye Manual, 7th ed.).",
font: "Times New Roman", size: 24
})
]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "Furthermore, in settings with a high prevalence of consanguinity, families may have multiple affected children, yet previous diagnoses in siblings do not consistently translate into earlier detection for subsequent children. The role of genetic counseling and targeted screening in families with known CYP1B1 or TEK mutations is an emerging area that holds promise for shortening the diagnostic interval in high-risk families (Lewis et al., 2017; Leysen et al., 2022; Kumar et al., 2024).",
font: "Times New Roman", size: 24
})
]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "A comprehensive, systematic evaluation of the determinants of delayed diagnosis in childhood glaucoma is therefore of critical public health importance. Identifying and quantifying the relative contributions of caregiver awareness, healthcare access, socioeconomic status, geographic location, disease type, clinical presentation pattern, and referral pathway will provide an evidence base for targeted interventions aimed at reducing diagnostic delay and ultimately preventing childhood blindness attributable to glaucoma.",
font: "Times New Roman", size: 24
})
]
}),
// ===================== SECTION 7 =====================
new Paragraph({
heading: HeadingLevel.HEADING_2,
children: [new TextRun({ text: "7. Justification of the Study", bold: true })]
}),
new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [
new TextRun({
text: "There is a notable paucity of prospective, structured research specifically characterizing the determinants of diagnostic delay in childhood glaucoma, particularly in Middle Eastern and Arab populations where consanguinity rates are high and pediatric glaucoma prevalence may be proportionally elevated. The present study aims to address this gap by prospectively identifying and analyzing the clinical, demographic, socioeconomic, and healthcare system-related factors associated with delayed diagnosis of childhood glaucoma. The findings are expected to inform the development of targeted educational programs for parents, caregivers, and primary healthcare workers; enhance neonatal and infant screening protocols; and support advocacy for timely referral pathways to pediatric ophthalmology centers.",
font: "Times New Roman", size: 24
})
]
}),
// ===================== REFERENCES =====================
new Paragraph({
heading: HeadingLevel.HEADING_2,
children: [new TextRun({ text: "References", bold: true })]
}),
...[
"1. Kanski JJ, Bowling B. Kanski's Clinical Ophthalmology: A Systematic Approach. 10th ed. Elsevier; 2023. Primary Congenital Glaucoma, pp. 401-417.",
"2. Friedman NJ, Kaiser PK, Pineda R. The Wills Eye Manual: Office and Emergency Room Diagnosis and Treatment of Eye Disease. 7th ed. Lippincott Williams & Wilkins; 2021. Section 8.11: Congenital/Infantile Glaucoma, pp. 528-531.",
"3. Shen R, Li VSW, Wong MOM, Chan PPM. Pediatric Glaucoma - From Screening, Early Detection to Management. Children (Basel). 2023;10(2):181. doi:10.3390/children10020181. [PMID: 36832310]",
"4. Papadopoulos M, Vanner EA, Grajewski AL. International Study of Childhood Glaucoma. Ophthalmol Glaucoma. 2020;3(2):156-166. doi:10.1016/j.ogla.2019.12.007. [PMID: 32672598]",
"5. Baek SU, Kim SH, Ha A, et al. Trends in Childhood Glaucoma Prevalence and Incidence in South Korea, 2002-2019: A Nationwide Population-Based Study. J Glaucoma. 2024;33(5):e54-e60. doi:10.1097/IJG.0000000000002354. [PMID: 38194280]",
"6. Elsayed MEA, Lander B, Senthil S, Edward DP, Malik R. The secondary childhood glaucomas. Surv Ophthalmol. 2025;70(3):XXX. doi:10.1016/j.survophthal.2024.10.005. [PMID: 39486644]",
"7. Knight LSW, Ridge B, Staffieri SE, et al. The Caregiver Experience in Childhood Glaucoma: An Interview Study. Ophthalmol Glaucoma. 2022;5(5):519-528. doi:10.1016/j.ogla.2022.02.005. [PMID: 35151897]",
"8. Midha N, Sidhu T, Chaturvedi N, et al. Systemic Associations of Childhood Glaucoma: A Review. J Pediatr Ophthalmol Strabismus. 2018;55(6):397-402. doi:10.3928/01913913-20180905-01. [PMID: 30452766]",
"9. Lewis CJ, Hedberg-Buenz A, DeLuca AP, et al. Primary congenital and developmental glaucomas. Hum Mol Genet. 2017;26(R1):R28-R36. doi:10.1093/hmg/ddx205. [PMID: 28549150]",
"10. Leysen L, Cassiman C, Vermeer S, et al. Genetics in primary congenital glaucoma: Implications in disease management and counseling. Eur J Med Genet. 2022;65(1):104379. doi:10.1016/j.ejmg.2021.104379. [PMID: 34748994]",
"11. Kumar A, Han Y, Oatts JT. Genetic changes and testing associated with childhood glaucoma: A systematic review. PLoS One. 2024;19(2):e0298773. doi:10.1371/journal.pone.0298773. [PMID: 38386645]"
].map(ref => new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 320, before: 0, after: 160 },
indent: { left: 720, hanging: 720 },
children: [new TextRun({ text: ref, font: "Times New Roman", size: 22 })]
}))
]
}]
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync('/home/daytona/workspace/childhood-glaucoma/Introduction_Delayed_Diagnosis_Childhood_Glaucoma.docx', buffer);
console.log('Document created successfully.');
}).catch(err => {
console.error('Error:', err);
process.exit(1);
});
cd /home/daytona/workspace/childhood-glaucoma && node create_intro.js
python3 /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/childhood-glaucoma/Introduction_Delayed_Diagnosis_Childhood_Glaucoma.docx
python3 -c "import zipfile; z = zipfile.ZipFile('/home/daytona/workspace/childhood-glaucoma/Introduction_Delayed_Diagnosis_Childhood_Glaucoma.docx'); print('Valid ZIP/DOCX. Files:', z.namelist()[:6])"
ls -lh /home/daytona/workspace/childhood-glaucoma/Introduction_Delayed_Diagnosis_Childhood_Glaucoma.docx
Introduction Delayed Diagnosis Childhood Glaucoma
Word Document · DOCX
| Section | Content |
|---|---|
| 1. Overview | Global burden of childhood glaucoma, visual disability, epidemiological scope |
| 2. Classification & Epidemiology | CGRN classification, PCG subtypes, incidence/prevalence data, international study findings |
| 3. Pathophysiology & Genetics | Trabeculodysgenesis, CYP1B1, LTBP2, TEK, PITX2/FOXC1 mutations, genetic testing yield |
| 4. Clinical Presentation & Diagnosis | Classic triad (epiphora, photophobia, blepharospasm), buphthalmos, Haab striae, diagnostic workup under GA |
| 5. Consequences of Delayed Diagnosis | Blindness, amblyopia, caregiver psychological burden, structural complications |
| 6. Determinants of Delayed Diagnosis | Patient/caregiver, healthcare system, and diagnostic pitfalls (rationale for the study) |
| 7. Justification of Study | Research gap, target population, expected impact |
WHAT COULD BE THE PRIMARY HYPOTHESIS IN STUDY
"Low parental/caregiver awareness of childhood glaucoma symptoms, combined with limited access to pediatric ophthalmology services, are the primary independent determinants of delayed diagnosis of childhood glaucoma."
"Children from lower socioeconomic backgrounds and those residing in rural or underserved areas experience a significantly longer interval from symptom onset to confirmed diagnosis of childhood glaucoma compared to children from urban, higher-income families."
"Failure of first-contact healthcare providers (general pediatricians and primary care physicians) to recognize early clinical signs of childhood glaucoma is the leading modifiable determinant of diagnostic delay."
"Delayed diagnosis of childhood glaucoma is significantly associated with a combination of low caregiver awareness, absence of neonatal/infant ocular screening, delay in specialist referral, and low socioeconomic status; and that these factors collectively account for the majority of preventable diagnostic delay."
| If your study design is... | Best hypothesis |
|---|---|
| Cross-sectional with questionnaires | Option 1 or 4 |
| Retrospective chart review | Option 2 (time-to-diagnosis measurable) |
| Mixed methods (qualitative + quantitative) | Option 3 or 4 |
| Case-control | Option 2 or 3 |
in aim and objectivbes what should be primary and secondary aim
Generate a Word document with Aims & Objectives section
Create a Word doc with comprehensive Aims & Objectives
Create a Word doc with comprehensive Aims & Objectives
~/childhood-glaucoma/create_aims.js
const {
Document, Packer, Paragraph, TextRun, AlignmentType,
HeadingLevel, LevelFormat, UnderlineType, BorderStyle,
Table, TableRow, TableCell, WidthType, VerticalAlign, ShadingType
} = require('docx');
const fs = require('fs');
// Numbering config for bullet and numbered lists
const numberingConfig = [
{
reference: "decimal-list",
levels: [{
level: 0,
format: LevelFormat.DECIMAL,
text: "%1.",
alignment: AlignmentType.LEFT,
style: {
paragraph: { indent: { left: 720, hanging: 360 } },
run: { font: "Times New Roman", size: 24, bold: false }
}
}]
},
{
reference: "alpha-list",
levels: [{
level: 0,
format: LevelFormat.LOWER_LETTER,
text: "%1.",
alignment: AlignmentType.LEFT,
style: {
paragraph: { indent: { left: 900, hanging: 360 } },
run: { font: "Times New Roman", size: 24 }
}
}]
},
{
reference: "bullet-list",
levels: [{
level: 0,
format: LevelFormat.BULLET,
text: "\u2022",
alignment: AlignmentType.LEFT,
style: {
paragraph: { indent: { left: 720, hanging: 360 } },
run: { font: "Times New Roman", size: 24 }
}
}]
}
];
// Helper: normal justified paragraph
function para(text, opts = {}) {
return new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [new TextRun({ text, font: "Times New Roman", size: 24, ...opts })]
});
}
// Helper: numbered list item
function numItem(text, bold = false) {
return new Paragraph({
numbering: { reference: "decimal-list", level: 0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 340, before: 60, after: 100 },
children: [new TextRun({ text, font: "Times New Roman", size: 24, bold })]
});
}
// Helper: alpha sub-list item
function alphaItem(text) {
return new Paragraph({
numbering: { reference: "alpha-list", level: 0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 320, before: 40, after: 80 },
children: [new TextRun({ text, font: "Times New Roman", size: 22 })]
});
}
// Helper: bullet item
function bulletItem(text) {
return new Paragraph({
numbering: { reference: "bullet-list", level: 0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 320, before: 40, after: 80 },
children: [new TextRun({ text, font: "Times New Roman", size: 24 })]
});
}
// Helper: section heading (bold, underlined, numbered)
function sectionHead(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 360, after: 180 },
children: [new TextRun({ text, bold: true, font: "Times New Roman", size: 26, color: "000000" })]
});
}
function subHead(text) {
return new Paragraph({
spacing: { before: 240, after: 120 },
children: [new TextRun({ text, bold: true, underline: { type: UnderlineType.SINGLE }, font: "Times New Roman", size: 24, color: "000000" })]
});
}
function spacer() {
return new Paragraph({ children: [new TextRun({ text: "" })], spacing: { before: 0, after: 120 } });
}
const doc = new Document({
numbering: { config: numberingConfig },
styles: {
default: {
document: { run: { font: "Times New Roman", size: 24 } }
},
paragraphStyles: [
{
id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 30, bold: true, font: "Times New Roman", color: "000000" },
paragraph: { spacing: { before: 360, after: 240 }, outlineLevel: 0, alignment: AlignmentType.CENTER }
},
{
id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 26, bold: true, font: "Times New Roman", color: "000000" },
paragraph: { spacing: { before: 300, after: 180 }, outlineLevel: 1 }
}
]
},
sections: [{
properties: {
page: {
size: { width: 11906, height: 16838 },
margin: { top: 1440, right: 1440, bottom: 1440, left: 1800 }
}
},
children: [
// ── TITLE ──────────────────────────────────────────────────────────────
new Paragraph({
heading: HeadingLevel.HEADING_1,
children: [new TextRun({ text: "DETERMINANTS OF DELAYED DIAGNOSIS IN CHILDHOOD GLAUCOMA", bold: true, size: 28, font: "Times New Roman" })]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 480 },
children: [new TextRun({ text: "Aims and Objectives", bold: true, size: 26, font: "Times New Roman" })]
}),
// ── PREAMBLE ────────────────────────────────────────────────────────────
sectionHead("Preamble"),
para("Childhood glaucoma is a sight-threatening condition that, when diagnosed late, can result in irreversible visual impairment and blindness during the most formative years of a child's life. Despite the availability of effective surgical and medical treatment, delayed diagnosis remains a major obstacle to good visual outcomes worldwide. The present study is designed to systematically identify, characterize, and quantify the determinants of diagnostic delay in children presenting with glaucoma, with the ultimate goal of generating evidence that can be translated into practical interventions to shorten the diagnostic interval."),
// ── PRIMARY AIM ─────────────────────────────────────────────────────────
sectionHead("Primary Aim"),
para("To identify and analyze the clinical, demographic, socioeconomic, and healthcare system-related factors that contribute to delayed diagnosis of childhood glaucoma, and to determine the relative contribution of each factor to the total diagnostic delay interval (from symptom onset to confirmed specialist diagnosis)."),
// ── PRIMARY OBJECTIVE ───────────────────────────────────────────────────
sectionHead("Primary Objective"),
para("To determine the independent predictors of delayed diagnosis (defined as a time interval of more than 3 months from initial symptom recognition to confirmed glaucoma diagnosis by a pediatric ophthalmologist) among children presenting with childhood glaucoma."),
spacer(),
// ── PRIMARY HYPOTHESIS ──────────────────────────────────────────────────
sectionHead("Primary Hypothesis"),
para("Delayed diagnosis of childhood glaucoma is significantly and independently associated with a combination of low caregiver awareness of glaucoma symptoms, absence of structured neonatal or infant ocular screening, delay in specialist referral from primary healthcare providers, and low socioeconomic status; and that these factors collectively account for the majority of preventable diagnostic delay."),
spacer(),
// ── SECONDARY AIMS ──────────────────────────────────────────────────────
sectionHead("Secondary Aims"),
subHead("Secondary Aim 1 - Epidemiological Characterization"),
para("To describe the demographic and clinical characteristics of children presenting with a delayed diagnosis of glaucoma, including age at diagnosis, sex, laterality, type of glaucoma (primary vs. secondary), clinical signs at presentation, and degree of optic nerve damage at first specialist visit."),
subHead("Secondary Aim 2 - Caregiver Awareness Assessment"),
para("To assess the level of caregiver knowledge and awareness regarding the early signs and symptoms of childhood glaucoma, and to evaluate how this awareness (or lack thereof) influences the time from symptom onset to first medical consultation."),
subHead("Secondary Aim 3 - Healthcare System Factors"),
para("To evaluate the role of the primary healthcare system in contributing to diagnostic delay, including the frequency of misdiagnosis at first contact, the number of healthcare visits prior to specialist referral, and the referral pathway taken by children ultimately diagnosed with childhood glaucoma."),
subHead("Secondary Aim 4 - Socioeconomic and Geographic Determinants"),
para("To examine the association between socioeconomic status (household income, parental education level, insurance coverage) and geographic location (urban vs. rural residence) with the duration of the diagnostic delay interval."),
subHead("Secondary Aim 5 - Disease-Related Factors"),
para("To compare the diagnostic delay interval across different subtypes of childhood glaucoma (primary congenital glaucoma, juvenile open-angle glaucoma, and secondary glaucomas), and to determine whether disease subtype is an independent predictor of delay."),
subHead("Secondary Aim 6 - Visual Outcomes"),
para("To correlate the duration of diagnostic delay with clinical outcomes at presentation, including best-corrected visual acuity, intraocular pressure at first visit, corneal diameter, cup-to-disc ratio, and the presence of amblyopia, as a measure of the clinical consequences of delayed diagnosis."),
subHead("Secondary Aim 7 - Intervention and Recommendations"),
para("To generate evidence-based recommendations for reducing diagnostic delay, including proposals for targeted caregiver education campaigns, improvements in neonatal and pediatric ocular screening protocols, and enhanced training for primary healthcare providers in recognizing early-onset childhood glaucoma."),
spacer(),
// ── SECONDARY OBJECTIVES ────────────────────────────────────────────────
sectionHead("Secondary Objectives"),
numItem("To determine the mean and median diagnostic delay interval (months) in the study population and compare it across glaucoma subtypes, age at presentation, and geographic setting."),
numItem("To identify the most frequent initial misdiagnoses made at the primary care or general pediatric level (e.g., nasolacrimal duct obstruction, conjunctivitis, corneal dystrophy) that contributed to referral delay."),
numItem("To assess parental/caregiver awareness using a validated structured questionnaire covering knowledge of childhood eye disease, glaucoma-specific symptoms, and health-seeking behavior."),
numItem("To quantify the number of healthcare provider contacts (general practitioner, pediatrician, emergency department) made prior to the first ophthalmology referral."),
numItem("To evaluate the association between consanguinity and the presence of affected siblings or family members on the diagnostic delay interval."),
numItem("To assess whether children referred through structured screening programs (e.g., school vision screening, neonatal examination) have a significantly shorter diagnostic interval than those presenting symptomatically."),
numItem("To determine the proportion of children who had previously undetected warning signs (corneal enlargement, buphthalmos, persistent tearing) documented in primary care records prior to specialist referral."),
numItem("To construct a multivariate logistic regression model identifying the strongest independent predictors of delayed diagnosis (>3 months) in the study cohort."),
numItem("To compare visual outcomes (visual acuity, optic nerve status, IOP control) at one year following diagnosis between the delayed diagnosis group and the timely diagnosis group."),
numItem("To formulate a locally applicable, evidence-based screening checklist for use by primary care providers and maternal-child health workers to facilitate early identification and timely referral of children with suspected glaucoma."),
spacer(),
// ── SMART OBJECTIVES TABLE ───────────────────────────────────────────────
sectionHead("SMART Summary of Objectives"),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
// Header row
new TableRow({
tableHeader: true,
children: [
new TableCell({
width: { size: 5, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.CLEAR, color: "2E4057", fill: "2E4057" },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "#", bold: true, color: "FFFFFF", font: "Times New Roman", size: 22 })] })]
}),
new TableCell({
width: { size: 35, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.CLEAR, color: "2E4057", fill: "2E4057" },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "Objective", bold: true, color: "FFFFFF", font: "Times New Roman", size: 22 })] })]
}),
new TableCell({
width: { size: 20, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.CLEAR, color: "2E4057", fill: "2E4057" },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "Outcome Measure", bold: true, color: "FFFFFF", font: "Times New Roman", size: 22 })] })]
}),
new TableCell({
width: { size: 20, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.CLEAR, color: "2E4057", fill: "2E4057" },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "Method", bold: true, color: "FFFFFF", font: "Times New Roman", size: 22 })] })]
}),
new TableCell({
width: { size: 20, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.CLEAR, color: "2E4057", fill: "2E4057" },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "Statistical Analysis", bold: true, color: "FFFFFF", font: "Times New Roman", size: 22 })] })]
}),
]
}),
// Data rows
...[
["1 (Primary)", "Identify independent predictors of delayed diagnosis (>3 months)", "Time to diagnosis (months)", "Structured interviews + chart review", "Multivariate logistic regression"],
["2", "Characterize demographics and clinical features", "Age, sex, laterality, glaucoma type", "Clinical record extraction", "Descriptive statistics"],
["3", "Assess caregiver awareness", "Awareness questionnaire score", "Validated questionnaire", "Chi-square, Mann-Whitney U"],
["4", "Quantify primary care misdiagnosis", "Number of prior diagnoses", "Chart review", "Frequency analysis"],
["5", "Evaluate socioeconomic factors", "Household income, education, residence", "Caregiver questionnaire", "Binary logistic regression"],
["6", "Compare delay across glaucoma subtypes", "Delay interval by subtype", "Chart review + clinical exam", "ANOVA / Kruskal-Wallis"],
["7", "Correlate delay with visual outcomes", "BCVA, CDR, IOP at diagnosis", "Clinical examination", "Pearson/Spearman correlation"],
["8", "Assess screening referral vs symptomatic", "Proportion via screening vs symptoms", "Referral pathway records", "Chi-square / Fisher exact"],
].map(([no, obj, outcome, method, stats]) =>
new TableRow({
children: [
new TableCell({ children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: no, font: "Times New Roman", size: 20 })] })] }),
new TableCell({ children: [new Paragraph({ alignment: AlignmentType.JUSTIFIED, children: [new TextRun({ text: obj, font: "Times New Roman", size: 20 })] })] }),
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: outcome, font: "Times New Roman", size: 20 })] })] }),
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: method, font: "Times New Roman", size: 20 })] })] }),
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: stats, font: "Times New Roman", size: 20 })] })] }),
]
})
)
]
}),
spacer(),
spacer(),
// ── EXPECTED OUTCOMES ────────────────────────────────────────────────────
sectionHead("Expected Outcomes and Significance"),
para("The study is expected to produce the following outcomes:"),
bulletItem("A quantitative estimate of the diagnostic delay interval in childhood glaucoma within the study population, stratified by glaucoma type and patient demographics."),
bulletItem("Identification of the top three to five modifiable determinants of delayed diagnosis, ranked by their independent contribution to the diagnostic interval."),
bulletItem("A caregiver awareness profile highlighting specific knowledge gaps that can be addressed through targeted public health campaigns."),
bulletItem("Evidence of the clinical and visual consequences of diagnostic delay, reinforcing the urgency of early detection programs."),
bulletItem("A practical, evidence-based early detection checklist for primary care providers and maternal-child health workers."),
bulletItem("A contribution to the international literature on childhood glaucoma, with particular relevance to populations with high consanguinity rates and limited access to pediatric ophthalmology services."),
spacer(),
// ── NULL HYPOTHESIS ─────────────────────────────────────────────────────
sectionHead("Null and Alternative Hypotheses"),
subHead("Null Hypothesis (H\u2080)"),
para("There is no statistically significant association between caregiver awareness, healthcare access, socioeconomic status, referral pathway, or disease subtype and the duration of the diagnostic delay interval in children with childhood glaucoma."),
subHead("Alternative Hypothesis (H\u2081)"),
para("One or more of the following factors - low caregiver awareness, poor healthcare access, low socioeconomic status, delayed specialist referral, and secondary (vs. primary) glaucoma subtype - are independently and significantly associated with a prolonged diagnostic delay interval in children with childhood glaucoma."),
]
}]
});
Packer.toBuffer(doc).then(buffer => {
const outPath = '/home/daytona/workspace/childhood-glaucoma/Aims_Objectives_Childhood_Glaucoma.docx';
fs.writeFileSync(outPath, buffer);
console.log('Document created:', outPath);
}).catch(err => {
console.error('Error:', err);
process.exit(1);
});
cd /home/daytona/workspace/childhood-glaucoma && node create_aims.js
python3 -c " import zipfile z = zipfile.ZipFile('/home/daytona/workspace/childhood-glaucoma/Aims_Objectives_Childhood_Glaucoma.docx') print('Valid DOCX. Files:', z.namelist()[:8]) import os size = os.path.getsize('/home/daytona/workspace/childhood-glaucoma/Aims_Objectives_Childhood_Glaucoma.docx') print(f'File size: {size/1024:.1f} KB') "
Aims Objectives Childhood Glaucoma
Word Document · DOCX
| Component | Content |
|---|---|
| Preamble | One-paragraph scientific rationale linking the introduction to the aims |
| Primary Aim | Broad, overarching goal of the study |
| Primary Objective | Specific, measurable operationalization of the primary aim (with the 3-month threshold defined) |
| Primary Hypothesis | Composite multifactorial hypothesis |
| Secondary Aims (7) | Epidemiology, caregiver awareness, healthcare system factors, socioeconomic determinants, disease subtype, visual outcomes, recommendations |
| Secondary Objectives (10) | Numbered, specific, measurable objectives covering all secondary aims |
| SMART Summary Table | Formatted table mapping each objective to its outcome measure, method, and statistical test |
| Expected Outcomes | Bulleted list of anticipated study findings |
| Null & Alternative Hypotheses | Formal H₀ and H₁ statements for statistical testing |
give me sample selection with formula and detailed explanation
| Symbol | Meaning | Value Used |
|---|---|---|
| n | Required sample size | - |
| Z | Z-score for desired confidence level | 1.96 (for 95% CI) |
| P | Expected prevalence of delayed diagnosis | 0.60 (60%) |
| d | Acceptable margin of error | 0.07 (7%) |
| 1-P | Complement of prevalence | 0.40 |
Round up to n = 210 patients
| Symbol | Meaning | Value Used |
|---|---|---|
| Z α/2 | Z-score, two-tailed, α = 0.05 | 1.96 |
| Z β | Z-score for power = 80% | 0.842 |
| P₁ | Prevalence of delay in low-awareness group | 0.75 |
| P₂ | Prevalence of delay in high-awareness group | 0.50 |
| P₁ - P₂ | Minimum detectable difference | 0.25 |
| Parameter | Value |
|---|---|
| Number of predictor variables (k) | 10 |
| Expected proportion with delayed diagnosis (P) | 0.60 |
| Formula Used | n Required |
|---|---|
| Prevalence estimation (Formula 1) | 210 |
| Two-group comparison (Formula 2) | 122 |
| Logistic regression - 10 EPV rule (Formula 3) | 167 |
| Final adopted sample size | 210 |
The largest estimate (n = 210) is adopted to satisfy all analytical requirements simultaneously. This provides >80% power for all planned analyses.
| Term | Definition |
|---|---|
| Symptom onset date | Date caregivers first noticed any symptom (tearing, photophobia, large eye, corneal clouding) |
| Diagnosis date | Date of confirmed diagnosis by a pediatric ophthalmologist |
| Diagnostic interval | Diagnosis date minus symptom onset date (days/months) |
| Delayed diagnosis | Diagnostic interval > 3 months |
| Timely diagnosis | Diagnostic interval ≤ 3 months |
| Domain | Variable | Type |
|---|---|---|
| Caregiver | Awareness score | Continuous/ordinal |
| Caregiver | Education level | Ordinal |
| Caregiver | First symptom noticed | Categorical |
| Socioeconomic | Household income | Ordinal |
| Socioeconomic | Insurance coverage | Binary |
| Geographic | Urban vs. rural | Binary |
| Healthcare | Number of visits before referral | Continuous |
| Healthcare | Initial misdiagnosis | Binary |
| Healthcare | Referral source | Categorical |
| Disease | Glaucoma subtype | Categorical |
| Disease | Age at diagnosis | Continuous |
| Disease | Laterality | Binary |
| Genetic | Consanguinity | Binary |
| Genetic | Positive family history | Binary |
Study type: Cross-sectional analytical
Sampling method: Consecutive sampling
Setting: Pediatric ophthalmology clinic / tertiary center
Sample size (final): n = 210
Confidence level: 95% (α = 0.05)
Power: 80% (β = 0.20)
Expected P(delay): 60%
Margin of error: ±7%
Non-response buffer: +10%
Primary outcome: Delayed diagnosis (>3 months)
Statistical method: Multivariate logistic regression
Create a Word document with sample size & selection section
~/childhood-glaucoma/create_sample.js
const {
Document, Packer, Paragraph, TextRun, AlignmentType,
HeadingLevel, LevelFormat, UnderlineType,
Table, TableRow, TableCell, WidthType, VerticalAlign, ShadingType,
BorderStyle
} = require('docx');
const fs = require('fs');
// ── Numbering ──────────────────────────────────────────────────────────────
const numberingConfig = [
{
reference: "decimal-list",
levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } }, run: { font: "Times New Roman", size: 24 } } }]
},
{
reference: "bullet-list",
levels: [{ level: 0, format: LevelFormat.BULLET, text: "\u2022", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } }, run: { font: "Times New Roman", size: 24 } } }]
}
];
// ── Helpers ────────────────────────────────────────────────────────────────
const para = (text, opts = {}) => new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [new TextRun({ text, font: "Times New Roman", size: 24, ...opts })]
});
const spacer = () => new Paragraph({ children: [new TextRun("")], spacing: { before: 0, after: 120 } });
const h1 = (text) => new Paragraph({
heading: HeadingLevel.HEADING_1,
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 240 },
children: [new TextRun({ text, bold: true, size: 28, font: "Times New Roman", color: "000000" })]
});
const h2 = (text) => new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 360, after: 180 },
children: [new TextRun({ text, bold: true, size: 26, font: "Times New Roman", color: "1F3864" })]
});
const h3 = (text) => new Paragraph({
spacing: { before: 240, after: 120 },
children: [new TextRun({ text, bold: true, underline: { type: UnderlineType.SINGLE }, font: "Times New Roman", size: 24, color: "000000" })]
});
const numItem = (text) => new Paragraph({
numbering: { reference: "decimal-list", level: 0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 340, before: 60, after: 100 },
children: [new TextRun({ text, font: "Times New Roman", size: 24 })]
});
const bulletItem = (text) => new Paragraph({
numbering: { reference: "bullet-list", level: 0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 320, before: 40, after: 80 },
children: [new TextRun({ text, font: "Times New Roman", size: 24 })]
});
// ── Table helpers ──────────────────────────────────────────────────────────
const HEADER_COLOR = "1F3864";
const ALT_COLOR = "D9E1F2";
const hdrCell = (text, widthPct) => new TableCell({
width: { size: widthPct, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.CLEAR, fill: HEADER_COLOR },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text, bold: true, color: "FFFFFF", font: "Times New Roman", size: 20 })]
})]
});
const cell = (text, shade = false, center = false) => new TableCell({
shading: shade ? { type: ShadingType.CLEAR, fill: ALT_COLOR } : undefined,
children: [new Paragraph({
alignment: center ? AlignmentType.CENTER : AlignmentType.LEFT,
children: [new TextRun({ text, font: "Times New Roman", size: 20 })]
})]
});
const dataRow = (cells, shade = false) => new TableRow({
children: cells.map(([t, c]) => cell(t, shade, c))
});
// ── Formula paragraph (centred, bold, box-styled) ──────────────────────────
const formula = (text) => new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 160, after: 160 },
border: {
top: { style: BorderStyle.SINGLE, size: 4, color: "1F3864" },
bottom: { style: BorderStyle.SINGLE, size: 4, color: "1F3864" },
left: { style: BorderStyle.SINGLE, size: 4, color: "1F3864" },
right: { style: BorderStyle.SINGLE, size: 4, color: "1F3864" },
},
children: [new TextRun({ text, bold: true, font: "Courier New", size: 24, color: "1F3864" })]
});
const calcLine = (text) => new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { line: 320, before: 40, after: 40 },
children: [new TextRun({ text, font: "Courier New", size: 22 })]
});
const resultLine = (text) => new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { line: 320, before: 80, after: 120 },
children: [new TextRun({ text, bold: true, font: "Courier New", size: 24, color: "C00000" })]
});
// ═══════════════════════════════════════════════════════════════════════════
// DOCUMENT
// ═══════════════════════════════════════════════════════════════════════════
const doc = new Document({
numbering: { config: numberingConfig },
styles: {
default: { document: { run: { font: "Times New Roman", size: 24 } } },
paragraphStyles: [
{ id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 28, bold: true, font: "Times New Roman", color: "000000" },
paragraph: { spacing: { before: 360, after: 240 }, outlineLevel: 0, alignment: AlignmentType.CENTER } },
{ id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 26, bold: true, font: "Times New Roman", color: "1F3864" },
paragraph: { spacing: { before: 300, after: 180 }, outlineLevel: 1 } }
]
},
sections: [{
properties: {
page: {
size: { width: 11906, height: 16838 },
margin: { top: 1440, right: 1440, bottom: 1440, left: 1800 }
}
},
children: [
// ── Title ──────────────────────────────────────────────────────────
h1("DETERMINANTS OF DELAYED DIAGNOSIS IN CHILDHOOD GLAUCOMA"),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 480 },
children: [new TextRun({ text: "Sample Size Calculation and Sample Selection", bold: true, size: 26, font: "Times New Roman" })]
}),
// ════════════════════════════════════════════════════════════════════
// SECTION 1 - STUDY DESIGN CONTEXT
// ════════════════════════════════════════════════════════════════════
h2("1. Study Design Context"),
para("This is a cross-sectional analytical study conducted at a tertiary pediatric ophthalmology center. The study aims to identify and quantify the determinants of delayed diagnosis in children presenting with childhood glaucoma. The sample size calculation must simultaneously satisfy three requirements:"),
bulletItem("Precise estimation of the prevalence of delayed diagnosis in the study population (descriptive objective)."),
bulletItem("Adequate statistical power to detect significant associations between determinants and diagnostic delay (analytical objective)."),
bulletItem("Sufficient events per variable (EPV) to support multivariate logistic regression modeling without model overfitting (modeling objective)."),
spacer(),
para("The primary outcome variable is delayed diagnosis, defined as a time interval of more than three months from the date of first symptom recognition by the caregiver or a healthcare provider to the date of confirmed glaucoma diagnosis by a pediatric ophthalmologist. This is treated as a binary outcome (delayed: yes / no) for logistic regression, and as a continuous variable (months) for correlation analyses."),
// ════════════════════════════════════════════════════════════════════
// SECTION 2 - PARAMETERS & ASSUMPTIONS
// ════════════════════════════════════════════════════════════════════
h2("2. Parameters and Assumptions"),
para("All input parameters were selected based on published literature on childhood glaucoma epidemiology and standard statistical conventions for cross-sectional analytical studies. The key parameters are summarized in Table 1."),
spacer(),
// Table 1 - Parameters
new Paragraph({ spacing: { before: 0, after: 120 }, children: [new TextRun({ text: "Table 1. Input Parameters for Sample Size Calculation", bold: true, font: "Times New Roman", size: 22 })] }),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ tableHeader: true, children: [
hdrCell("Parameter", 30), hdrCell("Symbol", 12), hdrCell("Value Used", 20), hdrCell("Justification", 38)
]}),
dataRow([["Expected prevalence of delayed diagnosis",""],["P","c"],["0.60 (60%)","c"],["International studies report 50-70% delay in PCG in developing-country settings (Papadopoulos et al., 2020; Shen et al., 2023)"]]),
dataRow([["Margin of error (precision)",""],["d","c"],["0.07 (±7%)","c"],["Acceptable precision for a hospital-based prevalence estimate; yields a 95% CI of approximately 53-67%"]], true),
dataRow([["Confidence level",""],["1-α","c"],["95%","c"],["Standard scientific convention"]]),
dataRow([["Z-score (95% CI, two-tailed)",""],["Z α/2","c"],["1.96","c"],["Corresponds to α = 0.05"]], true),
dataRow([["Statistical power",""],["1-β","c"],["80%","c"],["Conventional minimum power; 20% type II error acceptable"]]),
dataRow([["Z-score for 80% power",""],["Zβ","c"],["0.842","c"],["Standard value for β = 0.20"]], true),
dataRow([["Prevalence of delay - low awareness group",""],["P₁","c"],["0.75","c"],["Expected 75% delay rate among caregivers with poor knowledge of glaucoma symptoms"]]),
dataRow([["Prevalence of delay - high awareness group",""],["P₂","c"],["0.50","c"],["Expected 50% delay rate among caregivers with adequate knowledge"]], true),
dataRow([["Number of predictor variables in regression",""],["k","c"],["10","c"],["Based on study variable list: awareness, SES, education, urban/rural, consanguinity, misdiagnosis, referral type, disease subtype, laterality, age"]]),
dataRow([["Non-response / dropout allowance",""],["—","c"],["10%","c"],["Standard buffer to account for incomplete records or caregiver refusal"]], true),
]
}),
spacer(), spacer(),
// ════════════════════════════════════════════════════════════════════
// SECTION 3 - FORMULA 1
// ════════════════════════════════════════════════════════════════════
h2("3. Formula 1 - Prevalence Estimation (Descriptive Component)"),
h3("Formula (Cochran, 1977)"),
para("For estimating the prevalence of a binary outcome with a specified margin of error, the Cochran formula for a single proportion is used:"),
spacer(),
formula("n = [ Z² x P x (1 - P) ] / d²"),
spacer(),
para("Where:"),
bulletItem("n = required sample size"),
bulletItem("Z = 1.96 (Z-score for 95% confidence, two-tailed)"),
bulletItem("P = 0.60 (expected prevalence of delayed diagnosis)"),
bulletItem("1-P = 0.40 (complement)"),
bulletItem("d = 0.07 (acceptable margin of error = ±7%)"),
spacer(),
h3("Step-by-Step Calculation"),
calcLine("Step 1: Z² = (1.96)² = 3.8416"),
calcLine("Step 2: P x (1-P) = 0.60 x 0.40 = 0.2400"),
calcLine("Step 3: Z² x P x (1-P) = 3.8416 x 0.2400 = 0.9220"),
calcLine("Step 4: d² = (0.07)² = 0.0049"),
calcLine("Step 5: n = 0.9220 / 0.0049 = 188.1"),
resultLine("n (rounded up) = 188"),
spacer(),
h3("Adjustment for Non-Response (10%)"),
calcLine("n_adjusted = 188 x 1.10 = 206.8"),
resultLine("n_adjusted (rounded up) = 207 --> Adopted as 210"),
spacer(),
para("Rounding to the nearest ten for practical convenience, the sample size required from Formula 1 is n = 210 participants."),
// ════════════════════════════════════════════════════════════════════
// SECTION 4 - FORMULA 2
// ════════════════════════════════════════════════════════════════════
h2("4. Formula 2 - Two-Group Comparison (Analytical Component)"),
h3("Formula (Kelsey et al., 1996)"),
para("To detect a statistically significant difference in the proportion of delayed diagnosis between two comparison groups (e.g., low vs. high caregiver awareness), the two-independent-proportions formula is used:"),
spacer(),
formula("n = (Z_alpha + Z_beta)² x [P1(1-P1) + P2(1-P2)] / (P1 - P2)²"),
spacer(),
para("Where:"),
bulletItem("P1 = 0.75 (proportion of delayed diagnosis in the low-awareness group)"),
bulletItem("P2 = 0.50 (proportion of delayed diagnosis in the high-awareness group)"),
bulletItem("Z alpha = 1.96 (two-tailed, α = 0.05)"),
bulletItem("Z beta = 0.842 (power = 80%)"),
spacer(),
h3("Step-by-Step Calculation"),
calcLine("Step 1: (Z_alpha + Z_beta) = 1.96 + 0.842 = 2.802"),
calcLine("Step 2: (2.802)² = 7.851"),
calcLine("Step 3: P1(1-P1) = 0.75 x 0.25 = 0.1875"),
calcLine("Step 4: P2(1-P2) = 0.50 x 0.50 = 0.2500"),
calcLine("Step 5: [P1(1-P1) + P2(1-P2)] = 0.1875 + 0.2500 = 0.4375"),
calcLine("Step 6: Numerator = 7.851 x 0.4375 = 3.435"),
calcLine("Step 7: (P1 - P2)² = (0.25)² = 0.0625"),
calcLine("Step 8: n per group = 3.435 / 0.0625 = 54.96"),
resultLine("n per group = 55 --> Total (2 groups) = 110"),
spacer(),
h3("Adjustment for Non-Response (10%)"),
calcLine("n_adjusted = 110 x 1.10 = 121"),
resultLine("n_adjusted = 122 (61 per group)"),
// ════════════════════════════════════════════════════════════════════
// SECTION 5 - FORMULA 3
// ════════════════════════════════════════════════════════════════════
h2("5. Formula 3 - Multivariate Logistic Regression (EPV Rule)"),
h3("Formula (Peduzzi et al., 1996 - Events Per Variable Rule)"),
para("For logistic regression, the minimum sample size must ensure at least 10 events (outcome occurrences) per predictor variable included in the model. This prevents model overfitting and ensures reliable coefficient estimation. The formula is:"),
spacer(),
formula("n_min = (10 x k) / P_outcome"),
spacer(),
para("Where:"),
bulletItem("k = 10 (number of independent predictor variables in the final logistic model)"),
bulletItem("P_outcome = 0.60 (expected proportion with delayed diagnosis)"),
spacer(),
h3("Calculation"),
calcLine("n_min = (10 x 10) / 0.60"),
calcLine("n_min = 100 / 0.60 = 166.7"),
resultLine("n_min = 167"),
spacer(),
para("This ensures that with an expected 60% prevalence of the outcome, a sample of 167 would yield approximately 100 delayed-diagnosis cases, giving 10 events per variable for 10 predictors - meeting the EPV criterion for stable logistic regression."),
// ════════════════════════════════════════════════════════════════════
// SECTION 6 - FINAL DECISION
// ════════════════════════════════════════════════════════════════════
h2("6. Final Sample Size Decision"),
para("The three formulas yield different minimum sample size estimates. The largest value is adopted to ensure all planned analytical objectives are simultaneously satisfied with adequate power and precision."),
spacer(),
new Paragraph({ spacing: { before: 0, after: 120 }, children: [new TextRun({ text: "Table 2. Summary of Sample Size Estimates from All Three Formulas", bold: true, font: "Times New Roman", size: 22 })] }),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ tableHeader: true, children: [
hdrCell("Formula", 10), hdrCell("Purpose", 30), hdrCell("n (raw)", 15), hdrCell("n (+10% buffer)", 20), hdrCell("Final n", 15), hdrCell("Satisfies", 10)
]}),
dataRow([["1","c"],["Prevalence estimation (Cochran)",""],["188","c"],["207","c"],["210","c"],["Descriptive",""]]),
dataRow([["2","c"],["Two-group comparison (Kelsey)",""],["110","c"],["122","c"],["122","c"],["Analytical",""]], true),
dataRow([["3","c"],["Logistic regression EPV (Peduzzi)",""],["167","c"],["184","c"],["184","c"],["Modeling",""]]),
new TableRow({
children: [
new TableCell({ shading: { type: ShadingType.CLEAR, fill: "1F3864" }, children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "FINAL", bold: true, color: "FFFFFF", font: "Times New Roman", size: 22 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: "1F3864" }, children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "Adopted Sample Size (largest estimate)", bold: true, color: "FFFFFF", font: "Times New Roman", size: 22 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: "1F3864" }, children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "—", bold: true, color: "FFFFFF", font: "Times New Roman", size: 22 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: "1F3864" }, children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "—", bold: true, color: "FFFFFF", font: "Times New Roman", size: 22 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: "C00000" }, children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "n = 210", bold: true, color: "FFFFFF", font: "Times New Roman", size: 24 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: "1F3864" }, children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "All three", bold: true, color: "FFFFFF", font: "Times New Roman", size: 22 })] })] }),
]
})
]
}),
spacer(), spacer(),
para("A final sample of n = 210 is adopted. This figure simultaneously achieves:"),
bulletItem("Estimation of the prevalence of delayed diagnosis with a margin of error of ±7% at 95% confidence."),
bulletItem("Greater than 80% power to detect a 25 percentage-point difference in delay rates between comparison groups (α = 0.05, two-tailed)."),
bulletItem("A minimum of 10 events per variable for a 10-predictor logistic regression model (100 expected events / 10 variables = 10 EPV)."),
// ════════════════════════════════════════════════════════════════════
// SECTION 7 - SAMPLING STRATEGY
// ════════════════════════════════════════════════════════════════════
h2("7. Sampling Strategy"),
h3("Method: Consecutive (Non-probability) Sampling"),
para("All children fulfilling the eligibility criteria who present to the participating pediatric ophthalmology clinic during the study enrollment period will be recruited consecutively until the target sample size of 210 is achieved. This approach is appropriate for the following reasons:"),
bulletItem("Childhood glaucoma is a rare condition (estimated incidence 1 per 10,000 live births), making probability sampling from a population frame logistically unfeasible in a hospital-based study."),
bulletItem("Consecutive enrolment within a clinical setting minimizes selection bias by avoiding cherry-picking and ensuring all eligible patients have an equal opportunity to participate."),
bulletItem("This method is widely used and accepted in pediatric ophthalmology research, as evidenced by major international multicenter studies in the field (Papadopoulos et al., 2020)."),
spacer(),
para("Recruitment will be performed at the outpatient pediatric ophthalmology clinic, the glaucoma surgical waiting list, and the inpatient pediatric ward, to capture the widest spectrum of disease presentations and referral pathways."),
// ════════════════════════════════════════════════════════════════════
// SECTION 8 - ELIGIBILITY CRITERIA
// ════════════════════════════════════════════════════════════════════
h2("8. Eligibility Criteria"),
h3("8.1 Inclusion Criteria"),
numItem("Age at diagnosis: 0 to 16 years (inclusive) at the time of confirmed glaucoma diagnosis."),
numItem("Confirmed childhood glaucoma diagnosis by a pediatric ophthalmologist, meeting the Childhood Glaucoma Research Network (CGRN) diagnostic criteria: elevated intraocular pressure (IOP) with at least one of the following - optic disc cupping, corneal changes (buphthalmos, Haab striae, corneal edema), visual field defect, or axial length increase."),
numItem("Any glaucoma subtype is eligible: primary congenital glaucoma (PCG), juvenile open-angle glaucoma (JOAG), or any subtype of secondary childhood glaucoma."),
numItem("A parent or legal guardian (caregiver) is available, capable of providing informed consent, and willing to participate in a structured interview."),
numItem("A documentable date of first symptom recognition - either from caregiver recall or from primary care medical records - allowing calculation of the diagnostic interval."),
spacer(),
h3("8.2 Exclusion Criteria"),
numItem("Glaucoma diagnosed as an incidental finding during unrelated surgery or examination under general anesthesia, with no preceding recognized symptom period - as the diagnostic delay interval cannot be meaningfully calculated."),
numItem("Incomplete or unavailable medical records that preclude reliable determination of the diagnostic interval."),
numItem("Children presenting for the first time directly to the recruiting center with no prior contact with any healthcare provider, making assessment of the referral pathway impossible."),
numItem("Caregiver refusal to participate or inability to provide informed consent or assent."),
numItem("Previously enrolled patients presenting for follow-up (to avoid duplicate enrolment)."),
// ════════════════════════════════════════════════════════════════════
// SECTION 9 - OUTCOME DEFINITIONS
// ════════════════════════════════════════════════════════════════════
h2("9. Operational Definitions of the Outcome Variable"),
spacer(),
new Paragraph({ spacing: { before: 0, after: 120 }, children: [new TextRun({ text: "Table 3. Operational Definitions", bold: true, font: "Times New Roman", size: 22 })] }),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ tableHeader: true, children: [hdrCell("Term", 25), hdrCell("Operational Definition", 75)] }),
dataRow([["Symptom onset date",""],["The earliest date on which the caregiver first noticed any sign attributable to glaucoma (tearing, photophobia, blepharospasm, cloudy or large eyes, asymmetric eye size), confirmed by structured interview and corroborated with healthcare records where available.",""]]),
dataRow([["Date of diagnosis",""],["The date on which a pediatric ophthalmologist first confirmed the diagnosis of childhood glaucoma based on examination findings meeting CGRN criteria.",""]], true),
dataRow([["Diagnostic interval",""],["Diagnosis date minus symptom onset date, expressed in months (rounded to the nearest 0.5 month). Calculated from structured interview data and medical record review.",""]]),
dataRow([["Delayed diagnosis",""],["A diagnostic interval of MORE than 3 months (> 3 months). Coded as 1 (yes) in logistic regression analysis.",""]], true),
dataRow([["Timely diagnosis",""],["A diagnostic interval of 3 months or less (<= 3 months). Coded as 0 (no) in logistic regression analysis.",""]]),
]
}),
spacer(), spacer(),
h3("Rationale for the 3-Month Threshold"),
para("The 3-month cut-off is justified on the following grounds:"),
bulletItem("Early surgical intervention within the first months of life yields the highest rates of IOP control and best long-term visual outcomes in PCG (Kanski's Clinical Ophthalmology, 10th ed.)."),
bulletItem("Optic nerve damage in infants progresses rapidly with sustained IOP elevation; irreversible structural changes can occur within weeks to months."),
bulletItem("The 3-month interval is consistent with the threshold used in comparable published studies on diagnostic delay in pediatric ophthalmological conditions, ensuring comparability of findings."),
// ════════════════════════════════════════════════════════════════════
// SECTION 10 - STUDY VARIABLES
// ════════════════════════════════════════════════════════════════════
h2("10. Study Variables"),
spacer(),
new Paragraph({ spacing: { before: 0, after: 120 }, children: [new TextRun({ text: "Table 4. Independent Variables (Determinants of Delayed Diagnosis)", bold: true, font: "Times New Roman", size: 22 })] }),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ tableHeader: true, children: [hdrCell("Domain", 20), hdrCell("Variable", 30), hdrCell("Type", 15), hdrCell("Collection Method", 35)] }),
dataRow([["Caregiver",""],["Awareness score",""],["Continuous/ordinal",""],["Validated questionnaire (10-item knowledge scale)",""]]),
dataRow([["Caregiver",""],["Education level",""],["Ordinal",""],["Questionnaire (none / primary / secondary / tertiary)",""]], true),
dataRow([["Caregiver",""],["First symptom recognized",""],["Categorical",""],["Structured interview",""]]),
dataRow([["Socioeconomic",""],["Household income (quintile)",""],["Ordinal",""],["Questionnaire"]], true),
dataRow([["Socioeconomic",""],["Health insurance coverage",""],["Binary (yes/no)",""],["Questionnaire / records",""]]),
dataRow([["Geographic",""],["Urban vs. rural residence",""],["Binary",""],["Address postcode / governorate classification",""]], true),
dataRow([["Healthcare system",""],["Number of healthcare visits before referral",""],["Continuous",""],["Medical records review",""]]),
dataRow([["Healthcare system",""],["Initial misdiagnosis at primary care",""],["Binary (yes/no)",""],["Medical records review",""]], true),
dataRow([["Healthcare system",""],["Referral source",""],["Categorical",""],["GP / pediatrician / ER / self-referral / screening",""]]),
dataRow([["Disease",""],["Glaucoma subtype",""],["Categorical",""],["Clinical diagnosis: PCG / JOAG / secondary",""]], true),
dataRow([["Disease",""],["Age at diagnosis (months)",""],["Continuous",""],["Medical records",""]]),
dataRow([["Disease",""],["Laterality",""],["Binary (unilateral / bilateral)",""],["Clinical examination",""]], true),
dataRow([["Genetic",""],["Parental consanguinity",""],["Binary (yes/no)",""],["Questionnaire",""]]),
dataRow([["Genetic",""],["Positive family history",""],["Binary (yes/no)",""],["Questionnaire",""]], true),
]
}),
// ════════════════════════════════════════════════════════════════════
// SECTION 11 - SUMMARY BOX
// ════════════════════════════════════════════════════════════════════
h2("11. Summary of Sample Size and Study Design"),
spacer(),
new Table({
width: { size: 80, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ tableHeader: true, children: [hdrCell("Parameter", 45), hdrCell("Value", 55)] }),
dataRow([["Study type",""],["Cross-sectional analytical study",""]]),
dataRow([["Sampling method",""],["Consecutive (non-probability) sampling",""]], true),
dataRow([["Study setting",""],["Tertiary pediatric ophthalmology clinic",""]]),
dataRow([["Final adopted sample size",""],["n = 210 children with confirmed childhood glaucoma",""]], true),
dataRow([["Confidence level",""],["95% (alpha = 0.05)",""]]),
dataRow([["Statistical power",""],["80% (beta = 0.20)",""]], true),
dataRow([["Expected prevalence of delay",""],["60%",""]]),
dataRow([["Margin of error",""],["± 7%",""]], true),
dataRow([["Non-response buffer",""],["10%",""]]),
dataRow([["Primary outcome",""],["Delayed diagnosis (> 3 months): binary",""]], true),
dataRow([["Continuous outcome",""],["Diagnostic interval in months: continuous",""]]),
dataRow([["Primary statistical method",""],["Multivariate binary logistic regression",""]], true),
dataRow([["Number of predictors in model",""],["10",""]]),
dataRow([["EPV (events per variable)",""],["~10 (100 expected events / 10 variables)",""]], true),
]
}),
spacer(), spacer(),
// ════════════════════════════════════════════════════════════════════
// REFERENCES
// ════════════════════════════════════════════════════════════════════
h2("References"),
...[
"1. Cochran WG. Sampling Techniques. 3rd ed. New York: John Wiley & Sons; 1977.",
"2. Kelsey JL, Whittemore AS, Evans AS, Thompson WD. Methods in Observational Epidemiology. 2nd ed. Oxford: Oxford University Press; 1996.",
"3. Peduzzi P, Concato J, Kemper E, Holford TR, Feinstein AR. A simulation study of the number of events per variable in logistic regression analysis. J Clin Epidemiol. 1996;49(12):1373-1379.",
"4. Papadopoulos M, Vanner EA, Grajewski AL. International Study of Childhood Glaucoma. Ophthalmol Glaucoma. 2020;3(2):156-166. [PMID: 32672598]",
"5. Shen R, Li VSW, Wong MOM, Chan PPM. Pediatric Glaucoma - From Screening, Early Detection to Management. Children (Basel). 2023;10(2):181. [PMID: 36832310]",
"6. Kanski JJ, Bowling B. Kanski's Clinical Ophthalmology: A Systematic Approach. 10th ed. Elsevier; 2023.",
].map(ref => new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 320, before: 0, after: 160 },
indent: { left: 720, hanging: 720 },
children: [new TextRun({ text: ref, font: "Times New Roman", size: 22 })]
}))
]
}]
});
Packer.toBuffer(doc).then(buf => {
const out = '/home/daytona/workspace/childhood-glaucoma/Sample_Size_Selection_Childhood_Glaucoma.docx';
fs.writeFileSync(out, buf);
console.log('Created:', out);
}).catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/childhood-glaucoma && node create_sample.js && python3 -c " import zipfile, os z = zipfile.ZipFile('Sample_Size_Selection_Childhood_Glaucoma.docx') size = os.path.getsize('Sample_Size_Selection_Childhood_Glaucoma.docx') print('Valid DOCX -', len(z.namelist()), 'internal files') print(f'File size: {size/1024:.1f} KB') "
Sample Size Selection Childhood Glaucoma
Word Document · DOCX
| Section | Content |
|---|---|
| 1. Study Design Context | Justification of the three analytical requirements the sample must satisfy |
| 2. Parameters & Assumptions | Table 1 - all input values with literature justification |
| 3. Formula 1 - Cochran | Prevalence estimation formula, step-by-step calculation → n = 210 |
| 4. Formula 2 - Kelsey | Two-group comparison formula, step-by-step → n = 122 |
| 5. Formula 3 - EPV Rule | Peduzzi logistic regression rule → n = 167 |
| 6. Final Sample Size | Table 2 comparing all three formulas → Final n = 210 adopted |
| 7. Sampling Strategy | Consecutive non-probability sampling with justification |
| 8. Eligibility Criteria | 5 inclusion criteria + 5 exclusion criteria (numbered) |
| 9. Outcome Definitions | Table 3 - operational definitions including the 3-month threshold rationale |
| 10. Study Variables | Table 4 - 14 independent variables across 6 domains with collection method |
| 11. Summary Box | Table 5 - quick-reference overview of entire design |
| References | 6 citations (Cochran, Kelsey, Peduzzi + 3 clinical sources) |
in materials and method what should i write regarding my thesis topic create word file
~/childhood-glaucoma/create_methods.js
const {
Document, Packer, Paragraph, TextRun, AlignmentType,
HeadingLevel, LevelFormat, UnderlineType,
Table, TableRow, TableCell, WidthType, VerticalAlign, ShadingType,
BorderStyle, PageNumber, NumberFormat
} = require('docx');
const fs = require('fs');
// ── Numbering ──────────────────────────────────────────────────────────────
const numberingConfig = [
{
reference: "decimal-list",
levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } }, run: { font: "Times New Roman", size: 24 } } }]
},
{
reference: "bullet-list",
levels: [{ level: 0, format: LevelFormat.BULLET, text: "\u2022", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } }, run: { font: "Times New Roman", size: 24 } } }]
},
{
reference: "alpha-list",
levels: [{ level: 0, format: LevelFormat.LOWER_LETTER, text: "%1.", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 900, hanging: 360 } }, run: { font: "Times New Roman", size: 24 } } }]
}
];
// ── Helpers ────────────────────────────────────────────────────────────────
const HDR = "1F3864";
const ALT = "D9E1F2";
const RED = "C00000";
const para = (text, opts = {}) => new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before: 0, after: 200 },
children: [new TextRun({ text, font: "Times New Roman", size: 24, ...opts })]
});
const spacer = () => new Paragraph({ children: [new TextRun("")], spacing: { before: 0, after: 120 } });
const h1 = (text) => new Paragraph({
heading: HeadingLevel.HEADING_1,
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 240 },
children: [new TextRun({ text, bold: true, size: 30, font: "Times New Roman", color: "000000" })]
});
const h2 = (text) => new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 400, after: 180 },
children: [new TextRun({ text, bold: true, size: 26, font: "Times New Roman", color: HDR })]
});
const h3 = (text) => new Paragraph({
spacing: { before: 260, after: 120 },
children: [new TextRun({ text, bold: true, underline: { type: UnderlineType.SINGLE }, font: "Times New Roman", size: 24, color: "000000" })]
});
const h4 = (text) => new Paragraph({
spacing: { before: 200, after: 80 },
children: [new TextRun({ text, bold: true, italics: true, font: "Times New Roman", size: 24, color: "000000" })]
});
const numItem = (text) => new Paragraph({
numbering: { reference: "decimal-list", level: 0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 340, before: 60, after: 100 },
children: [new TextRun({ text, font: "Times New Roman", size: 24 })]
});
const bulletItem = (text, bold=false) => new Paragraph({
numbering: { reference: "bullet-list", level: 0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 320, before: 40, after: 80 },
children: [new TextRun({ text, font: "Times New Roman", size: 24, bold })]
});
const alphaItem = (text) => new Paragraph({
numbering: { reference: "alpha-list", level: 0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 300, before: 40, after: 80 },
children: [new TextRun({ text, font: "Times New Roman", size: 22 })]
});
const tblCaption = (text) => new Paragraph({
spacing: { before: 0, after: 100 },
children: [new TextRun({ text, bold: true, font: "Times New Roman", size: 22 })]
});
// table helpers
const hdrCell = (text, w) => new TableCell({
width: w ? { size: w, type: WidthType.PERCENTAGE } : undefined,
shading: { type: ShadingType.CLEAR, fill: HDR },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({ alignment: AlignmentType.CENTER,
children: [new TextRun({ text, bold: true, color: "FFFFFF", font: "Times New Roman", size: 20 })] })]
});
const td = (text, shade=false, centre=false) => new TableCell({
shading: shade ? { type: ShadingType.CLEAR, fill: ALT } : undefined,
children: [new Paragraph({ alignment: centre ? AlignmentType.CENTER : AlignmentType.LEFT,
children: [new TextRun({ text, font: "Times New Roman", size: 20 })] })]
});
const row = (cells, shade=false) => new TableRow({
children: cells.map(([t, c=false]) => td(t, shade, c))
});
// ═══════════════════════════════════════════════════════════════════════════
const doc = new Document({
numbering: { config: numberingConfig },
styles: {
default: { document: { run: { font: "Times New Roman", size: 24 } } },
paragraphStyles: [
{ id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 30, bold: true, font: "Times New Roman", color: "000000" },
paragraph: { spacing: { before: 360, after: 240 }, outlineLevel: 0, alignment: AlignmentType.CENTER } },
{ id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 26, bold: true, font: "Times New Roman", color: HDR },
paragraph: { spacing: { before: 300, after: 180 }, outlineLevel: 1 } }
]
},
sections: [{
properties: {
page: {
size: { width: 11906, height: 16838 },
margin: { top: 1440, right: 1440, bottom: 1440, left: 1800 }
}
},
children: [
// ═══ TITLE ═══════════════════════════════════════════════════════════
h1("DETERMINANTS OF DELAYED DIAGNOSIS IN CHILDHOOD GLAUCOMA"),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 480 },
children: [new TextRun({ text: "Materials and Methods", bold: true, size: 28, font: "Times New Roman" })]
}),
// ═══ 1. STUDY DESIGN ═════════════════════════════════════════════════
h2("1. Study Design"),
para("This is a prospective cross-sectional analytical study designed to identify and quantify the determinants of delayed diagnosis in children presenting with confirmed childhood glaucoma. A cross-sectional design was chosen because it allows simultaneous assessment of both the outcome (delayed diagnosis) and its potential determinants at a single point in time - the time of diagnosis - while capturing retrospective information on the symptom-to-diagnosis interval through structured caregiver interviews and review of medical records."),
para("The study incorporates both quantitative and qualitative data collection methods. Quantitative data include clinical measurements, demographic records, and questionnaire scores. Structured caregiver interviews provide the retrospective timeline of symptom recognition and healthcare-seeking behavior. This mixed-data approach ensures comprehensive capture of all modifiable and non-modifiable determinants of diagnostic delay."),
// ═══ 2. STUDY SETTING ════════════════════════════════════════════════
h2("2. Study Setting"),
para("The study will be conducted at the Pediatric Ophthalmology and Glaucoma Department of [Name of Institution], a tertiary academic medical center providing comprehensive eye care services to a catchment population from both urban and rural regions. The center serves as the primary referral facility for childhood glaucoma and offers specialist pediatric ophthalmology outpatient clinics, glaucoma surgical services, and a dedicated low-vision and vision rehabilitation unit."),
para("Recruitment will take place across three clinical settings within the same institution:"),
bulletItem("Outpatient pediatric ophthalmology clinic - for newly diagnosed ambulatory cases."),
bulletItem("Glaucoma surgical waiting list and pre-operative assessment clinic - for children awaiting or recently undergoing surgical intervention."),
bulletItem("Pediatric inpatient ward - for children admitted for examination under general anesthesia or post-operative management."),
para("The multi-setting recruitment strategy is designed to capture the full spectrum of presentation severity and referral pathways, minimizing the risk of selection bias toward either mild or severe cases."),
// ═══ 3. STUDY POPULATION ═════════════════════════════════════════════
h2("3. Study Population"),
h3("3.1 Target Population"),
para("The target population consists of all children aged 0-16 years who are diagnosed with any form of childhood glaucoma and who present to a tertiary pediatric ophthalmology center in the study region."),
h3("3.2 Source Population"),
para("The source population comprises all children with newly confirmed or recently diagnosed childhood glaucoma presenting to the recruiting institution during the defined study enrollment period. Both newly diagnosed patients and those diagnosed within the preceding 12 months (to minimize recall bias while allowing adequate sample accrual) will be eligible for inclusion."),
h3("3.3 Inclusion Criteria"),
numItem("Age at diagnosis: 0 to 16 years (inclusive) at the time of confirmed glaucoma diagnosis."),
numItem("Confirmed diagnosis of childhood glaucoma by a consultant pediatric ophthalmologist, meeting the Childhood Glaucoma Research Network (CGRN) criteria: elevated intraocular pressure (IOP > 21 mmHg on two or more occasions) with at least one of the following - optic disc cupping (cup-to-disc ratio > 0.3 or progressive increase), corneal changes (buphthalmos, Haab striae, corneal edema), reproducible visual field defect, or axial length increase on serial measurement."),
numItem("Any glaucoma subtype is eligible: primary congenital glaucoma (PCG), juvenile open-angle glaucoma (JOAG), or any secondary childhood glaucoma (glaucoma associated with ocular or systemic anomalies, post-cataract surgery, uveitic, or traumatic)."),
numItem("A parent or legal guardian (primary caregiver) is present, able to communicate in the study language, capable of providing written informed consent, and willing to participate in a structured interview of approximately 30 minutes."),
numItem("The date of first symptom recognition is documentable either from caregiver recall during interview or from available primary care, general pediatric, or emergency department records, enabling calculation of the diagnostic interval."),
h3("3.4 Exclusion Criteria"),
numItem("Glaucoma diagnosed as a purely incidental finding during unrelated surgery or routine general anesthesia, with no preceding recognized symptom period attributable to glaucoma - as the diagnostic delay interval cannot be meaningfully calculated."),
numItem("Incomplete or unavailable medical records that preclude reliable determination of the diagnostic interval or key clinical variables."),
numItem("Children presenting for the first time directly to the recruiting center without any prior contact with a healthcare provider (no referral pathway to assess)."),
numItem("Children already enrolled in the study presenting for follow-up visits (to prevent duplicate enrollment and data inflation)."),
numItem("Caregiver refusal or inability to provide informed consent, or children for whom no caregiver is available to provide the required historical information."),
numItem("Children with glaucoma diagnosed more than 12 months prior to study enrollment (to limit retrospective recall bias in caregiver interviews)."),
// ═══ 4. STUDY DURATION & TIMELINE ═══════════════════════════════════
h2("4. Study Duration and Enrollment Timeline"),
spacer(),
tblCaption("Table 1. Proposed Study Timeline"),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ tableHeader: true, children: [hdrCell("Phase",20), hdrCell("Activity",55), hdrCell("Duration",25)] }),
row([["1 - Preparation",""],["Ethics committee approval, questionnaire validation, staff training, pilot testing",""],["3 months","c"]]),
row([["2 - Enrollment",""],["Consecutive patient recruitment and data collection",""],["12 months","c"]], true),
row([["3 - Follow-up",""],["One-year clinical outcome assessment for enrolled cohort",""],["12 months","c"]]),
row([["4 - Analysis",""],["Data entry, cleaning, statistical analysis, interpretation",""],["3 months","c"]], true),
row([["5 - Reporting",""],["Manuscript preparation, thesis writing, and dissemination",""],["3 months","c"]]),
row([["TOTAL",""],["",""],["~33 months","c"]], true),
]
}),
// ═══ 5. DATA COLLECTION TOOLS ════════════════════════════════════════
h2("5. Data Collection Instruments"),
h3("5.1 Structured Caregiver Interview Questionnaire"),
para("A purpose-designed, piloted structured questionnaire will be administered to the primary caregiver of each enrolled child by a trained research assistant. The questionnaire is divided into five domains:"),
h4("Domain A - Sociodemographic Data"),
alphaItem("Child's age, sex, birth order, and gestational age at birth."),
alphaItem("Caregiver's age, sex, relationship to child, educational attainment (none / primary / secondary / tertiary), and occupational status."),
alphaItem("Household monthly income (expressed in local currency quintiles)."),
alphaItem("Geographic location of residence (urban / peri-urban / rural) and distance from the nearest ophthalmology service."),
alphaItem("Health insurance coverage (none / partial / full)."),
alphaItem("Parental consanguinity (first-cousin or closer: yes / no)."),
alphaItem("Family history of glaucoma or childhood eye disease in first- or second-degree relatives."),
h4("Domain B - Symptom Timeline"),
alphaItem("Date of first symptom noticed by the caregiver (open-ended, then mapped to a calendar month)."),
alphaItem("Nature of the first symptom noticed: excessive tearing / photophobia / blepharospasm / cloudy or white cornea / large or prominent eye / eye asymmetry / poor fixation or vision / other."),
alphaItem("Initial caregiver response: sought medical care immediately / waited and observed / attributed to a benign cause / other."),
alphaItem("Reason for any delay in seeking medical care (open-ended, coded into categories post-hoc)."),
h4("Domain C - Healthcare Pathway"),
alphaItem("First healthcare contact: general practitioner / general pediatrician / emergency department / optometrist / community health worker / traditional healer / directly to ophthalmologist."),
alphaItem("Total number of distinct healthcare provider contacts before ophthalmology referral."),
alphaItem("Diagnoses given at each prior healthcare contact (coded from caregiver recall and medical records)."),
alphaItem("Source of ophthalmology referral: GP / pediatrician / ER / optometrist / parent self-referral / neonatal screening / school screening."),
alphaItem("Waiting time from referral to first ophthalmology appointment (weeks)."),
h4("Domain D - Caregiver Awareness and Health Literacy"),
alphaItem("Ten-item validated knowledge scale assessing awareness of: (i) glaucoma as a disease entity in children; (ii) the cardinal symptoms of childhood glaucoma; (iii) the curability/treatability of childhood glaucoma; (iv) the consequences of untreated glaucoma; (v) the availability of specialist eye services. Scored 0-10, categorized as low (0-4), moderate (5-7), or high (8-10)."),
alphaItem("Source of health information most trusted by caregiver: physician / internet / family/friends / religious leader / none."),
h4("Domain E - Disease and Treatment History"),
alphaItem("Glaucoma subtype (as confirmed by the treating ophthalmologist): PCG / JOAG / secondary."),
alphaItem("Laterality: unilateral / bilateral."),
alphaItem("Age at first surgical or medical intervention."),
alphaItem("Number of surgical procedures performed prior to enrollment."),
spacer(),
h3("5.2 Clinical Examination Data Sheet"),
para("A standardized clinical data extraction sheet will be completed by the examining pediatric ophthalmologist at the time of enrollment (or extracted from the medical record for recently diagnosed cases). The following parameters will be recorded:"),
bulletItem("Best-corrected visual acuity (BCVA) in each eye - using age-appropriate methods (Cardiff cards for infants, Snellen chart for cooperative children)."),
bulletItem("Intraocular pressure (IOP) measured by Goldmann applanation tonometry (cooperative children), Perkins handheld tonometer, Tono-Pen, or iCare rebound tonometer as appropriate for the child's age and cooperation."),
bulletItem("Horizontal corneal diameter (mm) measured with calipers or a Castroviejo gauge."),
bulletItem("Cup-to-disc (C/D) ratio assessed by indirect ophthalmoscopy or slit-lamp biomicroscopy with a 90D or 78D lens."),
bulletItem("Presence and grading of corneal changes: Haab striae (yes/no), corneal edema (mild/moderate/severe), corneal opacification (yes/no), corneal vascularization (yes/no)."),
bulletItem("Axial length (mm) measured by A-scan or optical biometry (IOLMaster) where available."),
bulletItem("Gonioscopy findings (angle classification, iris insertion, trabecular dysgenesis): performed under general anesthesia or with a Koeppe lens."),
bulletItem("Presence of amblyopia (yes/no) and type (deprivation / anisometropic / strabismic)."),
bulletItem("Glaucoma subtype confirmed by the ophthalmologist (PCG / JOAG / secondary - specify associated condition)."),
bulletItem("Previous treatment: medical (topical/systemic agents), surgical (goniotomy, trabeculotomy, trabeculectomy, GDD, cyclophotocoagulation), or none."),
spacer(),
h3("5.3 Medical Record Review Form"),
para("For each enrolled child, a retrospective review of all available medical records will be conducted, including:"),
bulletItem("Records from primary care, general pediatrics, emergency departments, and any other healthcare contact prior to ophthalmology referral - to document diagnoses made, investigations ordered, and treatments prescribed."),
bulletItem("Neonatal and infant health records (child health booklets, discharge summaries) to identify whether ocular examination was performed at birth or at routine well-child visits."),
bulletItem("Previous ophthalmology records if available, to establish the earliest documented clinical sign consistent with glaucoma."),
para("Medical record data will be used to corroborate and triangulate caregiver-reported symptom onset dates and healthcare pathway information, and to identify cases of documented misdiagnosis at the primary care level."),
// ═══ 6. DEFINITIONS ══════════════════════════════════════════════════
h2("6. Operational Definitions"),
spacer(),
tblCaption("Table 2. Key Operational Definitions"),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ tableHeader: true, children: [hdrCell("Term",25), hdrCell("Definition",75)] }),
row([["Symptom onset date",""],["The earliest date on which the caregiver first noticed any sign attributable to glaucoma (excessive tearing, photophobia, blepharospasm, cloudy cornea, large eye, eye asymmetry, or poor fixation). Established by structured interview and cross-referenced with medical records.",""]]),
row([["Diagnosis date",""],["The date on which a consultant pediatric ophthalmologist first confirmed the diagnosis of childhood glaucoma based on clinical examination meeting CGRN criteria.",""]],true),
row([["Diagnostic interval",""],["Diagnosis date minus symptom onset date, expressed in months. Calculated as a continuous variable (primary analysis) and dichotomized as binary (secondary analysis).",""]]),
row([["Delayed diagnosis",""],["Diagnostic interval of MORE than 3 months (> 3 months). Primary binary outcome variable; coded 1 in logistic regression.",""]],true),
row([["Timely diagnosis",""],["Diagnostic interval of 3 months or less (<= 3 months). Coded 0 in logistic regression.",""]]),
row([["Misdiagnosis at primary care",""],["Documentation or caregiver report of a diagnosis other than glaucoma given by a non-ophthalmologist healthcare provider during any prior visit attributable to the glaucoma-related symptoms.",""]],true),
row([["Caregiver awareness (high)",""],["Awareness questionnaire score of 8-10 out of 10.",""]]),
row([["Caregiver awareness (low)",""],["Awareness questionnaire score of 0-4 out of 10.",""]],true),
row([["Consanguinity",""],["Marriage between first cousins or closer blood relatives (as defined by the WHO).",""]]),
row([["Secondary glaucoma",""],["Glaucoma arising in association with another ocular or systemic condition (e.g., Sturge-Weber syndrome, aniridia, Peters anomaly, uveitis, post-cataract surgery).",""]],true),
]
}),
// ═══ 7. STUDY VARIABLES ══════════════════════════════════════════════
h2("7. Study Variables"),
h3("7.1 Primary Outcome Variable"),
bulletItem("Delayed diagnosis: binary (yes = diagnostic interval > 3 months; no = diagnostic interval <= 3 months)."),
bulletItem("Diagnostic interval: continuous (months from symptom onset to confirmed diagnosis)."),
h3("7.2 Secondary Outcome Variables"),
bulletItem("Best-corrected visual acuity at diagnosis (LogMAR)."),
bulletItem("Cup-to-disc ratio at diagnosis."),
bulletItem("IOP at first ophthalmology visit (mmHg)."),
bulletItem("Horizontal corneal diameter at diagnosis (mm)."),
bulletItem("Presence of amblyopia at diagnosis (yes/no)."),
bulletItem("Visual acuity at one-year follow-up (for prospective cohort component)."),
h3("7.3 Independent Variables (Determinants)"),
spacer(),
tblCaption("Table 3. Independent Variables and Their Measurement"),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ tableHeader: true, children: [hdrCell("Domain",15), hdrCell("Variable",25), hdrCell("Type",12), hdrCell("Scale / Categories",25), hdrCell("Source",23)] }),
row([["Caregiver",""],["Awareness score",""],["Continuous",""],["0-10 (low 0-4 / mod 5-7 / high 8-10)",""],["Interview questionnaire",""]]),
row([["Caregiver",""],["Education level",""],["Ordinal",""],["None/Primary/Secondary/Tertiary",""],["Questionnaire",""]],true),
row([["Caregiver",""],["First symptom recognized",""],["Categorical",""],["Tearing/photophobia/large eye/etc.",""],["Interview",""]]),
row([["Socioeconomic",""],["Household income quintile",""],["Ordinal",""],["Q1 (lowest) to Q5 (highest)",""],["Questionnaire",""]],true),
row([["Socioeconomic",""],["Health insurance",""],["Binary",""],["Yes / No",""],["Questionnaire",""]]),
row([["Geographic",""],["Urban vs. rural",""],["Binary",""],["Urban / Rural",""],["Address / postcode",""]],true),
row([["Geographic",""],["Distance to nearest eye clinic",""],["Continuous",""],["Kilometres",""],["Questionnaire",""]]),
row([["Healthcare",""],["Visits before referral",""],["Continuous",""],["Number (0, 1, 2, 3+)",""],["Records + interview",""]],true),
row([["Healthcare",""],["Initial misdiagnosis",""],["Binary",""],["Yes / No",""],["Records + interview",""]]),
row([["Healthcare",""],["Referral source",""],["Categorical",""],["GP/Paed/ER/Screening/Self",""],["Records",""]],true),
row([["Disease",""],["Glaucoma subtype",""],["Categorical",""],["PCG / JOAG / Secondary",""],["Clinical diagnosis",""]]),
row([["Disease",""],["Laterality",""],["Binary",""],["Unilateral / Bilateral",""],["Exam",""]],true),
row([["Disease",""],["Age at diagnosis",""],["Continuous",""],["Months",""],["Records",""]]),
row([["Genetic",""],["Parental consanguinity",""],["Binary",""],["Yes / No",""],["Questionnaire",""]],true),
row([["Genetic",""],["Positive family history",""],["Binary",""],["Yes / No",""],["Questionnaire",""]]),
]
}),
// ═══ 8. DATA COLLECTION PROCEDURE ════════════════════════════════════
h2("8. Data Collection Procedure"),
h3("Step 1 - Identification and Screening"),
para("Potential participants will be identified by the treating pediatric ophthalmologist at the point of diagnosis or at the first clinic visit. The research assistant will screen the clinical list daily to identify eligible new patients. The study eligibility checklist will be applied before any patient contact is initiated."),
h3("Step 2 - Informed Consent"),
para("The principal investigator or a trained co-investigator will approach the caregiver and provide a full verbal and written explanation of the study in the caregiver's preferred language. Written informed consent will be obtained from the parent or legal guardian. For children aged 7 years and above, age-appropriate written assent will also be obtained. Participation is entirely voluntary and refusal to participate or withdrawal at any stage will not affect the quality of care received by the child."),
h3("Step 3 - Structured Caregiver Interview"),
para("Following consent, the structured caregiver questionnaire (see Section 5.1) will be administered face-to-face by a trained, bilingual research assistant in a private consultation room. The interview is estimated to last 25-35 minutes. Responses will be recorded on a pre-coded paper data form and subsequently entered into the electronic database. Audio recording of the interview will be offered as an optional supplement for qualitative data verification, with explicit consent."),
h3("Step 4 - Clinical Examination Data Extraction"),
para("Clinical examination findings will be extracted from the child's medical record by the research assistant using the standardized clinical data extraction sheet (Section 5.2). For newly presenting patients, the treating ophthalmologist will complete the examination form directly at the time of the diagnostic visit. All clinical assessments will be performed by, or under the direct supervision of, a consultant pediatric ophthalmologist."),
h3("Step 5 - Medical Record Review"),
para("Available medical records from prior healthcare contacts (primary care, emergency department, general pediatrics) will be reviewed using the standardized medical record review form (Section 5.3). Where records are not available at the recruiting center, caregivers will be asked for permission to request records from the relevant facility. Record-based data will be used to corroborate and cross-check caregiver-reported timelines."),
h3("Step 6 - One-Year Follow-Up (Prospective Outcome Assessment)"),
para("Enrolled children will be reviewed at one year following diagnosis. At this visit, BCVA, IOP, and optic nerve status will be reassessed and recorded. This follow-up component will allow comparison of visual outcomes between the delayed and timely diagnosis groups."),
// ═══ 9. BIAS CONTROL ═════════════════════════════════════════════════
h2("9. Minimization of Bias"),
h3("9.1 Selection Bias"),
bulletItem("Consecutive sampling from three clinical settings (outpatient, surgical waiting list, inpatient) will minimize referral filter bias and ensure inclusion of mild, moderate, and severe presentations."),
bulletItem("Clear, pre-specified eligibility criteria applied prospectively will reduce subjective selection."),
h3("9.2 Recall Bias"),
bulletItem("The enrollment window is restricted to patients diagnosed within the preceding 12 months to limit the period of caregiver recall."),
bulletItem("Caregiver-reported symptom onset dates will be cross-validated against primary care and neonatal records wherever available."),
bulletItem("The questionnaire uses a calendar-anchoring technique (asking caregivers to recall significant events near the symptom onset - e.g., holidays, birthdays) to improve temporal precision."),
h3("9.3 Information Bias"),
bulletItem("The caregiver questionnaire will be piloted on 10-15 caregivers outside the study sample and revised for clarity before use."),
bulletItem("Research assistants will be trained in standardized interview techniques and calibration sessions will be held before enrollment begins."),
bulletItem("Clinical data will be extracted using a standardized, pre-coded form to ensure consistency between investigators."),
h3("9.4 Observer Bias"),
bulletItem("Clinical outcome assessors (ophthalmologists grading visual acuity and optic disc) will be masked to the caregiver awareness scores and diagnostic delay category wherever feasible."),
// ═══ 10. ETHICAL CONSIDERATIONS ══════════════════════════════════════
h2("10. Ethical Considerations"),
para("The study will be conducted in full accordance with the Declaration of Helsinki (2013 revision) and applicable national research ethics guidelines. Ethical approval will be sought from the Institutional Review Board (IRB) / Research Ethics Committee of the recruiting institution prior to commencement of any study-related activities."),
h3("Key Ethical Principles"),
bulletItem("Voluntary participation: written informed consent from caregivers; written assent from children aged 7 years and above."),
bulletItem("Confidentiality: all data will be stored in anonymized, password-protected electronic databases. No identifiable data will be used in publications or presentations."),
bulletItem("Non-maleficence: participation involves only questionnaire completion and review of existing records. No additional invasive investigations are required."),
bulletItem("Beneficence: participation does not directly alter clinical care; however, findings will be disseminated to improve early detection systems regionally."),
bulletItem("Right to withdraw: participants may withdraw at any time without prejudice to clinical care."),
bulletItem("Child protection: any safeguarding concerns arising during the study will be managed according to institutional child protection protocols."),
// ═══ 11. STATISTICAL ANALYSIS ════════════════════════════════════════
h2("11. Statistical Analysis Plan"),
h3("11.1 Data Management"),
para("Data will be entered into a password-protected REDCap (Research Electronic Data Capture) database or equivalent. Double data entry will be used for 20% of randomly selected records to verify accuracy. Data cleaning will include range checks, consistency checks, and investigation of outliers before analysis."),
h3("11.2 Descriptive Statistics"),
bulletItem("Continuous variables (diagnostic interval, IOP, corneal diameter, age, awareness score) will be described using mean and standard deviation (SD) if normally distributed, or median and interquartile range (IQR) if skewed. Normality will be assessed using the Kolmogorov-Smirnov test."),
bulletItem("Categorical variables (sex, glaucoma type, laterality, referral source, consanguinity, insurance) will be expressed as frequencies and percentages."),
h3("11.3 Inferential Statistics"),
bulletItem("Comparison of continuous variables between delayed and timely diagnosis groups: independent samples t-test (parametric) or Mann-Whitney U test (non-parametric)."),
bulletItem("Comparison of categorical variables between groups: Pearson Chi-square test or Fisher exact test (for cells with expected frequency < 5)."),
bulletItem("Comparison of diagnostic interval across more than two groups (e.g., glaucoma subtypes): one-way ANOVA or Kruskal-Wallis test."),
bulletItem("Correlation between diagnostic interval (continuous) and continuous outcome variables (visual acuity, C/D ratio): Pearson or Spearman rank correlation as appropriate."),
h3("11.4 Multivariate Analysis"),
para("Binary logistic regression will be performed with delayed diagnosis (yes/no) as the dependent variable. Variables significant at p < 0.20 on univariate analysis will be entered into the multivariate model using a forward stepwise conditional method. Results will be expressed as adjusted Odds Ratios (aOR) with 95% confidence intervals (CI). Model fit will be assessed using the Hosmer-Lemeshow goodness-of-fit test. A receiver operating characteristic (ROC) curve will be constructed to evaluate the predictive performance of the final model."),
h3("11.5 Significance Level and Software"),
bulletItem("Statistical significance will be defined as p < 0.05 (two-tailed) throughout."),
bulletItem("All analyses will be performed using IBM SPSS Statistics version 26 (or later) or R version 4.3 (or later)."),
spacer(),
tblCaption("Table 4. Summary of Statistical Tests by Variable Type and Analytical Objective"),
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ tableHeader: true, children: [hdrCell("Objective",30), hdrCell("Variable Type",25), hdrCell("Statistical Test",25), hdrCell("Software",20)] }),
row([["Prevalence of delayed diagnosis",""],["Binary outcome",""],["Frequency, proportion, 95% CI",""],["SPSS / R",""]]),
row([["Compare groups (2 groups)",""],["Continuous",""],["t-test / Mann-Whitney U",""],["SPSS / R",""]],true),
row([["Compare groups (2 groups)",""],["Categorical",""],["Chi-square / Fisher exact",""],["SPSS / R",""]]),
row([["Compare groups (3+ groups)",""],["Continuous",""],["ANOVA / Kruskal-Wallis",""],["SPSS / R",""]],true),
row([["Predictors of delay",""],["Binary outcome + mixed predictors",""],["Binary logistic regression",""],["SPSS / R",""]]),
row([["Delay vs. visual outcome",""],["Two continuous variables",""],["Pearson / Spearman correlation",""],["SPSS / R",""]],true),
row([["Model discrimination",""],["Predicted vs. observed",""],["ROC curve, AUC",""],["SPSS / R",""]]),
]
}),
// ═══ 12. QUALITY CONTROL ═════════════════════════════════════════════
h2("12. Quality Control"),
numItem("Pilot study: The questionnaire and data collection instruments will be piloted on 15 caregivers (not included in the main study) prior to commencement. Feedback will be used to refine question wording, sequencing, and estimated interview duration."),
numItem("Staff training: All research assistants will undergo a standardized two-day training program covering study procedures, interview techniques, consent processes, and data entry protocols before enrollment begins."),
numItem("Inter-rater reliability: For the clinical examination data sheet, inter-observer agreement will be assessed between two examiners on a random 10% subsample using the Intraclass Correlation Coefficient (ICC) for continuous measures and Cohen's Kappa for categorical measures. An ICC or Kappa of >0.80 will be considered satisfactory."),
numItem("Weekly monitoring: The principal investigator will review data completeness and consistency on a weekly basis throughout the enrollment period."),
numItem("Missing data: Missing data will be minimized through rigorous follow-up. If missing data exceed 5% for any variable, multiple imputation or sensitivity analysis will be performed."),
// ═══ REFERENCES ═══════════════════════════════════════════════════════
h2("References"),
...[
"1. Kanski JJ, Bowling B. Kanski's Clinical Ophthalmology: A Systematic Approach. 10th ed. Elsevier; 2023. Primary Congenital Glaucoma, pp. 401-417.",
"2. Friedman NJ, Kaiser PK, Pineda R. The Wills Eye Manual. 7th ed. Lippincott Williams & Wilkins; 2021. Section 8.11: Congenital/Infantile Glaucoma, pp. 528-531.",
"3. Papadopoulos M, Vanner EA, Grajewski AL. International Study of Childhood Glaucoma. Ophthalmol Glaucoma. 2020;3(2):156-166. [PMID: 32672598]",
"4. Shen R, Li VSW, Wong MOM, Chan PPM. Pediatric Glaucoma - From Screening, Early Detection to Management. Children (Basel). 2023;10(2):181. [PMID: 36832310]",
"5. Knight LSW, Ridge B, Staffieri SE, et al. The Caregiver Experience in Childhood Glaucoma: An Interview Study. Ophthalmol Glaucoma. 2022;5(5):519-528. [PMID: 35151897]",
"6. Midha N, Sidhu T, Chaturvedi N, et al. Systemic Associations of Childhood Glaucoma. J Pediatr Ophthalmol Strabismus. 2018;55(6):397-402. [PMID: 30452766]",
"7. Elsayed MEA, Lander B, Senthil S, et al. The secondary childhood glaucomas. Surv Ophthalmol. 2025;70(3). [PMID: 39486644]",
"8. Harris PA, Taylor R, Thielke R, et al. Research Electronic Data Capture (REDCap) - A metadata-driven methodology and workflow process for providing translational research informatics support. J Biomed Inform. 2009;42(2):377-381.",
"9. Peduzzi P, Concato J, Kemper E, et al. A simulation study of the number of events per variable in logistic regression analysis. J Clin Epidemiol. 1996;49(12):1373-1379.",
"10. Cochran WG. Sampling Techniques. 3rd ed. New York: John Wiley & Sons; 1977.",
].map(ref => new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 320, before: 0, after: 160 },
indent: { left: 720, hanging: 720 },
children: [new TextRun({ text: ref, font: "Times New Roman", size: 22 })]
}))
]
}]
});
Packer.toBuffer(doc).then(buf => {
const out = '/home/daytona/workspace/childhood-glaucoma/Materials_Methods_Childhood_Glaucoma.docx';
fs.writeFileSync(out, buf);
console.log('Created:', out);
}).catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/childhood-glaucoma && node create_methods.js && python3 -c " import zipfile, os z = zipfile.ZipFile('Materials_Methods_Childhood_Glaucoma.docx') size = os.path.getsize('Materials_Methods_Childhood_Glaucoma.docx') print('Valid DOCX -', len(z.namelist()), 'internal files') print(f'File size: {size/1024:.1f} KB') "
Materials Methods Childhood Glaucoma
Word Document · DOCX
| Section | Content |
|---|---|
| 1. Study Design | Prospective cross-sectional analytical study - rationale explained |
| 2. Study Setting | Tertiary center description, 3 recruitment settings |
| 3. Study Population | Target vs. source population, 5 inclusion + 6 exclusion criteria (numbered) |
| 4. Timeline | Table 1 - 5-phase study plan (~33 months total) |
| 5. Data Collection Instruments | Three tools: (A) Caregiver questionnaire with 5 domains and 30+ items; (B) Clinical examination data sheet with 10 parameters; (C) Medical record review form |
| 6. Operational Definitions | Table 2 - definitions of 10 key terms including the 3-month threshold |
| 7. Study Variables | Primary + secondary outcomes; Table 3 - 14 independent variables across 6 domains |
| 8. Data Collection Procedure | 6-step protocol: screening → consent → interview → exam → records → follow-up |
| 9. Bias Minimization | Selection bias, recall bias, information bias, observer bias - all addressed |
| 10. Ethical Considerations | Declaration of Helsinki principles, consent, confidentiality, child protection |
| 11. Statistical Analysis Plan | Descriptive stats, inferential tests, binary logistic regression, ROC curve; Table 4 |
| 12. Quality Control | Pilot study, staff training, inter-rater reliability, weekly monitoring, missing data strategy |
| References | 10 citations |
1. History Taking : • Age at presentation • Duration and onset of ptosis • Family history of ptosis or amblyopia • Past ocular or systemic history • History of any previous intervention 2. Ocular Examination: • Visual acuity testing • Refraction: Cycloplegic refraction in children; manifest refraction in adults • Ptosis grading: Margin Reflex Distance 1 (MRD1), Margin Reflex Distance 2 (MRD2), levator function, palpebral fissure height, Synkinesis • Cover test: Assessment for strabismus • Fundus examination: To rule out posterior segment pathology • Assessment for amblyopia: ▪ BCVA worse than 6/9 in either eye ▪ Or ≥2 line difference in BCVA between the two eyes in absence of anatomical cause 3. Classification of Amblyopia (if present): • Deprivation amblyopia • Refractive amblyopia • Strabismic amblyopia • Mixed type 4. Type of Ptosis: o o o o o o Congenital simple Marcus Gunn jaw-winking Blepharophimosis syndrome Myasthenia gravis Third nerve palsy Horner’s syndrome Aponeurotic
~/childhood-glaucoma/create_ptosis.js
const {
Document, Packer, Paragraph, TextRun, AlignmentType,
HeadingLevel, LevelFormat, UnderlineType,
Table, TableRow, TableCell, WidthType, VerticalAlign, ShadingType,
BorderStyle, PageBreak
} = require('docx');
const fs = require('fs');
// ── Numbering ──────────────────────────────────────────────────────────────
const numberingConfig = [
{ reference: "decimal", levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } }, run: { font: "Times New Roman", size: 24 } } }] },
{ reference: "bullet", levels: [{ level: 0, format: LevelFormat.BULLET, text: "\u2022", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } }, run: { font: "Times New Roman", size: 24 } } }] },
{ reference: "sub-bullet", levels: [{ level: 0, format: LevelFormat.BULLET, text: "\u25AA", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 1080, hanging: 360 } }, run: { font: "Times New Roman", size: 22 } } }] }
];
// ── Colour palette ────────────────────────────────────────────────────────
const HDR1 = "1F3864"; // dark navy
const HDR2 = "2E75B6"; // mid blue
const ALT = "DEEAF1"; // light blue
const GRN = "375623"; // dark green header
const ALGN = "EBF3E8"; // light green alt
// ── Helpers ───────────────────────────────────────────────────────────────
const sp = () => new Paragraph({ children: [new TextRun("")], spacing: { before:0, after:100 } });
const sp2 = () => new Paragraph({ children: [new TextRun("")], spacing: { before:0, after:240 } });
const p = (text, opts={}) => new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line: 360, before:0, after:200 },
children: [new TextRun({ text, font:"Times New Roman", size:24, ...opts })]
});
const h1 = t => new Paragraph({
heading: HeadingLevel.HEADING_1, alignment: AlignmentType.CENTER,
spacing: { before:0, after:240 },
children: [new TextRun({ text:t, bold:true, size:30, font:"Times New Roman", color:"000000" })]
});
const h2 = t => new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before:360, after:180 },
children: [new TextRun({ text:t, bold:true, size:26, font:"Times New Roman", color:HDR1 })]
});
const h3 = t => new Paragraph({
spacing: { before:260, after:120 },
children: [new TextRun({ text:t, bold:true, underline:{ type:UnderlineType.SINGLE }, font:"Times New Roman", size:24, color:"000000" })]
});
const h4 = t => new Paragraph({
spacing: { before:200, after:80 },
children: [new TextRun({ text:t, bold:true, italics:true, font:"Times New Roman", size:24 })]
});
const ni = t => new Paragraph({
numbering:{ reference:"decimal", level:0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line:340, before:60, after:100 },
children: [new TextRun({ text:t, font:"Times New Roman", size:24 })]
});
const bi = t => new Paragraph({
numbering:{ reference:"bullet", level:0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line:320, before:40, after:80 },
children: [new TextRun({ text:t, font:"Times New Roman", size:24 })]
});
const sbi = t => new Paragraph({
numbering:{ reference:"sub-bullet", level:0 },
alignment: AlignmentType.JUSTIFIED,
spacing: { line:300, before:40, after:60 },
children: [new TextRun({ text:t, font:"Times New Roman", size:22 })]
});
const caption = t => new Paragraph({
spacing:{ before:0, after:100 },
children:[new TextRun({ text:t, bold:true, font:"Times New Roman", size:22 })]
});
// ── Table helpers ─────────────────────────────────────────────────────────
const hc = (text, w, fill=HDR1) => new TableCell({
width: w ? { size:w, type:WidthType.PERCENTAGE } : undefined,
shading:{ type:ShadingType.CLEAR, fill },
verticalAlign: VerticalAlign.CENTER,
children:[new Paragraph({ alignment:AlignmentType.CENTER,
children:[new TextRun({ text, bold:true, color:"FFFFFF", font:"Times New Roman", size:20 })] })]
});
const tc = (text, shade=false, centre=false, bold=false) => new TableCell({
shading: shade ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ alignment: centre ? AlignmentType.CENTER : AlignmentType.LEFT,
children:[new TextRun({ text, font:"Times New Roman", size:20, bold })] })]
});
const tr = (cells, shade=false) => new TableRow({
children: cells.map(([t, sh=false, ce=false, bo=false]) => tc(t,shade||sh,ce,bo))
});
// ── Checkbox cell (for proforma) ──────────────────────────────────────────
const checkbox = (label, shade=false) => new TableCell({
shading: shade ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({
children:[
new TextRun({ text:"\u2610 ", font:"Arial", size:22 }),
new TextRun({ text:label, font:"Times New Roman", size:20 })
]
})]
});
const writeRow = (cells, shade=false) => new TableRow({ children: cells });
// blank line cell for free-text fields
const blankCell = (label, shade=false, colSpan=1) => new TableCell({
columnSpan: colSpan,
shading: shade ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({
children:[
new TextRun({ text:label + ": _______________________________", font:"Times New Roman", size:20 })
]
})]
});
// ═══════════════════════════════════════════════════════════════════════════
const doc = new Document({
numbering:{ config: numberingConfig },
styles:{
default:{ document:{ run:{ font:"Times New Roman", size:24 } } },
paragraphStyles:[
{ id:"Heading1", name:"Heading 1", basedOn:"Normal", next:"Normal", quickFormat:true,
run:{ size:30, bold:true, font:"Times New Roman", color:"000000" },
paragraph:{ spacing:{ before:360, after:240 }, outlineLevel:0, alignment:AlignmentType.CENTER } },
{ id:"Heading2", name:"Heading 2", basedOn:"Normal", next:"Normal", quickFormat:true,
run:{ size:26, bold:true, font:"Times New Roman", color:HDR1 },
paragraph:{ spacing:{ before:300, after:180 }, outlineLevel:1 } }
]
},
sections:[{
properties:{
page:{
size:{ width:11906, height:16838 },
margin:{ top:1260, right:1260, bottom:1260, left:1620 }
}
},
children:[
// ════════════════════════════════════════════════════════════════════
// PAGE 1 - TITLE
// ════════════════════════════════════════════════════════════════════
h1("PTOSIS AND AMBLYOPIA ASSESSMENT PROTOCOL"),
new Paragraph({
alignment:AlignmentType.CENTER, spacing:{ after:120 },
children:[new TextRun({ text:"Clinical Evaluation Proforma & Detailed Methodology", bold:true, size:26, font:"Times New Roman" })]
}),
new Paragraph({
alignment:AlignmentType.CENTER, spacing:{ after:600 },
children:[new TextRun({ text:"Department of Ophthalmology", italics:true, size:24, font:"Times New Roman" })]
}),
// ════════════════════════════════════════════════════════════════════
// PART A - CLINICAL PROFORMA
// ════════════════════════════════════════════════════════════════════
new Paragraph({
alignment:AlignmentType.CENTER, spacing:{ before:0, after:240 },
shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new TextRun({ text:"PART A - CLINICAL DATA COLLECTION PROFORMA", bold:true, size:26, color:"FFFFFF", font:"Times New Roman" })]
}),
// Patient ID box
caption("Patient Identification"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:25, type:WidthType.PERCENTAGE }, shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new Paragraph({ children:[new TextRun({ text:"Patient Code / ID", bold:true, color:"FFFFFF", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"________________________", font:"Times New Roman", size:20 })] })] }),
new TableCell({ width:{ size:20, type:WidthType.PERCENTAGE }, shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new Paragraph({ children:[new TextRun({ text:"Date", bold:true, color:"FFFFFF", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"____/____/________", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Name (initials only)", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"________________________", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Examiner", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"________________________", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp2(),
// ─── SECTION 1: HISTORY ───────────────────────────────────────────
new Paragraph({
spacing:{ before:0, after:120 },
shading:{ type:ShadingType.CLEAR, fill:HDR2 },
children:[new TextRun({ text:" SECTION 1 - HISTORY TAKING", bold:true, size:24, color:"FFFFFF", font:"Times New Roman" })]
}),
caption("1.1 Age at Presentation"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:30, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"Age", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"_______ years _______ months", font:"Times New Roman", size:20 })] })] }),
new TableCell({ width:{ size:20, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"Sex", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Male \u2610 Female", font:"Arial", size:20 })
] })] }),
]})
]}),
sp(),
caption("1.2 Duration and Onset of Ptosis"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:30, type:WidthType.PERCENTAGE }, shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Duration of ptosis", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"_______ years _______ months", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Onset", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Congenital (present at/shortly after birth) \u2610 Acquired", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Course", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Static \u2610 Progressive \u2610 Intermittent / Fatigable", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Laterality", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Right \u2610 Left \u2610 Bilateral (symmetric) \u2610 Bilateral (asymmetric)", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Jaw-winking phenomenon", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Present \u2610 Absent \u2610 Not assessed", font:"Arial", size:20 })
] })] }),
]}),
]}),
sp(),
caption("1.3 Family History"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:40, type:WidthType.PERCENTAGE },
children:[new Paragraph({ children:[new TextRun({ text:"Family history of ptosis", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Yes (relation: _______________) \u2610 No \u2610 Unknown", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Family history of amblyopia", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Yes (relation: _______________) \u2610 No \u2610 Unknown", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Family history of strabismus", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Yes (relation: _______________) \u2610 No \u2610 Unknown", font:"Arial", size:20 })
] })] }),
]}),
]}),
sp(),
caption("1.4 Past Ocular and Systemic History"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:40, type:WidthType.PERCENTAGE },
children:[new Paragraph({ children:[new TextRun({ text:"Previous ocular diagnosis", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"________________________________________", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Systemic conditions", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Myasthenia gravis \u2610 Horner's syndrome \u2610 Third nerve palsy \u2610 Blepharophimosis syndrome \u2610 Other: ________", font:"Arial", size:18 })
] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Medications", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"________________________________________", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Birth / perinatal history", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Normal \u2610 Forceps/vacuum delivery \u2610 Birth trauma \u2610 Prematurity: _____ weeks", font:"Arial", size:18 })
] })] }),
]}),
]}),
sp(),
caption("1.5 History of Previous Intervention"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:40, type:WidthType.PERCENTAGE },
children:[new Paragraph({ children:[new TextRun({ text:"Previous ptosis surgery", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Yes (procedure: _____________ date: ________) \u2610 No", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Patching/amblyopia therapy", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Yes (duration: _________) \u2610 No \u2610 Compliance: \u2610 Good \u2610 Poor", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Spectacle correction", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Yes (type: ___________________) \u2610 No", font:"Arial", size:20 })
] })] }),
]}),
]}),
sp2(),
// ─── SECTION 2: OCULAR EXAMINATION ───────────────────────────────
new Paragraph({
spacing:{ before:0, after:120 },
shading:{ type:ShadingType.CLEAR, fill:HDR2 },
children:[new TextRun({ text:" SECTION 2 - OCULAR EXAMINATION", bold:true, size:24, color:"FFFFFF", font:"Times New Roman" })]
}),
caption("2.1 Visual Acuity Testing"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[
hc("",15), hc("Right Eye (RE)",28), hc("Left Eye (LE)",28), hc("Method Used",29)
]}),
new TableRow({ children:[
tc("Unaided VA",false,false,true), tc("6/ _____ (LogMAR _____)"), tc("6/ _____ (LogMAR _____)"), tc(""),
]}),
new TableRow({ children:[
tc("BCVA",true,false,true), tc("6/ _____ (LogMAR _____)"), tc("6/ _____ (LogMAR _____)"),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Snellen\n\u2610 Cardiff cards\n\u2610 Teller acuity\n\u2610 HOTV\n\u2610 Lea symbols", font:"Times New Roman", size:18 })
] })] }),
]}),
new TableRow({ children:[
tc("Fixation pattern"), tc("\u2610 Central \u2610 Steady \u2610 Maintained"), tc("\u2610 Central \u2610 Steady \u2610 Maintained"), tc("Preferential looking"),
]}),
]}),
sp(),
caption("2.2 Refraction"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[ hc("",15), hc("Right Eye",28), hc("Left Eye",28), hc("Notes",29) ] }),
new TableRow({ children:[
tc("Type",false,false,true),
new TableCell({ columnSpan:2, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Cycloplegic refraction (children) \u2610 Manifest refraction (adults/cooperative)", font:"Arial", size:20 })
] })] }),
tc(""),
]}),
new TableRow({ children:[
tc("Cycloplegic agent",true,false,true),
new TableCell({ columnSpan:2, shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Cyclopentolate 1% \u2610 Atropine 1% \u2610 Tropicamide 1%", font:"Arial", size:20 })
] })] }),
tc("",true),
]}),
new TableRow({ children:[
tc("Sphere",false,false,true), tc("_______D"), tc("_______D"), tc(""),
]}),
new TableRow({ children:[
tc("Cylinder",true,false,true), tc("_______D x ______°"), tc("_______D x ______°"), tc("",true),
]}),
new TableRow({ children:[
tc("SE",false,false,true), tc("_______D"), tc("_______D"), tc(""),
]}),
new TableRow({ children:[
tc("Anisometropia",true,false,true),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Yes (>1.5D sphere or >1.0D cylinder) \u2610 No", font:"Arial", size:20 })
] })] }),
tc("",true), tc("",true),
]}),
]}),
sp(),
caption("2.3 Ptosis Grading"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[ hc("Parameter",30), hc("Right Eye",23), hc("Left Eye",23), hc("Normal Reference",24) ] }),
tr([["MRD1 (mm) - Upper lid to corneal reflex",""],["_______mm","c"],["_______mm","c"],["4-5 mm","c"]]),
tr([["MRD2 (mm) - Lower lid to corneal reflex",""],["_______mm","c"],["_______mm","c"],["5-6 mm","c"]], true),
tr([["Palpebral Fissure Height (PFH) (mm)",""],["_______mm","c"],["_______mm","c"],["8-11 mm","c"]]),
tr([["Levator Function (LF) (mm)",""],["_______mm","c"],["_______mm","c"],[">8mm good; 5-7mm fair; <4mm poor","c"]], true),
new TableRow({ children:[
tc("Ptosis Severity",false,false,true),
new TableCell({ columnSpan:3, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Mild (MRD1 2-3mm) \u2610 Moderate (MRD1 1-2mm) \u2610 Severe (MRD1 < 1mm or 0 / negative)", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
tc("Bell's Phenomenon",true,false,true),
new TableCell({ columnSpan:3, shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Present (positive) \u2610 Absent (negative) \u2610 Partial", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
tc("Synkinesis (jaw-winking)",false,false,true),
new TableCell({ columnSpan:3, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Present (grade: \u2610 mild <2mm \u2610 moderate 2-5mm \u2610 severe >5mm) \u2610 Absent", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
tc("Upper lid crease",true,false,true),
tc("\u2610 Present \u2610 Absent ht: ___mm",true), tc("\u2610 Present \u2610 Absent ht: ___mm",true), tc("Absent in congenital ptosis",true),
]}),
new TableRow({ children:[
tc("Lid lag on downgaze",false,false,true),
new TableCell({ columnSpan:3, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Present (RE) \u2610 Present (LE) \u2610 Absent", font:"Arial", size:20 })
] })] }),
]}),
]}),
sp(),
caption("2.4 Cover Test - Strabismus Assessment"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[ hc("Test",30), hc("Distance (6m)",35), hc("Near (33cm)",35) ] }),
tr([["Cover-Uncover Test",""],["____________",""],["____________",""]]),
tr([["Alternate Cover Test",""],["____________",""],["____________",""]], true),
tr([["Prism Cover Test (PD)",""],["____________",""],["____________",""]]),
new TableRow({ children:[
tc("Type of deviation",true,false,true),
new TableCell({ columnSpan:2, shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Orthophoria \u2610 Esotropia \u2610 Exotropia \u2610 Hypertropia \u2610 Hypotropia", font:"Arial", size:20 })
] })] }),
]}),
]}),
sp(),
caption("2.5 Fundus Examination"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[ hc("",20), hc("Right Eye",40), hc("Left Eye",40) ] }),
tr([["Disc",false],["WNL / Abnormal: ___________",""],["WNL / Abnormal: ___________",""]]),
tr([["Macula",true],["WNL / Abnormal: ___________",""],["WNL / Abnormal: ___________",""]], true),
tr([["Vessels",false],["WNL / Abnormal: ___________",""],["WNL / Abnormal: ___________",""]]),
tr([["Periphery",true],["WNL / Abnormal: ___________",""],["WNL / Abnormal: ___________",""]], true),
tr([["Posterior segment pathology",false],[" \u2610 None \u2610 Present: ___________",""],[" \u2610 None \u2610 Present: ___________",""]]),
]}),
sp(),
caption("2.6 Amblyopia Assessment"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[ hc("Criterion",55), hc("Result",22), hc("Met?",23) ] }),
tr([["BCVA worse than 6/9 in either eye",""],["RE: ___ LE: ___",""],[" \u2610 Yes \u2610 No",""]]),
tr([[">=2 line difference in BCVA between eyes (no anatomical cause)",""],["Difference: ___ lines",""],[" \u2610 Yes \u2610 No",""]], true),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:HDR1 }, children:[new Paragraph({ children:[
new TextRun({ text:"AMBLYOPIA DIAGNOSIS", bold:true, color:"FFFFFF", font:"Times New Roman", size:20 })
] })] }),
new TableCell({ columnSpan:2, shading:{ type:ShadingType.CLEAR, fill:"FFF2CC" }, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Confirmed \u2610 Not present \u2610 Suspected - further review needed", font:"Arial", size:20, bold:true })
] })] }),
]}),
]}),
sp2(),
// ─── SECTION 3: CLASSIFICATION OF AMBLYOPIA ──────────────────────
new Paragraph({
spacing:{ before:0, after:120 },
shading:{ type:ShadingType.CLEAR, fill:HDR2 },
children:[new TextRun({ text:" SECTION 3 - CLASSIFICATION OF AMBLYOPIA (if present)", bold:true, size:24, color:"FFFFFF", font:"Times New Roman" })]
}),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[ hc("Type",30), hc("Mechanism",45), hc("Present?",25) ] }),
tr([["Deprivation amblyopia",""],["Visual deprivation due to ptosis causing occlusion of visual axis / cataract / corneal opacity",""],[" \u2610 Yes \u2610 No",""]]),
tr([["Refractive amblyopia",""],["Uncorrected significant refractive error (anisometropic or bilateral high refractive error)",""],[" \u2610 Yes \u2610 No",""]], true),
tr([["Strabismic amblyopia",""],["Suppression of image from deviating eye due to strabismus",""],[" \u2610 Yes \u2610 No",""]]),
tr([["Mixed type",""],["Combination of two or more mechanisms (e.g., deprivation + refractive)",""],[" \u2610 Yes \u2610 No",""]], true),
new TableRow({ children:[
tc("Final Classification",false,false,true),
new TableCell({ columnSpan:2, shading:{ type:ShadingType.CLEAR, fill:"FFF2CC" }, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Deprivation \u2610 Refractive \u2610 Strabismic \u2610 Mixed \u2610 None", font:"Arial", size:20, bold:true })
] })] }),
]}),
]}),
sp2(),
// ─── SECTION 4: TYPE OF PTOSIS ───────────────────────────────────
new Paragraph({
spacing:{ before:0, after:120 },
shading:{ type:ShadingType.CLEAR, fill:HDR2 },
children:[new TextRun({ text:" SECTION 4 - TYPE OF PTOSIS", bold:true, size:24, color:"FFFFFF", font:"Times New Roman" })]
}),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[ hc("Type",28), hc("Key Diagnostic Features",50), hc("Confirmed?",22) ] }),
tr([["Congenital Simple Ptosis",""],["Reduced LF; absent upper lid crease; lid lag on downgaze; no synkinesis; no systemic features; most common type",""],[" \u2610 Yes \u2610 No",""]]),
tr([["Marcus Gunn Jaw-Winking",""],["Congenital ptosis with lid elevation on ipsilateral pterygoid muscle activation (chewing, mouth opening, jaw movement)",""],[" \u2610 Yes \u2610 No",""]], true),
tr([["Blepharophimosis Syndrome",""],["Bilateral ptosis + telecanthus + epicanthus inversus + lateral ectropion; autosomal dominant; FOXL2 mutation",""],[" \u2610 Yes \u2610 No",""]]),
tr([["Myasthenia Gravis",""],["Fatigable, variable ptosis; diurnal variation (worse in evening); positive ice test / Tensilon test; anti-AChR antibodies",""],[" \u2610 Yes \u2610 No",""]], true),
tr([["Third Nerve Palsy",""],["Ptosis + exotropia + hypotropia + mydriasis; reduced adduction, elevation, depression; rule out intracranial cause",""],[" \u2610 Yes \u2610 No",""]]),
tr([["Horner's Syndrome",""],["Mild ptosis + miosis + anhidrosis (classic triad); lower lid inverse ptosis; cocaine / apraclonidine / hydroxyamphetamine test",""],[" \u2610 Yes \u2610 No",""]], true),
tr([["Aponeurotic Ptosis",""],["Acquired; good LF (>12mm); high/absent lid crease; thin upper lid; deep upper sulcus; age-related or post-surgical/trauma",""],[" \u2610 Yes \u2610 No",""]]),
new TableRow({ children:[
tc("FINAL PTOSIS DIAGNOSIS",false,false,true),
new TableCell({ columnSpan:2, shading:{ type:ShadingType.CLEAR, fill:"FFF2CC" }, children:[new Paragraph({ children:[
new TextRun({ text:"Type: _______________________________ Laterality: \u2610 RE \u2610 LE \u2610 Bilateral", font:"Times New Roman", size:20, bold:true })
] })] }),
]}),
]}),
sp2(),
// ─── SECTION 5: ADDITIONAL INVESTIGATIONS ────────────────────────
new Paragraph({
spacing:{ before:0, after:120 },
shading:{ type:ShadingType.CLEAR, fill:HDR2 },
children:[new TextRun({ text:" SECTION 5 - ADDITIONAL INVESTIGATIONS (if indicated)", bold:true, size:24, color:"FFFFFF", font:"Times New Roman" })]
}),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[ hc("Investigation",35), hc("Indication",40), hc("Result / Status",25) ] }),
tr([["Ice test",""],["Suspected myasthenia gravis - improved ptosis after cold application",""],[" \u2610 +ve \u2610 -ve \u2610 N/A",""]]),
tr([["Apraclonidine 0.5% test",""],["Horner's syndrome - reversal of anisocoria confirms sympathetic denervation",""],[" \u2610 +ve \u2610 -ve \u2610 N/A",""]], true),
tr([["Anti-AChR / anti-MuSK antibodies",""],["Myasthenia gravis confirmation",""],["Result: ________________________",""]]),
tr([["CT/MRI brain and orbit",""],["Third nerve palsy; suspected intracranial aneurysm/tumor; Horner's - central cause",""],[" \u2610 Done \u2610 Pending \u2610 N/A",""]], true),
tr([["Electromyography (EMG)",""],["Marcus Gunn / complex synkinesis assessment",""],[" \u2610 Done \u2610 Pending \u2610 N/A",""]]),
tr([["Genetic testing (FOXL2)",""],["Blepharophimosis syndrome",""],[" \u2610 Done \u2610 Pending \u2610 N/A",""]], true),
]}),
sp2(),
// ─── EXAMINER NOTES ───────────────────────────────────────────────
new Paragraph({
spacing:{ before:0, after:120 },
shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new TextRun({ text:" EXAMINER SUMMARY AND PLAN", bold:true, size:24, color:"FFFFFF", font:"Times New Roman" })]
}),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:30, type:WidthType.PERCENTAGE },
children:[new Paragraph({ children:[new TextRun({ text:"Summary diagnosis", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"________________________________________________________", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Amblyopia risk category", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 High risk \u2610 Moderate risk \u2610 Low risk \u2610 Amblyopia confirmed", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Management plan", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[
new TextRun({ text:"\u2610 Spectacle correction \u2610 Patching \u2610 Surgical referral \u2610 Systemic referral \u2610 Follow-up: _______ months", font:"Arial", size:20 })
] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Next review date", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"____/____/________", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp2(), sp2(),
// ════════════════════════════════════════════════════════════════════
// PART B - DETAILED METHODOLOGY
// ════════════════════════════════════════════════════════════════════
new Paragraph({
alignment:AlignmentType.CENTER, spacing:{ before:0, after:240 },
shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new TextRun({ text:"PART B - DETAILED EXPLANATION OF ASSESSMENT METHODOLOGY", bold:true, size:26, color:"FFFFFF", font:"Times New Roman" })]
}),
// ── 1. HISTORY TAKING ─────────────────────────────────────────────
h2("1. History Taking"),
p("A thorough and systematic history is the cornerstone of the clinical evaluation of ptosis. It guides the differential diagnosis, informs the examination, and identifies risk factors for amblyopia before formal visual testing is performed."),
h3("1.1 Age at Presentation"),
p("Age at presentation is a critical datum because it directly determines the risk of amblyopia and the urgency of intervention. The visual system undergoes rapid development during the sensitive period (from birth to approximately 7-8 years, with the greatest plasticity in the first 3 years of life). Ptosis causing visual axis obstruction or inducing anisometropia or astigmatism during this period will impair development of normal cortical visual processing, resulting in deprivation or refractive amblyopia. The younger the child at onset, the greater the amblyogenic potential. Conversely, ptosis presenting after the sensitive period carries minimal amblyopia risk but may have significant cosmetic, psychosocial, and functional implications. Age also influences the surgical approach - levator resection or frontalis suspension are selected based on levator function, which correlates with age of onset and subtype."),
h3("1.2 Duration and Onset of Ptosis"),
p("Distinguishing congenital from acquired ptosis is of paramount diagnostic importance. Congenital ptosis is present at or shortly after birth and is most commonly due to localized myogenic dysgenesis of the levator palpebrae superioris (simple congenital ptosis), representing the most frequent form. Acquired ptosis in children has a broader differential including aponeurotic dehiscence, neurogenic causes (third nerve palsy, Horner's syndrome), and neuromuscular junction disorders (myasthenia gravis). The course of the ptosis - static, progressive, or intermittent and fatigable - provides essential diagnostic clues. Progressive ptosis raises concern for a compressive or infiltrative process, while fatigable ptosis fluctuating through the day (worse in the evening, improved after rest or sleep) is pathognomonic of myasthenia gravis. The jaw-winking phenomenon (Marcus Gunn synkinesis) should be specifically enquired about by asking caregivers whether the drooping eyelid moves or elevates when the child chews, sucks, or moves the jaw sideways."),
h3("1.3 Family History of Ptosis or Amblyopia"),
p("A positive family history of ptosis, amblyopia, or strabismus is sought to identify heritable forms. Blepharophimosis-ptosis-epicanthus inversus syndrome (BPES) is an autosomal dominant condition caused by FOXL2 gene mutations, in which a positive family history (particularly in a parent) supports the diagnosis and mandates genetic counseling. A family history of amblyopia in a sibling or parent raises the clinical suspicion that the current child may be at increased risk and heightens the threshold for amblyopia screening. A family history of myasthenia gravis, third nerve palsy, or other neuro-ophthalmic conditions may also be relevant."),
h3("1.4 Past Ocular and Systemic History"),
p("The past medical history is explored to identify conditions that may be causally related to the ptosis or that complicate its management. Systemically, the clinician must enquire about known diagnoses of myasthenia gravis (which may present with ptosis and external ophthalmoplegia), Horner's syndrome (which in a child mandates urgent investigation to exclude neuroblastoma), third nerve palsy, and syndromic conditions such as blepharophimosis syndrome or CHARGE syndrome. Birth and perinatal history should be recorded, as forceps delivery can cause birth trauma resulting in mechanical lid injury or Horner's syndrome from brachial plexus injury. Previous ocular history including strabismus surgery, cataract surgery, or patching therapy should be documented."),
h3("1.5 History of Any Previous Intervention"),
p("Prior interventions directly affect both the clinical examination findings and the surgical plan. Previous ptosis surgery may have altered the levator anatomy, produced scarring, or resulted in lagophthalmos - all of which affect re-operation planning. Prior or ongoing patching therapy for amblyopia, its duration, the eye patched, and the degree of caregiver and child compliance should be recorded. Compliance with patching is frequently poor and strongly determines outcome; non-compliance is a major cause of treatment failure. The type and duration of spectacle wear should also be documented."),
// ── 2. OCULAR EXAMINATION ─────────────────────────────────────────
h2("2. Ocular Examination"),
h3("2.1 Visual Acuity Testing"),
p("Visual acuity is the single most important measurement in the assessment of ptosis in children because it quantifies the functional impact of the lid anomaly on vision and determines whether amblyopia is present or at risk of developing. The method of testing must be age-appropriate:"),
bulletItem("Infants under 6 months: preferential looking (Teller acuity cards) or visually evoked potentials (VEP) where available."),
bulletItem("Aged 6 months to 2 years: Cardiff acuity cards, fixation behavior assessment (central, steady, maintained - CSM)."),
bulletItem("Aged 2-3 years: Lea symbols or HOTV matching chart."),
bulletItem("Aged 3 years and above: Snellen chart (or logMAR equivalent) for cooperative children."),
p("Results should be recorded in both Snellen fraction and LogMAR notation. Monocular acuity must be measured with the fellow eye occluded. Any resistance to occlusion of one eye during testing (occlusion resistance) suggests that acuity in the fellow eye is reduced, providing a behavioral indicator of amblyopia even before formal measurement."),
h3("2.2 Refraction"),
p("Refraction is essential because significant refractive errors - particularly anisometropia (>1.50 diopters spherical equivalent or >1.00 diopter cylinder difference between eyes) and high bilateral refractive errors - are independent causes of amblyopia. In ptosis, the mechanical effect of the drooping lid on the cornea can induce significant astigmatism (typically with-the-rule in the axis corresponding to the lid pressure), which may be the primary amblyogenic mechanism even when the visual axis is not completely occluded."),
p("Cycloplegic refraction is mandatory in children to paralyze accommodation and obtain accurate objective refraction. Cyclopentolate 1% (one drop, repeated after 5 minutes) is the standard agent for cycloplegia in most children. Atropine 1% (applied as drops or ointment for 3 days prior to the appointment) provides deeper and more prolonged cycloplegia and is preferred in children with dark irides, those under 1 year, or when cyclopentolate fails to achieve adequate cycloplegia. In cooperative adults and older adolescents, manifest refraction under standard conditions is sufficient."),
h3("2.3 Ptosis Grading"),
p("Precise, reproducible quantitative grading of ptosis is fundamental for surgical planning, outcome assessment, and research documentation. The standard measurements are:"),
bulletItem("Margin Reflex Distance 1 (MRD1): The distance in millimeters from the corneal light reflex (with a pen torch held at the patient's eye level) to the central upper lid margin, measured with the patient in primary gaze. Normal is 4-5 mm. A reduced MRD1 directly quantifies the degree of ptosis. A zero or negative MRD1 indicates the upper lid is covering or below the pupillary axis."),
bulletItem("Margin Reflex Distance 2 (MRD2): The distance from the corneal light reflex to the central lower lid margin. Normal is 5-6 mm. MRD2 helps identify lower lid retraction or inferior displacement."),
bulletItem("Palpebral Fissure Height (PFH): The vertical distance between the upper and lower lid margins at the central pupil. Normal is 8-11 mm in adults; slightly less in young children. PFH = MRD1 + MRD2."),
bulletItem("Levator Function (LF): The single most important measurement for surgical planning. Measured as the total excursion of the upper lid from extreme downgaze to extreme upgaze, with the frontalis muscle eliminated by firm thumb pressure on the brow. Normal LF is >12 mm (excellent). LF 8-12 mm is good; 5-7 mm is fair; <4 mm is poor. LF directly determines the surgical approach: good LF favors levator resection; poor LF necessitates frontalis suspension."),
bulletItem("Synkinesis (jaw-winking, Marcus Gunn phenomenon): Any abnormal lid movement co-occurring with jaw or pterygoid muscle activation is carefully observed and graded by the degree of lid excursion (mild <2 mm; moderate 2-5 mm; severe >5 mm)."),
bulletItem("Bell's phenomenon: The upward and outward rotation of the globe on attempted lid closure. A positive Bell's phenomenon is protective of the cornea during sleep and is reassuring for surgical planning. A negative Bell's phenomenon (globe rolls down or does not rotate) increases the risk of exposure keratopathy post-operatively and influences the choice and magnitude of surgery."),
h3("2.4 Cover Test - Assessment for Strabismus"),
p("Strabismus is assessed using the cover-uncover test (to detect manifest deviation, or tropia) and the alternate cover test (to detect the total deviation including the phoric component). The prism-and-cover test quantifies the magnitude of deviation in prism diopters. Strabismus is of direct relevance in ptosis assessment for two reasons: first, strabismus is an independent cause of amblyopia; second, some ptosis subtypes are inherently associated with ocular motility abnormalities (third nerve palsy causes restrictive exotropia and hypotropia; Horner's syndrome may cause slight hypotropia). The presence of strabismus alters both the amblyopia management plan and the ptosis surgical strategy."),
h3("2.5 Fundus Examination"),
p("Dilated fundus examination is performed to exclude posterior segment pathology that could independently reduce visual acuity and potentially confound the assessment of amblyopia. Optic nerve hypoplasia, posterior pole coloboma, macular dysplasia, or other retinal abnormalities may be present in syndromic forms of ptosis or as comorbidities. If posterior segment pathology is identified, it should be documented and its contribution to the visual acuity reduction assessed relative to the amblyogenic factors."),
h3("2.6 Assessment for Amblyopia"),
p("Amblyopia is defined functionally as a reduction in best-corrected visual acuity in one or both eyes that is not attributable to structural ocular disease, arising from abnormal visual experience during the sensitive period of visual development. The two standard clinical criteria for diagnosing amblyopia used in this protocol are:"),
bulletItem("Best-corrected visual acuity (BCVA) worse than 6/9 (equivalent to LogMAR 0.18) in either eye, after optimal refractive correction."),
bulletItem("A difference of two or more Snellen lines (>0.2 LogMAR) in BCVA between the two eyes in the absence of an anatomical or structural explanation."),
p("It is important that both criteria are applied after full refractive correction, as uncorrected refractive error alone may reduce Snellen acuity without representing true amblyopia. Additionally, the absence of an anatomical cause (posterior segment pathology, media opacity) must be confirmed before attributing reduced acuity to amblyopia."),
// ── 3. CLASSIFICATION ─────────────────────────────────────────────
h2("3. Classification of Amblyopia"),
h3("3.1 Deprivation Amblyopia"),
p("Deprivation amblyopia results from physical obstruction of the visual axis during the sensitive period, preventing adequate visual stimulation of the developing visual cortex. In ptosis, severe drooping causing complete or near-complete occlusion of the pupil by the upper lid is the direct mechanism. This form of amblyopia is the most severe in terms of visual loss, the most difficult to treat, and responds least well to treatment if not identified and intervened upon early. Deprivation amblyopia due to unilateral ptosis is an ophthalmic emergency requiring urgent ptosis surgery followed by intensive occlusion therapy of the fellow eye."),
h3("3.2 Refractive Amblyopia"),
p("Refractive amblyopia results from uncorrected significant refractive error. In the context of ptosis, the lid may induce corneal astigmatism or anisometropia even without completely occluding the visual axis, particularly in high-grade ptosis or in ptosis associated with chalazion-like pressure on the cornea. Bilateral high refractive errors (hyperopia >3.0D, myopia >3.0D, or astigmatism >1.5D bilaterally) cause bilateral refractive amblyopia, while significant anisometropia (>1.5D spherical equivalent or >1.0D cylinder difference) causes unilateral refractive amblyopia in the more ametropic eye."),
h3("3.3 Strabismic Amblyopia"),
p("Strabismic amblyopia arises from suppression of the image of the deviating eye by the visual cortex to avoid diplopia. It occurs in the context of a manifest strabismus (tropia) during the sensitive period. In the setting of ptosis, strabismus may coexist as a separate entity or may be a feature of the underlying etiology (third nerve palsy, Horner's syndrome with small hypotropia). Strabismic amblyopia typically causes moderate-to-severe unilateral amblyopia and responds reasonably well to patching of the dominant eye if initiated during the sensitive period."),
h3("3.4 Mixed Type Amblyopia"),
p("Mixed amblyopia refers to the co-occurrence of more than one amblyogenic mechanism in the same eye, most commonly strabismic and refractive mechanisms operating simultaneously. In ptosis, deprivation and refractive mechanisms may coexist - for example, a child with severe congenital unilateral ptosis may have both a deprivation mechanism (visual axis occlusion) and a refractive mechanism (lid-induced corneal astigmatism causing anisometropia). Mixed amblyopia is more severe and less treatment-responsive than single-mechanism amblyopia, requiring simultaneous management of all contributing factors."),
// ── 4. TYPE OF PTOSIS ─────────────────────────────────────────────
h2("4. Types of Ptosis"),
h3("4.1 Congenital Simple Ptosis"),
p("Congenital simple ptosis is the most common form of childhood ptosis. It results from localized myogenic dysgenesis of the levator palpebrae superioris, in which normal striated muscle fibers are replaced by fibrous and adipose tissue to a variable degree. This causes not only reduced lid elevation (poor levator function) but also impaired lid relaxation in downgaze (lid lag on downgaze) - a pathognomonic feature that distinguishes it from acquired ptosis. The upper lid crease is typically absent or poorly formed due to the fibrous infiltration. The condition is usually unilateral but may be bilateral. Most cases are sporadic, but autosomal dominant inheritance occurs. Amblyopia from visual axis deprivation or induced astigmatism is the primary complication in childhood."),
h3("4.2 Marcus Gunn Jaw-Winking Ptosis"),
p("Marcus Gunn jaw-winking phenomenon (MGJW) is a congenital synkinesis between the fifth (trigeminal) and third (oculomotor) cranial nerves, accounting for approximately 5% of all congenital ptosis cases. A misdirected branch of the pterygoid division of the trigeminal nerve innervates the levator, causing the upper lid to elevate (wink) when the ipsilateral pterygoid muscles are activated - classically with jaw opening, lateral jaw movement, sucking, or chewing. The synkinesis is typically most pronounced in infancy and may reduce in severity with age but rarely disappears completely. Mild cases (lid excursion <2 mm) may require ptosis correction alone; severe cases may require bilateral levator disinsertion combined with frontalis suspension to achieve cosmetic symmetry."),
h3("4.3 Blepharophimosis-Ptosis-Epicanthus Inversus Syndrome (BPES)"),
p("BPES is an autosomal dominant condition caused by mutations in the FOXL2 gene on chromosome 3q23, characterized by the tetrad of: (1) bilateral severe ptosis with poor levator function; (2) blepharophimosis (reduced horizontal palpebral fissure width, typically 20-25 mm versus the normal 28-30 mm); (3) epicanthus inversus (skin fold running from the lower lid upward to the inner canthus); and (4) lateral ectropion of the lower lid. Type I BPES is associated with premature ovarian failure and infertility in affected females (due to the role of FOXL2 in ovarian development), making genetic counseling imperative. Type II BPES has purely ocular manifestations. Surgical management is staged: medial canthoplasty and Y-V epicanthoplasty first, followed by frontalis suspension for the ptosis."),
h3("4.4 Myasthenia Gravis"),
p("Myasthenia gravis (MG) is an autoimmune neuromuscular junction disorder in which antibodies against acetylcholine receptors (anti-AChR) or muscle-specific kinase (anti-MuSK) at the neuromuscular junction impair neuromuscular transmission. Ocular myasthenia (isolated to the extraocular muscles and levator) accounts for approximately 50% of MG presentations and may remain purely ocular or generalize to involve bulbar and limb muscles. The hallmark features are: fatigability (ptosis worsening with sustained upgaze or throughout the day, improving after rest or sleep); diurnal variation; and variability. The ice test (application of ice to the closed lid for 2 minutes producing temporary improvement in ptosis) is a simple, safe, non-pharmacological office test with high sensitivity. Anti-AChR antibody assay, repetitive nerve stimulation EMG, single-fiber EMG, and CT chest (to exclude thymoma) are key investigations. Systemic management with pyridostigmine, immunosuppression, thymectomy, or plasmapheresis is coordinated with neurology."),
h3("4.5 Third Nerve Palsy"),
p("Third cranial nerve (oculomotor nerve) palsy presents with a characteristic combination of: complete or near-complete ptosis (due to levator paralysis); exotropia and hypotropia (due to unopposed action of the lateral rectus and superior oblique); impaired adduction, elevation, and depression; and a fixed dilated pupil (if the pupillomotor fibers in the outer part of the nerve are involved). In a child, third nerve palsy is a neuro-ophthalmic emergency requiring urgent neuroimaging (CT or MRI of brain and orbit with angiography) to exclude a compressive intracranial aneurysm (typically at the posterior communicating artery), tumor, or other structural cause. Congenital third nerve palsy may occur and is associated with aberrant regeneration producing synkinetic movements. Ptosis surgery is deferred until strabismus has been addressed surgically and the neurological cause has been investigated and stabilized."),
h3("4.6 Horner's Syndrome"),
p("Horner's syndrome results from interruption of the three-neuron oculosympathetic pathway at any point from the hypothalamus to the orbit. The classic triad comprises: (1) mild ptosis of the upper lid (1-2 mm) due to paresis of Muller's muscle; (2) inverse ptosis of the lower lid (elevation of 0.5-1 mm due to loss of inferior Muller's muscle tone); and (3) ipsilateral miosis (smaller pupil due to loss of iris dilator tone), most prominent in dim illumination with the anisocoria exaggerated by darkness. Anhidrosis of the face is present if the lesion is pre-ganglionic. Diagnosis is confirmed pharmacologically with topical apraclonidine 0.5% (which reverses the anisocoria in Horner's syndrome due to denervation supersensitivity) or hydroxyamphetamine 1% (which differentiates pre- from post-ganglionic lesions). In a child, new-onset Horner's syndrome must be urgently investigated with chest and neck imaging to exclude neuroblastoma (the most feared cause in pediatric Horner's), carotid artery dissection, or mediastinal mass."),
h3("4.7 Aponeurotic Ptosis"),
p("Aponeurotic ptosis is the most common cause of ptosis in adults and results from dehiscence, disinsertion, or attenuation of the levator aponeurosis - the fibrous extension of the levator muscle that inserts into the tarsal plate. Characteristically: levator function is excellent (>12 mm) because the levator muscle itself is intact; the upper lid crease is elevated or absent; the upper lid sulcus is deep (due to retraction of the aponeurosis pulling the overlying skin superiorly); and the lid is thin and translucent. Precipitants include age-related degeneration, chronic contact lens wear, previous ocular surgery, eyelid surgery, or trauma. Surgical correction by levator aponeurosis advancement or repair is highly effective."),
// ── REFERENCES ────────────────────────────────────────────────────
h2("References"),
...[
"1. Kanski JJ, Bowling B. Kanski's Clinical Ophthalmology: A Systematic Approach. 10th ed. Elsevier; 2023. Eyelid Disorders, Chapter 1, pp. 1-40.",
"2. Friedman NJ, Kaiser PK, Pineda R. The Wills Eye Manual. 7th ed. Lippincott Williams & Wilkins; 2021. Ptosis, Section 6.5, pp. 290-295.",
"3. Hoyt CS, Taylor D (eds). Pediatric Ophthalmology and Strabismus. 4th ed. Elsevier Saunders; 2013.",
"4. Wright KW, Strube YNJ (eds). Pediatric Ophthalmology and Strabismus. 3rd ed. Oxford University Press; 2012.",
"5. Graziano RM, Cruz AAV. Blepharoptosis in children: management and amblyopia. J Pediatr Ophthalmol Strabismus. 2012;49(3):141-148.",
"6. Griepentrog GJ, Mohney BG. Amblyopia in childhood ptosis. Am J Ophthalmol. 2006;141(2):265-268.",
"7. Cates CA, Tyers AG. Results of levator excision followed by fascia lata brow suspension in patients with congenital and jaw-winking ptosis. Orbit. 2008;27(2):83-89.",
"8. Baldwin HC, Bhatt S. Ptosis in children: blepharoptosis, Marcus Gunn jaw-winking, blepharophimosis syndrome. Paediatr Child Health. 2007;17(7):271-276.",
"9. American Academy of Ophthalmology. Basic and Clinical Science Course (BCSC) Section 7: Orbit, Eyelids, and Lacrimal System. San Francisco: AAO; 2022-2023.",
"10. Repka MX, Kraker RT, Dean TW, et al. Acuity improvement with patching for amblyopia. Ophthalmology. 2014;121(9):1735-1741.",
].map(ref => new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line:320, before:0, after:160 },
indent: { left:720, hanging:720 },
children: [new TextRun({ text:ref, font:"Times New Roman", size:22 })]
}))
]
}]
});
Packer.toBuffer(doc).then(buf => {
const out = '/home/daytona/workspace/childhood-glaucoma/Ptosis_Amblyopia_Assessment_Protocol.docx';
fs.writeFileSync(out, buf);
console.log('Created:', out);
}).catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/childhood-glaucoma && node create_ptosis.js && python3 -c " import zipfile, os z = zipfile.ZipFile('Ptosis_Amblyopia_Assessment_Protocol.docx') size = os.path.getsize('Ptosis_Amblyopia_Assessment_Protocol.docx') print('Valid DOCX -', len(z.namelist()), 'internal files') print(f'File size: {size/1024:.1f} KB') "
cd /home/daytona/workspace/childhood-glaucoma && sed -i 's/bulletItem(/bi(/g; s/numItem(/ni(/g; s/alphaItem(/sbi(/g' create_ptosis.js && node create_ptosis.js && python3 -c " import zipfile, os z = zipfile.ZipFile('Ptosis_Amblyopia_Assessment_Protocol.docx') size = os.path.getsize('Ptosis_Amblyopia_Assessment_Protocol.docx') print('Valid DOCX -', len(z.namelist()), 'internal files') print(f'File size: {size/1024:.1f} KB') "
cd /home/daytona/workspace/childhood-glaucoma && python3 -c " content = open('create_ptosis.js').read() content = content.replace('bulletItem(', 'bi(').replace('numItem(', 'ni(').replace('alphaItem(', 'sbi(') open('create_ptosis2.js', 'w').write(content) print('Done') " && node create_ptosis2.js && python3 -c " import zipfile, os z = zipfile.ZipFile('Ptosis_Amblyopia_Assessment_Protocol.docx') size = os.path.getsize('Ptosis_Amblyopia_Assessment_Protocol.docx') print('Valid DOCX -', len(z.namelist()), 'internal files') print(f'File size: {size/1024:.1f} KB') "
Ptosis Amblyopia Assessment Protocol
Word Document · DOCX
| Section | What it captures |
|---|---|
| Patient ID box | Code, date, examiner, name initials |
| S1 - History | Age/sex, ptosis duration/onset/course/laterality, jaw-winking, family history (ptosis/amblyopia/strabismus), systemic history, birth history, prior interventions |
| S2 - Ocular Exam | VA table (unaided + BCVA, both eyes, method used); Refraction table (cycloplegic agent, sphere, cylinder, SE, anisometropia); Ptosis grading table (MRD1, MRD2, PFH, LF, severity, Bell's, synkinesis, lid crease, lid lag); Cover test table; Fundus table; Amblyopia criteria table with final diagnosis box |
| S3 - Amblyopia classification | Deprivation / Refractive / Strabismic / Mixed - with mechanism column |
| S4 - Type of ptosis | All 7 types with key diagnostic features and confirmation checkbox |
| S5 - Investigations | Ice test, apraclonidine, antibodies, MRI, EMG, FOXL2 genetics |
| Examiner summary box | Final diagnosis, amblyopia risk, management plan, next review date |
what i gave you was example of what i want methods and materials section to be but make it just as lengthy but related to my thesis topic
~/childhood-glaucoma/create_full_methods.js
const {
Document, Packer, Paragraph, TextRun, AlignmentType,
HeadingLevel, LevelFormat, UnderlineType,
Table, TableRow, TableCell, WidthType, VerticalAlign, ShadingType,
BorderStyle
} = require('docx');
const fs = require('fs');
// ── Numbering ──────────────────────────────────────────────────────────────
const numberingConfig = [
{ reference: "decimal", levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } }, run: { font: "Times New Roman", size: 24 } } }] },
{ reference: "bullet", levels: [{ level: 0, format: LevelFormat.BULLET, text: "\u2022", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } }, run: { font: "Times New Roman", size: 24 } } }] },
{ reference: "sub-bullet", levels: [{ level: 0, format: LevelFormat.BULLET, text: "\u25AA", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 1080, hanging: 360 } }, run: { font: "Times New Roman", size: 22 } } }] }
];
// ── Colours ────────────────────────────────────────────────────────────────
const HDR1 = "1F3864";
const HDR2 = "2E75B6";
const ALT = "DEEAF1";
const GOLD = "FFF2CC";
// ── Helpers ────────────────────────────────────────────────────────────────
const sp = () => new Paragraph({ children:[new TextRun("")], spacing:{ before:0, after:100 } });
const sp2 = () => new Paragraph({ children:[new TextRun("")], spacing:{ before:0, after:260 } });
const p = (text, opts={}) => new Paragraph({
alignment: AlignmentType.JUSTIFIED,
spacing: { line:360, before:0, after:200 },
children: [new TextRun({ text, font:"Times New Roman", size:24, ...opts })]
});
const h1 = t => new Paragraph({
heading: HeadingLevel.HEADING_1, alignment: AlignmentType.CENTER,
spacing: { before:0, after:240 },
children: [new TextRun({ text:t, bold:true, size:30, font:"Times New Roman", color:"000000" })]
});
const h2 = t => new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before:380, after:180 },
children: [new TextRun({ text:t, bold:true, size:26, font:"Times New Roman", color:HDR1 })]
});
const h3 = t => new Paragraph({
spacing: { before:260, after:120 },
children: [new TextRun({ text:t, bold:true, underline:{ type:UnderlineType.SINGLE }, font:"Times New Roman", size:24, color:"000000" })]
});
const h4 = t => new Paragraph({
spacing: { before:200, after:80 },
children: [new TextRun({ text:t, bold:true, italics:true, font:"Times New Roman", size:24 })]
});
const ni = t => new Paragraph({ numbering:{ reference:"decimal", level:0 }, alignment:AlignmentType.JUSTIFIED,
spacing:{ line:340, before:60, after:100 }, children:[new TextRun({ text:t, font:"Times New Roman", size:24 })] });
const bi = t => new Paragraph({ numbering:{ reference:"bullet", level:0 }, alignment:AlignmentType.JUSTIFIED,
spacing:{ line:320, before:40, after:80 }, children:[new TextRun({ text:t, font:"Times New Roman", size:24 })] });
const sbi = t => new Paragraph({ numbering:{ reference:"sub-bullet", level:0 }, alignment:AlignmentType.JUSTIFIED,
spacing:{ line:300, before:40, after:60 }, children:[new TextRun({ text:t, font:"Times New Roman", size:22 })] });
const cap = t => new Paragraph({ spacing:{ before:0, after:100 },
children:[new TextRun({ text:t, bold:true, font:"Times New Roman", size:22 })] });
// ── Table helpers ──────────────────────────────────────────────────────────
const hc = (text, w, fill=HDR1) => new TableCell({
width: w ? { size:w, type:WidthType.PERCENTAGE } : undefined,
shading:{ type:ShadingType.CLEAR, fill },
verticalAlign: VerticalAlign.CENTER,
children:[new Paragraph({ alignment:AlignmentType.CENTER,
children:[new TextRun({ text, bold:true, color:"FFFFFF", font:"Times New Roman", size:20 })] })]
});
const tc = (text, shade=false, centre=false, bold=false) => new TableCell({
shading: shade ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ alignment: centre ? AlignmentType.CENTER : AlignmentType.LEFT,
children:[new TextRun({ text, font:"Times New Roman", size:20, bold })] })]
});
const tr = (cells, shade=false) => new TableRow({
children: cells.map(([t, s=false, c=false, b=false]) => tc(t, shade||s, c, b))
});
// checkbox helper
const cbCell = (items, shade=false) => new TableCell({
shading: shade ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ children: items.map((item,i) =>
new TextRun({ text: (i===0?"":"\u2003") + "\u2610 " + item, font:"Times New Roman", size:20 })
)})]
});
const blankField = (label, shade=false, colSpan=1) => new TableCell({
columnSpan: colSpan,
shading: shade ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ children:[
new TextRun({ text: label + ": ___________________________________", font:"Times New Roman", size:20 })
]})]
});
// section banner
const banner = t => new Paragraph({
spacing:{ before:0, after:160 },
shading:{ type:ShadingType.CLEAR, fill:HDR2 },
children:[new TextRun({ text:" " + t, bold:true, size:24, color:"FFFFFF", font:"Times New Roman" })]
});
// ═══════════════════════════════════════════════════════════════════════════
const doc = new Document({
numbering:{ config: numberingConfig },
styles:{
default:{ document:{ run:{ font:"Times New Roman", size:24 } } },
paragraphStyles:[
{ id:"Heading1", name:"Heading 1", basedOn:"Normal", next:"Normal", quickFormat:true,
run:{ size:30, bold:true, font:"Times New Roman", color:"000000" },
paragraph:{ spacing:{ before:360, after:240 }, outlineLevel:0, alignment:AlignmentType.CENTER } },
{ id:"Heading2", name:"Heading 2", basedOn:"Normal", next:"Normal", quickFormat:true,
run:{ size:26, bold:true, font:"Times New Roman", color:HDR1 },
paragraph:{ spacing:{ before:300, after:180 }, outlineLevel:1 } }
]
},
sections:[{
properties:{
page:{
size:{ width:11906, height:16838 },
margin:{ top:1260, right:1260, bottom:1260, left:1620 }
}
},
children:[
// ══════════════════════════════════════════════════════════════════
// TITLE
// ══════════════════════════════════════════════════════════════════
h1("DETERMINANTS OF DELAYED DIAGNOSIS IN CHILDHOOD GLAUCOMA"),
new Paragraph({
alignment:AlignmentType.CENTER, spacing:{ after:120 },
children:[new TextRun({ text:"Materials and Methods - Clinical Assessment Protocol", bold:true, size:26, font:"Times New Roman" })]
}),
new Paragraph({
alignment:AlignmentType.CENTER, spacing:{ after:600 },
children:[new TextRun({ text:"Department of Ophthalmology", italics:true, size:24, font:"Times New Roman" })]
}),
// ══════════════════════════════════════════════════════════════════
// PART A BANNER
// ══════════════════════════════════════════════════════════════════
new Paragraph({
alignment:AlignmentType.CENTER, spacing:{ before:0, after:300 },
shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new TextRun({ text:"PART A - CLINICAL DATA COLLECTION PROFORMA", bold:true, size:26, color:"FFFFFF", font:"Times New Roman" })]
}),
// ── Patient ID ─────────────────────────────────────────────────
cap("Patient Identification"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:22, type:WidthType.PERCENTAGE }, shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new Paragraph({ children:[new TextRun({ text:"Patient Code / ID", bold:true, color:"FFFFFF", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"______________________", font:"Times New Roman", size:20 })] })] }),
new TableCell({ width:{ size:18, type:WidthType.PERCENTAGE }, shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new Paragraph({ children:[new TextRun({ text:"Enrollment Date", bold:true, color:"FFFFFF", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"____/____/________", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Initials", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"______________________", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Examiner", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"______________________", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp2(),
// ══════════════════════════════════════════════════════════════════
// SECTION 1 - HISTORY TAKING
// ══════════════════════════════════════════════════════════════════
banner("SECTION 1 - HISTORY TAKING"),
// 1.1 Demographics
cap("1.1 Demographic Information"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:28, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"Age at diagnosis", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"_______ years _______ months", font:"Times New Roman", size:20 })] })] }),
new TableCell({ width:{ size:18, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"Sex", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Male \u2610 Female", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Residence", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Urban \u2610 Peri-urban \u2610 Rural", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Distance to eye clinic", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"_______ km", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Nationality / Ethnicity", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"______________________________", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Birth order", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"_______ of _______ siblings", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp(),
// 1.2 Caregiver details
cap("1.2 Primary Caregiver Information"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:30, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"Relationship to child", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Mother \u2610 Father \u2610 Grandparent \u2610 Other: ___________", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Caregiver education level", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"\u2610 None \u2610 Primary \u2610 Secondary \u2610 Tertiary / University", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Caregiver occupation", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"___________________________ \u2610 Employed \u2610 Unemployed", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Household monthly income", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Q1 (lowest) \u2610 Q2 \u2610 Q3 \u2610 Q4 \u2610 Q5 (highest)", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Health insurance coverage", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 None \u2610 Partial (government) \u2610 Full (private) \u2610 Unknown", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp(),
// 1.3 Symptom Timeline
cap("1.3 Symptom Onset and Timeline"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:35, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"Date caregiver first noticed a symptom", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"____/____/________ (age of child at that time: _____ months)", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"First symptom noticed by caregiver", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Excessive tearing / watering \u2610 Photophobia (light sensitivity) \u2610 Blepharospasm (eye squeezing/closing) \u2610 Cloudy / hazy cornea \u2610 Large or prominent eye \u2610 Eye asymmetry (one eye larger) \u2610 Poor fixation or vision \u2610 Redness \u2610 Other: ___________", font:"Times New Roman", size:18 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Date of first healthcare contact for this symptom", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"____/____/________", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Date of confirmed glaucoma diagnosis (specialist)", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"____/____/________", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:GOLD }, children:[new Paragraph({ children:[new TextRun({ text:"DIAGNOSTIC INTERVAL (calculated)", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:GOLD }, children:[new Paragraph({ children:[
new TextRun({ text:"_______ months \u2610 DELAYED (> 3 months) \u2610 TIMELY (\u2264 3 months)", bold:true, font:"Times New Roman", size:20 })
]})] }),
]}),
]}),
sp(),
// 1.4 Caregiver response
cap("1.4 Caregiver Response and Health-Seeking Behavior"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:38, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"Initial caregiver response to symptom", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Sought medical care within 1 week \u2610 Observed and waited \u2610 Attributed to benign cause \u2610 Consulted traditional/alternative healer \u2610 Other: ___________", font:"Times New Roman", size:18 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Reason for any delay in seeking care", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Thought it was normal \u2610 Financial barrier \u2610 Distance / transport \u2610 Told by another provider it was not serious \u2610 Fear / denial \u2610 Waiting list \u2610 Other: ___________", font:"Times New Roman", size:18 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Prior knowledge of glaucoma in children", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Yes (source: ___________________) \u2610 No \u2610 Unsure", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp(),
// 1.5 Caregiver awareness score
cap("1.5 Caregiver Glaucoma Awareness Questionnaire (10-Item Scale)"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("#",5), hc("Question",65), hc("Yes (1)",15), hc("No (0)",15)] }),
...[
"Have you ever heard of glaucoma before?",
"Did you know that glaucoma can affect children and infants?",
"Did you know that a large or prominent eye in a baby could be a sign of eye disease?",
"Did you know that a cloudy or hazy cornea in an infant requires urgent eye assessment?",
"Did you know that excessive tearing combined with light sensitivity in an infant could indicate raised eye pressure?",
"Did you know that glaucoma in children is treatable, especially if caught early?",
"Did you know that untreated childhood glaucoma can lead to permanent blindness?",
"Did you know that a child health or neonatal check should include an eye examination?",
"Did you know that a child with a family history of glaucoma has a higher risk of developing the condition?",
"Did you know that a pediatrician or GP can refer a child for specialist eye assessment?"
].map((q, i) => new TableRow({
children:[
new TableCell({ shading: i%2===1 ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ alignment:AlignmentType.CENTER, children:[new TextRun({ text:String(i+1), font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading: i%2===1 ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ children:[new TextRun({ text:q, font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading: i%2===1 ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ alignment:AlignmentType.CENTER, children:[new TextRun({ text:"\u2610", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading: i%2===1 ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ alignment:AlignmentType.CENTER, children:[new TextRun({ text:"\u2610", font:"Times New Roman", size:20 })] })] }),
]
})),
new TableRow({ children:[
new TableCell({ columnSpan:3, shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new Paragraph({ alignment:AlignmentType.RIGHT, children:[new TextRun({ text:"TOTAL SCORE (0-10)", bold:true, color:"FFFFFF", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:GOLD },
children:[new Paragraph({ alignment:AlignmentType.CENTER, children:[new TextRun({ text:"_______ / 10", bold:true, font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ columnSpan:4, shading:{ type:ShadingType.CLEAR, fill:ALT },
children:[new Paragraph({ children:[new TextRun({ text:"Category: \u2610 Low awareness (0-4) \u2610 Moderate awareness (5-7) \u2610 High awareness (8-10)", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp(),
// 1.6 Genetic / family
cap("1.6 Genetic and Family History"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:38, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"Parental consanguinity", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Yes (first cousins or closer) \u2610 No \u2610 Unknown", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Family history of childhood glaucoma", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Yes (relation: _______________, affected at age: ______) \u2610 No \u2610 Unknown", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Affected sibling(s)", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Yes (number: ____ ; earlier diagnosis known: \u2610 Yes \u2610 No) \u2610 No", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Genetic testing performed", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Yes (gene: ___________ ; result: ___________) \u2610 No \u2610 Pending", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp2(),
// ══════════════════════════════════════════════════════════════════
// SECTION 2 - REFERRAL PATHWAY
// ══════════════════════════════════════════════════════════════════
banner("SECTION 2 - HEALTHCARE REFERRAL PATHWAY"),
cap("2.1 First Healthcare Contact"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:38, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"First provider seen for glaucoma symptoms", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 General practitioner (GP) \u2610 General pediatrician \u2610 Emergency department \u2610 Optometrist \u2610 Community health worker \u2610 Traditional healer \u2610 Directly to ophthalmologist \u2610 Neonatal screening program \u2610 School vision screening", font:"Times New Roman", size:18 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Diagnosis given at first contact", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Nasolacrimal duct obstruction \u2610 Conjunctivitis \u2610 Corneal dystrophy \u2610 Birth trauma \u2610 Normal variant \u2610 Glaucoma (correct) \u2610 Other: ___________ \u2610 No diagnosis given", font:"Times New Roman", size:18 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Was a referral to ophthalmology given at first contact?", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Yes, immediately \u2610 Yes, after _______ visits \u2610 No referral made \u2610 Caregiver self-referred", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp(),
cap("2.2 Healthcare Visits Before Ophthalmology Referral"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("Visit #",8), hc("Provider Type",27), hc("Diagnosis Given",35), hc("Referral Made?",30)] }),
...[1,2,3,4].map((n, i) => new TableRow({
children:[
new TableCell({ shading: i%2===1 ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ alignment:AlignmentType.CENTER, children:[new TextRun({ text:String(n), font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading: i%2===1 ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ children:[new TextRun({ text:"____________________________", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading: i%2===1 ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ children:[new TextRun({ text:"____________________________", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading: i%2===1 ? { type:ShadingType.CLEAR, fill:ALT } : undefined,
children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Yes \u2610 No", font:"Times New Roman", size:20 })] })] }),
]
})),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:GOLD },
children:[new Paragraph({ alignment:AlignmentType.CENTER, children:[new TextRun({ text:"TOTAL", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ columnSpan:3, shading:{ type:ShadingType.CLEAR, fill:GOLD },
children:[new Paragraph({ children:[new TextRun({ text:"Total non-ophthalmology contacts before referral: _______ Misdiagnosis at primary care: \u2610 Yes \u2610 No", bold:true, font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp(),
cap("2.3 Referral to Ophthalmology"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:38, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"Source of ophthalmology referral", font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 GP \u2610 Pediatrician \u2610 Emergency dept \u2610 Optometrist \u2610 Caregiver self-referral \u2610 Neonatal screening \u2610 School screening \u2610 Other: ___________", font:"Times New Roman", size:18 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Waiting time: referral to first ophthalmology appointment", font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"_______ weeks \u2610 Emergency \u2610 Urgent (<2 wks) \u2610 Routine (>4 wks)", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp2(),
// ══════════════════════════════════════════════════════════════════
// SECTION 3 - OCULAR EXAMINATION
// ══════════════════════════════════════════════════════════════════
banner("SECTION 3 - OCULAR EXAMINATION AT DIAGNOSIS"),
cap("3.1 Visual Acuity"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("",15), hc("Right Eye (RE)",28), hc("Left Eye (LE)",28), hc("Method Used",29)] }),
tr([["Unaided VA",""],["6/ ___ (LogMAR ___)",""],["6/ ___ (LogMAR ___)",""],["",""]]),
tr([["BCVA",""],["6/ ___ (LogMAR ___)",""],["6/ ___ (LogMAR ___)",""],
["\u2610 Snellen \u2610 Cardiff \u2610 Teller \u2610 LEA \u2610 HOTV \u2610 PL",""]], true),
tr([["Fixation (infants)",""],
["\u2610 Central \u2610 Steady \u2610 Maintained",""],
["\u2610 Central \u2610 Steady \u2610 Maintained",""],
["Occlusion resistance: \u2610 Yes \u2610 No",""]]),
]}),
sp(),
cap("3.2 Intraocular Pressure (IOP)"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("Parameter",30), hc("Right Eye",23), hc("Left Eye",23), hc("Notes / Method",24)] }),
tr([["IOP at first visit (mmHg)",""],["_______ mmHg","c"],["_______ mmHg","c"],["Instrument: ____________________________",""]]),
tr([["IOP under GA (if applicable)",""],["_______ mmHg","c"],["_______ mmHg","c"],["Agent used: ____________________________",""]],true),
tr([["IOP measurement method",""],["",""],["",""],
["\u2610 Goldmann \u2610 Perkins \u2610 Tono-Pen \u2610 iCare \u2610 Non-contact",""]]),
tr([["IOP elevated (>21 mmHg)",""],
["\u2610 Yes \u2610 No","c"],
["\u2610 Yes \u2610 No","c"],
["Normal infant IOP: 10-12 mmHg",""]],true),
]}),
sp(),
cap("3.3 Corneal Examination"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("Finding",30), hc("Right Eye",35), hc("Left Eye",35)] }),
tr([["Horizontal corneal diameter (mm)",""],["_______ mm (>12mm before age 1: \u2610 Yes \u2610 No)",""],["_______ mm (>12mm before age 1: \u2610 Yes \u2610 No)",""]]),
tr([["Corneal clarity",""],
["\u2610 Clear \u2610 Mild haze \u2610 Moderate haze \u2610 Dense opacity",""],
["\u2610 Clear \u2610 Mild haze \u2610 Moderate haze \u2610 Dense opacity",""]], true),
tr([["Haab striae",""],
["\u2610 Present \u2610 Absent (number: ___)",""],
["\u2610 Present \u2610 Absent (number: ___)",""]]),
tr([["Corneal edema",""],
["\u2610 None \u2610 Epithelial \u2610 Stromal",""],
["\u2610 None \u2610 Epithelial \u2610 Stromal",""]], true),
tr([["Buphthalmos",""],
["\u2610 Present \u2610 Absent",""],
["\u2610 Present \u2610 Absent",""]]),
tr([["Corneal vascularization / scarring",""],
["\u2610 Present \u2610 Absent",""],
["\u2610 Present \u2610 Absent",""]], true),
]}),
sp(),
cap("3.4 Optic Disc and Cup Assessment"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("Parameter",30), hc("Right Eye",35), hc("Left Eye",35)] }),
tr([["Cup-to-disc ratio (C/D)",""],["_______ (>0.3 suspicious)","c"],["_______ (>0.3 suspicious)","c"]]),
tr([["C/D asymmetry (>0.2)",""],
["\u2610 Yes \u2610 No","c"],
["\u2610 Yes \u2610 No","c"]], true),
tr([["Optic disc pallor",""],
["\u2610 None \u2610 Temporal \u2610 Diffuse",""],
["\u2610 None \u2610 Temporal \u2610 Diffuse",""]]),
tr([["Method of assessment",""],["",""],
["\u2610 Indirect ophthalmoscopy \u2610 Slit-lamp + 90D \u2610 Under GA",""]],true),
]}),
sp(),
cap("3.5 Gonioscopy"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("Finding",30), hc("Right Eye",35), hc("Left Eye",35)] }),
tr([["Gonioscopy performed",""],
["\u2610 Yes \u2610 No","c"],
["\u2610 Yes \u2610 No","c"]]),
tr([["Angle grade (Shaffer)",""],["Grade: _____","c"],["Grade: _____","c"]],true),
tr([["Iris insertion",""],
["\u2610 Normal \u2610 High (anterior) \u2610 Flat \u2610 Concave",""],
["\u2610 Normal \u2610 High (anterior) \u2610 Flat \u2610 Concave",""]]),
tr([["Trabeculodysgenesis",""],
["\u2610 Present \u2610 Absent","c"],
["\u2610 Present \u2610 Absent","c"]],true),
tr([["Peripheral anterior synechiae",""],
["\u2610 Present \u2610 Absent","c"],
["\u2610 Present \u2610 Absent","c"]]),
]}),
sp(),
cap("3.6 Axial Length and Refraction"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("",25), hc("Right Eye",37), hc("Left Eye",38)] }),
tr([["Axial length (mm)",""],["_______ mm","c"],["_______ mm","c"]]),
tr([["Cycloplegic refraction (sphere)",""],["_______ D","c"],["_______ D","c"]],true),
tr([["Cycloplegic refraction (cylinder x axis)",""],["_______ D x ______°","c"],["_______ D x ______°","c"]]),
tr([["Spherical equivalent",""],["_______ D","c"],["_______ D","c"]],true),
tr([["Anisometropia",""],["\u2610 Yes (>1.5D SE) \u2610 No","c"],["-","c"]]),
]}),
sp2(),
// ══════════════════════════════════════════════════════════════════
// SECTION 4 - GLAUCOMA CLASSIFICATION
// ══════════════════════════════════════════════════════════════════
banner("SECTION 4 - CLASSIFICATION OF CHILDHOOD GLAUCOMA"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("Type",30), hc("Key Diagnostic Features",50), hc("Confirmed?",20)] }),
tr([["Primary Congenital Glaucoma (PCG) - True congenital",""],["IOP elevated in utero; presents at birth; buphthalmos at birth",""],[" \u2610 Yes \u2610 No",""]]),
tr([["Primary Congenital Glaucoma (PCG) - Infantile",""],["Onset < 3 years; classic triad; Haab striae; buphthalmos",""],[" \u2610 Yes \u2610 No",""]], true),
tr([["Juvenile Open-Angle Glaucoma (JOAG)",""],["Onset 3-16 years; open angle; no buphthalmos; often strong family history; MYOC mutation",""],[" \u2610 Yes \u2610 No",""]]),
tr([["Secondary - Sturge-Weber syndrome",""],["Port wine stain; diffuse choroidal hemangioma; raised episcleral venous pressure",""],[" \u2610 Yes \u2610 No",""]], true),
tr([["Secondary - Axenfeld-Rieger syndrome",""],["Posterior embryotoxon; iris strands; 50% glaucoma risk; PITX2/FOXC1",""],[" \u2610 Yes \u2610 No",""]]),
tr([["Secondary - Peters anomaly",""],["Central corneal opacity; iridocorneal adhesions; variable IOP elevation",""],[" \u2610 Yes \u2610 No",""]], true),
tr([["Secondary - Aniridia",""],["Bilateral; absence of iris; progressive trabecular dysfunction; PAX6",""],[" \u2610 Yes \u2610 No",""]]),
tr([["Secondary - Post-cataract surgery",""],["Glaucoma following congenital cataract extraction; aphakic or pseudophakic",""],[" \u2610 Yes \u2610 No",""]], true),
tr([["Secondary - Uveitic glaucoma",""],["Anterior/posterior uveitis; raised IOP; synechiae; corticosteroid-induced",""],[" \u2610 Yes \u2610 No",""]]),
tr([["Secondary - Traumatic",""],["Angle recession following blunt ocular trauma; hyphema",""],[" \u2610 Yes \u2610 No",""]], true),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:GOLD }, children:[new Paragraph({ children:[new TextRun({ text:"FINAL GLAUCOMA DIAGNOSIS", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ columnSpan:2, shading:{ type:ShadingType.CLEAR, fill:GOLD }, children:[new Paragraph({ children:[
new TextRun({ text:"Type: _______________________________ Laterality: \u2610 Unilateral (RE / LE) \u2610 Bilateral", bold:true, font:"Times New Roman", size:20 })
]})] }),
]}),
]}),
sp2(),
// ══════════════════════════════════════════════════════════════════
// SECTION 5 - AMBLYOPIA & OUTCOMES
// ══════════════════════════════════════════════════════════════════
banner("SECTION 5 - AMBLYOPIA ASSESSMENT AND VISUAL OUTCOMES"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("Parameter",45), hc("Right Eye",27), hc("Left Eye",28)] }),
tr([["Amblyopia present",""],
["\u2610 Yes \u2610 No \u2610 Suspect",""],
["\u2610 Yes \u2610 No \u2610 Suspect",""]]),
tr([["Type of amblyopia",""],
["\u2610 Deprivation \u2610 Refractive \u2610 Strabismic \u2610 Mixed",""],
["\u2610 Deprivation \u2610 Refractive \u2610 Strabismic \u2610 Mixed",""]], true),
tr([["Strabismus (cover test)",""],
["\u2610 Ortho \u2610 Esotropia \u2610 Exotropia \u2610 Other",""],
["Same",""]]),
tr([["BCVA at diagnosis",""],["6/ ___ (LogMAR ___)","c"],["6/ ___ (LogMAR ___)","c"]],true),
tr([["BCVA at 1-year follow-up",""],["6/ ___ (LogMAR ___)","c"],["6/ ___ (LogMAR ___)","c"]]),
tr([["IOP at 1-year follow-up",""],["_______ mmHg","c"],["_______ mmHg","c"]],true),
tr([["C/D ratio at 1-year follow-up",""],["_______","c"],["_______","c"]]),
]}),
sp2(),
// ══════════════════════════════════════════════════════════════════
// SECTION 6 - TREATMENT
// ══════════════════════════════════════════════════════════════════
banner("SECTION 6 - TREATMENT AND MANAGEMENT"),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ tableHeader:true, children:[hc("Treatment",40), hc("Performed?",20), hc("Date",20), hc("Eye",20)] }),
tr([["Medical therapy (topical/systemic)",""],
["\u2610 Yes \u2610 No","c"],["____/____/____","c"],
["\u2610 RE \u2610 LE \u2610 Both","c"]]),
tr([["Goniotomy",""],
["\u2610 Yes \u2610 No","c"],["____/____/____","c"],
["\u2610 RE \u2610 LE \u2610 Both","c"]],true),
tr([["Trabeculotomy",""],
["\u2610 Yes \u2610 No","c"],["____/____/____","c"],
["\u2610 RE \u2610 LE \u2610 Both","c"]]),
tr([["Trabeculectomy",""],
["\u2610 Yes \u2610 No","c"],["____/____/____","c"],
["\u2610 RE \u2610 LE \u2610 Both","c"]],true),
tr([["Glaucoma drainage device (GDD)",""],
["\u2610 Yes \u2610 No","c"],["____/____/____","c"],
["\u2610 RE \u2610 LE \u2610 Both","c"]]),
tr([["Cyclophotocoagulation",""],
["\u2610 Yes \u2610 No","c"],["____/____/____","c"],
["\u2610 RE \u2610 LE \u2610 Both","c"]],true),
tr([["Total number of surgical procedures to date",""],
["_______","c"],["",""],["",""]], false),
]}),
sp2(),
// ══════════════════════════════════════════════════════════════════
// EXAMINER SUMMARY
// ══════════════════════════════════════════════════════════════════
new Paragraph({ spacing:{ before:0, after:140 }, shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new TextRun({ text:" EXAMINER SUMMARY", bold:true, size:24, color:"FFFFFF", font:"Times New Roman" })] }),
new Table({ width:{ size:100, type:WidthType.PERCENTAGE }, rows:[
new TableRow({ children:[
new TableCell({ width:{ size:35, type:WidthType.PERCENTAGE }, children:[new Paragraph({ children:[new TextRun({ text:"Final diagnosis", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"_____________________________________________", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Diagnostic delay category", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Delayed (>3 months) \u2610 Timely (\u22643 months) Interval: _______ months", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Primary determinant of delay identified", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"\u2610 Low caregiver awareness \u2610 Primary care misdiagnosis \u2610 Financial barrier \u2610 Geographic access \u2610 Referral delay \u2610 No delay identified", font:"Times New Roman", size:18 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"Management plan", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ shading:{ type:ShadingType.CLEAR, fill:ALT }, children:[new Paragraph({ children:[new TextRun({ text:"_____________________________________________", font:"Times New Roman", size:20 })] })] }),
]}),
new TableRow({ children:[
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"Next review", bold:true, font:"Times New Roman", size:20 })] })] }),
new TableCell({ children:[new Paragraph({ children:[new TextRun({ text:"____/____/________", font:"Times New Roman", size:20 })] })] }),
]}),
]}),
sp2(), sp2(),
// ══════════════════════════════════════════════════════════════════
// PART B - DETAILED METHODOLOGY
// ══════════════════════════════════════════════════════════════════
new Paragraph({
alignment:AlignmentType.CENTER, spacing:{ before:0, after:300 },
shading:{ type:ShadingType.CLEAR, fill:HDR1 },
children:[new TextRun({ text:"PART B - DETAILED EXPLANATION OF ASSESSMENT METHODOLOGY", bold:true, size:26, color:"FFFFFF", font:"Times New Roman" })]
}),
// ── 1. HISTORY TAKING ──────────────────────────────────────────────
h2("1. History Taking"),
p("A comprehensive and structured history is the foundation of any investigation into the determinants of delayed diagnosis. In childhood glaucoma, the history serves a dual purpose: it provides the clinical background necessary for diagnosis and management, and it captures the critical temporal, behavioral, and socioeconomic data required to understand why diagnosis was delayed. Every component of the history is therefore both clinically and research-relevant."),
h3("1.1 Age at Presentation"),
p("Age at presentation is the single most informative datum in the assessment of childhood glaucoma because it governs the acuity of amblyopia risk, the likelihood of clinical sign recognition, and the urgency of intervention. Primary congenital glaucoma (PCG) is classified by the Kanski classification into three subtypes based on age of onset: true congenital glaucoma presenting at birth (approximately 40% of cases), infantile glaucoma presenting within the first three years of life (approximately 55%), and juvenile glaucoma presenting between ages 3 and 16 years (the least common form). This classification directly influences the expected symptom profile, the ease of clinical recognition, and the window of amblyogenic vulnerability."),
p("Infants under 3 years of age represent the highest-risk group for both amblyopia and delayed diagnosis. The visual system is in its most plastic developmental phase between birth and approximately 7-8 years, with greatest sensitivity to deprivation effects in the first 3 years. Sustained elevation of IOP during this period causes not only progressive optic nerve damage but also buphthalmos - pathological globe enlargement due to corneoscleral elasticity in the infant eye - and corneal changes that are visible to a careful observer. Despite this, many infants present late because the early symptoms are subtle, non-specific, and frequently misattributed to benign conditions. Conversely, juvenile open-angle glaucoma typically presents without buphthalmos or corneal signs and is often entirely asymptomatic until advanced visual field loss occurs, creating a different but equally challenging diagnostic delay problem."),
p("Recording the exact age at diagnosis - together with caregiver-reported age at symptom onset - allows precise calculation of the diagnostic interval, the primary outcome variable of this study."),
h3("1.2 Caregiver Information and Socioeconomic Status"),
p("The caregiver is the primary agent of health-seeking behavior for a child who cannot self-report symptoms. Caregiver-related factors represent some of the most modifiable determinants of diagnostic delay and are therefore assessed systematically. Educational attainment is a robust predictor of health literacy; caregivers with lower educational levels are less likely to recognize early warning signs of childhood eye disease, less likely to seek medical attention promptly, and less likely to navigate the healthcare system effectively to reach a specialist."),
p("Socioeconomic status is assessed using household income quintile, occupational status, and health insurance coverage. Financial barriers are a consistently identified contributor to diagnostic delay across all childhood diseases in low- and middle-income countries. Absence of health insurance forces caregivers to weigh the cost of consultation against perceived severity of symptoms, frequently resulting in delayed or foregone care. Geographic location (urban versus rural) and distance from the nearest ophthalmology service are captured because they quantify the access barrier - rural families may face multi-hour journeys to reach a pediatric ophthalmologist, providing a structural explanation for delay that is independent of awareness or financial status."),
h3("1.3 Symptom Onset and Diagnostic Timeline"),
p("The cornerstone of this study's primary outcome measurement is the accurate reconstruction of the symptom-to-diagnosis timeline. This is achieved through a structured caregiver interview using a calendar-anchoring technique, in which caregivers are asked to identify the first symptom they noticed and to anchor this to a memorable event (a holiday, a birthday, a seasonal event) to improve temporal precision. The first symptom noticed is documented using a structured list: excessive tearing (epiphora), photophobia, blepharospasm (eye squeezing or aversion to light), corneal cloudiness, an eye that appeared larger than the fellow eye, or the caregiver noticing the child had difficulty seeing."),
p("Each of these presenting symptoms corresponds to a specific pathophysiological mechanism. Epiphora results from reflex lacrimation in response to elevated IOP and corneal irritation. Photophobia occurs because corneal edema and Haab striae scatter light abnormally on the already pressure-sensitive cornea. Blepharospasm is the child's protective response to photophobia. Corneal haze reflects diffuse epithelial and stromal edema secondary to acute endothelial decompensation from sustained elevated IOP. Buphthalmos (a visibly large eye) results from progressive globe enlargement due to the elasticity of the infant corneosclera under sustained high IOP. These signs, when present in combination, should alert any healthcare provider to the possibility of glaucoma; however, individually they are frequently misinterpreted."),
p("The date of first symptom recognition, date of first healthcare contact, and date of confirmed specialist diagnosis are all documented. The diagnostic interval is then calculated as the duration between symptom onset and confirmed diagnosis, expressed in months. An interval exceeding three months is classified as delayed diagnosis - the primary outcome variable."),
h3("1.4 Caregiver Response and Health-Seeking Behavior"),
p("How caregivers respond to symptoms - whether they seek immediate medical attention or delay - is directly determined by their interpretation of the symptom's significance. Caregivers who attribute excessive tearing to a blocked tear duct, or corneal cloudiness to birth-related trauma, will not perceive urgency. This attributional error is reinforced when a general practitioner or pediatrician provides a benign diagnosis at the first contact, giving the caregiver false reassurance. The structured interview therefore captures not only the initial response but also the explicit reasons for any delay: financial barriers, distance from services, waiting list delays, fear, denial, or a prior clinician's reassurance that the symptoms were benign."),
p("This data enables the construction of a caregiver behavior pathway - from symptom recognition, through attribution, through care-seeking, to specialist referral - at each step of which an intervention could theoretically shorten the diagnostic interval."),
h3("1.5 Caregiver Awareness Questionnaire"),
p("A purpose-designed, ten-item validated awareness questionnaire is administered to assess the caregiver's baseline knowledge of childhood glaucoma. The instrument covers five knowledge domains: awareness of glaucoma as a disease entity in children; knowledge of cardinal symptoms; understanding that childhood glaucoma is treatable; awareness of the consequences of untreated glaucoma; and knowledge that specialist referral is available. Each item is scored one (correct) or zero (incorrect), yielding a total score of 0-10. Scores are categorized as low awareness (0-4), moderate awareness (5-7), or high awareness (8-10)."),
p("The questionnaire was developed in accordance with established health literacy assessment methodology, piloted on a sample of caregivers outside the study population, and reviewed for face validity and cultural appropriateness. Caregiver awareness score is one of the primary independent predictor variables in the multivariate logistic regression model."),
h3("1.6 Genetic and Family History"),
p("Genetic factors are well-established contributors to the etiology of childhood glaucoma. Approximately 10% of PCG cases are inherited in an autosomal recessive pattern, with mutations in CYP1B1 (encoding cytochrome P450 1B1) identified as the most common genetic cause. LTBP2 and TEK mutations have also been implicated. Parental consanguinity - defined as marriage between first cousins or closer blood relatives - significantly increases the probability of autosomal recessive inheritance, with PCG rates reported to be 5-10 times higher in children of consanguineous unions than in non-consanguineous families."),
p("The presence of an affected sibling is a critical variable because it should theoretically trigger earlier diagnosis in subsequent children through heightened caregiver vigilance and expedited specialist referral. However, observational data suggest this does not always occur, and investigating whether a known family history shortens the diagnostic interval in subsequent siblings is a secondary study objective. Information on genetic testing, if performed, is also recorded to characterize the genetic landscape of the study population."),
// ── 2. REFERRAL PATHWAY ────────────────────────────────────────────
h2("2. Healthcare Referral Pathway"),
p("The referral pathway from symptom onset to specialist diagnosis is a critical analytical domain because it captures the healthcare system contribution to diagnostic delay - distinct from, and independent of, caregiver-level factors. Even a highly aware caregiver who seeks medical attention promptly can experience significant diagnostic delay if the healthcare providers encountered at first and subsequent contacts fail to recognize the possibility of childhood glaucoma and make a timely specialist referral."),
h3("2.1 First Healthcare Contact"),
p("The first healthcare provider seen by the caregiver for the glaucoma-related symptoms is documented. This may be a general practitioner (GP), general pediatrician, emergency department physician, optometrist, community health worker, or in some settings a traditional healer. The diagnosis given at first contact is carefully recorded from both caregiver interview and medical record review. Common misdiagnoses at first contact include: congenital nasolacrimal duct obstruction (CNLDO) for epiphora and watering; conjunctivitis for redness and tearing; birth trauma for corneal cloudiness; and normal developmental variant for a large eye. These misdiagnoses are not only delays in themselves but actively reassure caregivers that nothing serious is wrong, compounding the delay."),
p("CNLDO is the most clinically important differential diagnosis for infantile glaucoma because both conditions present with epiphora and mild eye discharge in the first months of life. CNLDO is far more common and benign, leading most primary care providers to default to this diagnosis without examining the cornea for haze, measuring the corneal diameter, or checking for photophobia. The key distinguishing features - corneal haziness, corneal enlargement, photophobia, blepharospasm, and elevated IOP - require either slit-lamp examination or referral to ophthalmology to identify, facilities that are not routinely available in primary care settings."),
h3("2.2 Number of Healthcare Visits Before Referral"),
p("Each distinct healthcare contact prior to the first ophthalmology appointment is logged. The total number of non-ophthalmology contacts before specialist referral is a quantitative measure of healthcare system delay. Studies in comparable resource settings have documented that children with childhood glaucoma may visit multiple primary care and general pediatric providers over many months before receiving a correct diagnosis or referral, each visit representing a missed diagnostic opportunity. The diagnosis given at each contact, and whether a referral to ophthalmology was made, are recorded to identify at which point in the pathway the diagnostic opportunity was most consistently missed."),
h3("2.3 Referral Source and Waiting Time"),
p("The source of the eventual ophthalmology referral - whether from a GP, pediatrician, emergency department, optometrist, caregiver self-referral, neonatal screening, or school screening program - characterizes the pathway through which diagnosis was finally achieved. Referral from a structured screening program (neonatal or school vision screening) is expected to be associated with a shorter diagnostic interval than symptomatic self-referral, as it represents a proactive detection mechanism. The waiting time from referral to first ophthalmology appointment is also documented, as this institutional delay is a potentially modifiable component of the total diagnostic interval."),
// ── 3. OCULAR EXAMINATION ──────────────────────────────────────────
h2("3. Ocular Examination"),
p("The ocular examination at the time of diagnosis serves two purposes: first, it establishes the clinical diagnosis and severity of glaucoma; second, it quantifies the clinical consequences of delayed diagnosis - allowing the study to demonstrate that longer diagnostic delays are associated with worse optic nerve damage, lower visual acuity, greater corneal changes, and higher rates of amblyopia at presentation."),
h3("3.1 Visual Acuity Testing"),
p("Best-corrected visual acuity (BCVA) is the primary functional outcome measure and is assessed using age-appropriate methods. In infants under 6 months, preferential looking (Teller acuity cards) or the Cardiff acuity card test is used. Fixation behavior (central, steady, maintained - CSM assessment) provides qualitative information about functional vision in pre-verbal infants. For children aged 2-3 years, Lea symbols or HOTV matching charts are used. Snellen acuity or LogMAR equivalents are used in cooperative children aged 3 years and above. Results are recorded in both Snellen and LogMAR formats for comparability. Monocular BCVA is measured with the fellow eye fully occluded. Resistance to occlusion of one eye - the child's behavioral response to having the better eye covered - is noted as a behavioral indicator of amblyopia."),
h3("3.2 Intraocular Pressure Measurement"),
p("IOP measurement is the cornerstone of glaucoma diagnosis and is performed first at every evaluation, before instillation of any eye drops that could affect the measurement. In cooperative children, Goldmann applanation tonometry is the gold standard. In younger or uncooperative children, the Perkins handheld applanation tonometer, Tono-Pen, or iCare rebound tonometer are used. Examination under general anesthesia (EUA) is frequently required for infants and young children, with IOP measured before administration of any volatile anesthetic agent (which lowers IOP significantly). Intravenous ketamine is the preferred induction agent as it minimally alters IOP compared to halogenated gases. Normal IOP in infants is 10-12 mmHg; values above 21 mmHg on two or more occasions are considered elevated. The absolute IOP at first ophthalmology visit is an important measure of disease severity at presentation and a potential correlate of diagnostic delay."),
h3("3.3 Corneal Examination"),
p("The cornea provides some of the most diagnostically informative signs of childhood glaucoma, and its examination is detailed and systematic. Horizontal corneal diameter is measured with calipers or a Castroviejo gauge - a value exceeding 12 mm before 1 year of age is highly suspicious for PCG, particularly with asymmetry between the two eyes. Corneal clarity is graded from clear through mild, moderate, and severe haze. Haab striae - the curvilinear, horizontal or oblique breaks in Descemet's membrane caused by corneal stretching from elevated IOP - are pathognomonic of buphthalmos and are documented in number and orientation. Their presence confirms that IOP elevation has been sustained and significant. Buphthalmos (pathological globe enlargement) reflects the cumulative duration and severity of IOP elevation and is therefore expected to be more severe in children with a longer diagnostic delay. Corneal vascularization and scarring, representing end-stage sequelae, are also recorded."),
h3("3.4 Optic Disc Assessment"),
p("Optic disc cupping in infants is a dynamic sign - unlike in adults, it may partially or completely reverse following normalization of IOP in young children, because the infant optic disc is more pliable and the changes are initially structural rather than axonal. A cup-to-disc ratio exceeding 0.3 is considered suspicious in infants (normal infants typically have no discernible cup). Asymmetry in C/D ratio between the two eyes (greater than 0.2) is particularly important. In the research context, C/D ratio at diagnosis provides a quantitative measure of glaucomatous optic nerve damage at the time of presentation and is expected to correlate with diagnostic delay duration."),
h3("3.5 Gonioscopy"),
p("Gonioscopy - examination of the anterior chamber angle using a contact goniolens - is performed under general anesthesia in infants or with a Koeppe goniolens in sedated or cooperative children. It confirms the diagnosis of PCG by demonstrating trabeculodysgenesis (maldevelopment of the trabecular meshwork), characterized by a high iris insertion, featureless angle, and absent or poorly defined trabecular pigmentation. Gonioscopy also identifies the presence of peripheral anterior synechiae (in secondary glaucomas), anomalous angle structures (in Axenfeld-Rieger syndrome), or tumor invasion (in glaucoma associated with retinoblastoma or other tumors). The angle findings directly guide surgical planning - goniotomy and trabeculotomy are angle surgeries that require clear visualization and understanding of the angle anatomy."),
h3("3.6 Axial Length and Refraction"),
p("Axial length is measured by A-scan ultrasound biometry or optical biometry (IOLMaster) and reflects the cumulative effect of elevated IOP on globe size. An abnormally long axial length for age correlates with the duration and severity of buphthalmos and is a measure of the structural consequences of sustained IOP elevation. Cycloplegic refraction documents the refractive consequence of globe enlargement - axial myopia is an expected finding in buphthalmic eyes, and the degree of myopia correlates with the degree of globe stretching. Anisometropia, if present, is an independent amblyogenic factor that requires correction regardless of the surgical management of the glaucoma itself."),
// ── 4. CLASSIFICATION ──────────────────────────────────────────────
h2("4. Classification of Childhood Glaucoma"),
p("Childhood glaucoma is classified according to the Childhood Glaucoma Research Network (CGRN) consensus classification, which divides cases into primary glaucomas (PCG and JOAG) and secondary glaucomas (glaucomas associated with other ocular or systemic conditions). The glaucoma subtype is clinically significant for this study because different subtypes present with different clinical profiles, carry different degrees of diagnostic challenge, and may be associated with different patterns of diagnostic delay."),
h3("4.1 Primary Congenital Glaucoma (PCG)"),
p("PCG is the most common form of childhood glaucoma, accounting for approximately 45% of cases in international multicenter studies (Papadopoulos et al., 2020). It is caused by isolated maldevelopment of the anterior chamber angle (trabeculodysgenesis) in the absence of other major ocular anomalies. The classic presentation with the triad of epiphora, photophobia, and blepharospasm, combined with buphthalmos and corneal haze, is diagnostically distinctive once recognized - yet this triad is frequently either absent in mild early cases or misattributed to more benign conditions. The prognosis is strongly dependent on the age at diagnosis and treatment; cases diagnosed in the first few weeks or months of life and treated surgically with goniotomy or trabeculotomy have significantly better visual outcomes than those diagnosed late. PCG is therefore the subtype for which delayed diagnosis carries the highest preventable burden of visual loss."),
h3("4.2 Juvenile Open-Angle Glaucoma (JOAG)"),
p("JOAG presents between ages 3 and 35 years with open-angle glaucoma, typically high IOP, and no buphthalmos or corneal signs. It is often associated with a strong autosomal dominant family history and MYOC gene mutations. Because it is clinically silent until late stages, JOAG presents unique diagnostic challenges - children and adolescents do not experience pain or obvious visual symptoms until significant optic nerve damage has occurred. The diagnostic delay in JOAG is therefore largely a consequence of the absence of symptoms rather than misinterpretation of symptoms, and its characterization in this study contributes to a fuller understanding of the determinants of delay across the childhood glaucoma spectrum."),
h3("4.3 Secondary Childhood Glaucomas"),
p("Secondary childhood glaucomas represent a heterogeneous group associated with other ocular anomalies (Axenfeld-Rieger syndrome, Peters anomaly, aniridia, persistent fetal vasculature), systemic conditions (Sturge-Weber syndrome, neurofibromatosis type 1, Down syndrome, congenital rubella), or acquired conditions (uveitis, trauma, post-cataract surgery). These cases are often diagnosed later because the glaucoma component is initially overshadowed by the more clinically conspicuous features of the associated condition. They are also surgically more complex, require more procedures, and have worse long-term outcomes than primary glaucomas (Elsayed et al., 2025). Comparing diagnostic delay intervals across primary and secondary subtypes is a pre-specified secondary objective of this study."),
// ── 5. AMBLYOPIA ──────────────────────────────────────────────────
h2("5. Amblyopia Assessment and Visual Outcomes"),
p("Amblyopia represents the ultimate functional consequence of delayed diagnosis in childhood glaucoma. Visual axis deprivation from a drooping eyelid in ptosis is replaced here by visual deprivation from corneal opacification, buphthalmos-induced anisometropia, or the direct effect of optic nerve damage on cortical visual processing. Amblyopia in the context of childhood glaucoma is classified as: deprivation (from corneal opacity or dense haze obscuring the visual axis), refractive (from lid-induced or buphthalmos-induced myopia and anisometropia), or structural (from glaucomatous optic neuropathy - which is not reversible with patching but is the primary target of IOP-lowering intervention)."),
p("BCVA at diagnosis - the functional visual acuity at the time of confirmed specialist diagnosis - is the key secondary outcome variable. A longer diagnostic delay is hypothesized to be associated with worse BCVA at diagnosis, higher C/D ratio, greater corneal diameter, and higher rates of amblyopia. The one-year follow-up assessment of BCVA, IOP, and C/D ratio provides prospective outcome data allowing comparison between the delayed and timely diagnosis groups."),
// ── REFERENCES ────────────────────────────────────────────────────
h2("References"),
...[
"1. Kanski JJ, Bowling B. Kanski's Clinical Ophthalmology: A Systematic Approach. 10th ed. Elsevier; 2023. Primary Congenital Glaucoma, pp. 401-417.",
"2. Friedman NJ, Kaiser PK, Pineda R. The Wills Eye Manual. 7th ed. Lippincott Williams & Wilkins; 2021. Section 8.11: Congenital/Infantile Glaucoma, pp. 528-531.",
"3. Papadopoulos M, Vanner EA, Grajewski AL. International Study of Childhood Glaucoma. Ophthalmol Glaucoma. 2020;3(2):156-166. [PMID: 32672598]",
"4. Shen R, Li VSW, Wong MOM, Chan PPM. Pediatric Glaucoma - From Screening, Early Detection to Management. Children (Basel). 2023;10(2):181. [PMID: 36832310]",
"5. Elsayed MEA, Lander B, Senthil S, et al. The secondary childhood glaucomas. Surv Ophthalmol. 2025. [PMID: 39486644]",
"6. Knight LSW, Ridge B, Staffieri SE, et al. The Caregiver Experience in Childhood Glaucoma: An Interview Study. Ophthalmol Glaucoma. 2022;5(5):519-528. [PMID: 35151897]",
"7. Midha N, Sidhu T, Chaturvedi N, et al. Systemic Associations of Childhood Glaucoma. J Pediatr Ophthalmol Strabismus. 2018;55(6):397-402. [PMID: 30452766]",
"8. Lewis CJ, Hedberg-Buenz A, DeLuca AP, et al. Primary congenital and developmental glaucomas. Hum Mol Genet. 2017;26(R1):R28-R36. [PMID: 28549150]",
"9. Leysen L, Cassiman C, Vermeer S, et al. Genetics in primary congenital glaucoma. Eur J Med Genet. 2022;65(1):104379. [PMID: 34748994]",
"10. American Academy of Ophthalmology. Basic and Clinical Science Course (BCSC) Section 10: Glaucoma. San Francisco: AAO; 2022-2023.",
].map(ref => new Paragraph({
alignment:AlignmentType.JUSTIFIED,
spacing:{ line:320, before:0, after:160 },
indent:{ left:720, hanging:720 },
children:[new TextRun({ text:ref, font:"Times New Roman", size:22 })]
}))
]
}]
});
Packer.toBuffer(doc).then(buf => {
const out = '/home/daytona/workspace/childhood-glaucoma/Materials_Methods_Full_Protocol.docx';
fs.writeFileSync(out, buf);
console.log('Created:', out);
}).catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/childhood-glaucoma && node create_full_methods.js && python3 -c " import zipfile, os z = zipfile.ZipFile('Materials_Methods_Full_Protocol.docx') size = os.path.getsize('Materials_Methods_Full_Protocol.docx') print('Valid DOCX -', len(z.namelist()), 'internal files') print(f'File size: {size/1024:.1f} KB') "
Materials Methods Full Protocol
Word Document · DOCX
| Section | Content |
|---|---|
| Patient ID box | Code, enrollment date, examiner, initials |
| S1 - History Taking | Age/sex/residence/distance; caregiver education/income/insurance; symptom onset date → diagnosis date → diagnostic interval (calculated, with delay/timely checkbox); caregiver response & reasons for delay; 10-item glaucoma awareness questionnaire (scored 0-10); consanguinity & family history |
| S2 - Referral Pathway | First provider + diagnosis given; table of up to 4 prior visits with diagnoses; referral source + waiting time |
| S3 - Ocular Examination | VA table (age-appropriate methods); IOP table (method, GA values, normal reference); corneal examination (diameter, Haab striae, haze, buphthalmos); optic disc (C/D ratio, asymmetry, pallor); gonioscopy (angle grade, iris insertion, trabeculodysgenesis); axial length + refraction |
| S4 - Glaucoma Classification | All 10 types (PCG true/infantile, JOAG, Sturge-Weber, Axenfeld-Rieger, Peters, Aniridia, post-cataract, uveitic, traumatic) with diagnostic features |
| S5 - Amblyopia & Outcomes | Amblyopia type, strabismus, BCVA at diagnosis and 1-year follow-up, IOP and C/D at follow-up |
| S6 - Treatment | All surgical procedures (goniotomy, trabeculotomy, trabeculectomy, GDD, CPC) with dates and laterality |
| Examiner Summary | Final diagnosis, delay category, primary determinant of delay identified, plan, next review |
create a pdf of this info
cd /home/daytona/workspace/childhood-glaucoma && python3 /home/daytona/skills/docx/scripts/office/soffice.py --headless --convert-to pdf Materials_Methods_Full_Protocol.docx --outdir /home/daytona/workspace/childhood-glaucoma/ 2>&1
cp /home/daytona/workspace/childhood-glaucoma/Materials_Methods_Full_Protocol.docx /tmp/convert_input.docx && python3 /home/daytona/skills/docx/scripts/office/soffice.py --headless --convert-to pdf /tmp/convert_input.docx --outdir /tmp/ 2>&1 && ls -lh /tmp/convert_input.pdf
cp /tmp/convert_input.pdf /home/daytona/workspace/childhood-glaucoma/Materials_Methods_Full_Protocol.pdf && ls -lh /home/daytona/workspace/childhood-glaucoma/Materials_Methods_Full_Protocol.pdf
Materials Methods Full Protocol
PDF Document · PDF
Materials Methods Full Protocol
Word Document · DOCX
Materials Methods Full Protocol
PDF Document · PDF
make it very very short and at first year level
~/childhood-glaucoma/create_simple.js
const {
Document, Packer, Paragraph, TextRun, AlignmentType,
HeadingLevel, LevelFormat, UnderlineType,
Table, TableRow, TableCell, WidthType, VerticalAlign, ShadingType
} = require('docx');
const fs = require('fs');
const numberingConfig = [
{ reference: "decimal", levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } }, run: { font: "Arial", size: 24 } } }] },
{ reference: "bullet", levels: [{ level: 0, format: LevelFormat.BULLET, text: "\u2022", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } }, run: { font: "Arial", size: 24 } } }] }
];
const HDR = "2E75B6";
const ALT = "DEEAF1";
const YLW = "FFF2CC";
const p = (t) => new Paragraph({ alignment: AlignmentType.JUSTIFIED, spacing: { line: 360, after: 180 },
children: [new TextRun({ text: t, font: "Arial", size: 24 })] });
const bi = (t) => new Paragraph({ numbering: { reference: "bullet", level: 0 }, alignment: AlignmentType.JUSTIFIED,
spacing: { line: 320, after: 80 }, children: [new TextRun({ text: t, font: "Arial", size: 24 })] });
const ni = (t) => new Paragraph({ numbering: { reference: "decimal", level: 0 }, alignment: AlignmentType.JUSTIFIED,
spacing: { line: 320, after: 80 }, children: [new TextRun({ text: t, font: "Arial", size: 24 })] });
const sp = () => new Paragraph({ children: [new TextRun("")], spacing: { after: 120 } });
const h2 = (t) => new Paragraph({ heading: HeadingLevel.HEADING_2, spacing: { before: 300, after: 140 },
children: [new TextRun({ text: t, bold: true, size: 26, font: "Arial", color: HDR })] });
const banner = (t) => new Paragraph({ spacing: { before: 0, after: 160 },
shading: { type: ShadingType.CLEAR, fill: HDR },
children: [new TextRun({ text: " " + t, bold: true, size: 24, color: "FFFFFF", font: "Arial" })] });
const hc = (t, w) => new TableCell({
width: w ? { size: w, type: WidthType.PERCENTAGE } : undefined,
shading: { type: ShadingType.CLEAR, fill: HDR },
children: [new Paragraph({ alignment: AlignmentType.CENTER,
children: [new TextRun({ text: t, bold: true, color: "FFFFFF", font: "Arial", size: 20 })] })]
});
const tc = (t, shade=false) => new TableCell({
shading: shade ? { type: ShadingType.CLEAR, fill: ALT } : undefined,
children: [new Paragraph({ children: [new TextRun({ text: t, font: "Arial", size: 20 })] })]
});
const tr = (cells, shade=false) => new TableRow({ children: cells.map(([t,s=false]) => tc(t, shade||s)) });
const doc = new Document({
numbering: { config: numberingConfig },
styles: {
default: { document: { run: { font: "Arial", size: 24 } } },
paragraphStyles: [
{ id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 28, bold: true, font: "Arial", color: "000000" },
paragraph: { spacing: { before: 240, after: 200 }, outlineLevel: 0, alignment: AlignmentType.CENTER } },
{ id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 26, bold: true, font: "Arial", color: HDR },
paragraph: { spacing: { before: 240, after: 140 }, outlineLevel: 1 } }
]
},
sections: [{
properties: { page: { size: { width: 11906, height: 16838 }, margin: { top: 1260, right: 1260, bottom: 1260, left: 1440 } } },
children: [
// TITLE
new Paragraph({ heading: HeadingLevel.HEADING_1, alignment: AlignmentType.CENTER, spacing: { after: 80 },
children: [new TextRun({ text: "DELAYED DIAGNOSIS IN CHILDHOOD GLAUCOMA", bold: true, size: 28, font: "Arial" })] }),
new Paragraph({ alignment: AlignmentType.CENTER, spacing: { after: 400 },
children: [new TextRun({ text: "Materials and Methods", bold: true, size: 24, font: "Arial", color: HDR })] }),
// STUDY DESIGN
h2("1. Study Design"),
p("This is a cross-sectional study. We will enroll children aged 0-16 years who have been diagnosed with childhood glaucoma at a pediatric eye clinic. We will interview their parents or caregivers and review their medical records to find out why their diagnosis was delayed."),
p("Delayed diagnosis is defined as more than 3 months passing between when the family first noticed a symptom and when a doctor confirmed glaucoma."),
sp(),
// SAMPLE
h2("2. Sample Size"),
p("We will enroll 210 patients. This number was calculated using the standard Cochran formula at 95% confidence, with an expected delay rate of 60% and a margin of error of ±7%."),
sp(),
// SECTION 1 - HISTORY
banner("SECTION 1 - HISTORY TAKING"),
sp(),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun({ text: "1.1 Age at Presentation", bold: true, font: "Arial", size: 24 })] }),
p("We record the child's exact age in years and months when glaucoma was confirmed. Age is important because the younger the child, the higher the risk of permanent vision damage if diagnosis is delayed."),
sp(),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun({ text: "1.2 Symptom Onset and Duration", bold: true, font: "Arial", size: 24 })] }),
p("We ask the caregiver when they first noticed something wrong with the child's eye. The most common early signs of childhood glaucoma are:"),
bi("Excessive tearing (watery eye)"),
bi("Sensitivity to light (photophobia)"),
bi("Eye squeezing or blinking a lot (blepharospasm)"),
bi("Cloudy or hazy-looking cornea (the front of the eye)"),
bi("One eye looking bigger than the other (buphthalmos)"),
p("We calculate how many months passed from that first noticed symptom to the confirmed diagnosis. This is the diagnostic interval."),
sp(),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun({ text: "1.3 Family History of Glaucoma", bold: true, font: "Arial", size: 24 })] }),
p("We ask whether any family member has had glaucoma or childhood eye disease. Children with a family history of glaucoma, or whose parents are blood relatives (consanguinity), have a higher chance of getting the disease. We also ask if any sibling has already been diagnosed."),
sp(),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun({ text: "1.4 Past Medical and Ocular History", bold: true, font: "Arial", size: 24 })] }),
p("We ask about any previous eye conditions, systemic diseases, medications, and birth history. Some conditions such as Sturge-Weber syndrome, Down syndrome, or congenital rubella are known to be associated with childhood glaucoma."),
sp(),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun({ text: "1.5 Previous Interventions", bold: true, font: "Arial", size: 24 })] }),
p("We record any previous eye surgery, glasses, or patching therapy the child has already received, as these affect both the examination findings and the treatment plan."),
sp(),
// SECTION 2 - REFERRAL
banner("SECTION 2 - REFERRAL PATHWAY"),
sp(),
p("We trace the complete journey from the family first seeking help to finally reaching an eye specialist. This includes:"),
ni("Who they saw first (GP, pediatrician, emergency room, or directly an eye doctor)."),
ni("What diagnosis was given at each visit - for example, many infants are initially told they have a blocked tear duct instead of glaucoma."),
ni("How many healthcare visits occurred before an eye specialist was seen."),
ni("Who finally referred them to ophthalmology (doctor, screening program, or self-referral)."),
ni("How long they waited from the referral to their first ophthalmology appointment."),
sp(),
p("This section identifies whether the delay happened because of the family (awareness, finances, distance) or because of the healthcare system (missed diagnosis, no referral made)."),
sp(),
// SECTION 3 - EXAMINATION
banner("SECTION 3 - OCULAR EXAMINATION"),
sp(),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun({ text: "3.1 Visual Acuity", bold: true, font: "Arial", size: 24 })] }),
p("We test how well each eye can see using age-appropriate methods - Cardiff cards or preferential looking for babies, Lea symbols for toddlers, and the Snellen chart for older children. Visual acuity at diagnosis tells us how much vision has already been lost by the time the condition was found."),
sp(),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun({ text: "3.2 Intraocular Pressure (IOP)", bold: true, font: "Arial", size: 24 })] }),
p("We measure the pressure inside the eye. Normal eye pressure in infants is 10-12 mmHg. In glaucoma, this pressure is raised and damages the optic nerve over time. Young children usually need to be asleep (under sedation or general anesthesia) for this measurement to be taken accurately."),
sp(),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun({ text: "3.3 Corneal Examination", bold: true, font: "Arial", size: 24 })] }),
p("We measure the horizontal diameter of the cornea with calipers. In infants, a corneal diameter greater than 12 mm before age 1 is suspicious for glaucoma. We also look for:"),
bi("Haab striae - fine white lines in the cornea caused by stretching from high pressure."),
bi("Corneal cloudiness (haze or edema)."),
bi("Buphthalmos - the eye appears abnormally large due to stretching under high pressure."),
p("The bigger and cloudier the cornea, the longer the pressure has likely been raised, suggesting a longer delay."),
sp(),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun({ text: "3.4 Optic Disc (Cup-to-Disc Ratio)", bold: true, font: "Arial", size: 24 })] }),
p("We examine the optic nerve at the back of the eye. In glaucoma, the central hollow part of the nerve (the cup) becomes larger. A cup-to-disc ratio greater than 0.3 in an infant, or obvious asymmetry between the two eyes, is a warning sign. More damage to the optic nerve at diagnosis suggests a longer delay in treatment."),
sp(),
new Paragraph({ spacing: { after: 100 }, children: [new TextRun({ text: "3.5 Refraction", bold: true, font: "Arial", size: 24 })] }),
p("We measure the child's glasses prescription using cycloplegic drops (drops that temporarily relax the focusing muscles of the eye). Glaucoma can cause the eye to become short-sighted (myopic) as it enlarges. This can also cause amblyopia (lazy eye) if untreated."),
sp(),
// SECTION 4 - CLASSIFICATION
banner("SECTION 4 - TYPE OF CHILDHOOD GLAUCOMA"),
sp(),
p("Each child is classified into one of the following glaucoma types:"),
sp(),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
new TableRow({ tableHeader: true, children: [hc("Type", 32), hc("Simple Description", 45), hc("Typical Age", 23)] }),
tr([["Primary Congenital Glaucoma (PCG) - True"],["IOP raised before birth; eye large at birth"],["At birth"]]),
tr([["Primary Congenital Glaucoma (PCG) - Infantile"],["Most common; watery eye, photophobia, large eye"],["0-3 years"]], true),
tr([["Juvenile Open-Angle Glaucoma (JOAG)"],["No obvious signs; found late; often runs in families"],["3-16 years"]]),
tr([["Secondary - Sturge-Weber syndrome"],["Port-wine birthmark on face; high eye pressure"],["Any age"]], true),
tr([["Secondary - Axenfeld-Rieger syndrome"],["Eye development abnormality; 50% risk of glaucoma"],["Childhood"]]),
tr([["Secondary - Post-cataract surgery"],["Glaucoma after removal of childhood cataract"],["Childhood"]], true),
tr([["Secondary - Uveitis"],["Glaucoma from eye inflammation or steroid use"],["Any age"]]),
tr([["Secondary - Trauma"],["High pressure after an eye injury"],["Any age"]], true),
]}),
sp(),
// SECTION 5 - CAREGIVER AWARENESS
banner("SECTION 5 - CAREGIVER AWARENESS QUESTIONNAIRE"),
sp(),
p("We ask the parent or caregiver 10 simple yes/no questions to measure how much they knew about childhood glaucoma before the diagnosis was made. Each correct answer scores 1 point (total: 0-10)."),
sp(),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
new TableRow({ tableHeader: true, children: [hc("#", 6), hc("Question", 74), hc("Score", 20)] }),
...[
"Did you know glaucoma can affect babies and young children?",
"Did you know a watery or teary eye in a baby could be a sign of serious eye disease?",
"Did you know a cloudy or hazy cornea in an infant needs urgent eye review?",
"Did you know that a visibly large eye in a baby could mean raised eye pressure?",
"Did you know that glaucoma in children can be treated successfully if found early?",
"Did you know that untreated childhood glaucoma can cause permanent blindness?",
"Did you know that light sensitivity and eye squeezing in an infant can be warning signs?",
"Did you know that a family history of glaucoma puts a child at higher risk?",
"Did you know that a neonatal or infant eye check should be part of routine baby care?",
"Did you know that a GP or pediatrician can refer a child to an eye specialist?"
].map((q, i) => new TableRow({
children: [
new TableCell({ shading: i%2===1 ? { type: ShadingType.CLEAR, fill: ALT } : undefined,
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: String(i+1), font: "Arial", size: 20 })] })] }),
new TableCell({ shading: i%2===1 ? { type: ShadingType.CLEAR, fill: ALT } : undefined,
children: [new Paragraph({ children: [new TextRun({ text: q, font: "Arial", size: 20 })] })] }),
new TableCell({ shading: i%2===1 ? { type: ShadingType.CLEAR, fill: ALT } : undefined,
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "\u2610 Yes (1) \u2610 No (0)", font: "Arial", size: 18 })] })] }),
]
})),
new TableRow({ children: [
new TableCell({ columnSpan: 2, shading: { type: ShadingType.CLEAR, fill: HDR },
children: [new Paragraph({ alignment: AlignmentType.RIGHT, children: [new TextRun({ text: "TOTAL SCORE:", bold: true, color: "FFFFFF", font: "Arial", size: 20 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: YLW },
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "_____ / 10", bold: true, font: "Arial", size: 20 })] })] }),
]}),
new TableRow({ children: [
new TableCell({ columnSpan: 3, shading: { type: ShadingType.CLEAR, fill: ALT },
children: [new Paragraph({ children: [new TextRun({ text: "Category: \u2610 Low (0-4) \u2610 Moderate (5-7) \u2610 High (8-10)", font: "Arial", size: 20 })] })] }),
]}),
]}),
sp(),
// SECTION 6 - OUTCOMES
banner("SECTION 6 - AMBLYOPIA AND VISUAL OUTCOMES"),
sp(),
p("We check whether the child has developed amblyopia (lazy eye) as a result of the delayed diagnosis. Amblyopia in glaucoma can be caused by:"),
bi("Deprivation - the cornea is too cloudy for the brain to receive a clear image."),
bi("Refractive - the eye has become short-sighted and the prescription difference between the two eyes is too large."),
bi("Structural - the optic nerve is damaged and cannot send a full signal to the brain."),
sp(),
p("We also compare the visual acuity and optic nerve status at diagnosis between children who had delayed versus timely diagnosis, and again at one year follow-up, to show the real-world consequences of delay."),
sp(),
// STATISTICAL ANALYSIS
h2("7. Statistical Analysis"),
p("Data will be entered into a password-protected database. We will use the following tests:"),
ni("Descriptive statistics (frequencies, mean, median) to describe the study population."),
ni("Chi-square test to compare groups (e.g., delayed vs. timely diagnosis by caregiver education level)."),
ni("Mann-Whitney U test to compare continuous variables (e.g., awareness score between groups)."),
ni("Binary logistic regression to identify the strongest independent predictors of delayed diagnosis."),
p("A p-value less than 0.05 will be considered statistically significant. Analysis will be done using SPSS version 26."),
sp(),
// ETHICAL CONSIDERATIONS
h2("8. Ethical Considerations"),
bi("Written informed consent will be obtained from parents/guardians before any data is collected."),
bi("All data will be anonymized and stored securely - no names will appear in any publication."),
bi("Participation is voluntary. Refusing to participate will not affect the child's medical care."),
bi("The study will be approved by the Institutional Review Board (IRB) before starting."),
sp(),
// REFERENCES
h2("References"),
...[
"1. Kanski JJ, Bowling B. Kanski's Clinical Ophthalmology. 10th ed. Elsevier; 2023.",
"2. Friedman NJ, Kaiser PK. The Wills Eye Manual. 7th ed. Lippincott; 2021.",
"3. Shen R, et al. Pediatric Glaucoma - From Screening to Management. Children. 2023;10(2):181. [PMID: 36832310]",
"4. Papadopoulos M, et al. International Study of Childhood Glaucoma. Ophthalmol Glaucoma. 2020;3(2):156-166. [PMID: 32672598]",
"5. Knight LSW, et al. The Caregiver Experience in Childhood Glaucoma. Ophthalmol Glaucoma. 2022;5(5):519-528. [PMID: 35151897]",
].map(ref => new Paragraph({ alignment: AlignmentType.JUSTIFIED,
spacing: { line: 300, after: 120 }, indent: { left: 720, hanging: 720 },
children: [new TextRun({ text: ref, font: "Arial", size: 22 })] }))
]
}]
});
Packer.toBuffer(doc).then(buf => {
const out = '/home/daytona/workspace/childhood-glaucoma/Methods_Simple_Y1.docx';
fs.writeFileSync(out, buf);
console.log('Done:', out);
}).catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/childhood-glaucoma && node create_simple.js && cp Methods_Simple_Y1.docx /tmp/simple_input.docx && python3 /home/daytona/skills/docx/scripts/office/soffice.py --headless --convert-to pdf /tmp/simple_input.docx --outdir /tmp/ 2>&1 && cp /tmp/simple_input.pdf /home/daytona/workspace/childhood-glaucoma/Methods_Simple_Y1.pdf && python3 -c " import os docx = os.path.getsize('/home/daytona/workspace/childhood-glaucoma/Methods_Simple_Y1.docx') pdf = os.path.getsize('/home/daytona/workspace/childhood-glaucoma/Methods_Simple_Y1.pdf') print(f'DOCX: {docx/1024:.1f} KB PDF: {pdf/1024:.1f} KB') "
Methods Simple Y1
PDF Document · PDF
Methods Simple Y1
Word Document · DOCX
| Before (advanced) | After (simple) |
|---|---|
| Long dense paragraphs with technical jargon | Short 2-3 sentence plain-English paragraphs |
| Complex sub-sections with pathophysiology detail | One clear sentence explaining WHY each step is done |
| Lengthy clinical proforma with multiple sub-tables | Clean structured sections with bullet points |
| Latin/medical terms without explanation | Every term explained in brackets when used |
| 12 detailed sections | 8 short sections |
| ~25 KB document | ~14 KB document (nearly half the size) |
MATERIALS: Visual Acuity Assessment 1. 2. 3. 4. Snellen’s Chart (for literate children ≥6 years) Illuminated Vision Box Occluder (for monocular testing) Pinhole occluder Refraction 5. 6. 7. Retinoscope Cycloplegic agents Trial lens set and Trial frame. Ptosis Evaluation 8. 9. 10. 11. 12. 13. Pen torch / Focused light source Transparent millimeter ruler Strabismus and Ocular Motility Assessment Hirschberg’s Test Light Source Prism bars (horizontal and vertical) Cover–uncover test tool (occluder paddle) Nine-gaze motility chart / Recording sheet Anterior and Posterior Segment Examination 14. 15. 16. 17. Slit Lamp Biomicroscope Direct Ophthalmoscope Indirect Ophthalmoscope +90D / +78D Lens (for slit-lamp fundus exam) make word file for myu thesis topic about materials i would be needing this is example for you to understand just the list no extra stuff
~/childhood-glaucoma/create_materials.js
const {
Document, Packer, Paragraph, TextRun, AlignmentType,
HeadingLevel, LevelFormat
} = require('docx');
const fs = require('fs');
const numberingConfig = [
{ reference: "decimal", levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 600, hanging: 360 } }, run: { font: "Times New Roman", size: 24 } } }] }
];
const HDR = "1F3864";
const title = (t) => new Paragraph({
heading: HeadingLevel.HEADING_1, alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 300 },
children: [new TextRun({ text: t, bold: true, size: 28, font: "Times New Roman", color: "000000" })]
});
const subtitle = (t) => new Paragraph({
alignment: AlignmentType.CENTER, spacing: { after: 500 },
children: [new TextRun({ text: t, bold: true, size: 24, font: "Times New Roman" })]
});
const section = (t) => new Paragraph({
spacing: { before: 340, after: 160 },
shading: { fill: HDR },
children: [new TextRun({ text: " " + t, bold: true, size: 24, color: "FFFFFF", font: "Times New Roman" })]
});
const item = (t) => new Paragraph({
numbering: { reference: "decimal", level: 0 },
spacing: { line: 320, before: 60, after: 60 },
children: [new TextRun({ text: t, font: "Times New Roman", size: 24 })]
});
const sp = () => new Paragraph({ children: [new TextRun("")], spacing: { after: 80 } });
// running item counter
let n = 0;
// We use a workaround: restart numbering per section using separate references
// Instead, we'll use a single continuous numbering list throughout
const doc = new Document({
numbering: { config: numberingConfig },
styles: {
default: { document: { run: { font: "Times New Roman", size: 24 } } },
paragraphStyles: [
{ id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 28, bold: true, font: "Times New Roman", color: "000000" },
paragraph: { spacing: { before: 240, after: 200 }, outlineLevel: 0, alignment: AlignmentType.CENTER } }
]
},
sections: [{
properties: {
page: { size: { width: 11906, height: 16838 }, margin: { top: 1440, right: 1440, bottom: 1440, left: 1800 } }
},
children: [
title("DETERMINANTS OF DELAYED DIAGNOSIS IN CHILDHOOD GLAUCOMA"),
subtitle("Materials"),
// ── 1. HISTORY TAKING ─────────────────────────────────────────────
section("History Taking"),
item("Structured caregiver interview questionnaire (purpose-designed, pre-coded)"),
item("Caregiver glaucoma awareness questionnaire (10-item validated scale)"),
item("Medical record review form (standardized data extraction sheet)"),
item("Patient demographic data form"),
item("Calendar-anchoring timeline sheet (for symptom onset date recording)"),
item("Healthcare pathway tracing form (logging all prior provider contacts)"),
sp(),
// ── 2. VISUAL ACUITY ASSESSMENT ───────────────────────────────────
section("Visual Acuity Assessment"),
item("Snellen chart (for cooperative children aged 3 years and above)"),
item("Illuminated vision box / logMAR chart"),
item("Cardiff acuity cards (for infants aged 6 months to 2 years)"),
item("Teller acuity cards (for pre-verbal infants and neonates)"),
item("Lea symbols chart (for children aged 2-3 years)"),
item("HOTV matching chart (for preschool-age children)"),
item("Opaque occluder paddle (for monocular testing)"),
item("Pinhole occluder"),
sp(),
// ── 3. REFRACTION ─────────────────────────────────────────────────
section("Refraction"),
item("Retinoscope"),
item("Cycloplegic agents: cyclopentolate 1%, atropine 1%, tropicamide 1%"),
item("Trial lens set and trial frame"),
item("Auto-refractometer / autokeratometer (where available)"),
sp(),
// ── 4. INTRAOCULAR PRESSURE MEASUREMENT ──────────────────────────
section("Intraocular Pressure Measurement"),
item("Goldmann applanation tonometer (for cooperative children and adults)"),
item("Perkins handheld applanation tonometer (for examination under anesthesia / supine patients)"),
item("Tono-Pen (handheld electronic tonometer)"),
item("iCare rebound tonometer (non-contact; suitable for infants and uncooperative children)"),
item("Fluorescein sodium strips and cobalt blue filter (for Goldmann tonometry)"),
item("Topical anesthetic drops: proxymetacaine 0.5% or benoxinate 0.4%"),
sp(),
// ── 5. CORNEAL EXAMINATION ────────────────────────────────────────
section("Corneal Examination"),
item("Slit-lamp biomicroscope (with grading scale for corneal haze)"),
item("Portable/handheld slit lamp (for infants and young children)"),
item("Castroviejo corneal calipers (for horizontal corneal diameter measurement)"),
item("Millimeter ruler (transparent, for corneal diameter estimation at the slit lamp)"),
item("Pen torch / focused light source (for Haab striae and buphthalmos assessment)"),
item("Specular microscope (where available, for corneal endothelial cell assessment)"),
sp(),
// ── 6. GONIOSCOPY ─────────────────────────────────────────────────
section("Gonioscopy"),
item("Koeppe goniolens (direct gonioscopy; preferred for infants and young children)"),
item("Goldmann three-mirror goniolens (for cooperative older children)"),
item("Volk four-mirror goniolens"),
item("Viscoelastic coupling agent (hydroxypropyl methylcellulose / goniosol)"),
item("Topical anesthetic drops"),
item("Gonioscopy recording sheet (Shaffer grading system)"),
sp(),
// ── 7. OPTIC DISC ASSESSMENT ──────────────────────────────────────
section("Optic Disc Assessment"),
item("Direct ophthalmoscope"),
item("Indirect ophthalmoscope with +20D or +28D condensing lens"),
item("+90D / +78D lens (for slit-lamp fundus biomicroscopy)"),
item("Optic disc cup-to-disc ratio recording sheet"),
item("Fundus camera / RetCam wide-field retinal imaging system (for infants under GA)"),
item("Optical coherence tomography (OCT) - for optic nerve head and RNFL analysis where available"),
sp(),
// ── 8. BIOMETRY ───────────────────────────────────────────────────
section("Biometry and Anterior Segment Imaging"),
item("A-scan ultrasound biometer (for axial length measurement)"),
item("IOLMaster optical biometer (where available)"),
item("Ultrasound pachymeter (central corneal thickness measurement)"),
item("Anterior segment OCT (for corneal and angle imaging)"),
sp(),
// ── 9. EXAMINATION UNDER ANESTHESIA ──────────────────────────────
section("Examination Under General Anesthesia (EUA)"),
item("General anesthesia setup (in coordination with pediatric anesthesia team)"),
item("Intravenous ketamine (preferred induction agent - minimal IOP-lowering effect)"),
item("Lid speculum (pediatric size)"),
item("Operating microscope"),
item("EUA recording form (IOP, corneal diameter, C/D ratio, gonioscopy findings)"),
sp(),
// ── 10. STRABISMUS & OCULAR MOTILITY ─────────────────────────────
section("Strabismus and Ocular Motility Assessment"),
item("Hirschberg's test light source (pen torch)"),
item("Prism bars (horizontal and vertical)"),
item("Prism cover test occluder paddle"),
item("Nine-gaze motility recording chart"),
item("Krimsky prism test light"),
sp(),
// ── 11. AMBLYOPIA ASSESSMENT ──────────────────────────────────────
section("Amblyopia Assessment"),
item("Opaque occlusion patch (for patching therapy and monocular acuity testing)"),
item("Crowding bars / isolated optotype charts (for crowded vs. uncrowded acuity comparison)"),
item("Fixation target (for preferential looking and fixation behavior assessment)"),
item("Amblyopia classification and grading recording form"),
sp(),
// ── 12. DATA MANAGEMENT ───────────────────────────────────────────
section("Data Management and Statistical Tools"),
item("REDCap (Research Electronic Data Capture) database or equivalent secure electronic database"),
item("Pre-coded paper data collection forms (backup)"),
item("IBM SPSS Statistics version 26 (or later) for statistical analysis"),
item("Microsoft Excel (for data entry verification and preliminary tabulation)"),
item("Informed consent forms (Arabic and English versions)"),
item("Patient assent forms (for children aged 7 years and above)"),
item("Ethics committee approval documentation"),
]
}]
});
Packer.toBuffer(doc).then(buf => {
const out = '/home/daytona/workspace/childhood-glaucoma/Materials_List.docx';
fs.writeFileSync(out, buf);
console.log('Done:', out);
}).catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/childhood-glaucoma && node create_materials.js && python3 -c " import zipfile, os z = zipfile.ZipFile('Materials_List.docx') print('Valid DOCX,', len(z.namelist()), 'files,', round(os.path.getsize('Materials_List.docx')/1024,1), 'KB') "
Materials List
Word Document · DOCX
| Section | Items |
|---|---|
| History Taking | 6 |
| Visual Acuity Assessment | 8 |
| Refraction | 4 |
| Intraocular Pressure Measurement | 6 |
| Corneal Examination | 6 |
| Gonioscopy | 6 |
| Optic Disc Assessment | 6 |
| Biometry & Anterior Segment Imaging | 4 |
| Examination Under GA (EUA) | 5 |
| Strabismus & Ocular Motility | 5 |
| Amblyopia Assessment | 4 |
| Data Management & Statistical Tools | 7 |
(IX) OUTCOMES STUDY ENDPOINTS Primary Endpoint: • Prevalence and types of amblyopia in patients with congenital ptosis presenting to M & J Institute of Ophthalmology. Secondary Endpoints: 1. 2. o o o 3. 4. 5. Association between severity of ptosis (based on MRD1 and levator function) and the presence/severity of amblyopia. Type of amblyopia (refractive, occlusion/mechanical, strabismic, or mixed) in relation to: Laterality (unilateral vs bilateral ptosis) Presence of refractive errors Presence of strabismus Age at presentation and its correlation with the risk of amblyopia. Correlation between levator function and margin reflex distance (MRD1) with visual acuity outcomes. Demographic trends: Age, gender, and geographic distribution of congenital ptosis cases. this is example for you now tell me what should be my thesis topic outcomes primary and secondary end points
| Endpoint | Type | Measurement |
|---|---|---|
| Prevalence of delayed diagnosis + strongest predictor | Primary | Proportion delayed; logistic regression aOR |
| Caregiver awareness vs. delay | Secondary | Awareness score vs. interval (months) |
| Socioeconomic / geographic factors | Secondary | Income, residence, insurance vs. binary delay |
| Healthcare system factors | Secondary | Prior visits, misdiagnosis, referral source |
| Delay by glaucoma subtype | Secondary | PCG vs. JOAG vs. secondary (ANOVA) |
| Delay vs. clinical severity at diagnosis | Secondary | BCVA, C/D ratio, IOP, corneal diameter |
| Age vs. amblyopia / optic nerve damage | Secondary | Correlation (Spearman) |
| 1-year visual outcomes: delayed vs. timely | Secondary | BCVA, IOP, C/D at 12 months |
| Demographic trends | Secondary | Descriptive frequency analysis |
PROFORMA: Title: “CLINICAL PROFILE OF AMBLYOPIA IN PATIENTS WITH CONGENITAL PTOSIS AT A TERTIARY CARE CENTRE IN WESTERN INDIA”. I. General Information Variable Name of Patient OPD/IPD Number Age (in years/months) Sex Place of Residence II. History Aspect Chief Complaints Age of Onset of Ptosis Laterality Progression Family History Past Ocular History Past Medical History Details Details History suggestive of syndromic association _________________ BCVA REFRACTION OCULAR EXAMINATION Head posture: Lid contour: Skin crease position: Brow position (compensatory elevation): PTOSIS EVALUATION MRD1 (mm) MRD2 (mm) Levator Function (Berke’s method) (mm) Palpebral Fissure Height (mm) Extra ocular movements Strabismus +/- Diplopia +/- Lid lag on downgaze Bell’s phenomenon Orbicularis function Fatigue test Ice pack test Synkinesis: +/- Severity ASSESSMENT OF AMBLYOPIA: Present/ Absent: Eye presenting: Type: Severity: FUNDUS EXAMINATION Media: Optic disc: BV: BG: Macula: Any signs of amblyopia: SYSTEMIC EXAMINATION (if indicated): REMARKS Provisional Diagnosis: Guided by: Dr. Garima Agrawal (MS Ophthal) Associate Professor M and J Institute of Ophthalmology B. J. Medical College, Civil Hospital, Ahmedabad. Yours faithfully, Dr. Honey Chetankumar Parmar First Year Resident, M and J institute of Ophthalmology, B. J. Medical College, Civil Hospital, Ahmedabad. make this like performa for my thesis topic and make word file of that
~/childhood-glaucoma/create_proforma.js
const {
Document, Packer, Paragraph, TextRun, AlignmentType,
HeadingLevel, LevelFormat, UnderlineType,
Table, TableRow, TableCell, WidthType, VerticalAlign, ShadingType,
BorderStyle
} = require('docx');
const fs = require('fs');
// colours
const HDR = "1F3864";
const ALT = "DEEAF1";
const YLW = "FFF2CC";
const RED = "C00000";
// helpers
const sp = () => new Paragraph({ children: [new TextRun("")], spacing: { after: 100 } });
const sp2 = () => new Paragraph({ children: [new TextRun("")], spacing: { after: 220 } });
const centred = (text, size=24, bold=false) => new Paragraph({
alignment: AlignmentType.CENTER, spacing: { after: 100 },
children: [new TextRun({ text, font: "Times New Roman", size, bold })]
});
const sectionHead = (text) => new Paragraph({
spacing: { before: 0, after: 140 },
shading: { type: ShadingType.CLEAR, fill: HDR },
children: [new TextRun({ text: " " + text, bold: true, size: 24, color: "FFFFFF", font: "Times New Roman" })]
});
const label = (text, shade=false) => new TableCell({
width: { size: 38, type: WidthType.PERCENTAGE },
shading: shade ? { type: ShadingType.CLEAR, fill: ALT } : undefined,
children: [new Paragraph({ children: [new TextRun({ text, font: "Times New Roman", size: 21, bold: true })] })]
});
const field = (text="___________________________", shade=false, colSpan=1) => new TableCell({
columnSpan: colSpan,
shading: shade ? { type: ShadingType.CLEAR, fill: ALT } : undefined,
children: [new Paragraph({ children: [new TextRun({ text, font: "Times New Roman", size: 21 })] })]
});
const cbField = (options, shade=false, colSpan=1) => new TableCell({
columnSpan: colSpan,
shading: shade ? { type: ShadingType.CLEAR, fill: ALT } : undefined,
children: [new Paragraph({ children: options.map((o, i) =>
new TextRun({ text: (i === 0 ? "" : " ") + "\u2610 " + o, font: "Times New Roman", size: 21 })
)})]
});
const twoCol = (lbl, val, shade=false) => new TableRow({
children: [label(lbl, shade), field(val, shade)]
});
const twoColCb = (lbl, options, shade=false) => new TableRow({
children: [label(lbl, shade), cbField(options, shade)]
});
// full-width row
const fullRow = (text, shade=false, fill=ALT) => new TableRow({
children: [new TableCell({
columnSpan: 2,
shading: shade ? { type: ShadingType.CLEAR, fill } : undefined,
children: [new Paragraph({ children: [new TextRun({ text, font: "Times New Roman", size: 21 })] })]
})]
});
// header row for a table
const hdrRow = (cols) => new TableRow({
tableHeader: true,
children: cols.map(([t, w]) => new TableCell({
width: w ? { size: w, type: WidthType.PERCENTAGE } : undefined,
shading: { type: ShadingType.CLEAR, fill: HDR },
children: [new Paragraph({ alignment: AlignmentType.CENTER,
children: [new TextRun({ text: t, bold: true, color: "FFFFFF", font: "Times New Roman", size: 20 })] })]
}))
});
const dataRow = (cells, shade=false) => new TableRow({
children: cells.map(([t, w, c=false]) => new TableCell({
width: w ? { size: w, type: WidthType.PERCENTAGE } : undefined,
shading: shade ? { type: ShadingType.CLEAR, fill: ALT } : undefined,
children: [new Paragraph({ alignment: c ? AlignmentType.CENTER : AlignmentType.LEFT,
children: [new TextRun({ text: t, font: "Times New Roman", size: 20 })] })]
}))
});
// ═══════════════════════════════════════════════════════════════
const doc = new Document({
styles: {
default: { document: { run: { font: "Times New Roman", size: 22 } } },
paragraphStyles: [
{ id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 26, bold: true, font: "Times New Roman", color: "000000" },
paragraph: { spacing: { before: 200, after: 160 }, outlineLevel: 0, alignment: AlignmentType.CENTER } }
]
},
sections: [{
properties: { page: { size: { width: 11906, height: 16838 }, margin: { top: 1080, right: 1080, bottom: 1080, left: 1260 } } },
children: [
// ── TITLE ──────────────────────────────────────────────────────
centred("PROFORMA", 24, true),
sp(),
centred("Title:", 22, true),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 400 },
border: {
top: { style: BorderStyle.SINGLE, size: 6, color: HDR },
bottom: { style: BorderStyle.SINGLE, size: 6, color: HDR },
left: { style: BorderStyle.SINGLE, size: 6, color: HDR },
right: { style: BorderStyle.SINGLE, size: 6, color: HDR },
},
children: [new TextRun({
text: '"DETERMINANTS OF DELAYED DIAGNOSIS IN CHILDHOOD GLAUCOMA AT A TERTIARY CARE OPHTHALMIC CENTRE"',
bold: true, size: 24, font: "Times New Roman"
})]
}),
// ── I. GENERAL INFORMATION ─────────────────────────────────────
sectionHead("I. General Information"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
twoCol("Name of Patient", ""),
twoCol("OPD / IPD Number", "", true),
twoCol("Age", "_______ years _______ months"),
twoColCb("Sex", ["Male", "Female"], true),
twoCol("Place of Residence", ""),
twoColCb("Urban / Rural", ["Urban", "Peri-urban", "Rural"], true),
twoCol("Distance from eye clinic (km)", "_______ km"),
twoCol("Date of Examination", "____/____/________", true),
twoCol("Examiner", ""),
]}),
sp2(),
// ── II. CAREGIVER INFORMATION ───────────────────────────────────
sectionHead("II. Caregiver Information"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
twoColCb("Relationship to Child", ["Mother", "Father", "Grandparent", "Other: ___________"]),
twoColCb("Caregiver Education Level", ["None", "Primary", "Secondary", "Tertiary"], true),
twoColCb("Household Income (Quintile)",["Q1 (Lowest)", "Q2", "Q3", "Q4", "Q5 (Highest)"]),
twoColCb("Health Insurance", ["None", "Partial (Government)", "Full (Private)"], true),
twoColCb("Parental Consanguinity", ["Yes (first cousins or closer)", "No", "Unknown"]),
]}),
sp2(),
// ── III. HISTORY ────────────────────────────────────────────────
sectionHead("III. History"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
twoCol("Chief Complaint", ""),
twoCol("Age of Child at First Noticed Symptom", "_______ months", true),
new TableRow({ children: [
label("First Symptom Noticed by Caregiver"),
cbField(["Excessive tearing", "Photophobia", "Blepharospasm", "Cloudy / hazy cornea", "Large eye (buphthalmos)", "Eye asymmetry", "Poor fixation / vision", "Other: ___________"])
]}),
twoCol("Date of First Medical Contact for This Symptom", "____/____/________", true),
twoCol("Date of Confirmed Glaucoma Diagnosis", "____/____/________"),
new TableRow({ children: [
new TableCell({ shading: { type: ShadingType.CLEAR, fill: YLW },
children: [new Paragraph({ children: [new TextRun({ text: "DIAGNOSTIC INTERVAL (calculated)", bold: true, font: "Times New Roman", size: 21 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: YLW },
children: [new Paragraph({ children: [
new TextRun({ text: "_______ months \u2610 DELAYED (> 3 months) \u2610 TIMELY (\u2264 3 months)", bold: true, font: "Times New Roman", size: 21 })
]})] }),
]}),
twoColCb("Reason for Delay (if delayed)", ["Attributed to benign cause", "Financial barrier", "Distance / transport", "Told by provider not serious", "Fear / denial", "Waiting list", "Other: ___________"], true),
twoColCb("Family History of Glaucoma", ["Yes (relation: _____________)", "No", "Unknown"]),
twoColCb("Affected Sibling(s)", ["Yes (n = ___)", "No"], true),
twoColCb("Past Ocular History", ["None", "Cataract surgery", "Strabismus surgery", "Uveitis", "Trauma", "Other: ___________"]),
twoCol("Past Medical / Systemic History", "", true),
fullRow("History suggestive of syndromic association: __________________________________________________"),
]}),
sp2(),
// ── IV. REFERRAL PATHWAY ────────────────────────────────────────
sectionHead("IV. Healthcare Referral Pathway"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
new TableRow({ children: [
label("First Provider Seen for Symptoms"),
cbField(["GP", "General Pediatrician", "Emergency Dept", "Optometrist", "Community Health Worker", "Traditional Healer", "Directly to Ophthalmologist", "Neonatal Screening", "School Screening"])
]}),
new TableRow({ children: [
label("Diagnosis at First Contact", true),
cbField(["Nasolacrimal duct obstruction", "Conjunctivitis", "Corneal dystrophy", "Birth trauma", "Normal variant", "Glaucoma (correct)", "No diagnosis given", "Other: ___________"], true)
]}),
twoCol("Total Non-Ophthalmology Visits Before Referral", "_______ visits"),
twoColCb("Misdiagnosis at Primary Care Level", ["Yes", "No"], true),
new TableRow({ children: [
label("Source of Ophthalmology Referral"),
cbField(["GP", "Pediatrician", "Emergency Dept", "Optometrist", "Self-referral", "Neonatal screening", "School screening", "Other: ___________"])
]}),
twoCol("Waiting Time: Referral to First Eye Appointment", "_______ weeks", true),
]}),
sp2(),
// ── V. CAREGIVER AWARENESS ──────────────────────────────────────
sectionHead("V. Caregiver Glaucoma Awareness Questionnaire (Score: _____ / 10)"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
hdrRow([["#", 6], ["Question", 74], ["Yes (1) / No (0)", 20]]),
...[
"Did you know glaucoma can affect babies and young children?",
"Did you know a watery or teary eye in a baby could be a sign of serious eye disease?",
"Did you know a cloudy or hazy cornea in an infant requires urgent eye review?",
"Did you know that a visibly large eye in a baby could mean raised eye pressure?",
"Did you know that childhood glaucoma is treatable if found early?",
"Did you know that untreated childhood glaucoma can cause permanent blindness?",
"Did you know that light sensitivity and eye squeezing in a baby are warning signs?",
"Did you know that a family history of glaucoma puts a child at higher risk?",
"Did you know that a routine baby check should include an eye examination?",
"Did you know that a GP or pediatrician can refer a child to an eye specialist?"
].map((q, i) => dataRow([[String(i+1), "6", true], [q, "74"], ["\u2610 Yes \u2610 No", "20", true]], i%2===1)),
new TableRow({ children: [
new TableCell({ columnSpan: 2, shading: { type: ShadingType.CLEAR, fill: HDR },
children: [new Paragraph({ alignment: AlignmentType.RIGHT,
children: [new TextRun({ text: "TOTAL SCORE:", bold: true, color: "FFFFFF", font: "Times New Roman", size: 21 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: YLW },
children: [new Paragraph({ alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "_____ / 10", bold: true, font: "Times New Roman", size: 21 })] })] }),
]}),
new TableRow({ children: [new TableCell({ columnSpan: 3, shading: { type: ShadingType.CLEAR, fill: ALT },
children: [new Paragraph({ children: [new TextRun({
text: "Category: \u2610 Low (0\u20134) \u2610 Moderate (5\u20137) \u2610 High (8\u201310)",
font: "Times New Roman", size: 21
})] })] })] }),
]}),
sp2(),
// ── VI. VISUAL ACUITY ──────────────────────────────────────────
sectionHead("VI. Visual Acuity"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
hdrRow([["", 22], ["Right Eye (RE)", 26], ["Left Eye (LE)", 26], ["Method", 26]]),
dataRow([["Unaided VA","22"],["6/___ (LogMAR ___)","26","c"],["6/___ (LogMAR ___)","26","c"],["","26"]]),
dataRow([["BCVA","22"],["6/___ (LogMAR ___)","26","c"],["6/___ (LogMAR ___)","26","c"],
["\u2610 Snellen \u2610 Cardiff \u2610 Teller \u2610 LEA \u2610 HOTV","26"]], true),
dataRow([["Fixation (infants)","22"],["\u2610 CSM \u2610 Non-central","26","c"],["\u2610 CSM \u2610 Non-central","26","c"],["PL / CSM","26"]]),
dataRow([["Occlusion Resistance","22"],["\u2610 Yes \u2610 No","26","c"],["\u2610 Yes \u2610 No","26","c"],["Behavioral amblyopia sign","26"]], true),
]}),
sp2(),
// ── VII. REFRACTION ────────────────────────────────────────────
sectionHead("VII. Refraction"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
hdrRow([["Parameter", 28], ["Right Eye", 36], ["Left Eye", 36]]),
dataRow([["Type","28"],["\u2610 Cycloplegic \u2610 Manifest","36"],["","36"]]),
dataRow([["Cycloplegic Agent","28"],["\u2610 Cyclopentolate 1% \u2610 Atropine 1% \u2610 Tropicamide","36"],["","36"]], true),
dataRow([["Sphere (D)","28"],["_______ D","36","c"],["_______ D","36","c"]]),
dataRow([["Cylinder (D x axis)","28"],["_______ D x ______°","36","c"],["_______ D x ______°","36","c"]], true),
dataRow([["Spherical Equivalent (D)","28"],["_______ D","36","c"],["_______ D","36","c"]]),
dataRow([["Anisometropia","28"],["\u2610 Yes (> 1.5D SE) \u2610 No","36"],["","36"]], true),
]}),
sp2(),
// ── VIII. INTRAOCULAR PRESSURE ────────────────────────────────
sectionHead("VIII. Intraocular Pressure (IOP)"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
hdrRow([["Parameter", 30], ["Right Eye", 25], ["Left Eye", 25], ["Method / Notes", 20]]),
dataRow([["IOP at First Visit (mmHg)","30"],["_______ mmHg","25","c"],["_______ mmHg","25","c"],["","20"]]),
dataRow([["IOP Under GA (if performed)","30"],["_______ mmHg","25","c"],["_______ mmHg","25","c"],["Agent: ___________","20"]], true),
dataRow([["Instrument Used","30"],["","25"],["","25"],["\u2610 Goldmann \u2610 Perkins \u2610 Tono-Pen \u2610 iCare","20"]]),
dataRow([["IOP Elevated (> 21 mmHg)","30"],["\u2610 Yes \u2610 No","25","c"],["\u2610 Yes \u2610 No","25","c"],["Normal infant: 10\u201312 mmHg","20"]], true),
]}),
sp2(),
// ── IX. CORNEAL EXAMINATION ───────────────────────────────────
sectionHead("IX. Corneal Examination"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
hdrRow([["Finding", 32], ["Right Eye", 34], ["Left Eye", 34]]),
dataRow([["Horizontal Corneal Diameter (mm)","32"],["_______ mm","34","c"],["_______ mm","34","c"]]),
dataRow([["Buphthalmos (> 12 mm < age 1)","32"],["\u2610 Yes \u2610 No","34","c"],["\u2610 Yes \u2610 No","34","c"]], true),
dataRow([["Corneal Clarity","32"],["\u2610 Clear \u2610 Mild haze \u2610 Moderate \u2610 Dense","34"],["\u2610 Clear \u2610 Mild haze \u2610 Moderate \u2610 Dense","34"]]),
dataRow([["Haab Striae","32"],["\u2610 Present \u2610 Absent n = ___","34","c"],["\u2610 Present \u2610 Absent n = ___","34","c"]], true),
dataRow([["Corneal Edema","32"],["\u2610 None \u2610 Epithelial \u2610 Stromal","34"],["\u2610 None \u2610 Epithelial \u2610 Stromal","34"]]),
dataRow([["Corneal Scarring / Vascularization","32"],["\u2610 Present \u2610 Absent","34","c"],["\u2610 Present \u2610 Absent","34","c"]], true),
]}),
sp2(),
// ── X. OPTIC DISC ─────────────────────────────────────────────
sectionHead("X. Optic Disc and Posterior Segment Examination"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
hdrRow([["Parameter", 30], ["Right Eye", 35], ["Left Eye", 35]]),
dataRow([["Cup-to-Disc Ratio (C/D)","30"],["_______ (> 0.3 suspicious)","35","c"],["_______","35","c"]]),
dataRow([["C/D Asymmetry (> 0.2)","30"],["\u2610 Yes \u2610 No","35","c"],["","35"]], true),
dataRow([["Disc Pallor","30"],["\u2610 None \u2610 Temporal \u2610 Diffuse","35"],["\u2610 None \u2610 Temporal \u2610 Diffuse","35"]]),
dataRow([["Media","30"],["Clear / Hazy: ___________","35"],["Clear / Hazy: ___________","35"]], true),
dataRow([["Blood Vessels (BV)","30"],["WNL / Abnormal: ___________","35"],["WNL / Abnormal: ___________","35"]]),
dataRow([["Background (BG)","30"],["WNL / Abnormal: ___________","35"],["WNL / Abnormal: ___________","35"]], true),
dataRow([["Macula","30"],["WNL / Abnormal: ___________","35"],["WNL / Abnormal: ___________","35"]]),
dataRow([["Any fundus signs of amblyopia","30"],["\u2610 Yes \u2610 No","35","c"],["\u2610 Yes \u2610 No","35","c"]], true),
dataRow([["Method of Fundus Exam","30"],["","35"],["\u2610 Direct \u2610 Indirect \u2610 90D SL \u2610 RetCam","35"]]),
]}),
sp2(),
// ── XI. GONIOSCOPY ────────────────────────────────────────────
sectionHead("XI. Gonioscopy"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
hdrRow([["Finding", 30], ["Right Eye", 35], ["Left Eye", 35]]),
dataRow([["Gonioscopy Performed","30"],["\u2610 Yes \u2610 No","35","c"],["\u2610 Yes \u2610 No","35","c"]]),
dataRow([["Shaffer Angle Grade","30"],["Grade _____","35","c"],["Grade _____","35","c"]], true),
dataRow([["Iris Insertion","30"],["\u2610 Normal \u2610 High \u2610 Flat \u2610 Concave","35"],["\u2610 Normal \u2610 High \u2610 Flat \u2610 Concave","35"]]),
dataRow([["Trabeculodysgenesis","30"],["\u2610 Present \u2610 Absent","35","c"],["\u2610 Present \u2610 Absent","35","c"]], true),
dataRow([["PAS (Peripheral Anterior Synechiae)","30"],["\u2610 Present \u2610 Absent","35","c"],["\u2610 Present \u2610 Absent","35","c"]]),
]}),
sp2(),
// ── XII. GLAUCOMA CLASSIFICATION ─────────────────────────────
sectionHead("XII. Classification of Childhood Glaucoma"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
hdrRow([["Type", 42], ["Confirmed?", 20], ["Laterality", 20], ["Age of Onset", 18]]),
dataRow([["Primary Congenital Glaucoma - True Congenital (at birth)","42"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["At birth","18","c"]]),
dataRow([["Primary Congenital Glaucoma - Infantile (0-3 yrs)","42"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["_______ months","18","c"]], true),
dataRow([["Juvenile Open-Angle Glaucoma (JOAG) (3-16 yrs)","42"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["_______ years","18","c"]]),
dataRow([["Secondary - Axenfeld-Rieger Syndrome","42"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","18"]], true),
dataRow([["Secondary - Peters Anomaly","42"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","18"]]),
dataRow([["Secondary - Aniridia","42"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","18"]], true),
dataRow([["Secondary - Sturge-Weber Syndrome","42"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","18"]]),
dataRow([["Secondary - Post-Cataract Surgery (Aphakic/Pseudophakic)","42"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","18"]], true),
dataRow([["Secondary - Uveitic Glaucoma","42"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","18"]]),
dataRow([["Secondary - Traumatic","42"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","18"]], true),
new TableRow({ children: [
new TableCell({ shading: { type: ShadingType.CLEAR, fill: YLW },
children: [new Paragraph({ children: [new TextRun({ text: "FINAL DIAGNOSIS:", bold: true, font: "Times New Roman", size: 21 })] })] }),
new TableCell({ columnSpan: 3, shading: { type: ShadingType.CLEAR, fill: YLW },
children: [new Paragraph({ children: [new TextRun({ text: "Type: __________________________ Laterality: \u2610 RE \u2610 LE \u2610 Bilateral", bold: true, font: "Times New Roman", size: 21 })] })] }),
]}),
]}),
sp2(),
// ── XIII. AMBLYOPIA ASSESSMENT ────────────────────────────────
sectionHead("XIII. Assessment of Amblyopia"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
new TableRow({ children: [
new TableCell({ width: { size: 35, type: WidthType.PERCENTAGE },
children: [new Paragraph({ children: [new TextRun({ text: "Present / Absent:", bold: true, font: "Times New Roman", size: 21 })] })] }),
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "\u2610 Present \u2610 Absent", font: "Times New Roman", size: 21 })] })] }),
]}),
new TableRow({ children: [
new TableCell({ shading: { type: ShadingType.CLEAR, fill: ALT }, width: { size: 35, type: WidthType.PERCENTAGE },
children: [new Paragraph({ children: [new TextRun({ text: "Eye Presenting:", bold: true, font: "Times New Roman", size: 21 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: ALT },
children: [new Paragraph({ children: [new TextRun({ text: "\u2610 Right Eye \u2610 Left Eye \u2610 Both Eyes", font: "Times New Roman", size: 21 })] })] }),
]}),
new TableRow({ children: [
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Type of Amblyopia:", bold: true, font: "Times New Roman", size: 21 })] })] }),
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "\u2610 Deprivation (corneal opacity / dense haze) \u2610 Refractive (anisometropic / bilateral) \u2610 Strabismic \u2610 Mixed", font: "Times New Roman", size: 21 })] })] }),
]}),
new TableRow({ children: [
new TableCell({ shading: { type: ShadingType.CLEAR, fill: ALT },
children: [new Paragraph({ children: [new TextRun({ text: "Severity:", bold: true, font: "Times New Roman", size: 21 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: ALT },
children: [new Paragraph({ children: [new TextRun({ text: "\u2610 Mild (6/9\u20136/18) \u2610 Moderate (6/24\u20136/60) \u2610 Severe (< 6/60 or CF/HM/PL)", font: "Times New Roman", size: 21 })] })] }),
]}),
]}),
sp2(),
// ── XIV. STRABISMUS / OCULAR MOTILITY ────────────────────────
sectionHead("XIV. Strabismus and Ocular Motility"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
hdrRow([["Test", 32], ["Distance (6 m)", 34], ["Near (33 cm)", 34]]),
dataRow([["Cover-Uncover Test","32"],["____________","34","c"],["____________","34","c"]]),
dataRow([["Alternate Cover Test","32"],["____________","34","c"],["____________","34","c"]], true),
dataRow([["Prism Cover Test (PD)","32"],["____________","34","c"],["____________","34","c"]]),
new TableRow({ children: [
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Type of Deviation:", bold: true, font: "Times New Roman", size: 21 })] })] }),
new TableCell({ columnSpan: 2, children: [new Paragraph({ children: [new TextRun({ text: "\u2610 Orthophoria \u2610 Esotropia \u2610 Exotropia \u2610 Hypertropia \u2610 Hypotropia \u2610 Other: ___________", font: "Times New Roman", size: 21 })] })] }),
]}),
]}),
sp2(),
// ── XV. SYSTEMIC EXAMINATION ──────────────────────────────────
sectionHead("XV. Systemic Examination (if indicated)"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
new TableRow({ children: [
new TableCell({ width: { size: 35, type: WidthType.PERCENTAGE },
children: [new Paragraph({ children: [new TextRun({ text: "Systemic Condition / Syndrome:", bold: true, font: "Times New Roman", size: 21 })] })] }),
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "\u2610 Sturge-Weber \u2610 Down syndrome \u2610 Neurofibromatosis \u2610 Axenfeld-Rieger \u2610 Aniridia / WAGR \u2610 Other: ___________ \u2610 None", font: "Times New Roman", size: 20 })] })] }),
]}),
new TableRow({ children: [
new TableCell({ shading: { type: ShadingType.CLEAR, fill: ALT },
children: [new Paragraph({ children: [new TextRun({ text: "Genetics / Investigations:", bold: true, font: "Times New Roman", size: 21 })] })] }),
new TableCell({ shading: { type: ShadingType.CLEAR, fill: ALT },
children: [new Paragraph({ children: [new TextRun({ text: "\u2610 CYP1B1 \u2610 FOXL2 \u2610 PITX2 \u2610 PAX6 \u2610 Other: ___________ \u2610 Not done", font: "Times New Roman", size: 21 })] })] }),
]}),
new TableRow({ children: [
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Pediatric / Systemic Referral:", bold: true, font: "Times New Roman", size: 21 })] })] }),
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "\u2610 Yes (department: ___________________) \u2610 No", font: "Times New Roman", size: 21 })] })] }),
]}),
]}),
sp2(),
// ── XVI. TREATMENT ────────────────────────────────────────────
sectionHead("XVI. Treatment at This Visit"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
hdrRow([["Treatment", 40], ["Planned?", 20], ["Eye", 20], ["Date", 20]]),
dataRow([["Medical therapy (topical / systemic IOP-lowering)","40"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","20","c"]]),
dataRow([["Goniotomy / Trabeculotomy","40"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","20","c"]], true),
dataRow([["Trabeculectomy","40"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","20","c"]]),
dataRow([["Glaucoma Drainage Device (GDD)","40"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","20","c"]], true),
dataRow([["Cyclophotocoagulation","40"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","20","c"]]),
dataRow([["Spectacle Correction","40"],["\u2610 Yes \u2610 No","20","c"],["RE / LE / Both","20","c"],["","20","c"]], true),
dataRow([["Amblyopia Patching Therapy","40"],["\u2610 Yes \u2610 No","20","c"],["RE / LE","20","c"],["","20","c"]]),
]}),
sp2(),
// ── XVII. REMARKS ─────────────────────────────────────────────
sectionHead("XVII. Remarks"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
new TableRow({ children: [new TableCell({
children: [new Paragraph({ spacing: { before: 0, after: 600 },
children: [new TextRun({ text: "", font: "Times New Roman", size: 21 })] })]
})] }),
]}),
sp2(),
// ── XVIII. PROVISIONAL DIAGNOSIS ─────────────────────────────
sectionHead("XVIII. Provisional Diagnosis"),
new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [
new TableRow({ children: [new TableCell({ shading: { type: ShadingType.CLEAR, fill: YLW },
children: [new Paragraph({ spacing: { before: 0, after: 400 },
children: [new TextRun({ text: "", font: "Times New Roman", size: 21 })] })] })] }),
]}),
sp2(), sp2(),
// ── SIGNATURES ────────────────────────────────────────────────
new Table({ width: { size: 100, type: WidthType.PERCENTAGE },
columnWidths: [5000, 5000],
rows: [
new TableRow({ children: [
new TableCell({ borders: { top:{style:BorderStyle.NONE}, bottom:{style:BorderStyle.NONE}, left:{style:BorderStyle.NONE}, right:{style:BorderStyle.NONE} },
children: [
new Paragraph({ children: [new TextRun({ text: "Guided by:", bold: true, font: "Times New Roman", size: 22 })] }),
sp(),
new Paragraph({ children: [new TextRun({ text: "Dr. ______________________________", font: "Times New Roman", size: 22 })] }),
new Paragraph({ children: [new TextRun({ text: "Consultant / Associate Professor", font: "Times New Roman", size: 22 })] }),
new Paragraph({ children: [new TextRun({ text: "Department of Ophthalmology", font: "Times New Roman", size: 22 })] }),
new Paragraph({ children: [new TextRun({ text: "[Institution Name]", font: "Times New Roman", size: 22 })] }),
]
}),
new TableCell({ borders: { top:{style:BorderStyle.NONE}, bottom:{style:BorderStyle.NONE}, left:{style:BorderStyle.NONE}, right:{style:BorderStyle.NONE} },
children: [
new Paragraph({ children: [new TextRun({ text: "Yours faithfully,", bold: true, font: "Times New Roman", size: 22 })] }),
sp(),
new Paragraph({ children: [new TextRun({ text: "Dr. ______________________________", font: "Times New Roman", size: 22 })] }),
new Paragraph({ children: [new TextRun({ text: "First Year Resident", font: "Times New Roman", size: 22 })] }),
new Paragraph({ children: [new TextRun({ text: "Department of Ophthalmology", font: "Times New Roman", size: 22 })] }),
new Paragraph({ children: [new TextRun({ text: "[Institution Name]", font: "Times New Roman", size: 22 })] }),
]
}),
]}),
]
}),
]
}]
});
Packer.toBuffer(doc).then(buf => {
const out = '/home/daytona/workspace/childhood-glaucoma/Proforma_Childhood_Glaucoma.docx';
fs.writeFileSync(out, buf);
console.log('Done:', out);
}).catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/childhood-glaucoma && node create_proforma.js && python3 -c " import zipfile, os z = zipfile.ZipFile('Proforma_Childhood_Glaucoma.docx') print('Valid DOCX,', len(z.namelist()), 'files,', round(os.path.getsize('Proforma_Childhood_Glaucoma.docx')/1024,1), 'KB') "
Proforma Childhood Glaucoma
Word Document · DOCX
| Section | Content |
|---|---|
| Title box | Bordered title: "Determinants of Delayed Diagnosis in Childhood Glaucoma at a Tertiary Care Ophthalmic Centre" |
| I. General Information | Patient name, OPD/IPD number, age, sex, residence (urban/rural), distance from clinic, date, examiner |
| II. Caregiver Information | Relationship to child, education level, household income quintile, insurance, consanguinity |
| III. History | Chief complaint, age at first symptom, first symptom type (checkboxes), diagnostic interval with delayed/timely checkbox in yellow, reason for delay, family history, affected siblings, past ocular/medical history, syndromic association line |
| IV. Referral Pathway | First provider, diagnosis at first contact, total visits before referral, misdiagnosis checkbox, referral source, waiting time |
| V. Awareness Questionnaire | 10-item scored table (0-10) with Low/Moderate/High category |
| VI. Visual Acuity | Table: unaided + BCVA both eyes, fixation (infants), occlusion resistance |
| VII. Refraction | Cycloplegic agent, sphere, cylinder, SE, anisometropia |
| VIII. IOP | First visit + under GA, instrument used, elevated checkbox |
| IX. Corneal Examination | Diameter, buphthalmos, clarity, Haab striae, edema, scarring |
| X. Optic Disc & Fundus | C/D ratio, asymmetry, pallor, media, BV, BG, macula, fundus signs of amblyopia |
| XI. Gonioscopy | Angle grade, iris insertion, trabeculodysgenesis, PAS |
| XII. Glaucoma Classification | All 10 types with confirmed/laterality/age columns + final diagnosis yellow box |
| XIII. Amblyopia Assessment | Present/absent, eye, type (deprivation/refractive/strabismic/mixed), severity |
| XIV. Strabismus & Motility | Cover test table at distance and near, deviation type |
| XV. Systemic Examination | Syndrome checkboxes, genetic testing, pediatric referral |
| XVI. Treatment | All surgical/medical options with planned/eye/date columns |
| XVII. Remarks | Free text box |
| XVIII. Provisional Diagnosis | Yellow free-text box |
| Signatures | Two-column: Guided by (supervisor) + Yours faithfully (resident) |
calculate sample size by taking 80% prevalance
| Symbol | Meaning | Value |
|---|---|---|
| Z | Z-score for 95% confidence (two-tailed) | 1.96 |
| P | Expected prevalence of delayed diagnosis | 0.80 (80%) |
| 1 - P | Complement | 0.20 |
| d | Margin of error (precision) | 0.05 (±5%) |
A margin of error of ±5% is used (instead of ±7%) because when P is high (≥75%), a tighter precision of 5% gives a more accurate and conservative estimate.
Step 1: Z² = (1.96)² = 3.8416
Step 2: P × (1-P) = 0.80 × 0.20 = 0.1600
Step 3: Z² × P × (1-P) = 3.8416 × 0.1600 = 0.6147
Step 4: d² = (0.05)² = 0.0025
Step 5: n = 0.6147 ÷ 0.0025 = 245.8
n_adjusted = 246 × 1.10 = 270.6
Required Sample Size = 275 children
| P (Prevalence) | n (raw) | n (+10% buffer) | Final n |
|---|---|---|---|
| 50% | 384 | 422 | 425 |
| 60% | 369 | 406 | 410 |
| 70% | 323 | 355 | 355 |
| 80% (this study) | 246 | 271 | 275 |
| 90% | 138 | 152 | 155 |
Note: Sample size is smallest when P is closest to 0% or 100%, and largest when P = 50%. At P = 80%, the calculation gives a moderate, feasible sample of n = 275.
Minimum n for regression = (10 × k) ÷ P
= (10 × 10) ÷ 0.80
= 100 ÷ 0.80
= 125
Formula: Cochran (1977)
P (prevalence): 80% (0.80)
d (precision): ±5% (0.05)
Confidence: 95% (Z = 1.96)
Raw n: 246
+10% buffer: 271
FINAL n: 275