attachment
attachment
attachment
attachment

So any complications and give advice to treat the patient

Reading File
analyse_media
analyse_media
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Finding Sources
I now have all the information needed for a thorough analysis. Here is the complete clinical assessment:

Patient: Karthik, Male, Age ~4 years (3Y 9M) - Lab Report Analysis


CBC Analysis - What the Numbers Tell Us

ParameterValueReference RangeStatusSignificance
WBC8.645.14-13.18✅ NormalNo leukocytosis
RBC5.033.89-4.92⚠️ HIGHErythrocytosis (flagged)
Hgb10.910.2-12.7✅ Low-normalNear low end for age
HCT30.631.2-37.7🔴 LOWReduced
MCV60.972.3-84.0🔴 LOWSevere microcytosis
MCH21.823.7-28.3🔴 LOWHypochromia
CHCM35.732.0-34.6⚠️ Slightly high
RDW-CV17.212.5-14.9🔴 HIGHMarked anisocytosis
RDW-SD31.835.1-41.7🔴 LOWNarrow size variation (uniform small cells)
MIC63.10.0-20.0🔴 HIGHMicrocytic fraction very elevated
PLT335202-394✅ Normal
EOS3.8% / 0.33×10³0.0-3.3% / 0.03-0.46⚠️ HIGH%Eosinophilia
NEU65.9%22.4-69.0%✅ Normal
LYM25.5%18.4-66.6%✅ Normal

Serology / Microbiology

TestResultInterpretation
Widal (Salmonella Typhi O & H)Negative (1:40)No typhoid
Malaria Pf AntigenNegativeNo falciparum malaria
Malaria Pv AntigenNegativeNo vivax malaria
CRP2.5 mg/L (range 0-6)Normal - no active inflammation

Diagnosis: Iron Deficiency Anemia (IDA) with Eosinophilia

Primary Finding: Microcytic Hypochromic Anemia - Classic IDA Pattern

The CBC shows the textbook picture of iron deficiency anemia:
  • Low MCV (60.9 fL) - severe microcytosis, well below normal (72-84 fL for this age)
  • Low MCH (21.8 pg) - hypochromia confirmed
  • Elevated RDW-CV (17.2%) - reflects anisocytosis, characteristic of IDA where new small cells are produced alongside older normal cells. As Harrison's notes, "Red cell distribution width (RDW) is often elevated, a measure of anisocytosis" in iron deficiency
  • MIC 63.1% - over 63% of red cells are microcytic (flag: "Microcytosis, Hypochromia")
  • HCT 30.6% - below normal
  • Hgb 10.9 g/dL - mild anemia
The RBC count is paradoxically elevated (5.03) with a low Hgb - this is characteristic of IDA where the marrow produces many small, poorly hemoglobinized cells trying to compensate.

Secondary Finding: Eosinophilia (3.8%, 0.33×10³/mm³)

The eosinophil percentage is mildly elevated. The absolute count (0.33) is just within upper range, but the percentage (3.8%) exceeds the 3.3% upper limit. In a 4-year-old from a semi-urban area (Velpanuru, Nandyal), this pattern - IDA + eosinophilia - is highly suggestive of intestinal parasitic infection (especially soil-transmitted helminths like Ascaris, hookworm, Trichuris, or Giardia), which simultaneously:
  1. Causes occult intestinal blood loss → iron deficiency
  2. Triggers eosinophilic response
The CRP is normal (2.5 mg/L), which rules out acute bacterial infection as the cause of the eosinophilia.

Complications to Watch For

  1. Developmental/cognitive impact - Iron is essential for myelination and neurotransmitter synthesis. Chronic IDA at age 4 can impair attention, learning, and behavioral development even before severe anemia appears.
  2. Pica - Children with IDA frequently develop pica (eating soil, clay, ice), which can worsen lead exposure and helminth re-infection.
  3. Cardiac strain - With Hgb of 10.9 and HCT 30.6, the heart compensates with higher output; prolonged course risks cardiac overload.
  4. Impaired immunity - Iron deficiency impairs T-cell function and bactericidal activity.
  5. Growth retardation - Ongoing if the nutritional/parasitic cause is not addressed.
  6. Helminth-related complications - If Ascaris is the cause: possible abdominal obstruction, malabsorption, biliary migration in heavy infections.

Treatment Plan

1. Confirm the Diagnosis (Before or Alongside Treatment)

  • Serum ferritin, serum iron, TIBC, transferrin saturation - confirm iron stores are depleted
  • Peripheral blood smear - visualize pencil cells, target cells, hypochromic microcytes
  • Stool examination (direct microscopy + concentration) - look for helminth ova/larvae, Giardia cysts
  • Stool occult blood - detect subclinical GI blood loss

2. Iron Supplementation (Primary Treatment)

Oral elemental iron: 3-6 mg/kg/day of elemental iron, divided in 2 doses, given on an empty stomach (or with vitamin C to enhance absorption).
  • Practical example for ~15 kg child: Ferrous sulfate syrup (each 5 mL typically = 15 mg elemental iron) - give approximately 10 mL (30 mg elemental iron) twice daily, ideally 30 minutes before meals
  • Avoid giving with milk, tea, or calcium-containing foods (they reduce absorption)
  • Duration: Continue for 3 months after Hgb normalizes to fully replete iron stores - total ~4-6 months
  • Monitor: Hgb should rise by ~1 g/dL per week; recheck CBC at 4 weeks and 3 months

3. Anthelmintic Therapy (Address the Likely Cause)

Given the eosinophilia and the epidemiological context:
  • Albendazole 400 mg single dose (for children ≥2 years) OR
  • Mebendazole 100 mg twice daily × 3 days (for Trichuris/hookworm)
WHO recommends periodic deworming for children in endemic areas regardless of confirmed diagnosis.

