Introduction-The purpose of an introduction is to provide the rationale behind the work, so that the reviewer may understand and appreciate the objectives. Please describe the importance (significance) of the study. Defend the model- Provide a rationale and describe the reasoning that led you to selecting them. Briefly describe the experimental design and how it accomplished the stated objectives. Describe the situation and specify clearly the gaps in the existing knowledge and/or controversy and in conclusive evidence. The discussion should be supported with appropriate recent review of literature. Objectives-Should specify what kind of knowledge the study is expected to obtain. It should give a clear notion of what is to be described, determined, identified, compared or confirmed. Hypothesis may be stated and objectives should be specific, to the point and achievable. Methodology- Describes all the procedures that will be used to achieve the objectives and justify the study design including any techniques and procedures to be used. This may include: type of study and study design, study population, sample size and selection criteria, proposed intervention (if applicable), data collection procedures & instruments used, quality control, confidentiality, plan of analysis/ statistical tools, ethical considerations with all required forms. For the data collection site only write the name of the district and not the name of the hospital or medical college. Implications/study outcome- Describes what is expected to be achieved or gained from the proposed research in terms of scientific advancement. It can also include the skills and knowledge gained by the student. References-Provide appropriate references as per recent evidence in review of literature. Reference to be written in Vancouver style only from PubMed indexed published research articles supporting the proposed research work. These are the guidelines for ICMR. You know my topic already. Help me to prepare my concept note. We're going ahead with this! Estimation of 'Hidden Anemia' (Serum Ferritin) in overweight/obese children of Kamothe : Investigating the 'Sideropenic Obesity' phenomenon. It is for my individual ICMR STS project. Blood tests :- 1. Serum Ferritin 2. C Reactive Protein 3. Serum Iron & Total Iron Binding Capacity (TIBC) 4. Complete Blood Count (CBC) Sample Size: 50 Children
iron deficiency obesity children serum ferritin
sideropenic obesity overweight children inflammation hepcidin
hidden anemia iron deficiency overweight obese children India prevalence serum ferritin
PMID: 39843408
hepcidin obesity iron deficiency children inflammation CRP
https://pmc.ncbi.nlm.nih.gov/articles/PMC9529649/
obesity childhood India prevalence overweight urban
CRP ferritin correction iron deficiency obese inflammation
| Test | Purpose |
|---|---|
| Serum Ferritin | Primary marker — iron stores (detects hidden/depleted iron) |
| C-Reactive Protein (CRP) | Corrects ferritin for inflammation; confirms low-grade inflammatory state |
| Serum Iron & TIBC (Transferrin Saturation) | Confirms functional iron deficiency; transferrin saturation < 16% = ID |
| Complete Blood Count (CBC) | Detects anaemia (Hb), microcytosis (MCV, MCH), confirms IDA |
Title (25 words max.) Introduction (300 words) Objectives (100 words max.) Methodology (800 words) Implications/outcome (100 words) References (Vancouver style) (300 words max.) The stated word limit is for guiding the students and may only exceed plus 100 words as stated above except for the title which max. 25 words only.
| Term | Definition |
|---|---|
| Overweight | BMI-for-age ≥ 85th and < 95th percentile (IAP/WHO Indian growth charts) |
| Obesity | BMI-for-age ≥ 95th percentile |
| Iron Deficiency (ID) | Serum ferritin < 15 µg/L, corrected for inflammation if CRP > 5 mg/L |
| IDA | ID + Hb below WHO age/sex-specific cut-offs |
| Hidden Anaemia | Low serum ferritin with normal haemoglobin |
| Investigation | Rationale |
|---|---|
| Serum Ferritin | Primary marker of iron stores; detects depleted stores before Hb falls (hidden anaemia) |
| C-Reactive Protein (CRP) | Acute-phase marker; corrects ferritin for obesity-associated chronic inflammation (Gartner correction); confirms low-grade inflammatory state |
| Serum Iron & TIBC | Transferrin saturation (serum iron ÷ TIBC × 100) < 16% confirms functional iron deficiency; TIBC rises in true ID |
| Complete Blood Count (CBC) | Detects anaemia (Hb), microcytosis (low MCV, MCH), hypochromia; confirms IDA and excludes other causes of anaemia |
Please generate a questionnaire of 20 Questions for my Study.
| Parameter | Value | Percentile / Z-score |
|---|---|---|
| Weight (kg) | ||
| Height (cm) | ||
| BMI (kg/m²) | ||
| BMI-for-age | ☐ 85–94th (Overweight) / ☐ ≥95th (Obese) | |
| Waist circumference (cm) |
| Investigation | Result | Reference Range | Classification |
|---|---|---|---|
| Haemoglobin (g/dL) | Age/sex specific (WHO) | ☐ Normal ☐ Anaemia | |
| MCV (fL) | 80–100 fL | ☐ Normal ☐ Microcytic | |
| MCH (pg) | 27–33 pg | ☐ Normal ☐ Low | |
| Serum Ferritin (µg/L) | < 15 = deficient | ☐ Normal ☐ Low ☐ Elevated | |
| CRP (mg/L) | < 5 = normal | ☐ Normal ☐ Elevated | |
| Serum Iron (µg/dL) | 50–120 µg/dL | ☐ Normal ☐ Low | |
| TIBC (µg/dL) | 250–370 µg/dL | ☐ Normal ☐ High | |
| Transferrin Saturation (%) | > 16% = normal | ☐ Normal ☐ Low | |
| Final Iron Status Classification | ☐ Normal ☐ Iron Deficiency (ID) ☐ Iron Deficiency Anaemia (IDA) ☐ Anaemia of Inflammation |
| Section | Purpose in Analysis |
|---|---|
| Q1–Q5 | Demographic profile, SES correlation with iron deficiency |
| Q6 | Primary outcome — BMI classification; anthropometric correlation |
| Q7–Q12 | Dietary iron intake adequacy; vegetarian vs. non-vegetarian iron risk |
| Q13–Q14 | Physical activity — correlate sedentary behaviour with BMI severity |
| Q15–Q16 | Eligibility screening (exclusion criteria) |
| Q17 | Clinical symptom burden of hidden anaemia |
| Q18–Q19 | Family history as risk modifier |
| Q20 | Primary and secondary outcome data; final diagnosis |
Create a Word File please for this.
ls /home/daytona/workspace/ 2>/dev/null && ls /home/daytona/skills/docx/scripts/office/ 2>/dev/null
mkdir -p /home/daytona/workspace/icmr-sts && node --version && npm list -g docx 2>/dev/null | head -5
~/icmr-sts/generate_proforma.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
AlignmentType, HeadingLevel, BorderStyle, WidthType, VerticalAlign,
ShadingType, UnderlineType, PageNumber, NumberFormat, Footer, Header,
TabStopType, TabStopPosition
} = require('docx');
const fs = require('fs');
// ── helpers ──────────────────────────────────────────────────────────────────
const DARK_BLUE = "1F3864";
const MID_BLUE = "2E74B5";
const LIGHT_BLUE = "D6E4F0";
const HEADER_BG = "1F3864";
const ROW_ALT = "EBF3FB";
function bold(text, size = 22, color = "000000") {
return new TextRun({ text, bold: true, size, color });
}
function normal(text, size = 20, color = "000000") {
return new TextRun({ text, size, color });
}
function blankLine() {
return new Paragraph({ children: [new TextRun({ text: "", size: 20 })] });
}
function sectionHeading(text) {
return new Paragraph({
children: [new TextRun({ text, bold: true, size: 24, color: "FFFFFF" })],
alignment: AlignmentType.LEFT,
spacing: { before: 200, after: 100 },
shading: { type: ShadingType.SOLID, color: HEADER_BG, fill: HEADER_BG },
indent: { left: 100 }
});
}
function qHeading(num, text) {
return new Paragraph({
children: [
new TextRun({ text: `Q${num}. `, bold: true, size: 22, color: MID_BLUE }),
new TextRun({ text, bold: true, size: 22, color: "000000" })
],
spacing: { before: 160, after: 60 }
});
}
function option(text) {
return new Paragraph({
children: [new TextRun({ text: `☐ ${text}`, size: 20 })],
spacing: { before: 40, after: 40 },
indent: { left: 400 }
});
}
function optionsRow(opts) {
// Put options side by side using tabs
const runs = [];
opts.forEach((o, i) => {
runs.push(new TextRun({ text: `☐ ${o}`, size: 20 }));
if (i < opts.length - 1) runs.push(new TextRun({ text: " ", size: 20 }));
});
return new Paragraph({ children: runs, spacing: { before: 40, after: 40 }, indent: { left: 400 } });
}
function note(text) {
return new Paragraph({
children: [new TextRun({ text, italics: true, size: 18, color: "595959" })],
spacing: { before: 20, after: 60 },
indent: { left: 400 }
});
}
function fieldLine(label, lineLen = 40) {
return new Paragraph({
children: [
new TextRun({ text: `${label}: `, bold: true, size: 20 }),
new TextRun({ text: "_".repeat(lineLen), size: 20 })
],
spacing: { before: 60, after: 60 },
indent: { left: 400 }
});
}
// ── table helpers ─────────────────────────────────────────────────────────────
function makeHeaderCell(text, widthPct = 25) {
return new TableCell({
children: [new Paragraph({
children: [new TextRun({ text, bold: true, size: 20, color: "FFFFFF" })],
alignment: AlignmentType.CENTER
})],
shading: { type: ShadingType.SOLID, color: HEADER_BG, fill: HEADER_BG },
verticalAlign: VerticalAlign.CENTER,
width: { size: widthPct, type: WidthType.PERCENTAGE }
});
}
function makeCell(text, shade = false, widthPct = 25) {
return new TableCell({
children: [new Paragraph({
children: [new TextRun({ text, size: 19 })],
alignment: AlignmentType.LEFT
})],
shading: shade ? { type: ShadingType.SOLID, color: ROW_ALT, fill: ROW_ALT } : undefined,
verticalAlign: VerticalAlign.CENTER,
width: { size: widthPct, type: WidthType.PERCENTAGE }
});
}
function makeInputCell(shade = false, widthPct = 25) {
return new TableCell({
children: [new Paragraph({
children: [new TextRun({ text: "", size: 19 })],
})],
shading: shade ? { type: ShadingType.SOLID, color: ROW_ALT, fill: ROW_ALT } : undefined,
verticalAlign: VerticalAlign.CENTER,
width: { size: widthPct, type: WidthType.PERCENTAGE }
});
}
// ── ANTHROPOMETRY TABLE (Q6) ──────────────────────────────────────────────────
function anthropoTable() {
const headers = ["Parameter", "Value", "Percentile / Z-score", "Classification"];
const rows_data = [
["Weight (kg)", "", "", ""],
["Height (cm)", "", "", ""],
["BMI (kg/m²)", "", "", ""],
["BMI-for-age", "", "", "☐ 85–94th (Overweight) ☐ ≥95th (Obese)"],
["Waist circumference (cm)", "", "", ""]
];
const widths = [28, 18, 27, 27];
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({
children: headers.map((h, i) => makeHeaderCell(h, widths[i])),
tableHeader: true
}),
...rows_data.map((row, ri) => new TableRow({
children: row.map((cell, ci) => makeCell(cell, ri % 2 === 0, widths[ci]))
}))
]
});
}
// ── LAB RESULTS TABLE (Q20) ──────────────────────────────────────────────────
function labTable() {
const headers = ["Investigation", "Result", "Reference Range", "Classification"];
const rows_data = [
["Haemoglobin (g/dL)", "", "Age/sex specific (WHO)", "☐ Normal ☐ Anaemia"],
["MCV (fL)", "", "80–100 fL", "☐ Normal ☐ Microcytic"],
["MCH (pg)", "", "27–33 pg", "☐ Normal ☐ Low"],
["Serum Ferritin (µg/L)", "", "< 15 = deficient", "☐ Normal ☐ Low ☐ Elevated"],
["CRP (mg/L)", "", "< 5 = normal", "☐ Normal ☐ Elevated"],
["Serum Iron (µg/dL)", "", "50–120 µg/dL", "☐ Normal ☐ Low"],
["TIBC (µg/dL)", "", "250–370 µg/dL", "☐ Normal ☐ High"],
["Transferrin Saturation (%)", "", "> 16% = normal", "☐ Normal ☐ Low"]
];
const widths = [28, 15, 27, 30];
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({
children: headers.map((h, i) => makeHeaderCell(h, widths[i])),
tableHeader: true
}),
...rows_data.map((row, ri) => new TableRow({
children: row.map((cell, ci) => makeCell(cell, ri % 2 === 0, widths[ci]))
})),
// Final classification row
new TableRow({
children: [
makeCell("Final Iron Status Classification", true, 28),
new TableCell({
children: [new Paragraph({
children: [new TextRun({
text: "☐ Normal ☐ Iron Deficiency (ID) ☐ Iron Deficiency Anaemia (IDA) ☐ Anaemia of Inflammation",
size: 18, bold: true
})],
})],
shading: { type: ShadingType.SOLID, color: ROW_ALT, fill: ROW_ALT },
columnSpan: 3
})
]
})
]
});
}
// ── NOTES TABLE ───────────────────────────────────────────────────────────────
function notesTable() {
const rows_data = [
["Q1–Q5", "Demographic profile; SES correlation with iron deficiency"],
["Q6", "Primary outcome — BMI classification; anthropometric correlation with iron parameters"],
["Q7–Q12", "Dietary iron intake adequacy; vegetarian vs. non-vegetarian iron risk; tea/tannin inhibition"],
["Q13–Q14", "Physical activity — correlate sedentary behaviour with BMI severity"],
["Q15–Q16", "Eligibility screening (exclusion criteria)"],
["Q17", "Clinical symptom burden of hidden anaemia"],
["Q18–Q19", "Family history as risk modifier for obesity and anaemia"],
["Q20", "Primary and secondary outcome data; final iron status classification"]
];
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({
children: [makeHeaderCell("Questions", 15), makeHeaderCell("Purpose in Analysis", 85)],
tableHeader: true
}),
...rows_data.map((row, ri) => new TableRow({
children: [makeCell(row[0], ri % 2 === 0, 15), makeCell(row[1], ri % 2 === 0, 85)]
}))
]
});
}
// ── DOCUMENT ──────────────────────────────────────────────────────────────────
const children = [
// ── TITLE BLOCK ──
new Paragraph({
children: [new TextRun({ text: "STUDY PROFORMA", bold: true, size: 36, color: DARK_BLUE })],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 100 }
}),
new Paragraph({
children: [new TextRun({
text: "Estimation of Hidden Anemia (Serum Ferritin) in Overweight/Obese Children of Kamothe:",
bold: true, size: 22, color: MID_BLUE
})],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 60 }
}),
new Paragraph({
children: [new TextRun({
text: "Investigating the Sideropenic Obesity Phenomenon",
bold: true, italics: true, size: 22, color: MID_BLUE
})],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 160 }
}),
new Paragraph({
children: [new TextRun({ text: "ICMR Short Term Studentship (STS) Project | Individual Study", size: 20, italics: true, color: "595959" })],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 240 }
}),
// ── META FIELDS ──
new Paragraph({
children: [
bold("Participant Code: "), normal("_________________ "),
bold("Date: "), normal("_________________")
],
spacing: { before: 60, after: 60 }
}),
new Paragraph({
children: [
bold("OPD No.: "), normal("_________________ "),
bold("Investigator: "), normal("_________________________________")
],
spacing: { before: 60, after: 200 }
}),
// ══ SECTION A ══
sectionHeading("SECTION A — DEMOGRAPHIC INFORMATION"),
blankLine(),
qHeading(1, "What is the child's age?"),
optionsRow(["6–8 years", "9–11 years", "12–13 years", "14–15 years"]),
blankLine(),
qHeading(2, "What is the child's sex?"),
optionsRow(["Male", "Female"]),
blankLine(),
qHeading(3, "What is the child's current class/grade in school?"),
optionsRow(["Class 1–3", "Class 4–6", "Class 7–9", "Class 10 or above", "Not attending school"]),
blankLine(),
qHeading(4, "What is the family's monthly income? (Modified Kuppuswamy Scale)"),
optionsRow(["< ₹5,000", "₹5,000–10,000", "₹10,001–20,000", "₹20,001–50,000", "> ₹50,000"]),
blankLine(),
qHeading(5, "What is the highest education level of the primary caregiver?"),
optionsRow(["Illiterate", "Primary (up to Class 5)", "Secondary (Class 6–10)"]),
optionsRow(["Higher secondary (Class 11–12)", "Graduate and above"]),
blankLine(),
// ══ SECTION B ══
sectionHeading("SECTION B — ANTHROPOMETRY (Filled by Investigator)"),
blankLine(),
qHeading(6, "What is the child's weight, height, and BMI? (Measured values)"),
anthropoTable(),
blankLine(),
// ══ SECTION C ══
sectionHeading("SECTION C — DIETARY HABITS"),
blankLine(),
qHeading(7, "How many meals does the child eat per day?"),
optionsRow(["1 meal", "2 meals", "3 meals", "More than 3 meals"]),
blankLine(),
qHeading(8, "How often does the child consume fast food / junk food (burgers, pizza, chips, noodles)?"),
optionsRow(["Daily", "4–6 times/week", "2–3 times/week", "Once a week", "Rarely/Never"]),
blankLine(),
qHeading(9, "How often does the child consume iron-rich foods (green leafy vegetables, dal, beans, meat/chicken/fish, eggs)?"),
optionsRow(["Daily", "4–6 times/week", "2–3 times/week", "Once a week", "Rarely/Never"]),
blankLine(),
qHeading(10, "Does the child consume tea or coffee around mealtimes?"),
note("(Tea/coffee contain tannins that inhibit iron absorption)"),
optionsRow(["Yes — regularly with meals", "Yes — but between meals", "Occasionally", "Never"]),
blankLine(),
qHeading(11, "What best describes the child's dietary pattern?"),
optionsRow(["Strictly vegetarian", "Eggetarian (veg + eggs)", "Non-vegetarian", "Mixed (occasional non-veg)"]),
blankLine(),
qHeading(12, "Does the child regularly consume iron-fortified foods or iron supplements?"),
optionsRow(["Yes — iron supplements prescribed", "Yes — fortified foods", "No"]),
fieldLine("If YES, specify"),
note("(If YES to supplements → apply Exclusion Criterion; do not enroll)"),
blankLine(),
// ══ SECTION D ══
sectionHeading("SECTION D — PHYSICAL ACTIVITY"),
blankLine(),
qHeading(13, "How many hours per day does the child spend on screens (TV, mobile, tablet, video games)?"),
optionsRow(["< 1 hour", "1–2 hours", "3–4 hours", "> 4 hours"]),
blankLine(),
qHeading(14, "How many days per week does the child engage in outdoor play or physical activity (≥ 30 minutes)?"),
optionsRow(["Every day (7 days)", "4–6 days", "2–3 days", "Once a week", "Rarely/Never"]),
blankLine(),
// ══ SECTION E ══
sectionHeading("SECTION E — CLINICAL & FAMILY HISTORY"),
blankLine(),
qHeading(15, "Has the child been diagnosed with any of the following? (Tick all that apply)"),
option("Thalassaemia / haemoglobinopathy"),
option("Chronic kidney disease"),
option("Juvenile idiopathic arthritis or other autoimmune disease"),
option("Inflammatory bowel disease"),
option("Malignancy"),
option("None of the above ✦ (Must tick this to be eligible)"),
blankLine(),
qHeading(16, "Has the child had any acute febrile illness in the past 2 weeks?"),
optionsRow(["Yes (Exclude from study)", "No"]),
blankLine(),
qHeading(17, "Does the child have any symptoms suggestive of anaemia? (Tick all that apply)"),
option("Unusual tiredness / easy fatigue"),
option("Pallor (pale skin, conjunctiva, nails)"),
option("Pica (eating mud, chalk, ice)"),
option("Reduced attention / concentration in school"),
option("Breathlessness on mild exertion"),
option("None of the above"),
blankLine(),
qHeading(18, "Is there a family history of obesity in parents or siblings?"),
optionsRow(["Both parents obese", "One parent obese", "Sibling obese", "No family history"]),
blankLine(),
qHeading(19, "Is there a family history of anaemia or iron deficiency in the mother or siblings?"),
optionsRow(["Yes — mother", "Yes — sibling", "Yes — both", "No", "Not known"]),
blankLine(),
// ══ SECTION F ══
sectionHeading("SECTION F — LABORATORY RESULTS (Filled by Investigator after reports)"),
blankLine(),
qHeading(20, "Laboratory Investigation Results:"),
labTable(),
blankLine(),
blankLine(),
// ══ CONSENT BLOCK ══
new Paragraph({
children: [new TextRun({ text: "CONSENT & DECLARATION", bold: true, size: 24, color: DARK_BLUE })],
spacing: { before: 200, after: 100 }
}),
new Paragraph({
children: [
new TextRun({ text: "Informed Consent obtained from parent/guardian: ", size: 20 }),
new TextRun({ text: "☐ Yes ☐ No", size: 20, bold: true })
],
spacing: { before: 60, after: 60 }
}),
new Paragraph({
children: [
new TextRun({ text: "Assent obtained from child (≥ 7 years): ", size: 20 }),
new TextRun({ text: "☐ Yes ☐ No ☐ Not applicable (< 7 years)", size: 20, bold: true })
],
spacing: { before: 60, after: 60 }
}),
new Paragraph({
children: [
bold("Eligibility confirmed (all exclusion criteria checked): "),
new TextRun({ text: "☐ Yes ☐ No", size: 20, bold: true })
],
spacing: { before: 60, after: 120 }
}),
new Paragraph({
children: [
bold("Investigator Signature: "),
normal("____________________________ "),
bold("Date: "),
normal("________________")
],
spacing: { before: 80, after: 200 }
}),
// ══ NOTES TABLE ══
new Paragraph({
children: [new TextRun({ text: "GUIDE TO SECTIONS — Purpose in Analysis", bold: true, size: 22, color: DARK_BLUE })],
spacing: { before: 200, after: 100 }
}),
notesTable(),
blankLine(),
new Paragraph({
children: [new TextRun({
text: "Note: Q10 (tea/coffee with meals) and Q11 (dietary pattern) are key modifiable risk factors. Q17 documents symptom burden of hidden anaemia — children with low ferritin but normal Hb often report fatigue and poor concentration, strengthening the case for ferritin-based screening.",
italics: true, size: 18, color: "595959"
})],
spacing: { before: 60, after: 60 }
})
];
const doc = new Document({
styles: {
default: {
document: {
run: { font: "Calibri", size: 20 }
}
}
},
sections: [{
properties: {
page: {
margin: { top: 900, bottom: 900, left: 1080, right: 1080 }
}
},
headers: {
default: new Header({
children: [
new Paragraph({
children: [
new TextRun({ text: "ICMR STS Project — Study Proforma", bold: true, size: 18, color: MID_BLUE }),
new TextRun({ text: " Sideropenic Obesity | Kamothe District", size: 18, color: "595959" })
],
alignment: AlignmentType.CENTER
})
]
})
},
footers: {
default: new Footer({
children: [
new Paragraph({
children: [
new TextRun({ text: "Page ", size: 18, color: "595959" }),
new TextRun({ children: [PageNumber.CURRENT], size: 18, color: "595959" }),
new TextRun({ text: " of ", size: 18, color: "595959" }),
new TextRun({ children: [PageNumber.TOTAL_PAGES], size: 18, color: "595959" }),
new TextRun({ text: " Participant Code: __________ Confidential — Research Use Only", size: 18, color: "595959" })
],
alignment: AlignmentType.CENTER
})
]
})
},
children
}]
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync('/home/daytona/workspace/icmr-sts/ICMR_STS_Proforma.docx', buffer);
console.log('Done: ICMR_STS_Proforma.docx');
});
For the 20th, I am just doing 4 tests, remember?
But are the basics essential too?
What is the appropriately sample Size that I should take? Considering anemia, obesity and age groups that we're taking?
| Study | Population | Prevalence of Iron Deficiency / Hypoferraemia |
|---|---|---|
| Siyaram et al., 2018 (PGIMER, India) | Overweight/obese children, India | 62% |
| Sachdeva et al., 2025 (Meta-analysis) | Obese children globally | 20% |
| Trabzon et al., 2025 (Turkey) | Obese children | ~35–40% |
| Precision | p used | Sample Size Needed |
|---|---|---|
| ±10% (recommended) | 0.62 (Indian data) | 91 |
| ±10% (recommended) | 0.50 (conservative) | 97 |
| ±15% (acceptable for pilot) | 0.50 | 43 |
"Based on an expected prevalence of iron deficiency of 62% in overweight/obese Indian children (Siyaram et al., Indian Pediatrics, 2018), at 95% confidence and 10% absolute precision, the required sample size is 91. Accounting for a 10% dropout/incomplete data rate, the final target sample size is 100 children. As this is an ICMR STS individual project conducted over a limited duration, a minimum of 60 children will be recruited as a feasibility threshold, which provides a margin of error of ±12.4% — acceptable for a pilot prevalence study."
| Age Group | Haemoglobin cut-off (WHO anaemia) | Clinical note |
|---|---|---|
| 6–11 years | Hb < 11.5 g/dL | Prepubertal; lower iron demand |
| 12–14 years (girls) | Hb < 12.0 g/dL | Menstrual losses add iron risk |
| 12–15 years (boys) | Hb < 12.0 g/dL | Growth spurt increases demand |
Would you like me to update the methodology section of your concept note with the revised sample size calculation and justification?
My budget is Rs. 1065 per person and the stipend is Rs. 60,000 only. Tell me accordingly.
| Parameter | Value |
|---|---|
| Total ICMR STS Stipend | ₹60,000 |
| Cost per participant | ₹1,065 |
| Maximum possible n | ₹60,000 ÷ ₹1,065 = 56.3 → 56 children |
| Expense Head | Estimated Cost |
|---|---|
| Blood test costs (per participant × n) | Variable |
| Stationery, printing (proformas, consent forms) | ₹500–1,000 |
| Stationary consumables (gloves, cotton, spirit) | ₹500–800 |
| Travel/logistics (if any home visits or follow-up) | ₹1,000–2,000 |
| Report printing & binding | ₹500–1,000 |
| Reserve/contingency (~5%) | ₹2,000–3,000 |
"Sample size was calculated using the formula for single proportion: n = Z² × p(1-p) / d²Using an expected prevalence of iron deficiency of 62% in overweight/obese Indian children (Siyaram et al., Indian Pediatrics, 2018), at 95% confidence level (Z = 1.96) and 15% absolute precision (d = 0.15), the required sample size is 40. Adjusting for a 20% contingency for incomplete data or dropouts, the final sample size is 50 children.Additionally, the per-participant investigation cost of ₹1,065 (covering Serum Ferritin, CRP, Serum Iron with TIBC, and CBC) within the fixed ICMR STS stipend of ₹60,000 independently limits the feasible sample to approximately 50 participants after accounting for non-laboratory project expenditure. This study is therefore designed as a pilot prevalence study, and the findings will serve as local baseline data for a future larger-scale investigation."
| Parameter | Value |
|---|---|
| n = 40 (at d = 15%, p = 0.62) | Minimum statistical requirement |
| +20% dropout correction | 40 × 1.20 = 48 → round to 50 |
| Budget check: 50 × ₹1,065 | = ₹53,250 |
| Overhead (printing, consumables, report) | ~₹5,000–6,000 |
| Total estimated expenditure | ~₹58,250–59,250 |
| Within ₹60,000 stipend? | Yes ✓ |
Update the Methodology section with this revised sample size justification and budget details
n = Z² × p(1−p) / d²
| Term | Definition |
|---|---|
| Overweight | BMI-for-age ≥ 85th and < 95th percentile (IAP/WHO Indian growth charts) |
| Obesity | BMI-for-age ≥ 95th percentile |
| Iron Deficiency (ID) | Serum ferritin < 15 µg/L, corrected for inflammation if CRP > 5 mg/L |
| IDA | ID + Hb below WHO age/sex-specific cut-offs |
| Hidden Anaemia | Low serum ferritin with normal haemoglobin |
| Investigation | Rationale |
|---|---|
| Serum Ferritin | Primary marker of iron stores; detects depleted stores before Hb falls (hidden anaemia) |
| C-Reactive Protein (CRP) | Corrects ferritin for obesity-associated chronic inflammation; confirms low-grade inflammatory state |
| Serum Iron & TIBC | Transferrin saturation < 16% confirms functional iron deficiency; TIBC rises in true iron deficiency |
| Complete Blood Count (CBC) | Detects anaemia (Hb), microcytosis (MCV, MCH); confirms IDA and excludes other causes |
Update the Methodology section with this revised sample size justification and budget details
ls /home/daytona/workspace/icmr-sts/
~/icmr-sts/generate_concept_note.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
AlignmentType, HeadingLevel, BorderStyle, WidthType, VerticalAlign,
ShadingType, Header, Footer, PageNumber
} = require('docx');
const fs = require('fs');
// ── Colours ───────────────────────────────────────────────────────────────────
const DARK_BLUE = "1F3864";
const MID_BLUE = "2E74B5";
const LIGHT_BLUE = "D6E4F0";
const ROW_ALT = "EBF3FB";
// ── Helpers ───────────────────────────────────────────────────────────────────
function blankLine() {
return new Paragraph({ children: [new TextRun({ text: "", size: 20 })] });
}
function sectionHeading(text) {
return new Paragraph({
children: [new TextRun({ text, bold: true, size: 26, color: "FFFFFF" })],
alignment: AlignmentType.LEFT,
spacing: { before: 280, after: 120 },
shading: { type: ShadingType.SOLID, color: DARK_BLUE, fill: DARK_BLUE },
indent: { left: 100 }
});
}
function subHeading(text) {
return new Paragraph({
children: [new TextRun({ text, bold: true, size: 22, color: MID_BLUE })],
spacing: { before: 160, after: 60 }
});
}
function bodyPara(text, indent = 0) {
return new Paragraph({
children: [new TextRun({ text, size: 20 })],
spacing: { before: 60, after: 60 },
indent: indent ? { left: indent } : undefined,
alignment: AlignmentType.JUSTIFIED
});
}
function boldBodyPara(parts) {
// parts = [{text, bold}]
return new Paragraph({
children: parts.map(p => new TextRun({ text: p.text, bold: !!p.bold, size: 20 })),
spacing: { before: 60, after: 60 },
alignment: AlignmentType.JUSTIFIED
});
}
function bullet(text) {
return new Paragraph({
children: [new TextRun({ text: `• ${text}`, size: 20 })],
spacing: { before: 40, after: 40 },
indent: { left: 400, hanging: 200 }
});
}
function numberedItem(n, text) {
return new Paragraph({
children: [
new TextRun({ text: `${n}. `, bold: true, size: 20, color: MID_BLUE }),
new TextRun({ text, size: 20 })
],
spacing: { before: 40, after: 40 },
indent: { left: 400 }
});
}
// ── Two-column table helper ───────────────────────────────────────────────────
function makeHeaderCell(text, widthPct) {
return new TableCell({
children: [new Paragraph({
children: [new TextRun({ text, bold: true, size: 19, color: "FFFFFF" })],
alignment: AlignmentType.CENTER
})],
shading: { type: ShadingType.SOLID, color: DARK_BLUE, fill: DARK_BLUE },
verticalAlign: VerticalAlign.CENTER,
width: { size: widthPct, type: WidthType.PERCENTAGE }
});
}
function makeCell(text, shade, widthPct, bold = false) {
return new TableCell({
children: [new Paragraph({
children: [new TextRun({ text, size: 19, bold })],
alignment: AlignmentType.LEFT
})],
shading: shade ? { type: ShadingType.SOLID, color: ROW_ALT, fill: ROW_ALT } : undefined,
verticalAlign: VerticalAlign.CENTER,
width: { size: widthPct, type: WidthType.PERCENTAGE },
margins: { top: 60, bottom: 60, left: 80, right: 80 }
});
}
function twoColTable(headers, rows, widths) {
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({
children: headers.map((h, i) => makeHeaderCell(h, widths[i])),
tableHeader: true
}),
...rows.map((row, ri) => new TableRow({
children: row.map((cell, ci) => makeCell(cell, ri % 2 === 0, widths[ci]))
}))
]
});
}
// ── Budget Table ─────────────────────────────────────────────────────────────
function budgetTable() {
const headers = ["Expense Head", "Amount (₹)"];
const rows = [
["Laboratory investigations (50 × ₹1,065)", "₹53,250"],
["Stationery & printing (proformas, consent forms)", "₹1,000"],
["Consumables (gloves, cotton, spirit swabs)", "₹800"],
["Report preparation & binding", "₹500"],
["Contingency / miscellaneous (~5%)", "₹2,700"],
["TOTAL ESTIMATED EXPENDITURE", "₹58,250"]
];
const widths = [72, 28];
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({
children: headers.map((h, i) => makeHeaderCell(h, widths[i])),
tableHeader: true
}),
...rows.map((row, ri) => {
const isTotal = ri === rows.length - 1;
return new TableRow({
children: row.map((cell, ci) => new TableCell({
children: [new Paragraph({
children: [new TextRun({ text: cell, size: 19, bold: isTotal, color: isTotal ? DARK_BLUE : "000000" })],
alignment: ci === 1 ? AlignmentType.RIGHT : AlignmentType.LEFT
})],
shading: isTotal
? { type: ShadingType.SOLID, color: LIGHT_BLUE, fill: LIGHT_BLUE }
: ri % 2 === 0
? { type: ShadingType.SOLID, color: ROW_ALT, fill: ROW_ALT }
: undefined,
verticalAlign: VerticalAlign.CENTER,
width: { size: widths[ci], type: WidthType.PERCENTAGE },
margins: { top: 60, bottom: 60, left: 80, right: 80 }
}))
});
})
]
});
}
// ═════════════════════════════════════════════════════════════════════════════
// DOCUMENT CONTENT
// ═════════════════════════════════════════════════════════════════════════════
const children = [
// ── TITLE ──
new Paragraph({
children: [new TextRun({ text: "CONCEPT NOTE", bold: true, size: 40, color: DARK_BLUE })],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 80 }
}),
new Paragraph({
children: [new TextRun({ text: "ICMR Short Term Studentship (STS) — Individual Project", size: 22, italics: true, color: "595959" })],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 200 }
}),
new Paragraph({
children: [new TextRun({
text: "Estimation of Hidden Anemia (Serum Ferritin) in Overweight/Obese Children of Kamothe: Investigating the Sideropenic Obesity Phenomenon",
bold: true, size: 26, color: MID_BLUE
})],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 300 }
}),
// ── TITLE SECTION ──
sectionHeading("TITLE"),
bodyPara("Estimation of Hidden Anemia (Serum Ferritin) in Overweight/Obese Children of Kamothe: Investigating the Sideropenic Obesity Phenomenon"),
blankLine(),
// ══════════════════════════════════════════════════════════════════════════
// INTRODUCTION
// ══════════════════════════════════════════════════════════════════════════
sectionHeading("INTRODUCTION"),
blankLine(),
bodyPara("India carries a dual nutritional burden: iron deficiency anaemia (IDA) affects over 53% of Indian children, while childhood obesity is rising sharply in urban and peri-urban communities due to sedentary lifestyles and consumption of calorie-dense, micronutrient-poor diets.¹ Kamothe, a rapidly urbanising township in Navi Mumbai, reflects this epidemiological transition."),
bodyPara("Clinicians traditionally associate obesity with excess nutrition and therefore overlook the possibility of concurrent micronutrient deficiency. This assumption is flawed. Obese children frequently harbour subclinical iron deficiency without overt anaemia — a state termed 'hidden anemia' — escaping detection on routine haemoglobin screening. The phenomenon of coexisting obesity and iron deficiency is described as 'Sideropenic Obesity'."),
bodyPara("Three mechanisms underlie this paradox. First, obese children preferentially consume refined carbohydrates and processed foods low in bioavailable iron, leading to absolute iron insufficiency.² Second, their expanded blood volume and greater lean mass increase total iron demand beyond dietary supply. Third, adipose tissue secretes pro-inflammatory cytokines (IL-6, TNF-alpha) that stimulate hepatic hepcidin synthesis. Elevated hepcidin suppresses intestinal iron absorption and sequesters iron in macrophages, producing functional iron deficiency.³ Critically, serum ferritin — the primary marker of iron stores — is itself an acute-phase reactant elevated by the same inflammation, potentially masking true iron depletion. Simultaneous measurement of C-reactive protein (CRP) is therefore essential to correctly interpret ferritin in this population."),
bodyPara("A 2025 systematic review and meta-analysis of 42 studies (49,206 children) confirmed obese children have 64% greater odds of iron deficiency (pooled OR 1.64; 95% CI 1.22-2.21) with significantly lower serum iron and higher hepcidin than normal-weight peers.⁴ An Indian study from Chandigarh found a 62% prevalence of hypoferraemic state in overweight/obese children — far exceeding Western estimates of 2-15%.⁵"),
bodyPara("Despite this, no data exist from the Kamothe/Navi Mumbai region. This study addresses that gap by simultaneously measuring serum ferritin, CRP, serum iron, TIBC, and CBC to accurately characterise hidden anaemia in this overlooked population."),
blankLine(),
// ══════════════════════════════════════════════════════════════════════════
// OBJECTIVES
// ══════════════════════════════════════════════════════════════════════════
sectionHeading("OBJECTIVES"),
blankLine(),
subHeading("Primary Objective:"),
bodyPara("To estimate the prevalence of hidden anaemia (iron deficiency without overt anaemia, assessed by serum ferritin corrected for inflammation using CRP) in overweight and obese children aged 6-15 years in Kamothe district."),
subHeading("Secondary Objectives:"),
numberedItem(1, "To assess iron status using serum iron and TIBC (transferrin saturation)."),
numberedItem(2, "To determine the prevalence of frank IDA using CBC parameters."),
numberedItem(3, "To correlate BMI z-score with serum ferritin, iron, TIBC, and CRP."),
numberedItem(4, "To compare iron parameters between overweight and obese subgroups."),
blankLine(),
subHeading("Hypothesis:"),
bodyPara("The prevalence of inflammation-corrected iron deficiency (low serum ferritin, adjusted using CRP) is significantly higher in overweight/obese children than reported population norms for Indian children of the same age group."),
blankLine(),
// ══════════════════════════════════════════════════════════════════════════
// METHODOLOGY
// ══════════════════════════════════════════════════════════════════════════
sectionHeading("METHODOLOGY"),
blankLine(),
subHeading("Study Design:"),
bodyPara("Cross-sectional, observational study."),
subHeading("Study Setting:"),
bodyPara("Outpatient department, Kamothe district."),
subHeading("Study Population:"),
bodyPara("Children aged 6-15 years with overweight or obesity attending OPD."),
blankLine(),
// ── SAMPLE SIZE ──
subHeading("Sample Size: 50 children"),
bodyPara("Sample size was calculated using the standard formula for single proportion estimation:"),
new Paragraph({
children: [new TextRun({ text: "n = Z\u00b2 \u00d7 p(1\u2212p) / d\u00b2", bold: true, size: 22, color: DARK_BLUE })],
alignment: AlignmentType.CENTER,
spacing: { before: 100, after: 100 },
shading: { type: ShadingType.SOLID, color: LIGHT_BLUE, fill: LIGHT_BLUE }
}),
bodyPara("Using an expected prevalence of iron deficiency of 62% in overweight/obese Indian children (Siyaram et al., Indian Pediatrics, 2018) as the reference value (p = 0.62), at a 95% confidence level (Z = 1.96) and 15% absolute precision (d = 0.15), the minimum required sample size is 40 children. Adjusting for a 20% contingency for incomplete data or participant dropouts, the final target sample size is 50 children (40 x 1.20 = 48, rounded to 50)."),
bodyPara("This sample size is further independently validated by financial feasibility. The per-participant laboratory cost is Rs. 1,065 (covering all four investigations: Serum Ferritin, C-Reactive Protein, Serum Iron with TIBC, and Complete Blood Count). The total ICMR STS stipend of Rs. 60,000, after deducting an estimated Rs. 6,000 for non-laboratory project expenditure, leaves Rs. 54,000 available for investigations — sufficient for a maximum of 50 participants (50 x Rs. 1,065 = Rs. 53,250)."),
bodyPara("This study is therefore designed as a pilot prevalence study. Findings will establish the first local baseline data on hidden anaemia in this population and will serve as reference data for a future larger-scale investigation."),
blankLine(),
subHeading("Proposed Budget:"),
budgetTable(),
blankLine(),
new Paragraph({
children: [new TextRun({ text: "Total ICMR STS Stipend: Rs. 60,000 | Total Estimated Expenditure: Rs. 58,250 | Balance: Rs. 1,750", bold: true, size: 20, color: DARK_BLUE })],
alignment: AlignmentType.CENTER,
spacing: { before: 80, after: 80 },
shading: { type: ShadingType.SOLID, color: LIGHT_BLUE, fill: LIGHT_BLUE }
}),
blankLine(),
// ── OPERATIONAL DEFINITIONS ──
subHeading("Operational Definitions:"),
twoColTable(
["Term", "Definition"],
[
["Overweight", "BMI-for-age >= 85th and < 95th percentile (IAP/WHO Indian growth charts)"],
["Obesity", "BMI-for-age >= 95th percentile"],
["Iron Deficiency (ID)", "Serum ferritin < 15 microg/L, corrected for inflammation if CRP > 5 mg/L"],
["Iron Deficiency Anaemia (IDA)", "ID + Hb below WHO age/sex-specific cut-offs"],
["Hidden Anaemia", "Low serum ferritin with normal haemoglobin"]
],
[35, 65]
),
blankLine(),
// ── INCLUSION/EXCLUSION ──
subHeading("Inclusion Criteria:"),
bullet("Age 6-15 years"),
bullet("BMI-for-age >= 85th percentile (overweight or obese)"),
bullet("Written informed consent from parent/guardian; assent from child >= 7 years"),
blankLine(),
subHeading("Exclusion Criteria:"),
bullet("Known haemoglobinopathy (thalassaemia, sickle cell disease)"),
bullet("Currently receiving iron supplementation or haematinics"),
bullet("Chronic inflammatory disease (JIA, IBD, CKD, malignancy)"),
bullet("Acute febrile illness within 2 weeks of sampling"),
blankLine(),
// ── DATA COLLECTION ──
subHeading("Data Collection Instruments:"),
bodyPara("A pre-structured proforma capturing: age, sex, dietary history (frequency of fast food and iron-rich food intake), physical activity level, socioeconomic status (modified Kuppuswamy scale), and anthropometry (weight, height, BMI, waist circumference)."),
subHeading("Anthropometry:"),
bodyPara("Weight and height measured with calibrated instruments; BMI calculated (kg/m²); BMI-for-age z-score plotted on WHO/IAP growth charts."),
blankLine(),
// ── BLOOD TESTS ──
subHeading("Blood Tests (single venipuncture; ~5 mL fasting sample):"),
twoColTable(
["Investigation", "Rationale"],
[
["Serum Ferritin", "Primary marker of iron stores; detects depleted stores before Hb falls (hidden anaemia)"],
["C-Reactive Protein (CRP)", "Corrects ferritin for obesity-associated chronic inflammation; confirms low-grade inflammatory state"],
["Serum Iron & TIBC", "Transferrin saturation (serum iron / TIBC x 100) < 16% confirms functional iron deficiency; TIBC rises in true iron deficiency"],
["Complete Blood Count (CBC)", "Detects anaemia (Hb), microcytosis (MCV, MCH); confirms IDA and excludes other causes of anaemia"]
],
[30, 70]
),
blankLine(),
subHeading("Justification of Panel:"),
bodyPara("Ferritin alone is unreliable in obesity due to inflammation-driven false elevation. CRP co-measurement allows interpretation of ferritin in the correct inflammatory context. Serum iron and TIBC provide transferrin saturation, a functional measure of iron supply to erythroid precursors. CBC identifies the downstream haematological consequence of iron deficiency."),
blankLine(),
// ── QC & CONFIDENTIALITY ──
subHeading("Quality Control:"),
bullet("Analyser calibrated daily with standard controls"),
bullet("Duplicate testing for outlier ferritin values (> 2 SD from group mean)"),
bullet("Laboratory personnel blinded to BMI category of participant"),
blankLine(),
subHeading("Confidentiality:"),
bodyPara("Participants assigned unique numeric codes. Names and hospital identifiers excluded from data files. Data stored in password-protected databases accessible only to the investigator and guide."),
blankLine(),
// ── STATISTICAL ANALYSIS ──
subHeading("Plan of Analysis / Statistical Tools:"),
bullet("Descriptive: Prevalence of ID and IDA with 95% CI; mean ± SD for continuous variables"),
bullet("Correlation: Spearman's rank correlation — BMI z-score vs. ferritin, serum iron, transferrin saturation, CRP"),
bullet("Comparison: Mann-Whitney U test — iron parameters in overweight vs. obese subgroups"),
bullet("Logistic regression: Predictors of iron deficiency (age, sex, BMI category, CRP level)"),
bullet("Software: SPSS v23 / GraphPad Prism"),
blankLine(),
// ── ETHICS ──
subHeading("Ethical Considerations:"),
bullet("Institutional Ethics Committee approval will be obtained before study commencement"),
bullet("Written informed consent from parent/guardian; written assent from children >= 7 years"),
bullet("Study is purely observational; no experimental intervention"),
bullet("Blood volume drawn (<= 5 mL, single prick) is within safe paediatric limits"),
bullet("Participants identified with IDA will be referred to the treating paediatrician for standard management"),
bullet("Participation is voluntary; withdrawal does not affect clinical care"),
blankLine(),
// ══════════════════════════════════════════════════════════════════════════
// IMPLICATIONS
// ══════════════════════════════════════════════════════════════════════════
sectionHeading("IMPLICATIONS / STUDY OUTCOME"),
blankLine(),
bodyPara("This study will generate the first local prevalence data on hidden anaemia in overweight/obese children from Kamothe district, contributing evidence on the under-recognised 'Sideropenic Obesity' phenomenon in urban Maharashtra. Findings will challenge the clinical assumption that obese children are adequately nourished, supporting the case for routine iron screening in this population. Results may inform local paediatric screening protocols and serve as pilot data for a future larger ICMR-funded multicentre study. The student will gain skills in clinical research design, paediatric anthropometry, interpretation of iron biomarkers in the context of inflammation, and biostatistical analysis."),
blankLine(),
// ══════════════════════════════════════════════════════════════════════════
// REFERENCES
// ══════════════════════════════════════════════════════════════════════════
sectionHeading("REFERENCES (Vancouver Style — PubMed Indexed)"),
blankLine(),
new Paragraph({
children: [
new TextRun({ text: "1. ", bold: true, size: 20 }),
new TextRun({ text: "Sharma N, Sanjeevi RR, Balasubramanian K. A systematic review on prevalence of overweight and obesity among school children and adolescents in Indian population. Indian J Endocrinol Metab. 2024 Mar-Apr;28(2):105-115. PMID: 38911116.", size: 20 })
],
spacing: { before: 60, after: 60 },
indent: { left: 360, hanging: 360 }
}),
new Paragraph({
children: [
new TextRun({ text: "2. ", bold: true, size: 20 }),
new TextRun({ text: "Ortiz Perez M, Vazquez Lopez MA, Ibanez Alcalde M. Relationship between obesity and iron deficiency in healthy adolescents. Child Obes. 2020 Sep;16(6):401-408. PMID: 32877290.", size: 20 })
],
spacing: { before: 60, after: 60 },
indent: { left: 360, hanging: 360 }
}),
new Paragraph({
children: [
new TextRun({ text: "3. ", bold: true, size: 20 }),
new TextRun({ text: "Dogan G, Andiran N, Celik N. Iron parameters, pro-hepcidin and soluble transferrin receptor levels in obese children. Minerva Pediatr. 2020 Jun;72(3):219-226. PMID: 28006888.", size: 20 })
],
spacing: { before: 60, after: 60 },
indent: { left: 360, hanging: 360 }
}),
new Paragraph({
children: [
new TextRun({ text: "4. ", bold: true, size: 20 }),
new TextRun({ text: "Sachdeva M, Malik M, Purohit A, Jain L, Kaur K, Pradhan P. Association of iron deficiency and anemia with obesity among children: a systematic review and meta-analysis. Obes Rev. 2025 Jun;26(6):e13892. PMID: 39843408.", size: 20 })
],
spacing: { before: 60, after: 60 },
indent: { left: 360, hanging: 360 }
}),
new Paragraph({
children: [
new TextRun({ text: "5. ", bold: true, size: 20 }),
new TextRun({ text: "Siyaram D, Bhatia P, Dayal D, Bhalla AK, Marathe R. Hypoferremic state in overweight and obese children. Indian Pediatr. 2018 Jan 15;55(1):72-73. PMID: 29067916.", size: 20 })
],
spacing: { before: 60, after: 60 },
indent: { left: 360, hanging: 360 }
}),
new Paragraph({
children: [
new TextRun({ text: "6. ", bold: true, size: 20 }),
new TextRun({ text: "Gosdin L, Sharma AJ, Suchdev PS. Limits of detection in acute-phase protein biomarkers affect inflammation correction of serum ferritin for quantifying iron status among school-age children. J Nutr. 2022 May 5;152(5):1283-1293. PMID: 35179209.", size: 20 })
],
spacing: { before: 60, after: 60 },
indent: { left: 360, hanging: 360 }
}),
new Paragraph({
children: [
new TextRun({ text: "7. ", bold: true, size: 20 }),
new TextRun({ text: "Mei Z, Addo OY, Jefferds ME, et al. Physiologically based serum ferritin thresholds for iron deficiency in children: a NHANES cross-sectional study. Lancet Haematol. 2021 Aug;8(8):e572-e582. PMID: 34329578.", size: 20 })
],
spacing: { before: 60, after: 60 },
indent: { left: 360, hanging: 360 }
}),
blankLine()
];
// ═════════════════════════════════════════════════════════════════════════════
// BUILD DOCUMENT
// ═════════════════════════════════════════════════════════════════════════════
const doc = new Document({
styles: {
default: {
document: { run: { font: "Calibri", size: 20 } }
}
},
sections: [{
properties: {
page: { margin: { top: 900, bottom: 900, left: 1080, right: 1080 } }
},
headers: {
default: new Header({
children: [new Paragraph({
children: [
new TextRun({ text: "ICMR STS Concept Note | ", bold: true, size: 18, color: MID_BLUE }),
new TextRun({ text: "Sideropenic Obesity — Kamothe District", size: 18, color: "595959" })
],
alignment: AlignmentType.CENTER
})]
})
},
footers: {
default: new Footer({
children: [new Paragraph({
children: [
new TextRun({ text: "Page ", size: 18, color: "595959" }),
new TextRun({ children: [PageNumber.CURRENT], size: 18, color: "595959" }),
new TextRun({ text: " of ", size: 18, color: "595959" }),
new TextRun({ children: [PageNumber.TOTAL_PAGES], size: 18, color: "595959" }),
new TextRun({ text: " Confidential — Research Use Only", size: 18, color: "595959" })
],
alignment: AlignmentType.CENTER
})]
})
},
children
}]
});
Packer.toBuffer(doc).then(buffer => {
const outPath = '/home/daytona/workspace/icmr-sts/ICMR_STS_Concept_Note.docx';
fs.writeFileSync(outPath, buffer);
console.log('SUCCESS: ' + outPath);
});
cd /home/daytona/workspace/icmr-sts && node generate_concept_note.js
python3 /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/icmr-sts/ICMR_STS_Concept_Note.docx
cd /home/daytona/workspace/icmr-sts && python3 -c " import zipfile, os path = 'ICMR_STS_Concept_Note.docx' size = os.path.getsize(path) print(f'File size: {size} bytes ({size/1024:.1f} KB)') with zipfile.ZipFile(path) as z: names = z.namelist() print('ZIP contents:', names) # Check document.xml is valid with z.open('word/document.xml') as f: content = f.read() print(f'document.xml size: {len(content)} bytes') print('First 200 chars:', content[:200]) "
ICMR STS Concept Note
Word Document · DOCX
| Section | Content |
|---|---|
| Title | 24-word ICMR-compliant title |
| Introduction | ~290 words — dual burden, sideropenic obesity, hepcidin mechanism, evidence |
| Objectives | Primary + 4 secondary objectives + hypothesis |
| Methodology | Full updated section including: |
| - Sample size formula with working (n=40 → adjusted to 50) | |
| - Financial validation (₹1,065/participant × 50 = ₹53,250) | |
| - Detailed budget table (tests + overheads = ₹58,250 of ₹60,000) | |
| - Operational definitions, inclusion/exclusion, blood tests with rationale | |
| - QC, ethics, statistical plan | |
| Implications | ~95 words |
| References | 7 Vancouver-style PubMed-indexed citations |
Generate the 20-question proforma Word file now (you mentioned 4 blood tests only)
~/icmr-sts/generate_proforma.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
AlignmentType, WidthType, VerticalAlign, ShadingType, Header, Footer, PageNumber
} = require('docx');
const fs = require('fs');
const DARK_BLUE = "1F3864";
const MID_BLUE = "2E74B5";
const LIGHT_BLUE = "D6E4F0";
const ROW_ALT = "EBF3FB";
// ── helpers ───────────────────────────────────────────────────────────────────
function blank() {
return new Paragraph({ children: [new TextRun({ text: "", size: 20 })] });
}
function secHeading(text) {
return new Paragraph({
children: [new TextRun({ text, bold: true, size: 24, color: "FFFFFF" })],
alignment: AlignmentType.LEFT,
spacing: { before: 260, after: 100 },
shading: { type: ShadingType.SOLID, color: DARK_BLUE, fill: DARK_BLUE },
indent: { left: 100 }
});
}
function qHead(num, text) {
return new Paragraph({
children: [
new TextRun({ text: `Q${num}. `, bold: true, size: 22, color: MID_BLUE }),
new TextRun({ text, bold: true, size: 22, color: "000000" })
],
spacing: { before: 160, after: 60 }
});
}
function opt(text) {
return new Paragraph({
children: [new TextRun({ text: `\u2610 ${text}`, size: 20 })],
spacing: { before: 36, after: 36 },
indent: { left: 440 }
});
}
// options laid out in a single line (2–4 short options)
function optsInline(arr) {
const runs = [];
arr.forEach((o, i) => {
runs.push(new TextRun({ text: `\u2610 ${o}`, size: 20 }));
if (i < arr.length - 1) runs.push(new TextRun({ text: " ", size: 20 }));
});
return new Paragraph({ children: runs, spacing: { before: 36, after: 36 }, indent: { left: 440 } });
}
function noteLine(text) {
return new Paragraph({
children: [new TextRun({ text, italics: true, size: 18, color: "595959" })],
spacing: { before: 20, after: 50 },
indent: { left: 440 }
});
}
function fieldLine(label, len = 38) {
return new Paragraph({
children: [
new TextRun({ text: `${label}: `, bold: true, size: 20 }),
new TextRun({ text: "_".repeat(len), size: 20 })
],
spacing: { before: 50, after: 50 },
indent: { left: 440 }
});
}
// ── table cell helpers ────────────────────────────────────────────────────────
function hCell(text, w) {
return new TableCell({
children: [new Paragraph({
children: [new TextRun({ text, bold: true, size: 19, color: "FFFFFF" })],
alignment: AlignmentType.CENTER
})],
shading: { type: ShadingType.SOLID, color: DARK_BLUE, fill: DARK_BLUE },
verticalAlign: VerticalAlign.CENTER,
width: { size: w, type: WidthType.PERCENTAGE },
margins: { top: 60, bottom: 60, left: 80, right: 80 }
});
}
function dCell(text, shade, w, bold = false) {
return new TableCell({
children: [new Paragraph({
children: [new TextRun({ text, size: 19, bold })],
alignment: AlignmentType.LEFT
})],
shading: shade ? { type: ShadingType.SOLID, color: ROW_ALT, fill: ROW_ALT } : undefined,
verticalAlign: VerticalAlign.CENTER,
width: { size: w, type: WidthType.PERCENTAGE },
margins: { top: 60, bottom: 60, left: 80, right: 80 }
});
}
// ── anthropometry table ───────────────────────────────────────────────────────
function anthropoTable() {
const cols = [30, 20, 25, 25];
const headers = ["Parameter", "Value", "Percentile / Z-score", "Classification"];
const rows = [
["Weight (kg)", "", "", ""],
["Height (cm)", "", "", ""],
["BMI (kg/m²)", "", "", ""],
["BMI-for-age", "", "", "\u2610 85-94th (Overweight) \u2610 \u226595th (Obese)"],
["Waist circumference (cm)", "", "", ""]
];
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ children: headers.map((h, i) => hCell(h, cols[i])), tableHeader: true }),
...rows.map((r, ri) => new TableRow({ children: r.map((c, ci) => dCell(c, ri % 2 === 0, cols[ci])) }))
]
});
}
// ── lab results table (Q20) — 4 tests only ───────────────────────────────────
function labTable() {
const cols = [28, 14, 28, 30];
const headers = ["Investigation", "Result", "Reference Range", "Classification"];
const rows = [
// ── Serum Ferritin
["Serum Ferritin (µg/L)", "", "< 15 µg/L = Iron Deficiency", "\u2610 Normal \u2610 Low \u2610 Elevated"],
// ── CRP
["C-Reactive Protein / CRP (mg/L)", "", "< 5 mg/L = Normal", "\u2610 Normal \u2610 Elevated"],
// ── Serum Iron & TIBC
["Serum Iron (µg/dL)", "", "50-120 µg/dL", "\u2610 Normal \u2610 Low"],
["TIBC (µg/dL)", "", "250-370 µg/dL", "\u2610 Normal \u2610 High"],
["Transferrin Saturation (%)\n(Serum Iron / TIBC × 100)", "", "> 16% = Normal", "\u2610 Normal \u2610 Low"],
// ── CBC
["Haemoglobin (g/dL)", "", "WHO age/sex cut-offs", "\u2610 Normal \u2610 Anaemia"],
["MCV (fL)", "", "80-100 fL", "\u2610 Normal \u2610 Microcytic"],
["MCH (pg)", "", "27-33 pg", "\u2610 Normal \u2610 Low"],
["RBC Morphology", "", "Normocytic normochromic", "\u2610 Normal \u2610 Hypochromic microcytic"]
];
// group sub-header rows
function groupRow(label) {
return new TableRow({
children: [
new TableCell({
children: [new Paragraph({
children: [new TextRun({ text: label, bold: true, size: 18, color: "FFFFFF" })],
alignment: AlignmentType.LEFT
})],
shading: { type: ShadingType.SOLID, color: MID_BLUE, fill: MID_BLUE },
columnSpan: 4,
margins: { top: 50, bottom: 50, left: 80, right: 80 }
})
]
});
}
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ children: headers.map((h, i) => hCell(h, cols[i])), tableHeader: true }),
groupRow("TEST 1 — Serum Ferritin"),
new TableRow({ children: rows[0].map((c, ci) => dCell(c, false, cols[ci])) }),
groupRow("TEST 2 — C-Reactive Protein (CRP)"),
new TableRow({ children: rows[1].map((c, ci) => dCell(c, true, cols[ci])) }),
groupRow("TEST 3 — Serum Iron & TIBC"),
new TableRow({ children: rows[2].map((c, ci) => dCell(c, false, cols[ci])) }),
new TableRow({ children: rows[3].map((c, ci) => dCell(c, true, cols[ci])) }),
new TableRow({ children: rows[4].map((c, ci) => dCell(c, false, cols[ci])) }),
groupRow("TEST 4 — Complete Blood Count (CBC)"),
new TableRow({ children: rows[5].map((c, ci) => dCell(c, true, cols[ci])) }),
new TableRow({ children: rows[6].map((c, ci) => dCell(c, false, cols[ci])) }),
new TableRow({ children: rows[7].map((c, ci) => dCell(c, true, cols[ci])) }),
new TableRow({ children: rows[8].map((c, ci) => dCell(c, false, cols[ci])) }),
// Final classification
new TableRow({
children: [
dCell("FINAL IRON STATUS CLASSIFICATION", true, 28, true),
new TableCell({
children: [new Paragraph({
children: [new TextRun({
text: "\u2610 Normal \u2610 Iron Deficiency (ID) \u2610 Iron Deficiency Anaemia (IDA) \u2610 Anaemia of Chronic Inflammation",
size: 18, bold: true
})]
})],
shading: { type: ShadingType.SOLID, color: LIGHT_BLUE, fill: LIGHT_BLUE },
columnSpan: 3,
margins: { top: 60, bottom: 60, left: 80, right: 80 }
})
]
})
]
});
}
// ── section-purpose table ─────────────────────────────────────────────────────
function purposeTable() {
const cols = [15, 85];
const rows = [
["Q1-Q5", "Demographic profile; SES correlation with iron deficiency"],
["Q6", "Primary anthropometric data — BMI classification; z-score correlation with iron parameters"],
["Q7-Q12", "Dietary iron intake; fast-food frequency; tea/tannin inhibition; vegetarian vs. non-veg risk"],
["Q13-Q14", "Physical activity — correlate sedentary behaviour with BMI severity"],
["Q15-Q16", "Eligibility screening (exclusion criteria checklist)"],
["Q17", "Symptom burden of hidden anaemia (fatigue, pallor, pica, concentration)"],
["Q18-Q19", "Family history as a risk modifier for obesity and anaemia"],
["Q20", "Primary and secondary outcome data — all 4 blood tests + final iron status classification"]
];
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({ children: [hCell("Questions", cols[0]), hCell("Purpose in Analysis", cols[1])], tableHeader: true }),
...rows.map((r, ri) => new TableRow({ children: r.map((c, ci) => dCell(c, ri % 2 === 0, cols[ci])) }))
]
});
}
// ═════════════════════════════════════════════════════════════════════════════
// DOCUMENT CONTENT
// ═════════════════════════════════════════════════════════════════════════════
const children = [
// Title block
new Paragraph({
children: [new TextRun({ text: "STUDY PROFORMA", bold: true, size: 40, color: DARK_BLUE })],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 80 }
}),
new Paragraph({
children: [new TextRun({
text: "Estimation of Hidden Anemia (Serum Ferritin) in Overweight/Obese Children of Kamothe:",
bold: true, size: 22, color: MID_BLUE
})],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 50 }
}),
new Paragraph({
children: [new TextRun({
text: "Investigating the Sideropenic Obesity Phenomenon",
bold: true, italics: true, size: 22, color: MID_BLUE
})],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 100 }
}),
new Paragraph({
children: [new TextRun({ text: "ICMR Short Term Studentship (STS) | Individual Project", size: 20, italics: true, color: "595959" })],
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 240 }
}),
// Meta fields
new Paragraph({
children: [
new TextRun({ text: "Participant Code: ", bold: true, size: 20 }),
new TextRun({ text: "_______________ ", size: 20 }),
new TextRun({ text: "Date: ", bold: true, size: 20 }),
new TextRun({ text: "_______________", size: 20 })
],
spacing: { before: 50, after: 50 }
}),
new Paragraph({
children: [
new TextRun({ text: "OPD No.: ", bold: true, size: 20 }),
new TextRun({ text: "_______________ ", size: 20 }),
new TextRun({ text: "Investigator: ", bold: true, size: 20 }),
new TextRun({ text: "________________________________", size: 20 })
],
spacing: { before: 50, after: 200 }
}),
// ══ SECTION A ══════════════════════════════════════════════════════════════
secHeading("SECTION A — DEMOGRAPHIC INFORMATION"),
blank(),
qHead(1, "What is the child's age?"),
optsInline(["6-8 years", "9-11 years", "12-13 years", "14-15 years"]),
blank(),
qHead(2, "What is the child's sex?"),
optsInline(["Male", "Female"]),
blank(),
qHead(3, "What is the child's current class/grade in school?"),
optsInline(["Class 1-3", "Class 4-6", "Class 7-9", "Class 10 or above", "Not in school"]),
blank(),
qHead(4, "What is the family's monthly income? (Modified Kuppuswamy Scale)"),
optsInline(["< \u20b95,000", "\u20b95,000-10,000", "\u20b910,001-20,000", "\u20b920,001-50,000", "> \u20b950,000"]),
blank(),
qHead(5, "What is the highest education level of the primary caregiver?"),
optsInline(["Illiterate", "Primary (up to Class 5)", "Secondary (Class 6-10)"]),
optsInline(["Higher secondary (Class 11-12)", "Graduate and above"]),
blank(),
// ══ SECTION B ══════════════════════════════════════════════════════════════
secHeading("SECTION B — ANTHROPOMETRY (Filled by Investigator)"),
blank(),
qHead(6, "Measured anthropometric values:"),
anthropoTable(),
blank(),
// ══ SECTION C ══════════════════════════════════════════════════════════════
secHeading("SECTION C — DIETARY HABITS"),
blank(),
qHead(7, "How many meals does the child eat per day?"),
optsInline(["1 meal", "2 meals", "3 meals", "More than 3 meals"]),
blank(),
qHead(8, "How often does the child consume fast food / junk food (burgers, pizza, chips, noodles)?"),
optsInline(["Daily", "4-6 times/week", "2-3 times/week", "Once a week", "Rarely/Never"]),
blank(),
qHead(9, "How often does the child consume iron-rich foods (green leafy vegetables, dal, beans, meat/chicken/fish, eggs)?"),
optsInline(["Daily", "4-6 times/week", "2-3 times/week", "Once a week", "Rarely/Never"]),
blank(),
qHead(10, "Does the child consume tea or coffee around mealtimes?"),
noteLine("(Tea/coffee contain tannins that inhibit non-haem iron absorption)"),
optsInline(["Yes — regularly with meals", "Yes — between meals", "Occasionally", "Never"]),
blank(),
qHead(11, "What best describes the child's dietary pattern?"),
optsInline(["Strictly vegetarian", "Eggetarian", "Non-vegetarian", "Mixed (occasional non-veg)"]),
blank(),
qHead(12, "Does the child regularly consume iron supplements or iron-fortified foods?"),
optsInline(["Yes — iron supplements prescribed", "Yes — fortified foods only", "No"]),
fieldLine("If YES, specify"),
noteLine("(If YES to iron supplements \u2192 apply Exclusion Criterion; do not enrol)"),
blank(),
// ══ SECTION D ══════════════════════════════════════════════════════════════
secHeading("SECTION D — PHYSICAL ACTIVITY"),
blank(),
qHead(13, "How many hours per day does the child spend on screens (TV, mobile, tablet, video games)?"),
optsInline(["< 1 hour", "1-2 hours", "3-4 hours", "> 4 hours"]),
blank(),
qHead(14, "How many days per week does the child engage in outdoor play or physical activity (>= 30 minutes)?"),
optsInline(["Every day (7 days)", "4-6 days", "2-3 days", "Once a week", "Rarely/Never"]),
blank(),
// ══ SECTION E ══════════════════════════════════════════════════════════════
secHeading("SECTION E — CLINICAL & FAMILY HISTORY"),
blank(),
qHead(15, "Has the child been diagnosed with any of the following? (Tick all that apply)"),
opt("Thalassaemia / haemoglobinopathy"),
opt("Chronic kidney disease"),
opt("Juvenile idiopathic arthritis or other autoimmune disease"),
opt("Inflammatory bowel disease"),
opt("Malignancy"),
opt("None of the above \u2726 (Must tick this box to be eligible)"),
blank(),
qHead(16, "Has the child had any acute febrile illness in the past 2 weeks?"),
optsInline(["Yes (Exclude from study)", "No"]),
blank(),
qHead(17, "Does the child have any symptoms suggestive of anaemia? (Tick all that apply)"),
opt("Unusual tiredness / easy fatigue"),
opt("Pallor (pale skin, pale conjunctiva, pale nails)"),
opt("Pica (craving for mud, chalk, ice)"),
opt("Reduced attention / poor concentration in school"),
opt("Breathlessness on mild exertion"),
opt("None of the above"),
blank(),
qHead(18, "Is there a family history of obesity in parents or siblings?"),
optsInline(["Both parents obese", "One parent obese", "Sibling obese", "No family history"]),
blank(),
qHead(19, "Is there a family history of anaemia or iron deficiency in the mother or siblings?"),
optsInline(["Yes — mother", "Yes — sibling", "Yes — both", "No", "Not known"]),
blank(),
// ══ SECTION F ══════════════════════════════════════════════════════════════
secHeading("SECTION F — LABORATORY RESULTS (Filled by Investigator after reports)"),
blank(),
qHead(20, "Blood investigation results (4 tests):"),
labTable(),
blank(),
blank(),
// ══ CONSENT BLOCK ══════════════════════════════════════════════════════════
new Paragraph({
children: [new TextRun({ text: "CONSENT & ELIGIBILITY DECLARATION", bold: true, size: 24, color: DARK_BLUE })],
spacing: { before: 200, after: 100 }
}),
new Paragraph({
children: [
new TextRun({ text: "Informed Consent obtained from parent/guardian: ", size: 20 }),
new TextRun({ text: "\u2610 Yes \u2610 No", bold: true, size: 20 })
],
spacing: { before: 60, after: 50 }
}),
new Paragraph({
children: [
new TextRun({ text: "Assent obtained from child (\u2265 7 years): ", size: 20 }),
new TextRun({ text: "\u2610 Yes \u2610 No \u2610 Not applicable (< 7 years)", bold: true, size: 20 })
],
spacing: { before: 50, after: 50 }
}),
new Paragraph({
children: [
new TextRun({ text: "All exclusion criteria checked and confirmed eligible: ", size: 20 }),
new TextRun({ text: "\u2610 Yes \u2610 No", bold: true, size: 20 })
],
spacing: { before: 50, after: 100 }
}),
new Paragraph({
children: [
new TextRun({ text: "Investigator Signature: ", bold: true, size: 20 }),
new TextRun({ text: "____________________________ ", size: 20 }),
new TextRun({ text: "Date: ", bold: true, size: 20 }),
new TextRun({ text: "________________", size: 20 })
],
spacing: { before: 80, after: 200 }
}),
// ══ PURPOSE TABLE ══════════════════════════════════════════════════════════
new Paragraph({
children: [new TextRun({ text: "GUIDE TO SECTIONS — Purpose in Analysis", bold: true, size: 22, color: DARK_BLUE })],
spacing: { before: 200, after: 100 }
}),
purposeTable(),
blank(),
new Paragraph({
children: [new TextRun({
text: "Note: Q10 (tea/coffee with meals) and Q11 (dietary pattern) are key modifiable risk factors. Q17 documents the symptom burden of hidden anaemia — children with low ferritin but normal Hb often report fatigue and poor concentration, strengthening the argument for ferritin-based screening over routine Hb-only assessment.",
italics: true, size: 18, color: "595959"
})],
spacing: { before: 60, after: 60 },
alignment: AlignmentType.JUSTIFIED
})
];
// ═════════════════════════════════════════════════════════════════════════════
// BUILD
// ═════════════════════════════════════════════════════════════════════════════
const doc = new Document({
styles: { default: { document: { run: { font: "Calibri", size: 20 } } } },
sections: [{
properties: { page: { margin: { top: 900, bottom: 900, left: 1080, right: 1080 } } },
headers: {
default: new Header({
children: [new Paragraph({
children: [
new TextRun({ text: "ICMR STS — Study Proforma | ", bold: true, size: 18, color: MID_BLUE }),
new TextRun({ text: "Sideropenic Obesity | Kamothe District", size: 18, color: "595959" })
],
alignment: AlignmentType.CENTER
})]
})
},
footers: {
default: new Footer({
children: [new Paragraph({
children: [
new TextRun({ text: "Page ", size: 18, color: "595959" }),
new TextRun({ children: [PageNumber.CURRENT], size: 18, color: "595959" }),
new TextRun({ text: " of ", size: 18, color: "595959" }),
new TextRun({ children: [PageNumber.TOTAL_PAGES], size: 18, color: "595959" }),
new TextRun({ text: " Participant Code: __________ Confidential — Research Use Only", size: 18, color: "595959" })
],
alignment: AlignmentType.CENTER
})]
})
},
children
}]
});
Packer.toBuffer(doc).then(buffer => {
const out = '/home/daytona/workspace/icmr-sts/ICMR_STS_Proforma.docx';
fs.writeFileSync(out, buffer);
console.log('SUCCESS: ' + out);
});
cat > /home/daytona/workspace/icmr-sts/generate_proforma.js << 'ENDOFSCRIPT' const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, AlignmentType, WidthType, VerticalAlign, ShadingType, Header, Footer, PageNumber } = require('docx'); const fs = require('fs'); const DARK_BLUE = "1F3864"; const MID_BLUE = "2E74B5"; const LIGHT_BLUE = "D6E4F0"; const ROW_ALT = "EBF3FB"; function blank() { return new Paragraph({ children: [new TextRun({ text: "", size: 20 })] }); } function secHeading(text) { return new Paragraph({ children: [new TextRun({ text, bold: true, size: 24, color: "FFFFFF" })], alignment: AlignmentType.LEFT, spacing: { before: 260, after: 100 }, shading: { type: ShadingType.SOLID, color: DARK_BLUE, fill: DARK_BLUE }, indent: { left: 100 } }); } function qHead(num, text) { return new Paragraph({ children: [ new TextRun({ text: `Q${num}. `, bold: true, size: 22, color: MID_BLUE }), new TextRun({ text, bold: true, size: 22, color: "000000" }) ], spacing: { before: 160, after: 60 } }); } function opt(text) { return new Paragraph({ children: [new TextRun({ text: `\u2610 ${text}`, size: 20 })], spacing: { before: 36, after: 36 }, indent: { left: 440 } }); } function optsInline(arr) { const runs = []; arr.forEach((o, i) => { runs.push(new TextRun({ text: `\u2610 ${o}`, size: 20 })); if (i < arr.length - 1) runs.push(new TextRun({ text: " ", size: 20 })); }); return new Paragraph({ children: runs, spacing: { before: 36, after: 36 }, indent: { left: 440 } }); } function noteLine(text) { return new Paragraph({ children: [new TextRun({ text, italics: true, size: 18, color: "595959" })], spacing: { before: 20, after: 50 }, indent: { left: 440 } }); } function fieldLine(label, len) { return new Paragraph({ children: [ new TextRun({ text: `${label}: `, bold: true, size: 20 }), new TextRun({ text: "_".repeat(len || 38), size: 20 }) ], spacing: { before: 50, after: 50 }, indent: { left: 440 } }); } function hCell(text, w) { return new TableCell({ children: [new Paragraph({ children: [new TextRun({ text, bold: true, size: 19, color: "FFFFFF" })], alignment: AlignmentType.CENTER })], shading: { type: ShadingType.SOLID, color: DARK_BLUE, fill: DARK_BLUE }, verticalAlign: VerticalAlign.CENTER, width: { size: w, type: WidthType.PERCENTAGE }, margins: { top: 60, bottom: 60, left: 80, right: 80 } }); } function dCell(text, shade, w, bold) { return new TableCell({ children: [new Paragraph({ children: [new TextRun({ text, size: 19, bold: !!bold })], alignment: AlignmentType.LEFT })], shading: shade ? { type: ShadingType.SOLID, color: ROW_ALT, fill: ROW_ALT } : undefined, verticalAlign: VerticalAlign.CENTER, width: { size: w, type: WidthType.PERCENTAGE }, margins: { top: 60, bottom: 60, left: 80, right: 80 } }); } function midCell(text) { return new TableCell({ children: [new Paragraph({ children: [new TextRun({ text, bold: true, size: 18, color: "FFFFFF" })], alignment: AlignmentType.LEFT })], shading: { type: ShadingType.SOLID, color: MID_BLUE, fill: MID_BLUE }, columnSpan: 4, margins: { top: 50, bottom: 50, left: 80, right: 80 } }); } function anthropoTable() { const cols = [30, 20, 25, 25]; const headers = ["Parameter", "Value", "Percentile / Z-score", "Classification"]; const rows = [ ["Weight (kg)", "", "", ""], ["Height (cm)", "", "", ""], ["BMI (kg/m\u00b2)", "", "", ""], ["BMI-for-age", "", "", "\u2610 85-94th (Overweight) \u2610 \u226595th (Obese)"], ["Waist circumference (cm)", "", "", ""] ]; return new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [ new TableRow({ children: headers.map((h,i)=>hCell(h,cols[i])), tableHeader: true }), ...rows.map((r,ri)=>new TableRow({ children: r.map((c,ci)=>dCell(c, ri%2===0, cols[ci])) })) ] }); } function labTable() { const cols = [28, 14, 28, 30]; const headers = ["Investigation", "Result", "Reference Range", "Classification"]; const dataRows = [ ["Serum Ferritin (\u00b5g/L)", "", "< 15 \u00b5g/L = Iron Deficiency", "\u2610 Normal \u2610 Low \u2610 Elevated"], ["C-Reactive Protein / CRP (mg/L)", "", "< 5 mg/L = Normal", "\u2610 Normal \u2610 Elevated"], ["Serum Iron (\u00b5g/dL)", "", "50-120 \u00b5g/dL", "\u2610 Normal \u2610 Low"], ["TIBC (\u00b5g/dL)", "", "250-370 \u00b5g/dL", "\u2610 Normal \u2610 High"], ["Transferrin Saturation (%) = Serum Iron / TIBC x 100", "", "> 16% = Normal", "\u2610 Normal \u2610 Low"], ["Haemoglobin (g/dL)", "", "WHO age/sex cut-offs", "\u2610 Normal \u2610 Anaemia"], ["MCV (fL)", "", "80-100 fL", "\u2610 Normal \u2610 Microcytic"], ["MCH (pg)", "", "27-33 pg", "\u2610 Normal \u2610 Low"], ["RBC Morphology", "", "Normocytic normochromic", "\u2610 Normal \u2610 Hypochromic microcytic"] ]; return new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [ new TableRow({ children: headers.map((h,i)=>hCell(h,cols[i])), tableHeader: true }), new TableRow({ children: [midCell("TEST 1 \u2014 Serum Ferritin")] }), new TableRow({ children: dataRows[0].map((c,ci)=>dCell(c,false,cols[ci])) }), new TableRow({ children: [midCell("TEST 2 \u2014 C-Reactive Protein (CRP)")] }), new TableRow({ children: dataRows[1].map((c,ci)=>dCell(c,true,cols[ci])) }), new TableRow({ children: [midCell("TEST 3 \u2014 Serum Iron & TIBC")] }), new TableRow({ children: dataRows[2].map((c,ci)=>dCell(c,false,cols[ci])) }), new TableRow({ children: dataRows[3].map((c,ci)=>dCell(c,true,cols[ci])) }), new TableRow({ children: dataRows[4].map((c,ci)=>dCell(c,false,cols[ci])) }), new TableRow({ children: [midCell("TEST 4 \u2014 Complete Blood Count (CBC)")] }), new TableRow({ children: dataRows[5].map((c,ci)=>dCell(c,true,cols[ci])) }), new TableRow({ children: dataRows[6].map((c,ci)=>dCell(c,false,cols[ci])) }), new TableRow({ children: dataRows[7].map((c,ci)=>dCell(c,true,cols[ci])) }), new TableRow({ children: dataRows[8].map((c,ci)=>dCell(c,false,cols[ci])) }), new TableRow({ children: [ dCell("FINAL IRON STATUS CLASSIFICATION", true, 28, true), new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "\u2610 Normal \u2610 Iron Deficiency (ID) \u2610 Iron Deficiency Anaemia (IDA) \u2610 Anaemia of Chronic Inflammation", size: 18, bold: true })] })], shading: { type: ShadingType.SOLID, color: LIGHT_BLUE, fill: LIGHT_BLUE }, columnSpan: 3, margins: { top: 60, bottom: 60, left: 80, right: 80 } }) ] }) ] }); } function purposeTable() { const cols = [15, 85]; const rows = [ ["Q1-Q5","Demographic profile; SES correlation with iron deficiency"], ["Q6","Primary anthropometric data — BMI classification; z-score correlation with iron parameters"], ["Q7-Q12","Dietary iron intake; fast-food frequency; tea/tannin inhibition; vegetarian vs. non-veg risk"], ["Q13-Q14","Physical activity — correlate sedentary behaviour with BMI severity"], ["Q15-Q16","Eligibility screening (exclusion criteria checklist)"], ["Q17","Symptom burden of hidden anaemia (fatigue, pallor, pica, poor concentration)"], ["Q18-Q19","Family history as a risk modifier for obesity and anaemia"], ["Q20","Primary and secondary outcome data — all 4 blood tests + final iron status classification"] ]; return new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [ new TableRow({ children: [hCell("Questions",cols[0]), hCell("Purpose in Analysis",cols[1])], tableHeader: true }), ...rows.map((r,ri)=>new TableRow({ children: r.map((c,ci)=>dCell(c, ri%2===0, cols[ci])) })) ] }); } const children = [ new Paragraph({ children: [new TextRun({ text: "STUDY PROFORMA", bold: true, size: 40, color: DARK_BLUE })], alignment: AlignmentType.CENTER, spacing: { before: 0, after: 80 } }), new Paragraph({ children: [new TextRun({ text: "Estimation of Hidden Anemia (Serum Ferritin) in Overweight/Obese Children of Kamothe:", bold: true, size: 22, color: MID_BLUE })], alignment: AlignmentType.CENTER, spacing: { before: 0, after: 50 } }), new Paragraph({ children: [new TextRun({ text: "Investigating the Sideropenic Obesity Phenomenon", bold: true, italics: true, size: 22, color: MID_BLUE })], alignment: AlignmentType.CENTER, spacing: { before: 0, after: 100 } }), new Paragraph({ children: [new TextRun({ text: "ICMR Short Term Studentship (STS) | Individual Project", size: 20, italics: true, color: "595959" })], alignment: AlignmentType.CENTER, spacing: { before: 0, after: 240 } }), new Paragraph({ children: [ new TextRun({ text: "Participant Code: ", bold: true, size: 20 }), new TextRun({ text: "_______________ ", size: 20 }), new TextRun({ text: "Date: ", bold: true, size: 20 }), new TextRun({ text: "_______________", size: 20 }) ], spacing: { before: 50, after: 50 } }), new Paragraph({ children: [ new TextRun({ text: "OPD No.: ", bold: true, size: 20 }), new TextRun({ text: "_______________ ", size: 20 }), new TextRun({ text: "Investigator: ", bold: true, size: 20 }), new TextRun({ text: "________________________________", size: 20 }) ], spacing: { before: 50, after: 200 } }), secHeading("SECTION A \u2014 DEMOGRAPHIC INFORMATION"), blank(), qHead(1,"What is the child's age?"), optsInline(["6-8 years","9-11 years","12-13 years","14-15 years"]), blank(), qHead(2,"What is the child's sex?"), optsInline(["Male","Female"]), blank(), qHead(3,"What is the child's current class/grade in school?"), optsInline(["Class 1-3","Class 4-6","Class 7-9","Class 10 or above","Not in school"]), blank(), qHead(4,"What is the family's monthly income? (Modified Kuppuswamy Scale)"), optsInline(["< \u20b95,000","\u20b95,000-10,000","\u20b910,001-20,000","\u20b920,001-50,000","> \u20b950,000"]), blank(), qHead(5,"What is the highest education level of the primary caregiver?"), optsInline(["Illiterate","Primary (up to Class 5)","Secondary (Class 6-10)"]), optsInline(["Higher secondary (Class 11-12)","Graduate and above"]), blank(), secHeading("SECTION B \u2014 ANTHROPOMETRY (Filled by Investigator)"), blank(), qHead(6,"Measured anthropometric values:"), anthropoTable(), blank(), secHeading("SECTION C \u2014 DIETARY HABITS"), blank(), qHead(7,"How many meals does the child eat per day?"), optsInline(["1 meal","2 meals","3 meals","More than 3 meals"]), blank(), qHead(8,"How often does the child consume fast food / junk food (burgers, pizza, chips, noodles)?"), optsInline(["Daily","4-6 times/week","2-3 times/week","Once a week","Rarely/Never"]), blank(), qHead(9,"How often does the child consume iron-rich foods (green leafy vegetables, dal, beans, meat/chicken/fish, eggs)?"), optsInline(["Daily","4-6 times/week","2-3 times/week","Once a week","Rarely/Never"]), blank(), qHead(10,"Does the child consume tea or coffee around mealtimes?"), noteLine("(Tea/coffee contain tannins that inhibit non-haem iron absorption)"), optsInline(["Yes \u2014 regularly with meals","Yes \u2014 between meals","Occasionally","Never"]), blank(), qHead(11,"What best describes the child's dietary pattern?"), optsInline(["Strictly vegetarian","Eggetarian","Non-vegetarian","Mixed (occasional non-veg)"]), blank(), qHead(12,"Does the child regularly consume iron supplements or iron-fortified foods?"), optsInline(["Yes \u2014 iron supplements prescribed","Yes \u2014 fortified foods only","No"]), fieldLine("If YES, specify"), noteLine("(If YES to iron supplements \u2192 apply Exclusion Criterion; do not enrol)"), blank(), secHeading("SECTION D \u2014 PHYSICAL ACTIVITY"), blank(), qHead(13,"How many hours per day does the child spend on screens (TV, mobile, tablet, video games)?"), optsInline(["< 1 hour","1-2 hours","3-4 hours","> 4 hours"]), blank(), qHead(14,"How many days per week does the child engage in outdoor play or physical activity (\u2265 30 minutes)?"), optsInline(["Every day (7 days)","4-6 days","2-3 days","Once a week","Rarely/Never"]), blank(), secHeading("SECTION E \u2014 CLINICAL & FAMILY HISTORY"), blank(), qHead(15,"Has the child been diagnosed with any of the following? (Tick all that apply)"), opt("Thalassaemia / haemoglobinopathy"), opt("Chronic kidney disease"), opt("Juvenile idiopathic arthritis or other autoimmune disease"), opt("Inflammatory bowel disease"), opt("Malignancy"), opt("None of the above \u2726 (Must tick this box to be eligible)"), blank(), qHead(16,"Has the child had any acute febrile illness in the past 2 weeks?"), optsInline(["Yes (Exclude from study)","No"]), blank(), qHead(17,"Does the child have any symptoms suggestive of anaemia? (Tick all that apply)"), opt("Unusual tiredness / easy fatigue"), opt("Pallor (pale skin, pale conjunctiva, pale nails)"), opt("Pica (craving for mud, chalk, ice)"), opt("Reduced attention / poor concentration in school"), opt("Breathlessness on mild exertion"), opt("None of the above"), blank(), qHead(18,"Is there a family history of obesity in parents or siblings?"), optsInline(["Both parents obese","One parent obese","Sibling obese","No family history"]), blank(), qHead(19,"Is there a family history of anaemia or iron deficiency in the mother or siblings?"), optsInline(["Yes \u2014 mother","Yes \u2014 sibling","Yes \u2014 both","No","Not known"]), blank(), secHeading("SECTION F \u2014 LABORATORY RESULTS (Filled by Investigator after reports)"), blank(), qHead(20,"Blood investigation results (4 tests):"), labTable(), blank(), blank(), new Paragraph({ children: [new TextRun({ text: "CONSENT & ELIGIBILITY DECLARATION", bold: true, size: 24, color: DARK_BLUE })], spacing: { before: 200, after: 100 } }), new Paragraph({ children: [ new TextRun({ text: "Informed Consent obtained from parent/guardian: ", size: 20 }), new TextRun({ text: "\u2610 Yes \u2610 No", bold: true, size: 20 }) ], spacing: { before: 60, after: 50 } }), new Paragraph({ children: [ new TextRun({ text: "Assent obtained from child (\u2265 7 years): ", size: 20 }), new TextRun({ text: "\u2610 Yes \u2610 No \u2610 Not applicable (< 7 years)", bold: true, size: 20 }) ], spacing: { before: 50, after: 50 } }), new Paragraph({ children: [ new TextRun({ text: "All exclusion criteria confirmed (participant is eligible): ", size: 20 }), new TextRun({ text: "\u2610 Yes \u2610 No", bold: true, size: 20 }) ], spacing: { before: 50, after: 100 } }), new Paragraph({ children: [ new TextRun({ text: "Investigator Signature: ", bold: true, size: 20 }), new TextRun({ text: "____________________________ ", size: 20 }), new TextRun({ text: "Date: ", bold: true, size: 20 }), new TextRun({ text: "________________", size: 20 }) ], spacing: { before: 80, after: 200 } }), new Paragraph({ children: [new TextRun({ text: "GUIDE TO SECTIONS \u2014 Purpose in Analysis", bold: true, size: 22, color: DARK_BLUE })], spacing: { before: 200, after: 100 } }), purposeTable(), blank(), new Paragraph({ children: [new TextRun({ text: "Note: Q10 (tea/coffee with meals) and Q11 (dietary pattern) are key modifiable risk factors. Q17 documents the symptom burden of hidden anaemia \u2014 children with low ferritin but normal Hb often report fatigue and poor concentration, strengthening the argument for ferritin-based screening over routine Hb-only assessment.", italics: true, size: 18, color: "595959" })], spacing: { before: 60, after: 60 }, alignment: AlignmentType.JUSTIFIED }) ]; const doc = new Document({ styles: { default: { document: { run: { font: "Calibri", size: 20 } } } }, sections: [{ properties: { page: { margin: { top: 900, bottom: 900, left: 1080, right: 1080 } } }, headers: { default: new Header({ children: [new Paragraph({ children: [ new TextRun({ text: "ICMR STS \u2014 Study Proforma | ", bold: true, size: 18, color: MID_BLUE }), new TextRun({ text: "Sideropenic Obesity | Kamothe District", size: 18, color: "595959" }) ], alignment: AlignmentType.CENTER })] }) }, footers: { default: new Footer({ children: [new Paragraph({ children: [ new TextRun({ text: "Page ", size: 18, color: "595959" }), new TextRun({ children: [PageNumber.CURRENT], size: 18, color: "595959" }), new TextRun({ text: " of ", size: 18, color: "595959" }), new TextRun({ children: [PageNumber.TOTAL_PAGES], size: 18, color: "595959" }), new TextRun({ text: " Participant Code: __________ Confidential \u2014 Research Use Only", size: 18, color: "595959" }) ], alignment: AlignmentType.CENTER })] }) }, children }] }); Packer.toBuffer(doc).then(buffer => { const out = '/home/daytona/workspace/icmr-sts/ICMR_STS_Proforma.docx'; fs.writeFileSync(out, buffer); console.log('SUCCESS: ' + out); }); ENDOFSCRIPT echo "Written OK"
cd /home/daytona/workspace/icmr-sts && node generate_proforma.js
python3 -c " import zipfile, os path = '/home/daytona/workspace/icmr-sts/ICMR_STS_Proforma.docx' size = os.path.getsize(path) print(f'File size: {size} bytes ({size/1024:.1f} KB)') with zipfile.ZipFile(path) as z: with z.open('word/document.xml') as f: content = f.read() print(f'document.xml: {len(content)} bytes — valid XML ZIP structure confirmed') "
ICMR STS Proforma
Word Document · DOCX
| Section | Questions | Content |
|---|---|---|
| A — Demographics | Q1–Q5 | Age, sex, class, income (Kuppuswamy), caregiver education |
| B — Anthropometry | Q6 | Measured table: weight, height, BMI, waist circumference, BMI classification |
| C — Dietary Habits | Q7–Q12 | Meal frequency, fast food, iron-rich food, tea/coffee, dietary pattern, supplements |
| D — Physical Activity | Q13–Q14 | Screen time, outdoor play frequency |
| E — Clinical & Family History | Q15–Q19 | Exclusion criteria checklist, symptoms of anaemia, family history |
| F — Lab Results | Q20 | 4 tests only — Serum Ferritin, CRP, Serum Iron & TIBC, CBC — each with its own colour-coded sub-header row and final classification |
1. Serum Ferritin 2. Serum Iron & Total Iron Binding Capacity (TIBC) 3. Complete Blood Count (CBC) final tests we're going ahead with. Sample size is 50, budget per person in ₹835. Please make appropriate changes in the proforma and give it to me. Not a word file, just normally.
| Parameter | Value | Percentile / Z-score | Classification |
|---|---|---|---|
| Weight (kg) | |||
| Height (cm) | |||
| BMI (kg/m²) | |||
| BMI-for-age | ☐ 85–94th (Overweight) / ☐ ≥95th (Obese) | ||
| Waist circumference (cm) |
| Investigation | Result | Reference Range | Classification |
|---|---|---|---|
| Serum Ferritin (µg/L) | < 15 µg/L = Iron Deficiency | ☐ Normal ☐ Low ☐ Elevated |
Note: In the absence of CRP, ferritin values should be interpreted cautiously in the context of any concurrent illness or inflammatory state. If the child had any recent infection, note it here: ___________________________
| Investigation | Result | Reference Range | Classification |
|---|---|---|---|
| Serum Iron (µg/dL) | 50–120 µg/dL | ☐ Normal ☐ Low | |
| TIBC (µg/dL) | 250–370 µg/dL | ☐ Normal ☐ High | |
| Transferrin Saturation (%) = Serum Iron / TIBC × 100 | > 16% = Normal | ☐ Normal ☐ Low |
| Investigation | Result | Reference Range | Classification |
|---|---|---|---|
| Haemoglobin (g/dL) | WHO age/sex cut-offs | ☐ Normal ☐ Anaemia | |
| MCV (fL) | 80–100 fL | ☐ Normal ☐ Microcytic | |
| MCH (pg) | 27–33 pg | ☐ Normal ☐ Low | |
| RBC Morphology | Normocytic normochromic | ☐ Normal ☐ Hypochromic microcytic |
| Questions | Purpose |
|---|---|
| Q1–Q5 | Demographic profile; SES correlation with iron deficiency |
| Q6 | BMI classification; anthropometric correlation with iron parameters |
| Q7–Q12 | Dietary iron intake; fast-food frequency; tea/tannin inhibition; vegetarian risk |
| Q13–Q14 | Sedentary behaviour correlation with BMI severity |
| Q15–Q16 | Exclusion criteria eligibility screening |
| Q17 | Symptom burden of hidden anaemia (fatigue, pallor, pica, concentration) |
| Q18–Q19 | Family history as risk modifier for obesity and anaemia |
| Q20 | Primary + secondary outcomes — 3 blood tests + final iron status classification |
| Item | Details | Amount |
|---|---|---|
| Laboratory tests | 50 participants × ₹835 | ₹41,750 |
| Stationery & printing | Proformas, consent forms | ₹1,000 |
| Consumables | Gloves, cotton, spirit swabs | ₹800 |
| Report preparation & binding | ₹500 | |
| Contingency (~5%) | ₹2,200 | |
| Total Estimated Expenditure | ₹46,250 | |
| ICMR STS Stipend | ₹60,000 | |
| Unspent Balance | ₹13,750 |
1. Serum Ferritin 2. Serum Iron & Total Iron Binding Capacity (TIBC) 3. Complete Blood Count (CBC) final tests we're going ahead with. Sample size is 50, budget per person in ₹835. Please make appropriate changes in the research concept note and give it to me. Not a word file, just normally.
n = Z² × p(1−p) / d²
| Expense Head | Amount (₹) |
|---|---|
| Laboratory investigations (50 × ₹835) | ₹41,750 |
| Stationery & printing (proformas, consent forms) | ₹1,000 |
| Consumables (gloves, cotton, spirit swabs) | ₹800 |
| Report preparation & binding | ₹500 |
| Contingency / miscellaneous (~5%) | ₹2,200 |
| Total Estimated Expenditure | ₹46,250 |
| ICMR STS Stipend | ₹60,000 |
| Balance | ₹13,750 |
| Term | Definition |
|---|---|
| Overweight | BMI-for-age ≥ 85th and < 95th percentile (IAP/WHO Indian growth charts) |
| Obesity | BMI-for-age ≥ 95th percentile |
| Iron Deficiency (ID) | Serum ferritin < 15 µg/L + transferrin saturation < 16% |
| Iron Deficiency Anaemia (IDA) | ID + Hb below WHO age/sex-specific cut-offs + microcytic hypochromic CBC |
| Hidden Anaemia | Low serum ferritin with normal haemoglobin |
| Investigation | Rationale |
|---|---|
| Serum Ferritin | Primary marker of iron stores; detects depleted stores before Hb falls — identifies hidden anaemia at its earliest stage |
| Serum Iron & TIBC | Transferrin saturation (serum iron ÷ TIBC × 100) < 16% confirms functional iron deficiency; TIBC rises in true iron deficiency |
| Complete Blood Count (CBC) | Detects anaemia (Hb), microcytosis (MCV, MCH), hypochromic red cells; confirms IDA and its haematological severity |
| What changed | Old | New |
|---|---|---|
| Blood tests | 4 (Ferritin, CRP, Iron/TIBC, CBC) | 3 (Ferritin, Iron/TIBC, CBC) — CRP removed |
| Test justification | Mentioned CRP for ferritin correction | Removed CRP; explained 3-test panel rationale clearly |
| ID definition | Required CRP correction of ferritin | Ferritin < 15 µg/L + transferrin saturation < 16% |
| Budget per participant | ₹1,065 | ₹835 |
| Total test cost | ₹53,250 | ₹41,750 |
| Total estimated expenditure | ₹59,250 | ₹46,250 |
| Stipend balance | ₹750 | ₹13,750 |
| Logistic regression variables | Included CRP level as predictor | CRP removed from predictor list |
Introduction-The purpose of an introduction is to provide the rationale behind the work, so that the reviewer may understand and appreciate the objectives. Please describe the importance (significance) of the study. Defend the model- Provide a rationale and describe the reasoning that led you to selecting them. Briefly describe the experimental design and how it accomplished the stated objectives. Describe the situation and specify clearly the gaps in the existing knowledge and/or controversy and in conclusive evidence. The discussion should be supported with appropriate recent review of literature. Objectives-Should specify what kind of knowledge the study is expected to obtain. It should give a clear notion of what is to be described, determined, identified, compared or confirmed. Hypothesis may be stated and objectives should be specific, to the point and achievable. Methodology- Describes all the procedures that will be used to achieve the objectives and justify the study design including any techniques and procedures to be used. This may include: type of study and study design, study population, sample size and selection criteria, proposed intervention (if applicable), data collection procedures & instruments used, quality control, confidentiality, plan of analysis/ statistical tools, ethical considerations with all required forms. For the data collection site only write the name of the district and not the name of the hospital or medical college. Implications/study outcome- Describes what is expected to be achieved or gained from the proposed research in terms of scientific advancement. It can also include the skills and knowledge gained by the student. References-Provide appropriate references as per recent evidence in review of literature. Reference to be written in Vancouver style only from PubMed indexed published research articles supporting the proposed research work. These are the guidelines for ICMR.
Introduction-The purpose of an introduction is to provide the rationale behind the work, so that the reviewer may understand and appreciate the objectives. Please describe the importance (significance) of the study. Defend the model- Provide a rationale and describe the reasoning that led you to selecting them. Briefly describe the experimental design and how it accomplished the stated objectives. Describe the situation and specify clearly the gaps in the existing knowledge and/or controversy and in conclusive evidence. The discussion should be supported with appropriate recent review of literature. Objectives-Should specify what kind of knowledge the study is expected to obtain. It should give a clear notion of what is to be described, determined, identified, compared or confirmed. Hypothesis may be stated and objectives should be specific, to the point and achievable. Methodology- Describes all the procedures that will be used to achieve the objectives and justify the study design including any techniques and procedures to be used. This may include: type of study and study design, study population, sample size and selection criteria, proposed intervention (if applicable), data collection procedures & instruments used, quality control, confidentiality, plan of analysis/ statistical tools, ethical considerations with all required forms. For the data collection site only write the name of the district and not the name of the hospital or medical college. Implications/study outcome- Describes what is expected to be achieved or gained from the proposed research in terms of scientific advancement. It can also include the skills and knowledge gained by the student. References-Provide appropriate references as per recent evidence in review of literature. Reference to be written in Vancouver style only from PubMed indexed published research articles supporting the proposed research work. These are the guidelines for ICMR. Did you follow these right now? For the latest changes.
| ICMR Requirement | Status | Gap |
|---|---|---|
| Rationale / significance of the study | ✅ Done | — |
| Defend the model (why these tests, why this population) | ⚠️ Weak | The reasoning for selecting serum ferritin, serum iron/TIBC, and CBC as the specific investigative model is not explicitly defended |
| Briefly describe the experimental design | ❌ Missing | The cross-sectional design is mentioned only in Methodology, not introduced here |
| Gaps in existing knowledge / controversy / inconclusive evidence | ⚠️ Partially done | The Kamothe data gap is stated but the controversy (obesity + iron deficiency paradox; ferritin falsely elevated in obesity) is not clearly framed as a knowledge gap |
| Supported by recent literature | ✅ Done | — |
| Requirement | Status |
|---|---|
| Specifies what knowledge is expected | ✅ |
| Clear notion of what will be described, determined, identified, compared | ✅ |
| Hypothesis stated | ✅ |
| Specific, to the point, achievable | ✅ |
| Requirement | Status | Gap |
|---|---|---|
| Type of study and study design | ✅ | — |
| Study population | ✅ | — |
| Sample size and selection criteria | ✅ | — |
| Proposed intervention | ✅ (stated as none — observational) | — |
| Data collection procedures & instruments | ✅ | — |
| Quality control | ✅ | — |
| Confidentiality | ✅ | — |
| Plan of analysis / statistical tools | ✅ | — |
| Ethical considerations | ✅ | — |
| Data collection site — district name only, NOT hospital/college name | ✅ | Written as "Kamothe district" — correct |
Would you like me to regenerate the complete updated concept note with this revised introduction?
n = Z² × p(1−p) / d²
| Expense Head | Amount (₹) |
|---|---|
| Laboratory investigations (50 × ₹835) | ₹41,750 |
| Stationery & printing (proformas, consent forms) | ₹1,000 |
| Consumables (gloves, cotton, spirit swabs) | ₹800 |
| Report preparation & binding | ₹500 |
| Contingency / miscellaneous (~5%) | ₹2,200 |
| Total Estimated Expenditure | ₹46,250 |
| ICMR STS Stipend | ₹60,000 |
| Balance | ₹13,750 |
| Term | Definition |
|---|---|
| Overweight | BMI-for-age ≥ 85th and < 95th percentile (IAP/WHO Indian growth charts) |
| Obesity | BMI-for-age ≥ 95th percentile |
| Iron Deficiency (ID) | Serum ferritin < 15 µg/L + transferrin saturation < 16% |
| Iron Deficiency Anaemia (IDA) | ID + Hb below WHO age/sex-specific cut-offs + microcytic hypochromic CBC |
| Hidden Anaemia | Low serum ferritin with normal haemoglobin |
| Investigation | Rationale |
|---|---|
| Serum Ferritin | Primary marker of iron stores; detects depleted stores before Hb falls — identifies hidden anaemia at its earliest stage |
| Serum Iron & TIBC | Transferrin saturation (serum iron ÷ TIBC × 100) < 16% confirms functional iron deficiency; TIBC rises in true iron deficiency |
| Complete Blood Count (CBC) | Detects anaemia (Hb), microcytosis (MCV, MCH), hypochromic red cells; confirms IDA and its haematological severity |
Would you like me to update the study proforma with any final refinements?
| Parameter | Value | Percentile / Z-score | Classification |
|---|---|---|---|
| Weight (kg) | |||
| Height (cm) | |||
| BMI (kg/m²) | |||
| BMI-for-age | ☐ 85–94th (Overweight) / ☐ ≥95th (Obese) | ||
| Waist circumference (cm) |
| Investigation | Result | Reference Range | Classification |
|---|---|---|---|
| Serum Ferritin (µg/L) | < 15 µg/L = Iron Deficiency | ☐ Normal ☐ Low ☐ Elevated |
| Investigation | Result | Reference Range | Classification |
|---|---|---|---|
| Serum Iron (µg/dL) | 50–120 µg/dL | ☐ Normal ☐ Low | |
| TIBC (µg/dL) | 250–370 µg/dL | ☐ Normal ☐ High | |
| Transferrin Saturation (%) = Serum Iron ÷ TIBC × 100 | > 16% = Normal | ☐ Normal ☐ Low |
| Investigation | Result | Reference Range | Classification |
|---|---|---|---|
| Haemoglobin (g/dL) | WHO age/sex cut-offs | ☐ Normal ☐ Anaemia | |
| MCV (fL) | 80–100 fL | ☐ Normal ☐ Microcytic | |
| MCH (pg) | 27–33 pg | ☐ Normal ☐ Low | |
| RBC Morphology | Normocytic normochromic | ☐ Normal ☐ Hypochromic microcytic |
| Questions | Purpose |
|---|---|
| Q1–Q5 | Demographic profile; SES correlation with iron deficiency |
| Q6 | BMI classification; anthropometric correlation with iron parameters |
| Q7–Q12 | Dietary iron intake; fast-food frequency; tea/tannin inhibition; vegetarian vs. non-veg risk |
| Q13–Q14 | Sedentary behaviour — correlation with BMI severity |
| Q15–Q16 | Exclusion criteria eligibility screening |
| Q17 | Symptom burden of hidden anaemia (fatigue, pallor, pica, poor concentration) |
| Q18–Q19 | Family history as a risk modifier for obesity and anaemia |
| Q20 | All 3 blood tests + staging of iron status from ID to IDA |
assent from child ≥ 7 years
| Guideline | Assent Age |
|---|---|
| ICMR National Ethical Guidelines for Biomedical & Health Research Involving Human Participants, 2017 | ≥ 7 years |
| Indian Council of Medical Research (STS specific) | Follows ICMR 2017 guidelines — ≥ 7 years |
| UN Convention on the Rights of the Child | Age of developing understanding ~7 years |
"Children aged 7 years and above should provide assent in addition to the consent given by the parent or guardian."
Assent obtained from child (≥ 7 years): ☐ Yes ☐ No ☐ Not applicable (< 7 years)
assent from child ≥ 7 years, give me an assent format
| Age Group | How to obtain assent |
|---|---|
| 7–10 years | Read aloud to the child; explain in simple words; ask if they have questions; obtain thumb impression or signature |
| 11–15 years | Child reads the form themselves (or it is read to them); they sign themselves |
| < 7 years (i.e., 6-year-olds in your study) | Assent not required — parental consent alone is sufficient |
What is we increase the age group to 18years of age?
| Age | Legal Status | What is Required |
|---|---|---|
| 6 years | Minor | Parental consent only (no assent needed) |
| 7–17 years | Minor | Parental consent + child assent |
| 18 years | Major (adult) | Independent informed consent — no parental consent needed |
| Age/Sex Group | Hb cut-off for Anaemia |
|---|---|
| Children 6–11 years | < 11.5 g/dL |
| Children 12–14 years | < 12.0 g/dL |
| Males 15–18 years | < 13.0 g/dL |
| Females 15–18 years | < 12.0 g/dL |
| Age Group Added | Additional Consideration |
|---|---|
| Girls 15–18 years | Menstrual blood loss becomes a significant additional cause of iron deficiency — must be recorded in the proforma |
| Boys 15–18 years | Pubertal growth spurt increases iron demand significantly |
Has menstruation begun? ☐ Yes ☐ No If yes — Are periods regular? ☐ Yes ☐ No Heavy flow? ☐ Yes ☐ No
| Age | BMI Classification Tool |
|---|---|
| 6–17 years | BMI-for-age percentile (IAP/WHO growth charts) |
| 18 years | Adult BMI criteria — Overweight ≥ 23 kg/m² (Asian cut-off), Obese ≥ 27.5 kg/m² (Asian cut-off) |
"Overweight/obesity defined as BMI-for-age ≥ 85th percentile for participants aged 6–17 years (IAP/WHO growth charts), and BMI ≥ 23 kg/m² (overweight) or ≥ 27.5 kg/m² (obese) for participants aged 18 years (WHO Asian adult cut-offs)."
"...in Overweight and Obese Children of Kamothe..."
"...in Overweight and Obese Children and Adolescents of Kamothe..."
| Element | Status |
|---|---|
| Study design | Same — cross-sectional |
| Blood tests (3 tests) | Same |
| Budget per person | Same — ₹835 |
| Total budget | Same — ₹46,250 |
| Primary objective | Same |
| Statistical tools | Same |
| Exclusion criteria | Same |
| References | Same |