4. Dietary Counseling

  • Iron-rich foods: green leafy vegetables (spinach), dal/legumes, jaggery, dates, eggs, meat if consumed
  • Vitamin C with iron-rich meals (lemon juice, amla, guava) to boost non-heme iron absorption
  • Reduce milk to < 500 mL/day - excessive cow's milk is a common cause of IDA in toddlers (it displaces iron-rich foods and can cause occult GI blood loss)
  • De-worm the household and improve hand hygiene/sanitation

5. Follow-Up

  • Recheck CBC in 4 weeks - confirm reticulocyte response (expected increase within 1-2 weeks)
  • If Hgb fails to rise, consider: thalassemia trait (differentiate with Hb electrophoresis), ongoing blood loss, or non-compliance
  • Developmental assessment if cognitive or behavioral concerns exist

Summary

Karthik (4 yr, male) has microcytic hypochromic anemia consistent with Iron Deficiency Anemia, most likely caused by nutritional deficiency and/or intestinal parasitic infection (suggested by mild eosinophilia). Typhoid and malaria are ruled out. CRP is normal. Treatment should include oral iron supplementation at 3-6 mg/kg/day elemental iron for 4-6 months, a single dose of albendazole 400 mg for deworming, dietary counseling to increase iron-rich foods and reduce excess milk, and stool examination to confirm parasitic etiology. Repeat CBC in 4 weeks to confirm response.
References: Harrison's Principles of Internal Medicine 22E, Chapter 102 (Iron Deficiency Anemia); Red Book 2021 (Parasitic Infections)

Create a pediatric iron deficiency management protocol PDF

Reading File
Running Command

ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"

Running Command

mkdir -p /tmp/workspace/ida-protocol && python3 << 'EOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import cm, mm from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether) from reportlab.graphics.shapes import Drawing, Rect, String, Line from reportlab.graphics import renderPDF from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont import os OUTPUT = "/tmp/workspace/ida-protocol/Pediatric_IDA_Management_Protocol.pdf" # ── Colour palette ───────────────────────────────────────────────────────────── NAVY = colors.HexColor("#1B3A6B") TEAL = colors.HexColor("#0E7C7B") ORANGE = colors.HexColor("#E07B39") YELLOW = colors.HexColor("#F5C518") RED = colors.HexColor("#C0392B") GREEN = colors.HexColor("#1E8449") GREY_LT = colors.HexColor("#F4F6F9") GREY_MID = colors.HexColor("#D5DCE8") WHITE = colors.white BLACK = colors.black # ── Document setup ───────────────────────────────────────────────────────────── doc = SimpleDocTemplate( OUTPUT, pagesize=A4, leftMargin=1.5*cm, rightMargin=1.5*cm, topMargin=2.0*cm, bottomMargin=1.8*cm, title="Pediatric Iron Deficiency Anemia - Management Protocol", author="Sisindri Children's Hospital | Clinical Guidelines", ) W, H = A4 styles = getSampleStyleSheet() def sty(name, **kw): base = styles[name] return ParagraphStyle( name + str(id(kw)), parent=base, **kw, ) # ── Custom styles ────────────────────────────────────────────────────────────── S_title = sty("Heading1", fontSize=20, textColor=WHITE, alignment=TA_CENTER, spaceAfter=2, leading=24, fontName="Helvetica-Bold") S_sub = sty("Normal", fontSize=10, textColor=GREY_MID, alignment=TA_CENTER, spaceAfter=0, leading=13, fontName="Helvetica") S_h2 = sty("Heading2", fontSize=12, textColor=WHITE, alignment=TA_LEFT, spaceAfter=2, leading=15, fontName="Helvetica-Bold") S_h3 = sty("Heading3", fontSize=10, textColor=NAVY, alignment=TA_LEFT, spaceAfter=2, leading=13, fontName="Helvetica-Bold") S_body = sty("Normal", fontSize=9, textColor=BLACK, alignment=TA_JUSTIFY,spaceAfter=4, leading=13, fontName="Helvetica") S_bullet = sty("Normal", fontSize=9, textColor=BLACK, alignment=TA_LEFT, spaceAfter=2, leading=13, leftIndent=10, fontName="Helvetica", bulletIndent=2, firstLineIndent=0) S_small = sty("Normal", fontSize=7.5,textColor=colors.grey, alignment=TA_LEFT, spaceAfter=0, leading=11, fontName="Helvetica") S_tbl_hdr = sty("Normal", fontSize=8.5,textColor=WHITE, alignment=TA_CENTER, spaceAfter=0, leading=12, fontName="Helvetica-Bold") S_tbl_cel = sty("Normal", fontSize=8.5,textColor=BLACK, alignment=TA_LEFT, spaceAfter=0, leading=12, fontName="Helvetica") S_tbl_ctr = sty("Normal", fontSize=8.5,textColor=BLACK, alignment=TA_CENTER, spaceAfter=0, leading=12, fontName="Helvetica") S_warn = sty("Normal", fontSize=9, textColor=RED, alignment=TA_LEFT, spaceAfter=2, leading=13, fontName="Helvetica-Bold") S_note = sty("Normal", fontSize=8, textColor=NAVY, alignment=TA_LEFT, spaceAfter=0, leading=12, fontName="Helvetica-Oblique") # ── Helper builders ──────────────────────────────────────────────────────────── def section_header(text, bg=NAVY, pad=5): """Full-width coloured section banner.""" TW = W - 3*cm data = [[Paragraph(text, S_h2)]] t = Table(data, colWidths=[TW]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("TOPPADDING", (0,0), (-1,-1), pad), ("BOTTOMPADDING", (0,0), (-1,-1), pad), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8), ("ROUNDEDCORNERS", [4]), ])) return t def info_box(text, bg=GREY_LT, border=TEAL): TW = W - 3*cm data = [[Paragraph(text, S_body)]] t = Table(data, colWidths=[TW]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LINEAFTER", (0,0), (0,-1), 3, border), ("BOX", (0,0), (-1,-1), 0.5, GREY_MID), ])) return t def two_col(left_items, right_items, left_header="", right_header="", lbg=GREY_LT, rbg=GREY_LT): TW = W - 3*cm col = TW / 2 - 2*mm def build_cell(items, header, bg): content = [] if header: content.append(Paragraph(header, S_h3)) for item in items: content.append(Paragraph(item, S_bullet)) data = [[content]] t = Table(data, colWidths=[col]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 4), ("BOX", (0,0), (-1,-1), 0.5, GREY_MID), ])) return t outer = Table([[build_cell(left_items, left_header, lbg), build_cell(right_items, right_header, rbg)]], colWidths=[col+2*mm, col+2*mm], hAlign="LEFT") outer.setStyle(TableStyle([ ("LEFTPADDING", (0,0), (-1,-1), 0), ("RIGHTPADDING", (0,0), (-1,-1), 0), ("TOPPADDING", (0,0), (-1,-1), 0), ("BOTTOMPADDING", (0,0), (-1,-1), 0), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) return outer # ── PAGE 1 HEADER BANNER ─────────────────────────────────────────────────────── def header_banner(): TW = W - 3*cm # title block banner_data = [ [Paragraph("PEDIATRIC IRON DEFICIENCY ANEMIA", S_title)], [Paragraph("CLINICAL MANAGEMENT PROTOCOL", S_title)], [Paragraph("Evidence-Based Guidelines for Children (0–12 years) | Version 1.0 | July 2026", S_sub)], ] t = Table(banner_data, colWidths=[TW]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), NAVY), ("TOPPADDING", (0,0), (0,0), 14), ("BOTTOMPADDING", (0,-1), (-1,-1), 12), ("TOPPADDING", (0,1), (-1,-1), 0), ("BOTTOMPADDING", (0,0), (-1,-2), 0), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8), ])) return t # ── STORY ────────────────────────────────────────────────────────────────────── story = [] TW = W - 3*cm story.append(header_banner()) story.append(Spacer(1, 6*mm)) # ── 1. SCOPE & PURPOSE ──────────────────────────────────────────────────────── story.append(section_header("1. SCOPE & PURPOSE", bg=NAVY)) story.append(Spacer(1, 2*mm)) story.append(info_box( "This protocol provides standardised guidance for the screening, diagnosis, treatment and follow-up " "of Iron Deficiency Anemia (IDA) in children aged 0–12 years in outpatient and inpatient settings. " "It is aligned with WHO, AAP and IAP recommendations and is intended for paediatricians, medical " "officers, and nursing staff." )) story.append(Spacer(1, 4*mm)) # ── 2. DEFINITION & EPIDEMIOLOGY ────────────────────────────────────────────── story.append(section_header("2. DEFINITION & EPIDEMIOLOGY", bg=TEAL)) story.append(Spacer(1, 2*mm)) epi_data = [ [Paragraph("Parameter", S_tbl_hdr), Paragraph("Details", S_tbl_hdr)], [Paragraph("Definition", S_tbl_cel), Paragraph("IDA = anemia caused by inadequate iron for normal erythropoiesis, resulting in microcytic, " "hypochromic red cells with depleted iron stores (low ferritin).", S_tbl_cel)], [Paragraph("Prevalence", S_tbl_cel), Paragraph("Most common nutritional deficiency worldwide; affects ~50% of children <5 years in " "developing countries (WHO, 2021).", S_tbl_cel)], [Paragraph("Peak age", S_tbl_cel), Paragraph("6 months – 2 years (rapid growth, transition from milk) and 11–15 years (adolescent growth spurt).", S_tbl_cel)], [Paragraph("Key risk factors", S_tbl_cel), Paragraph("Exclusive cow's milk >500 mL/day, low dietary iron intake, prematurity, low birth weight, " "intestinal parasitosis, chronic blood loss, malabsorption.", S_tbl_cel)], ] epi_table = Table(epi_data, colWidths=[3.5*cm, TW-3.5*cm]) epi_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("BACKGROUND", (0,1), (-1,1), GREY_LT), ("BACKGROUND", (0,2), (-1,2), WHITE), ("BACKGROUND", (0,3), (-1,3), GREY_LT), ("BACKGROUND", (0,4), (-1,4), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 7), ("RIGHTPADDING", (0,0), (-1,-1), 7), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(epi_table) story.append(Spacer(1, 4*mm)) # ── 3. DIAGNOSTIC CRITERIA ──────────────────────────────────────────────────── story.append(section_header("3. DIAGNOSTIC CRITERIA", bg=ORANGE)) story.append(Spacer(1, 2*mm)) # Hgb cut-offs table story.append(Paragraph("3A. Haemoglobin (Hgb) Cut-offs for Anemia (WHO, sea-level)", S_h3)) story.append(Spacer(1, 1*mm)) hgb_data = [ [Paragraph("Age Group", S_tbl_hdr), Paragraph("Mild Anemia\n(g/dL)", S_tbl_hdr), Paragraph("Moderate\n(g/dL)", S_tbl_hdr), Paragraph("Severe\n(g/dL)", S_tbl_hdr)], [Paragraph("6 months – 4 years", S_tbl_ctr), Paragraph("10.0 – 10.9", S_tbl_ctr), Paragraph("7.0 – 9.9", S_tbl_ctr), Paragraph("< 7.0", S_tbl_ctr)], [Paragraph("5 – 11 years", S_tbl_ctr), Paragraph("11.0 – 11.4", S_tbl_ctr), Paragraph("8.0 – 10.9", S_tbl_ctr), Paragraph("< 8.0", S_tbl_ctr)], [Paragraph("12 – 14 years", S_tbl_ctr), Paragraph("11.0 – 11.9", S_tbl_ctr), Paragraph("8.0 – 10.9", S_tbl_ctr), Paragraph("< 8.0", S_tbl_ctr)], ] hgb_table = Table(hgb_data, colWidths=[TW*0.34, TW*0.22, TW*0.22, TW*0.22]) hgb_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), ORANGE), ("BACKGROUND", (0,1), (-1,1), GREY_LT), ("BACKGROUND", (0,2), (-1,2), WHITE), ("BACKGROUND", (0,3), (-1,3), GREY_LT), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("ALIGN", (0,0), (-1,-1), "CENTER"), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(hgb_table) story.append(Spacer(1, 3*mm)) story.append(Paragraph("3B. CBC Indicators of IDA", S_h3)) story.append(Spacer(1, 1*mm)) cbc_data = [ [Paragraph("CBC Parameter", S_tbl_hdr), Paragraph("Expected Finding in IDA", S_tbl_hdr), Paragraph("Clinical Significance", S_tbl_hdr)], [Paragraph("Hgb", S_tbl_cel), Paragraph("Low for age", S_tbl_cel), Paragraph("Primary marker of anemia severity", S_tbl_cel)], [Paragraph("MCV (fL)", S_tbl_cel), Paragraph("< 70 fL (children)", S_tbl_cel), Paragraph("Microcytosis; <80 fL in established IDA (Harrison's 22E)", S_tbl_cel)], [Paragraph("MCH (pg)", S_tbl_cel), Paragraph("< 23 pg", S_tbl_cel), Paragraph("Hypochromia — pale cells", S_tbl_cel)], [Paragraph("RDW-CV (%)", S_tbl_cel), Paragraph("> 14.5%", S_tbl_cel), Paragraph("Anisocytosis — variable cell sizes; earliest CBC change", S_tbl_cel)], [Paragraph("RBC count", S_tbl_cel), Paragraph("Normal or ↑", S_tbl_cel), Paragraph("Paradox: marrow makes many small cells to compensate", S_tbl_cel)], [Paragraph("Serum Ferritin", S_tbl_cel), Paragraph("< 12 µg/L (children < 5 yr)", S_tbl_cel), Paragraph("Gold standard for iron stores; most sensitive marker", S_tbl_cel)], [Paragraph("Transferrin sat.", S_tbl_cel), Paragraph("< 15–20%", S_tbl_cel), Paragraph("Iron restricted erythropoiesis", S_tbl_cel)], [Paragraph("TIBC / Transferrin", S_tbl_cel), Paragraph("Elevated", S_tbl_cel), Paragraph("Compensatory upregulation", S_tbl_cel)], [Paragraph("Serum iron", S_tbl_cel), Paragraph("Low", S_tbl_cel), Paragraph("Less reliable (diurnal variation)", S_tbl_cel)], ] cbc_table = Table(cbc_data, colWidths=[TW*0.25, TW*0.27, TW*0.48]) cbc_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), ORANGE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [GREY_LT, WHITE]), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(cbc_table) story.append(Spacer(1, 4*mm)) # ── 4. DIAGNOSTIC WORK-UP ──────────────────────────────────────────────────── story.append(section_header("4. DIAGNOSTIC WORK-UP ALGORITHM", bg=NAVY)) story.append(Spacer(1, 2*mm)) workup_data = [ [Paragraph("STEP", S_tbl_hdr), Paragraph("ACTION", S_tbl_hdr), Paragraph("INTERPRETATION", S_tbl_hdr)], [Paragraph("Step 1\n(Screening)", S_tbl_ctr), Paragraph("CBC with differential\n(Hgb, MCV, MCH, RDW)", S_tbl_cel), Paragraph("Hgb low for age + MCV <70 fL + MCH <23 pg + RDW >14.5% → suspect IDA", S_tbl_cel)], [Paragraph("Step 2\n(Confirm)", S_tbl_ctr), Paragraph("Serum ferritin, serum iron, TIBC, transferrin saturation", S_tbl_cel), Paragraph("Ferritin <12 µg/L confirms IDA. If ferritin normal/high with microcytosis → consider thalassemia", S_tbl_cel)], [Paragraph("Step 3\n(Cause)", S_tbl_ctr), Paragraph("Dietary history, stool exam (ova, cysts), stool occult blood, peripheral smear", S_tbl_cel), Paragraph("Pencil cells / target cells on smear. Parasites confirm helminthic cause.", S_tbl_cel)], [Paragraph("Step 4\n(Differentiate)", S_tbl_ctr), Paragraph("Hb electrophoresis if IDA criteria + family history, or poor iron response", S_tbl_cel), Paragraph("Rules out beta-thalassemia trait (elevated HbA2 >3.5%)", S_tbl_cel)], [Paragraph("Step 5\n(Severity)", S_tbl_ctr), Paragraph("Retic count, cardiac exam, consider ECG if Hgb <7 g/dL", S_tbl_cel), Paragraph("Reticulocytosis confirms marrow response. Severe anemia may need transfusion.", S_tbl_cel)], ] workup_table = Table(workup_data, colWidths=[TW*0.14, TW*0.37, TW*0.49]) workup_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), NAVY), ("ROWBACKGROUNDS",(0,1), (-1,-1), [GREY_LT, WHITE]), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(workup_table) story.append(Spacer(1, 4*mm)) # ── 5. TREATMENT ────────────────────────────────────────────────────────────── story.append(section_header("5. TREATMENT PROTOCOL", bg=GREEN)) story.append(Spacer(1, 2*mm)) story.append(Paragraph("5A. Oral Iron Supplementation (First-Line)", S_h3)) story.append(Spacer(1, 1*mm)) iron_data = [ [Paragraph("Parameter", S_tbl_hdr), Paragraph("Guideline", S_tbl_hdr)], [Paragraph("Drug of choice", S_tbl_cel), Paragraph("Ferrous sulfate (most absorbed); alternatives: ferrous gluconate, ferrous fumarate, " "polymaltose iron", S_tbl_cel)], [Paragraph("Dose (therapeutic)", S_tbl_cel), Paragraph("3–6 mg/kg/day elemental iron, in 1–2 divided doses (AAP & WHO)", S_tbl_cel)], [Paragraph("Dose (prophylactic)", S_tbl_cel), Paragraph("1–2 mg/kg/day (max 15 mg/day) for at-risk infants (premature, EBF beyond 4 months)", S_tbl_cel)], [Paragraph("Administration", S_tbl_cel), Paragraph("30–60 min before meals (empty stomach); give with orange juice/Vitamin C to enhance " "absorption; AVOID with milk, tea, or antacids", S_tbl_cel)], [Paragraph("Duration", S_tbl_cel), Paragraph("Continue 3 months AFTER Hgb normalises to replete iron stores (total 4–6 months)", S_tbl_cel)], [Paragraph("Monitoring", S_tbl_cel), Paragraph("CBC at 4 weeks (expect Hgb ↑ ≥1 g/dL); recheck at 3 months and end of treatment", S_tbl_cel)], [Paragraph("Side effects", S_tbl_cel), Paragraph("GI upset, constipation, dark stools (reassure parents), teeth staining with liquid " "formulations (use straw or wipe after dose)", S_tbl_cel)], ] iron_table = Table(iron_data, colWidths=[TW*0.27, TW*0.73]) iron_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), GREEN), ("ROWBACKGROUNDS",(0,1), (-1,-1), [GREY_LT, WHITE]), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(iron_table) story.append(Spacer(1, 3*mm)) story.append(Paragraph("5B. Elemental Iron Calculator (Quick Reference)", S_h3)) story.append(Spacer(1, 1*mm)) calc_data = [ [Paragraph("Formulation", S_tbl_hdr), Paragraph("Elemental Iron Content", S_tbl_hdr), Paragraph("Example dose (15 kg child @ 4 mg/kg/day = 60 mg/day)", S_tbl_hdr)], [Paragraph("Ferrous sulfate syrup\n(30 mg/5 mL)", S_tbl_ctr), Paragraph("20% elemental\n= 6 mg/5 mL", S_tbl_ctr), Paragraph("10 mL twice daily", S_tbl_ctr)], [Paragraph("Ferrous gluconate drops\n(15 mg/mL)", S_tbl_ctr), Paragraph("12% elemental\n= 1.8 mg/drop", S_tbl_ctr), Paragraph("~2 mL twice daily", S_tbl_ctr)], [Paragraph("Ferrous fumarate\n(100 mg tablet)", S_tbl_ctr), Paragraph("33% elemental\n= 33 mg/tab", S_tbl_ctr), Paragraph("1 tab morning + ½ tab evening", S_tbl_ctr)], [Paragraph("Iron polymaltose\n(50 mg/5 mL)", S_tbl_ctr), Paragraph("100% elemental\n= 50 mg/5 mL", S_tbl_ctr), Paragraph("6 mL once daily (better tolerated)", S_tbl_ctr)], ] calc_table = Table(calc_data, colWidths=[TW*0.30, TW*0.30, TW*0.40]) calc_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), GREEN), ("ROWBACKGROUNDS",(0,1), (-1,-1), [GREY_LT, WHITE]), ("FONTSIZE", (0,0), (-1,-1), 8), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("ALIGN", (0,0), (-1,-1), "CENTER"), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(calc_table) story.append(Spacer(1, 3*mm)) story.append(Paragraph("5C. Parenteral Iron (Indications)", S_h3)) story.append(Spacer(1, 1*mm)) story.append(info_box( "<b>IV or IM iron is reserved for:</b> (1) Malabsorption (e.g. IBD, celiac); " "(2) Intolerance/non-compliance with oral iron; (3) Hgb <7 g/dL requiring rapid correction; " "(4) Chronic renal failure on erythropoietin. " "<b>Preferred agent:</b> IV iron sucrose or ferric carboxymaltose (FCM) under specialist supervision. " "Monitor for anaphylaxis (resuscitation equipment must be available).", bg=colors.HexColor("#FFF9E6"), border=ORANGE )) story.append(Spacer(1, 3*mm)) story.append(Paragraph("5D. Blood Transfusion Criteria", S_h3)) story.append(Spacer(1, 1*mm)) transfusion_data = [ [Paragraph("Indication", S_tbl_hdr), Paragraph("Threshold", S_tbl_hdr), Paragraph("Notes", S_tbl_hdr)], [Paragraph("Symptomatic severe anemia", S_tbl_cel), Paragraph("Hgb < 6–7 g/dL", S_tbl_cel), Paragraph("Dyspnoea, cardiac failure, altered consciousness", S_tbl_cel)], [Paragraph("Pre-operative", S_tbl_cel), Paragraph("Hgb < 8 g/dL", S_tbl_cel), Paragraph("Correct before elective surgery", S_tbl_cel)], [Paragraph("Haemodynamic instability", S_tbl_cel), Paragraph("Any Hgb level", S_tbl_cel), Paragraph("Active bleeding with haemodynamic compromise", S_tbl_cel)], ] trans_table = Table(transfusion_data, colWidths=[TW*0.33, TW*0.22, TW*0.45]) trans_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), RED), ("ROWBACKGROUNDS",(0,1), (-1,-1), [colors.HexColor("#FDECEC"), WHITE]), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(trans_table) story.append(Spacer(1, 4*mm)) # ── 6. ANTHELMINTIC THERAPY ─────────────────────────────────────────────────── story.append(section_header("6. ANTHELMINTIC THERAPY (Parasitic IDA)", bg=colors.HexColor("#5B2C8D"))) story.append(Spacer(1, 2*mm)) story.append(info_box( "<b>Indication:</b> All children with IDA + eosinophilia OR in endemic areas (stool not available / " "pending). Deworming addresses a common correctable cause of chronic GI blood loss and iron malabsorption.", bg=colors.HexColor("#F3EAF9"), border=colors.HexColor("#5B2C8D") )) story.append(Spacer(1, 2*mm)) deworm_data = [ [Paragraph("Drug", S_tbl_hdr), Paragraph("Dose", S_tbl_hdr), Paragraph("Age Eligibility", S_tbl_hdr), Paragraph("Coverage", S_tbl_hdr)], [Paragraph("Albendazole\n(FIRST LINE)", S_tbl_cel), Paragraph("400 mg single dose\n(200 mg if 1–2 yr)", S_tbl_cel), Paragraph("≥ 1 year", S_tbl_cel), Paragraph("Ascaris, hookworm, Trichuris, Strongyloides", S_tbl_cel)], [Paragraph("Mebendazole", S_tbl_cel), Paragraph("100 mg twice daily × 3 days\nOR 500 mg single dose", S_tbl_cel), Paragraph("≥ 2 years", S_tbl_cel), Paragraph("Ascaris, hookworm, Trichuris", S_tbl_cel)], [Paragraph("Metronidazole", S_tbl_cel), Paragraph("15 mg/kg/day in 3 doses × 5–7 days", S_tbl_cel), Paragraph("Any age", S_tbl_cel), Paragraph("Giardia, Entamoeba histolytica", S_tbl_cel)], [Paragraph("WHO MDA\n(Mass Drug Admin)", S_tbl_cel), Paragraph("Albendazole 400 mg annual", S_tbl_cel), Paragraph("1–12 years\nendemics", S_tbl_cel), Paragraph("Community-level prevention; repeat at 6 months if heavy burden", S_tbl_cel)], ] deworm_table = Table(deworm_data, colWidths=[TW*0.22, TW*0.27, TW*0.18, TW*0.33]) deworm_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#5B2C8D")), ("ROWBACKGROUNDS",(0,1), (-1,-1), [colors.HexColor("#F3EAF9"), WHITE]), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(deworm_table) story.append(Spacer(1, 4*mm)) # ── 7. DIETARY COUNSELLING ──────────────────────────────────────────────────── story.append(section_header("7. DIETARY COUNSELLING", bg=TEAL)) story.append(Spacer(1, 2*mm)) story.append(two_col( left_items=[ "<b>Haem iron (best absorbed 15–35%):</b>", "• Chicken liver, lamb liver", "• Red meat (beef, lamb, goat)", "• Fish and egg yolk", "", "<b>Non-haem iron (absorbed 2–10%):</b>", "• Dark leafy greens (spinach, fenugreek, amaranth)", "• Legumes (lentils, chickpeas, rajma, soya)", "• Jaggery (gur), dried dates, raisins", "• Fortified cereals and breads", "• Pumpkin seeds, sesame", ], right_items=[ "<b>Enhancers (give WITH iron meals):</b>", "• Vitamin C: lemon, amla, guava, tomato", "• Fermentation (idli, dosa) improves absorption", "", "<b>Inhibitors (AVOID with iron):</b>", "• Cow's milk: limit to <500 mL/day", "• Tea and coffee (tannins chelate iron)", "• High-phytate foods: bran, unprocessed cereals", "• Calcium supplements (compete for absorption)", "", "<b>Key Maternal Advice:</b>", "• Exclusive breastfeeding to 6 months", "• Timely iron-rich complementary foods from 6 months", ], left_header="Iron-Rich Foods", right_header="Absorption Enhancers & Inhibitors", lbg=colors.HexColor("#E8F7F7"), rbg=GREY_LT, )) story.append(Spacer(1, 4*mm)) # ── 8. FOLLOW-UP SCHEDULE ───────────────────────────────────────────────────── story.append(section_header("8. FOLLOW-UP SCHEDULE & RESPONSE CRITERIA", bg=ORANGE)) story.append(Spacer(1, 2*mm)) fu_data = [ [Paragraph("Visit", S_tbl_hdr), Paragraph("Timing", S_tbl_hdr), Paragraph("Tests", S_tbl_hdr), Paragraph("Expected Response / Action", S_tbl_hdr)], [Paragraph("V1 – Baseline", S_tbl_ctr), Paragraph("Day 0", S_tbl_ctr), Paragraph("CBC, ferritin, iron, TIBC, stool", S_tbl_cel), Paragraph("Establish baseline; start iron + deworming", S_tbl_cel)], [Paragraph("V2 – Early check", S_tbl_ctr), Paragraph("Week 2–4", S_tbl_ctr), Paragraph("CBC, reticulocyte count", S_tbl_cel), Paragraph("Retic ↑ by Week 1–2 (marrow response). Hgb ↑ ≥ 1 g/dL by Week 4. " "If no response → check compliance, diagnosis", S_tbl_cel)], [Paragraph("V3 – Mid therapy", S_tbl_ctr), Paragraph("Month 3", S_tbl_ctr), Paragraph("CBC, ferritin", S_tbl_cel), Paragraph("Hgb should normalise. Continue iron 3 more months to replete stores.", S_tbl_cel)], [Paragraph("V4 – End therapy", S_tbl_ctr), Paragraph("Month 5–6", S_tbl_ctr), Paragraph("CBC, ferritin, iron, TIBC", S_tbl_cel), Paragraph("Ferritin >20 µg/L confirms stores replete. Discontinue iron. Dietary counselling reinforce.", S_tbl_cel)], [Paragraph("V5 – Long term", S_tbl_ctr), Paragraph("6-monthly", S_tbl_ctr), Paragraph("Hgb (annual screening)", S_tbl_cel), Paragraph("Prevention of recurrence. Repeat deworming if in endemic area.", S_tbl_cel)], ] fu_table = Table(fu_data, colWidths=[TW*0.16, TW*0.13, TW*0.27, TW*0.44]) fu_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), ORANGE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [GREY_LT, WHITE]), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("VALIGN", (0,0), (-1,-1), "TOP"), ("ALIGN", (0,0), (1,-1), "CENTER"), ])) story.append(fu_table) story.append(Spacer(1, 4*mm)) # ── 9. WHEN TO REFER ───────────────────────────────────────────────────────── story.append(section_header("9. REFERRAL CRITERIA (Red Flags)", bg=RED)) story.append(Spacer(1, 2*mm)) story.append(two_col( left_items=[ "• Hgb < 6 g/dL or signs of cardiac compromise", "• No response after 4 weeks of adequate oral iron", "• Suspected thalassemia or haemoglobinopathy", "• Concurrent thrombocytopenia or leucopenia", "• Splenomegaly or hepatomegaly", ], right_items=[ "• Suspected malabsorption (celiac, IBD, post-surgery)", "• Recurrent IDA despite treatment", "• Chronic disease / renal failure", "• Iron infusion required (IV access, monitoring)", "• Developmental regression or suspected lead exposure", ], left_header="Refer to Paediatric Haematologist:", right_header="Refer to Specialist / Hospital:", lbg=colors.HexColor("#FDECEC"), rbg=colors.HexColor("#FDECEC"), )) story.append(Spacer(1, 4*mm)) # ── 10. COMPLICATIONS ───────────────────────────────────────────────────────── story.append(section_header("10. COMPLICATIONS OF UNTREATED IDA", bg=NAVY)) story.append(Spacer(1, 2*mm)) comp_data = [ [Paragraph("System", S_tbl_hdr), Paragraph("Complication", S_tbl_hdr), Paragraph("Notes", S_tbl_hdr)], [Paragraph("Neurodevelopment", S_tbl_cel), Paragraph("Cognitive impairment, poor attention, language delay, irritability", S_tbl_cel), Paragraph("Iron critical for myelination and dopamine synthesis; may be irreversible if severe in <2 yr", S_tbl_cel)], [Paragraph("Cardiovascular", S_tbl_cel), Paragraph("High-output cardiac failure, cardiomegaly", S_tbl_cel), Paragraph("Compensatory tachycardia and increased cardiac output with severe anemia", S_tbl_cel)], [Paragraph("Immunity", S_tbl_cel), Paragraph("Impaired T-cell function, increased infection susceptibility", S_tbl_cel), Paragraph("Iron-deficient macrophages have reduced bactericidal activity", S_tbl_cel)], [Paragraph("Growth", S_tbl_cel), Paragraph("Stunted growth, poor weight gain, fatigue", S_tbl_cel), Paragraph("Iron essential for skeletal muscle metabolism and thyroid function", S_tbl_cel)], [Paragraph("Behavioural", S_tbl_cel), Paragraph("Pica (soil, ice, clay eating)", S_tbl_cel), Paragraph("Increases risk of lead toxicity and helminthic re-infection", S_tbl_cel)], [Paragraph("School", S_tbl_cel), Paragraph("Reduced academic performance, poor exercise tolerance", S_tbl_cel), Paragraph("Reversible with early treatment before school age", S_tbl_cel)], ] comp_table = Table(comp_data, colWidths=[TW*0.20, TW*0.38, TW*0.42]) comp_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), NAVY), ("ROWBACKGROUNDS",(0,1), (-1,-1), [GREY_LT, WHITE]), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(comp_table) story.append(Spacer(1, 4*mm)) # ── 11. PREVENTION ──────────────────────────────────────────────────────────── story.append(section_header("11. PREVENTION", bg=GREEN)) story.append(Spacer(1, 2*mm)) prev_data = [ [Paragraph("Population", S_tbl_hdr), Paragraph("Intervention", S_tbl_hdr), Paragraph("Recommendation", S_tbl_hdr)], [Paragraph("Preterm / LBW infants", S_tbl_cel), Paragraph("Iron supplementation", S_tbl_cel), Paragraph("2 mg/kg/day from 1 month of age until 12 months (AAP)", S_tbl_cel)], [Paragraph("Term breastfed infants", S_tbl_cel), Paragraph("Iron-fortified foods", S_tbl_cel), Paragraph("Iron drops 1 mg/kg/day at 4 months until iron-rich foods introduced (AAP)", S_tbl_cel)], [Paragraph("All children 6–24 mo", S_tbl_cel), Paragraph("Screening CBC", S_tbl_cel), Paragraph("Universal Hgb screening at 9–12 months; repeat at 15–18 months (AAP, 2010)", S_tbl_cel)], [Paragraph("High-risk toddlers", S_tbl_cel), Paragraph("Limit cow's milk", S_tbl_cel), Paragraph("Cap whole cow's milk at 500 mL/day; introduce iron-rich complementary foods by 6 months", S_tbl_cel)], [Paragraph("School-age endemic areas", S_tbl_cel), Paragraph("Annual deworming", S_tbl_cel), Paragraph("Albendazole 400 mg annually (WHO MDA programme)", S_tbl_cel)], [Paragraph("Pregnant mothers", S_tbl_cel), Paragraph("Antenatal iron + IFA", S_tbl_cel), Paragraph("Prevent maternal IDA → prevents neonatal iron depletion", S_tbl_cel)], ] prev_table = Table(prev_data, colWidths=[TW*0.25, TW*0.25, TW*0.50]) prev_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), GREEN), ("ROWBACKGROUNDS",(0,1), (-1,-1), [GREY_LT, WHITE]), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(prev_table) story.append(Spacer(1, 4*mm)) # ── 12. QUICK REFERENCE CARD ───────────────────────────────────────────────── story.append(section_header("12. QUICK CLINICAL REFERENCE CARD", bg=TEAL)) story.append(Spacer(1, 2*mm)) qr_data = [ [Paragraph("DIAGNOSE", S_tbl_hdr), Paragraph("TREAT", S_tbl_hdr), Paragraph("MONITOR", S_tbl_hdr)], [ Paragraph( "✓ Hgb low for age\n" "✓ MCV < 70 fL\n" "✓ MCH < 23 pg\n" "✓ RDW > 14.5%\n" "✓ Ferritin < 12 µg/L\n" "✓ Peripheral smear:\n pencil / hypochromic cells", S_tbl_cel, ), Paragraph( "• Ferrous sulfate 3–6 mg/kg/day\n" "• Give before meals + Vit C\n" "• Avoid milk/tea with dose\n" "• Albendazole 400 mg (≥1 yr)\n" "• Dietary counselling\n" "• Treat 3 months post Hgb\n" " normalisation", S_tbl_cel, ), Paragraph( "• CBC at 4 weeks\n" "• Expect Hgb ↑ 1 g/dL/week\n" "• Ferritin at 3 months\n" "• Stop when ferritin > 20\n" "• Annual Hgb screen\n" "• Re-deworm every 6 months\n" " in endemic areas", S_tbl_cel, ), ], ] qr_table = Table(qr_data, colWidths=[TW/3, TW/3, TW/3]) qr_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("BACKGROUND", (0,1), (0,1), colors.HexColor("#E8F7F7")), ("BACKGROUND", (1,1), (1,1), GREY_LT), ("BACKGROUND", (2,1), (2,1), colors.HexColor("#EAF6EB")), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 7), ("RIGHTPADDING", (0,0), (-1,-1), 7), ("GRID", (0,0), (-1,-1), 0.4, GREY_MID), ("VALIGN", (0,0), (-1,-1), "TOP"), ("ALIGN", (0,0), (-1,0), "CENTER"), ])) story.append(qr_table) story.append(Spacer(1, 4*mm)) # ── FOOTER / REFERENCES ─────────────────────────────────────────────────────── story.append(HRFlowable(width=TW, thickness=1, color=GREY_MID)) story.append(Spacer(1, 2*mm)) story.append(Paragraph( "<b>References:</b> 1. Harrison's Principles of Internal Medicine, 22E (2025), Chapter 102 — Iron Deficiency Anemia. " "2. American Academy of Pediatrics (AAP). Diagnosis and Prevention of Iron Deficiency in Infants and Young Children, 2010. " "3. WHO. Guideline: Daily Iron Supplementation in Infants and Children, 2016. " "4. Red Book 2021 – Report of the Committee on Infectious Diseases, AAP (Parasitic Infections). " "5. Quick Compendium of Clinical Pathology, 5th Ed.", S_small )) story.append(Spacer(1, 1*mm)) story.append(Paragraph( "Protocol Version 1.0 | Sisindri Newborn & Children's Hospital | July 2026 | " "For clinical use under paediatric supervision. Review annually.", S_small )) # ── Build ────────────────────────────────────────────────────────────────────── def add_page_number(canvas, doc): canvas.saveState() canvas.setFont("Helvetica", 7) canvas.setFillColor(colors.grey) page_num = canvas.getPageNumber() canvas.drawRightString(W - 1.5*cm, 1.0*cm, f"Page {page_num}") canvas.drawString(1.5*cm, 1.0*cm, "CONFIDENTIAL — FOR PROFESSIONAL USE ONLY") # top accent line canvas.setStrokeColor(NAVY) canvas.setLineWidth(3) canvas.line(1.5*cm, H - 1.3*cm, W - 1.5*cm, H - 1.3*cm) canvas.restoreState() doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number) print("PDF created:", OUTPUT) EOF

Running Command

ls -lh /tmp/workspace/ida-protocol/

Your protocol PDF is ready. Here's what's included:

Pediatric IDA Management Protocol

PDF Document · PDF


The PDF contains 12 fully formatted sections across a professional multi-page layout:
SectionContent
1. Scope & PurposeAudience, setting, guideline alignment
2. Definition & EpidemiologyPrevalence, risk factors, peak ages
3. Diagnostic CriteriaHgb cut-offs table (mild/moderate/severe by age), full CBC parameter table
4. Diagnostic Work-Up Algorithm5-step structured algorithm (CBC → ferritin → cause → differentiate → severity)
5. Treatment ProtocolOral iron dosing, elemental iron calculator for 4 formulations, IV indications, transfusion criteria
6. Anthelmintic TherapyAlbendazole, mebendazole, metronidazole doses with coverage
7. Dietary CounsellingIron-rich foods, absorption enhancers/inhibitors, maternal advice
8. Follow-Up Schedule5-visit timeline with expected responses
9. Referral CriteriaRed flag indicators for specialist referral
10. ComplicationsNeurodevelopment, cardiac, immunity, growth, pica
11. PreventionPremature infants, breastfed infants, school-age deworming
12. Quick Reference Card3-column Diagnose / Treat / Monitor summary
Sourced from Harrison's 22E, AAP 2010, WHO 2016, Red Book 2021, and Quick Compendium of Clinical Pathology.
This is a shared conversation. Sign in to Orris to start your own chat.