Peridtric oncology history collect format

Reading File
Finding Sources
Searching the Web

pediatric oncology history taking format clinical assessment

Finding Sources
Reading Web Page

https://www.mdpi.com/2813-141X/4/4/54

Finding Sources
Finding Sources
Reading File
Here is a complete Pediatric Oncology History Collection Format for clinical use:

Pediatric Oncology History Collection Format


1. IDENTIFYING / GENERAL DATA

  • Patient name, age, sex, date of birth
  • Address, contact number (parent/guardian)
  • Informant: mother / father / guardian (reliability of history)
  • Date and time of assessment
  • Referring physician / source of referral

2. CHIEF COMPLAINT (CC)

  • Main presenting symptom(s) in the parent's/child's own words
  • Duration of complaint
Common presenting complaints in pediatric oncology:
  • Abdominal mass / swelling
  • Pallor / fatigue / easy bruising or bleeding
  • Persistent fever (>2 weeks, unexplained)
  • Lymphadenopathy (swollen glands)
  • Bone pain / limping
  • Headache, vomiting, visual changes (CNS symptoms)
  • Weight loss / loss of appetite
  • Night sweats

3. HISTORY OF PRESENT ILLNESS (HPI)

Use SOCRATES or OLD CARTS framework for each symptom:
ParameterDetails to Elicit
OnsetWhen did it start? Sudden or gradual?
DurationHow long has it been present?
CharacterNature of symptom (e.g., pain type, swelling consistency)
Location / RadiationWhere exactly? Does it spread?
SeverityNumerical pain scale (age-appropriate); functional limitation
Modifying factorsWhat makes it better or worse?
Associated symptomsFever, night sweats, weight loss ("B symptoms"), fatigue, pallor, bleeding, bruising, recurrent infections
CourseStatic, progressive, or improving?
Red flag symptom screening (mandatory):
  • Unexplained weight loss (>10% body weight over 3 months)
  • Persistent / recurrent fever without obvious infection
  • Night sweats
  • Pallor, petechiae, ecchymoses
  • Unexplained lymphadenopathy (>1 cm, >4 weeks, hard, non-tender)
  • Organomegaly (hepatosplenomegaly)
  • Neurological changes (headache, seizures, visual disturbance)
  • Bone pain worse at night or at rest
  • Abdominal or neck mass

4. PAST MEDICAL & SURGICAL HISTORY (PMH/PSH)

  • Previous illnesses: recurrent infections, hospitalizations
  • Prior malignancy or pre-malignant conditions (e.g., Down syndrome - AML risk; NF1 - MPNST/glioma risk)
  • Previous treatments: chemotherapy, radiotherapy, surgeries, transfusions
  • Radiation exposure history
  • Immunosuppression (congenital or iatrogenic)
  • Known genetic/chromosomal conditions (Down syndrome, Li-Fraumeni, Beckwith-Wiedemann, von Hippel-Lindau, etc.)

5. FAMILY HISTORY (FH)

Critical in pediatric oncology: ~10% of pediatric oncology patients have a heritable cancer predisposition syndrome or germline mutation (Harriet Lane Handbook, 23rd ed.)
  • Cancer in any first- or second-degree relatives
    • Type of cancer, age at diagnosis
  • Hereditary cancer syndromes: Li-Fraumeni, BRCA, Lynch syndrome, neurofibromatosis, retinoblastoma, MEN
  • Consanguinity
  • Unexplained deaths in childhood/young adulthood in family

6. BIRTH & ANTENATAL HISTORY

  • Maternal age, health during pregnancy
  • Drug/toxin/radiation exposure during pregnancy
  • Gestational age, mode of delivery
  • Birth weight, APGAR scores
  • Neonatal complications
  • Congenital anomalies detected at birth

7. DEVELOPMENTAL HISTORY

  • Motor, language, social, and cognitive milestones (age-appropriate)
  • Any regression of milestones (especially important for CNS tumors)
  • School performance - any recent decline in grades or behavior change

8. IMMUNIZATION HISTORY

  • Up-to-date vaccination status (baseline before chemotherapy)
  • Any live vaccine received recently (important before initiating immunosuppressive therapy)

9. NUTRITIONAL HISTORY

  • Breastfeeding history
  • Current diet, appetite changes
  • Recent weight loss or failure to thrive
  • Nutritional assessment (weight-for-age, height-for-age z-scores)

10. DRUG HISTORY

  • All current medications (including OTC, herbal, supplements)
  • Previous chemotherapy agents and response
  • Allergies (drug, food, environmental) with nature of reaction

11. SOCIAL HISTORY

  • Household composition: who lives with the child?
  • Caregiver: primary caregiver, employment, education level
  • Financial status / insurance coverage (treatment access)
  • Geographic location / distance from treatment center
  • Smoking / alcohol / substance use in household (passive exposure)
  • Emotional and psychological support available
  • School attendance and peer relationships

12. REVIEW OF SYSTEMS (ROS)

Go system by system - screen for symptoms not mentioned in HPI:
SystemKey Points
ConstitutionalFever, weight loss, night sweats, fatigue, anorexia
HEENTHeadache, visual changes, proptosis, hearing loss, nasal obstruction
RespiratoryCough, dyspnea, stridor, hemoptysis
CardiovascularPalpitations, chest pain, edema
GIAbdominal pain, mass, nausea/vomiting, change in bowel habits, rectal bleeding, jaundice
GUHematuria, frequency, testicular swelling (boys)
MSKBone/joint pain (especially nocturnal), limp, pathological fracture
NeurologicalHeadache, seizures, weakness, ataxia, behavioral change, cranial nerve deficits
SkinPallor, jaundice, petechiae, ecchymoses, rash, café-au-lait spots
LymphaticLymphadenopathy (location, size, duration, tenderness)
EndocrinePrecocious puberty, growth failure, polydipsia/polyuria
PsychologicalAnxiety, depression, behavioral changes, school difficulties

13. GOALS OF CARE & PATIENT/FAMILY UNDERSTANDING

(Especially important at new diagnosis and follow-up visits)
  • What does the family understand about the diagnosis so far?
  • What are their main concerns and fears?
  • What are the child's and family's goals of treatment? (Cure vs. quality of life)
  • Cultural, religious, or personal beliefs that may affect treatment decisions
  • Support systems in place (extended family, community, religious support)
  • Emotional wellbeing of caregivers (caregiver burnout, depression)

14. FUNCTIONAL STATUS ASSESSMENT

  • Lansky Performance Scale (for children <16 years)
  • Karnofsky Scale (for adolescents/older children)
  • Activities of daily living: is the child able to attend school, play, eat independently?
ScoreLansky Scale Description
100Fully active, normal
80Minor restrictions in strenuous activity
60Active but tired; play restricted
40Mostly in bed, limited self-care
20No active play; requires significant assistance
0Unresponsive

Summary Checklist

  • General data & informant reliability
  • Chief complaint with duration
  • Detailed HPI with B-symptom screen
  • Red flag features documented
  • PMH including prior cancers, genetic syndromes
  • Family history with cancer pedigree
  • Birth and antenatal history
  • Developmental milestones and regression
  • Immunization status
  • Nutritional assessment
  • Medications and allergies
  • Social and psychosocial history
  • Full ROS
  • Goals of care / family understanding
  • Functional status (Lansky/Karnofsky)

References:
  • The Harriet Lane Handbook, 23rd Edition (Johns Hopkins Hospital) - Genetic Evaluation, Oncologic Conditions
  • A structured oncology H&P template validated in outpatient oncology settings (MDPI, 2024)
  • Standard pediatric history-taking framework with BLINDS/SOCRATES adaptations for oncology

Create a Word document template for pediatric oncology history collection

Reading File
Running Command

mkdir -p /tmp/workspace/pediatric-oncology && ls /tmp/workspace/pediatric-oncology/

Writing File

~/pediatric-oncology/create_template.py

from docx import Document
from docx.shared import Pt, Inches, RGBColor, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import copy

doc = Document()

# ── Page margins ──────────────────────────────────────────────────────────────
section = doc.sections[0]
section.page_width  = Inches(8.5)
section.page_height = Inches(11)
section.left_margin   = Inches(1)
section.right_margin  = Inches(1)
section.top_margin    = Inches(0.8)
section.bottom_margin = Inches(0.8)

# ── Default Normal style ──────────────────────────────────────────────────────
normal = doc.styles["Normal"]
normal.font.name = "Calibri"
normal.font.size = Pt(10.5)

# ── Colour palette ────────────────────────────────────────────────────────────
DARK_BLUE  = RGBColor(0x1A, 0x3C, 0x6E)   # header bg
MED_BLUE   = RGBColor(0x1F, 0x6F, 0xB8)   # section headings
LIGHT_BLUE = RGBColor(0xD6, 0xE4, 0xF4)   # table header row bg
LIGHT_GREY = RGBColor(0xF5, 0xF5, 0xF5)   # alternate row bg
WHITE      = RGBColor(0xFF, 0xFF, 0xFF)
RED_FLAG   = RGBColor(0xC0, 0x39, 0x2B)   # red-flag label

# ── Helper: shade a table cell ────────────────────────────────────────────────
def shade_cell(cell, hex_color: str):
    tc   = cell._tc
    tcPr = tc.get_or_add_tcPr()
    shd  = OxmlElement("w:shd")
    shd.set(qn("w:val"),   "clear")
    shd.set(qn("w:color"), "auto")
    shd.set(qn("w:fill"),  hex_color)
    tcPr.append(shd)

# ── Helper: set cell border ───────────────────────────────────────────────────
def set_cell_border(cell, **kwargs):
    tc   = cell._tc
    tcPr = tc.get_or_add_tcPr()
    tcBorders = OxmlElement("w:tcBorders")
    for edge in ("top","left","bottom","right","insideH","insideV"):
        if edge in kwargs:
            tag = OxmlElement(f"w:{edge}")
            for k, v in kwargs[edge].items():
                tag.set(qn(f"w:{k}"), v)
            tcBorders.append(tag)
    tcPr.append(tcBorders)

# ── Helper: thick bottom border on paragraph ──────────────────────────────────
def add_bottom_border(paragraph, color="1A3C6E"):
    pPr  = paragraph._p.get_or_add_pPr()
    pBdr = OxmlElement("w:pBdr")
    bottom = OxmlElement("w:bottom")
    bottom.set(qn("w:val"),   "single")
    bottom.set(qn("w:sz"),    "12")
    bottom.set(qn("w:space"), "1")
    bottom.set(qn("w:color"), color)
    pBdr.append(bottom)
    pPr.append(pBdr)

# ── Helper: coloured run ──────────────────────────────────────────────────────
def coloured_run(paragraph, text, bold=False, color=None, size=None, italic=False):
    run = paragraph.add_run(text)
    run.bold   = bold
    run.italic = italic
    if color:
        run.font.color.rgb = color
    if size:
        run.font.size = Pt(size)
    return run

# ── Helper: add a labelled field line ─────────────────────────────────────────
def field_line(label, spaces=40):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(2)
    p.paragraph_format.space_after  = Pt(2)
    run_label = p.add_run(f"{label}: ")
    run_label.bold = True
    run_label.font.color.rgb = RGBColor(0x33, 0x33, 0x33)
    run_label.font.size = Pt(10.5)
    run_line = p.add_run("_" * spaces)
    run_line.font.color.rgb = RGBColor(0x99, 0x99, 0x99)
    run_line.font.size = Pt(10.5)
    return p

# ── Helper: checkbox line ─────────────────────────────────────────────────────
def checkbox_line(text, indent=0.3):
    p = doc.add_paragraph()
    p.paragraph_format.left_indent   = Inches(indent)
    p.paragraph_format.space_before  = Pt(1)
    p.paragraph_format.space_after   = Pt(1)
    run = p.add_run(f"\u25a1  {text}")
    run.font.size = Pt(10.5)
    return p

# ── Helper: section heading ───────────────────────────────────────────────────
def section_heading(title, number=""):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(10)
    p.paragraph_format.space_after  = Pt(3)
    add_bottom_border(p)
    run = p.add_run(f"  {number}  {title}  " if number else f"  {title}  ")
    run.bold           = True
    run.font.size      = Pt(12)
    run.font.color.rgb = WHITE
    # Shade paragraph background
    pPr  = p._p.get_or_add_pPr()
    shd  = OxmlElement("w:shd")
    shd.set(qn("w:val"),   "clear")
    shd.set(qn("w:color"), "auto")
    shd.set(qn("w:fill"),  "1F6FB8")
    pPr.append(shd)
    return p

# ── Helper: sub-heading ───────────────────────────────────────────────────────
def sub_heading(title):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(6)
    p.paragraph_format.space_after  = Pt(2)
    run = p.add_run(title)
    run.bold           = True
    run.font.size      = Pt(10.5)
    run.font.color.rgb = DARK_BLUE
    return p

# ── Helper: note paragraph ────────────────────────────────────────────────────
def note_para(text, italic=True, color=None):
    p = doc.add_paragraph()
    p.paragraph_format.left_indent  = Inches(0.2)
    p.paragraph_format.space_before = Pt(1)
    p.paragraph_format.space_after  = Pt(1)
    run = p.add_run(text)
    run.italic    = italic
    run.font.size = Pt(9.5)
    run.font.color.rgb = color if color else RGBColor(0x55, 0x55, 0x55)
    return p

# ── Helper: two-column field table ───────────────────────────────────────────
def two_col_fields(pairs, col_widths=(2.5, 3.5)):
    """pairs = list of (label, line_length)"""
    tbl = doc.add_table(rows=0, cols=2)
    tbl.style = "Table Grid"
    tbl.alignment = WD_TABLE_ALIGNMENT.LEFT
    for label, line_len in pairs:
        row = tbl.add_row()
        row.height = Pt(22)
        c0, c1 = row.cells
        c0.width = Inches(col_widths[0])
        c1.width = Inches(col_widths[1])
        shade_cell(c0, "EBF3FB")
        p0 = c0.paragraphs[0]
        p0.paragraph_format.space_before = Pt(1)
        r0 = p0.add_run(label)
        r0.bold           = True
        r0.font.size      = Pt(10)
        r0.font.color.rgb = DARK_BLUE
        p1 = c1.paragraphs[0]
        p1.paragraph_format.space_before = Pt(1)
        r1 = p1.add_run("_" * line_len)
        r1.font.color.rgb = RGBColor(0xAA, 0xAA, 0xAA)
    return tbl

# ─────────────────────────────────────────────────────────────────────────────
#  DOCUMENT TITLE BLOCK
# ─────────────────────────────────────────────────────────────────────────────
# Top banner
banner = doc.add_paragraph()
banner.alignment = WD_ALIGN_PARAGRAPH.CENTER
banner.paragraph_format.space_before = Pt(0)
banner.paragraph_format.space_after  = Pt(0)
pPr = banner._p.get_or_add_pPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"),   "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"),  "1A3C6E")
pPr.append(shd)
r = banner.add_run("PEDIATRIC ONCOLOGY")
r.bold           = True
r.font.size      = Pt(18)
r.font.color.rgb = WHITE
r.font.name      = "Calibri"

banner2 = doc.add_paragraph()
banner2.alignment = WD_ALIGN_PARAGRAPH.CENTER
banner2.paragraph_format.space_before = Pt(0)
banner2.paragraph_format.space_after  = Pt(6)
pPr2 = banner2._p.get_or_add_pPr()
shd2 = OxmlElement("w:shd")
shd2.set(qn("w:val"),   "clear")
shd2.set(qn("w:color"), "auto")
shd2.set(qn("w:fill"),  "1A3C6E")
pPr2.append(shd2)
r2 = banner2.add_run("HISTORY COLLECTION FORM")
r2.bold           = True
r2.font.size      = Pt(14)
r2.font.color.rgb = RGBColor(0xD6, 0xE8, 0xFF)
r2.font.name      = "Calibri"

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 1 - IDENTIFYING DATA
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 1: IDENTIFYING / GENERAL DATA")
two_col_fields([
    ("Patient Name",              35),
    ("Date of Birth",             20),
    ("Age",                       10),
    ("Sex",                       10),
    ("Medical Record No.",        20),
    ("Date of Assessment",        20),
    ("Ward / Clinic",             20),
    ("Referring Physician",       25),
    ("Address",                   35),
    ("Contact No. (Parent/Guardian)", 25),
    ("Informant",                 30),
    ("Relationship to Patient",   25),
    ("Reliability of History",    25),
])

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 2 - CHIEF COMPLAINT
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 2: CHIEF COMPLAINT")
note_para('Record in patient\'s / caregiver\'s own words')
field_line("Chief Complaint", 55)
field_line("Duration", 30)

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 3 - HISTORY OF PRESENT ILLNESS
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 3: HISTORY OF PRESENT ILLNESS (HPI)")

sub_heading("A. Symptom Analysis (SOCRATES)")
hpi_tbl = doc.add_table(rows=0, cols=2)
hpi_tbl.style = "Table Grid"
hpi_fields = [
    ("Onset",               "Sudden / Gradual   Date: _______________"),
    ("Duration",            "___________________________"),
    ("Character / Nature",  "___________________________"),
    ("Location / Radiation","___________________________"),
    ("Severity (0-10)",     "___________________________"),
    ("Modifying Factors",   "Better with: ____________  Worse with: ____________"),
    ("Associated Symptoms", "___________________________"),
    ("Course / Progression","Static / Progressive / Improving / Fluctuating"),
]
for i, (lbl, placeholder) in enumerate(hpi_fields):
    row = hpi_tbl.add_row()
    row.height = Pt(22)
    c0, c1 = row.cells
    c0.width = Inches(2.2)
    c1.width = Inches(3.8)
    shade_cell(c0, "EBF3FB" if i % 2 == 0 else "F5F5F5")
    p0 = c0.paragraphs[0]
    r0 = p0.add_run(lbl)
    r0.bold = True
    r0.font.size = Pt(10)
    r0.font.color.rgb = DARK_BLUE
    p1 = c1.paragraphs[0]
    r1 = p1.add_run(placeholder)
    r1.font.size = Pt(10)
    r1.font.color.rgb = RGBColor(0x88, 0x88, 0x88)

sub_heading("B. B-Symptom Screening (\"Red Flag\" Review)")
note_para("Tick all that apply — mandatory screening for ALL pediatric oncology visits", color=RED_FLAG)

bf_tbl = doc.add_table(rows=0, cols=4)
bf_tbl.style = "Table Grid"
bf_tbl.alignment = WD_TABLE_ALIGNMENT.LEFT

# Header row
hrow = bf_tbl.add_row()
for cell, txt in zip(hrow.cells, ["Symptom", "Present?", "Duration", "Notes"]):
    shade_cell(cell, "1F6FB8")
    p = cell.paragraphs[0]
    r = p.add_run(txt)
    r.bold = True
    r.font.size = Pt(10)
    r.font.color.rgb = WHITE

b_symptoms = [
    "Unexplained weight loss (>10% in 3 months)",
    "Persistent / recurrent fever (>2 weeks, unexplained)",
    "Drenching night sweats",
    "Severe unexplained fatigue / lethargy",
    "Pallor (unexplained anaemia)",
    "Petechiae / purpura / easy bruising",
    "Unexplained bleeding",
    "Lymphadenopathy (>1 cm, >4 wks, hard, non-tender)",
    "Hepatosplenomegaly",
    "Palpable abdominal / neck mass",
    "Bone pain (especially nocturnal or at rest)",
    "Limp or refusal to walk",
    "Headache (persistent / morning / with vomiting)",
    "Visual changes / proptosis",
    "New neurological deficit / ataxia / seizures",
    "Precocious puberty / growth failure",
]
for i, sym in enumerate(b_symptoms):
    row = bf_tbl.add_row()
    row.height = Pt(20)
    c0, c1, c2, c3 = row.cells
    c0.width = Inches(2.8)
    c1.width = Inches(0.8)
    c2.width = Inches(1.0)
    c3.width = Inches(1.4)
    bg = "F5F9FF" if i % 2 == 0 else "FFFFFF"
    for c in (c0, c1, c2, c3):
        shade_cell(c, bg)
    c0.paragraphs[0].add_run(sym).font.size = Pt(9.5)
    c1.paragraphs[0].add_run("\u25a1 Yes   \u25a1 No").font.size = Pt(9.5)
    c2.paragraphs[0].add_run("_________").font.size = Pt(9.5)
    c3.paragraphs[0].add_run("_________").font.size = Pt(9.5)

# Narrative notes
doc.add_paragraph()
sub_heading("C. HPI Narrative")
note_para("Summarise the history of present illness in chronological order:")
for _ in range(5):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(1)
    p.paragraph_format.space_after  = Pt(1)
    r = p.add_run("_" * 95)
    r.font.color.rgb = RGBColor(0xBB, 0xBB, 0xBB)

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 4 - PAST MEDICAL & SURGICAL HISTORY
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 4: PAST MEDICAL & SURGICAL HISTORY")

sub_heading("A. Previous Illnesses / Hospitalizations")
pmh_tbl = doc.add_table(rows=1, cols=3)
pmh_tbl.style = "Table Grid"
for cell, txt in zip(pmh_tbl.rows[0].cells, ["Condition / Illness", "Year", "Hospital / Treatment"]):
    shade_cell(cell, "1F6FB8")
    r = cell.paragraphs[0].add_run(txt)
    r.bold = True; r.font.size = Pt(10); r.font.color.rgb = WHITE
for _ in range(4):
    row = pmh_tbl.add_row()
    row.height = Pt(22)
    for c in row.cells:
        shade_cell(c, "FAFAFA")

sub_heading("B. Previous Oncology / Cancer History")
two_col_fields([
    ("Prior Cancer Diagnosis",         30),
    ("Type of Cancer",                 30),
    ("Year of Diagnosis",              20),
    ("Previous Chemotherapy",          30),
    ("Previous Radiotherapy",          30),
    ("Previous Surgery",               30),
    ("Previous Transfusions",          20),
])

sub_heading("C. Known Genetic / Predisposition Syndromes")
note_para("Tick if present:")
syndromes = [
    "Down syndrome (Trisomy 21)",     "Li-Fraumeni syndrome (TP53)",
    "Neurofibromatosis type 1 (NF1)", "Neurofibromatosis type 2 (NF2)",
    "Beckwith-Wiedemann syndrome",    "von Hippel-Lindau syndrome",
    "BRCA1 / BRCA2 mutation",         "Lynch syndrome",
    "DICER1 syndrome",                "Constitutional mismatch repair deficiency (CMMRD)",
    "Fanconi anaemia",                "Bloom syndrome",
    "Ataxia-telangiectasia",          "Wiskott-Aldrich syndrome",
    "Other (specify): ____________",  "",
]
syn_tbl = doc.add_table(rows=0, cols=2)
syn_tbl.style = "Table Grid"
for i in range(0, len(syndromes), 2):
    row = syn_tbl.add_row()
    row.height = Pt(18)
    for j, txt in enumerate(syndromes[i:i+2]):
        c = row.cells[j]
        shade_cell(c, "F5F9FF" if i % 4 == 0 else "FFFFFF")
        p = c.paragraphs[0]
        r = p.add_run(f"\u25a1  {txt}")
        r.font.size = Pt(9.5)

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 5 - FAMILY HISTORY
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 5: FAMILY HISTORY")
note_para("~10% of pediatric oncology patients have a heritable cancer predisposition syndrome — obtain thorough family cancer history", color=RED_FLAG)

fh_tbl = doc.add_table(rows=1, cols=4)
fh_tbl.style = "Table Grid"
for cell, txt in zip(fh_tbl.rows[0].cells, ["Relation", "Cancer Type", "Age at Diagnosis", "Genetic Testing Done?"]):
    shade_cell(cell, "1F6FB8")
    r = cell.paragraphs[0].add_run(txt)
    r.bold = True; r.font.size = Pt(10); r.font.color.rgb = WHITE
relations = ["Father", "Mother", "Sibling 1", "Sibling 2", "Paternal Grandfather",
             "Paternal Grandmother", "Maternal Grandfather", "Maternal Grandmother", "Other"]
for rel in relations:
    row = fh_tbl.add_row()
    row.height = Pt(20)
    shade_cell(row.cells[0], "EBF3FB")
    row.cells[0].paragraphs[0].add_run(rel).font.size = Pt(9.5)
    for c in row.cells[1:]:
        shade_cell(c, "FAFAFA")

doc.add_paragraph()
checkbox_line("Consanguinity in parents?   Details: ___________________________")
checkbox_line("Unexplained childhood deaths in family?   Details: ___________________________")
checkbox_line("Multiple primary tumors in a relative?   Details: ___________________________")

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 6 - BIRTH & ANTENATAL HISTORY
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 6: BIRTH & ANTENATAL HISTORY")
two_col_fields([
    ("Gestational Age at Birth",           20),
    ("Mode of Delivery",                   25),
    ("Birth Weight",                       15),
    ("APGAR Score (1 min / 5 min)",        20),
    ("Maternal Age at Delivery",           15),
    ("Maternal Health During Pregnancy",   35),
    ("Drug / Toxin / Radiation Exposure",  35),
    ("Neonatal Complications",             35),
    ("Congenital Anomalies Noted",         35),
])

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 7 - DEVELOPMENTAL HISTORY
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 7: DEVELOPMENTAL HISTORY")

dev_tbl = doc.add_table(rows=1, cols=3)
dev_tbl.style = "Table Grid"
for cell, txt in zip(dev_tbl.rows[0].cells, ["Milestone", "Expected Age", "Age Achieved / Status"]):
    shade_cell(cell, "1F6FB8")
    r = cell.paragraphs[0].add_run(txt)
    r.bold = True; r.font.size = Pt(10); r.font.color.rgb = WHITE
milestones = [
    ("Smiled socially",        "6 weeks"),
    ("Sat unsupported",        "6 months"),
    ("Walked independently",   "12-15 months"),
    ("First words",            "12 months"),
    ("Two-word phrases",       "18-24 months"),
    ("Toilet trained",         "2-3 years"),
    ("School entry",           "5-6 years"),
]
for i, (ms, exp) in enumerate(milestones):
    row = dev_tbl.add_row()
    row.height = Pt(20)
    shade_cell(row.cells[0], "EBF3FB" if i % 2 == 0 else "F5F5F5")
    shade_cell(row.cells[1], "EBF3FB" if i % 2 == 0 else "F5F5F5")
    shade_cell(row.cells[2], "FAFAFA")
    row.cells[0].paragraphs[0].add_run(ms).font.size  = Pt(9.5)
    row.cells[1].paragraphs[0].add_run(exp).font.size = Pt(9.5)
    row.cells[2].paragraphs[0].add_run("________________").font.size = Pt(9.5)

doc.add_paragraph()
checkbox_line("Regression of previously acquired milestones? (Especially important for CNS tumors)")
field_line("School performance / recent academic change", 35)
field_line("Behavioural changes noted", 40)

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 8 - IMMUNIZATION HISTORY
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 8: IMMUNIZATION HISTORY")
note_para("Critical before initiating chemotherapy — document baseline and any live vaccines received")
checkbox_line("Immunizations up to date for age?")
field_line("Last vaccine given (name + date)", 40)
checkbox_line("Live vaccines received in past 4 weeks? (BCG, MMR, Varicella, OPV)  Details: _______________")
checkbox_line("Immunization record available?")

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 9 - NUTRITIONAL HISTORY
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 9: NUTRITIONAL HISTORY")
two_col_fields([
    ("Breastfeeding (duration)",        20),
    ("Current Diet (describe)",         40),
    ("Appetite",                        20),
    ("Recent Weight Change",            25),
    ("Current Weight (kg)",             10),
    ("Current Height / Length (cm)",    15),
    ("Weight-for-Age z-score",          10),
    ("Height-for-Age z-score",          10),
    ("BMI",                             10),
    ("Nutritional Supplements Used",    30),
])

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 10 - DRUG HISTORY & ALLERGIES
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 10: DRUG HISTORY & ALLERGIES")

sub_heading("A. Current Medications")
drug_tbl = doc.add_table(rows=1, cols=4)
drug_tbl.style = "Table Grid"
for cell, txt in zip(drug_tbl.rows[0].cells, ["Drug Name", "Dose", "Frequency", "Indication"]):
    shade_cell(cell, "1F6FB8")
    r = cell.paragraphs[0].add_run(txt)
    r.bold = True; r.font.size = Pt(10); r.font.color.rgb = WHITE
for _ in range(6):
    row = drug_tbl.add_row()
    row.height = Pt(20)
    for c in row.cells:
        shade_cell(c, "FAFAFA")

sub_heading("B. Allergies")
allergy_tbl = doc.add_table(rows=1, cols=3)
allergy_tbl.style = "Table Grid"
for cell, txt in zip(allergy_tbl.rows[0].cells, ["Allergen", "Type of Reaction", "Severity"]):
    shade_cell(cell, "1F6FB8")
    r = cell.paragraphs[0].add_run(txt)
    r.bold = True; r.font.size = Pt(10); r.font.color.rgb = WHITE
for _ in range(3):
    row = allergy_tbl.add_row()
    row.height = Pt(20)
    for c in row.cells:
        shade_cell(c, "FAFAFA")

checkbox_line("No Known Drug Allergies (NKDA)")

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 11 - SOCIAL HISTORY
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 11: SOCIAL HISTORY")
two_col_fields([
    ("Household Composition",          40),
    ("Primary Caregiver",              25),
    ("Caregiver Education Level",      25),
    ("Caregiver Employment Status",    25),
    ("Financial Status / Insurance",   30),
    ("Distance from Treatment Centre", 25),
    ("Transport Availability",         25),
    ("School Attendance",              20),
])
doc.add_paragraph()
checkbox_line("Tobacco smoke exposure in household?")
checkbox_line("Substance use in household?")
checkbox_line("Child protection concerns?   Details: ____________________________")
checkbox_line("Psychosocial support available (extended family / community / religious)?")

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 12 - REVIEW OF SYSTEMS
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 12: REVIEW OF SYSTEMS (ROS)")
note_para("Circle or tick: Y = Yes  |  N = No  |  NK = Not Known")

ros_systems = [
    ("Constitutional",    ["Fever", "Weight loss", "Night sweats", "Fatigue", "Anorexia", "Malaise"]),
    ("HEENT",             ["Headache", "Visual changes", "Proptosis", "Hearing loss", "Nasal obstruction", "Oral ulcers"]),
    ("Respiratory",       ["Cough", "Dyspnoea", "Stridor", "Haemoptysis", "Wheeze"]),
    ("Cardiovascular",    ["Palpitations", "Chest pain", "Oedema", "Syncope"]),
    ("Gastrointestinal",  ["Abdominal pain", "Abdominal mass", "Nausea / vomiting", "Change in bowel habits", "Rectal bleeding", "Jaundice"]),
    ("Genitourinary",     ["Haematuria", "Frequency / dysuria", "Testicular swelling (M)", "Pelvic mass (F)"]),
    ("Musculoskeletal",   ["Bone / joint pain", "Nocturnal pain", "Limp", "Pathological fracture", "Muscle weakness"]),
    ("Neurological",      ["Headache", "Seizures", "Focal weakness", "Ataxia", "Behavioural change", "Cranial nerve deficit"]),
    ("Skin / Lymphatic",  ["Pallor", "Jaundice", "Petechiae / purpura", "Café-au-lait spots", "Rash", "Lymphadenopathy"]),
    ("Endocrine",         ["Precocious puberty", "Growth failure", "Polydipsia / polyuria", "Galactorrhoea"]),
    ("Psychological",     ["Anxiety", "Depression", "Behavioural change", "School difficulties", "Sleep disturbance"]),
]

for sys_name, items in ros_systems:
    ros_tbl = doc.add_table(rows=2, cols=len(items) if len(items) <= 4 else 4)
    ros_tbl.style = "Table Grid"
    # System name header spanning all columns
    hrow = ros_tbl.rows[0]
    hrow.cells[0].paragraphs[0].add_run(sys_name).font.size = Pt(10)
    hrow.cells[0].paragraphs[0].runs[0].bold = True
    hrow.cells[0].paragraphs[0].runs[0].font.color.rgb = WHITE
    shade_cell(hrow.cells[0], "1F6FB8")
    # Merge all header cells
    if len(hrow.cells) > 1:
        merged = hrow.cells[0].merge(hrow.cells[-1])
    # Symptom rows
    cols = 4
    for chunk_start in range(0, len(items), cols):
        chunk = items[chunk_start:chunk_start+cols]
        if chunk_start > 0:
            new_row = ros_tbl.add_row()
        else:
            new_row = ros_tbl.rows[1]
        new_row.height = Pt(20)
        for j, itm in enumerate(chunk):
            c = new_row.cells[j]
            shade_cell(c, "F5F9FF")
            p = c.paragraphs[0]
            p.add_run(f"\u25a1  {itm}").font.size = Pt(9)
        for j in range(len(chunk), cols):
            shade_cell(new_row.cells[j], "FAFAFA")
    doc.add_paragraph().paragraph_format.space_after = Pt(2)

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 13 - GOALS OF CARE & FAMILY UNDERSTANDING
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 13: GOALS OF CARE & FAMILY UNDERSTANDING")

goc_questions = [
    "What does the family currently understand about the diagnosis?",
    "What are the family's main concerns / fears?",
    "What are the treatment goals? (Curative / Quality of life / Palliation)",
    "Cultural, religious, or personal beliefs that may affect treatment decisions?",
    "Support systems available (family, community, religious, counselling)?",
    "Caregiver emotional wellbeing — any signs of burnout or depression?",
]
for q in goc_questions:
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(3)
    p.paragraph_format.space_after  = Pt(1)
    run = p.add_run(f"  {q}")
    run.bold = True
    run.font.size = Pt(10)
    run.font.color.rgb = DARK_BLUE
    for _ in range(2):
        lp = doc.add_paragraph()
        lp.paragraph_format.space_before = Pt(0)
        lp.paragraph_format.space_after  = Pt(0)
        lp.paragraph_format.left_indent  = Inches(0.3)
        lp.add_run("_" * 88).font.color.rgb = RGBColor(0xBB, 0xBB, 0xBB)

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 14 - FUNCTIONAL STATUS
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 14: FUNCTIONAL STATUS ASSESSMENT")

sub_heading("Lansky Performance Scale (Children <16 years)")
lansky_data = [
    ("100", "Fully active, normal"),
    ("90",  "Minor restrictions in strenuous physical activity"),
    ("80",  "Active but tires more quickly; restricted strenuous activity"),
    ("70",  "Greater restriction of active play; less time in play activity"),
    ("60",  "Up and around; active in quiet play only"),
    ("50",  "Gets dressed but lies around much of the day; no active play"),
    ("40",  "Mostly in bed; participates in quiet activities"),
    ("30",  "In bed; needs assistance for most self-care"),
    ("20",  "Often sleeping; can only take liquids; limited self-care"),
    ("10",  "No play; does not get out of bed; does not eat"),
    ("0",   "Unresponsive"),
]
ls_tbl = doc.add_table(rows=1, cols=3)
ls_tbl.style = "Table Grid"
for cell, txt in zip(ls_tbl.rows[0].cells, ["Score", "Description", "Select"]):
    shade_cell(cell, "1F6FB8")
    r = cell.paragraphs[0].add_run(txt)
    r.bold = True; r.font.size = Pt(10); r.font.color.rgb = WHITE
for i, (score, desc) in enumerate(lansky_data):
    row = ls_tbl.add_row()
    row.height = Pt(18)
    shade_cell(row.cells[0], "EBF3FB" if i % 2 == 0 else "F5F5F5")
    shade_cell(row.cells[1], "EBF3FB" if i % 2 == 0 else "F5F5F5")
    shade_cell(row.cells[2], "FFFFF0")
    row.cells[0].paragraphs[0].add_run(score).font.size = Pt(9.5)
    row.cells[1].paragraphs[0].add_run(desc).font.size  = Pt(9.5)
    row.cells[2].paragraphs[0].add_run("\u25a1").font.size = Pt(11)

doc.add_paragraph()
field_line("Lansky Score Selected", 10)
field_line("Karnofsky Score (if adolescent >16 yrs)", 10)
field_line("Activities of Daily Living (describe)", 40)

# ─────────────────────────────────────────────────────────────────────────────
#  SECTION 15 - CLINICIAN SIGN-OFF
# ─────────────────────────────────────────────────────────────────────────────
section_heading("SECTION 15: CLINICIAN SIGN-OFF")
two_col_fields([
    ("History Collected By",   30),
    ("Designation / Grade",    25),
    ("Date",                   20),
    ("Time",                   15),
    ("Signature",              30),
    ("Supervisor / Consultant",30),
    ("Supervisor Signature",   30),
])

# ─────────────────────────────────────────────────────────────────────────────
#  FOOTER note
# ─────────────────────────────────────────────────────────────────────────────
doc.add_paragraph()
footer_p = doc.add_paragraph()
footer_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
fr = footer_p.add_run(
    "This form is for clinical use only. Maintain patient confidentiality at all times. "
    "Based on Harriet Lane Handbook 23rd Ed. & standard pediatric oncology clinical guidelines."
)
fr.italic     = True
fr.font.size  = Pt(8)
fr.font.color.rgb = RGBColor(0x88, 0x88, 0x88)

# ─────────────────────────────────────────────────────────────────────────────
#  SAVE
# ─────────────────────────────────────────────────────────────────────────────
out_path = "/tmp/workspace/pediatric-oncology/Pediatric_Oncology_History_Form.docx"
doc.save(out_path)
print(f"Saved: {out_path}")
Running Command

cd /tmp/workspace/pediatric-oncology && python3 create_template.py 2>&1

Running Command

python3 -c " from docx import Document doc = Document('/tmp/workspace/pediatric-oncology/Pediatric_Oncology_History_Form.docx') for p in doc.paragraphs[:30]: if p.text.strip(): print(f'[{p.style.name}] {p.text[:80]}') "

Running Command

ls -lh /tmp/workspace/pediatric-oncology/Pediatric_Oncology_History_Form.docx

Your Word document is ready. Download it here:

Pediatric Oncology History Form

Word Document · DOCX


What's inside the document (43 KB, 15 sections):
SectionContent
1. Identifying DataPatient demographics, MRN, informant, referral details
2. Chief ComplaintFree-text + duration field
3. HPISOCRATES analysis table, B-symptom / Red Flag checklist (16 items with Yes/No/Duration columns), narrative writing lines
4. Past Medical & Surgical HistoryHospitalization table, prior oncology treatment, known genetic syndromes checklist (14 syndromes)
5. Family History9-relation cancer table, consanguinity, unexplained childhood deaths
6. Birth & Antenatal HistoryGestational age, mode of delivery, exposures, anomalies
7. Developmental History7-milestone table, regression checkbox, school performance
8. Immunization HistoryUp-to-date status, live vaccine alert
9. Nutritional HistoryDietary intake, anthropometric z-scores, BMI
10. Drug History & AllergiesCurrent medications table, allergy table
11. Social HistoryHousehold, caregiver, financial, transport, smoke/substance exposure
12. Review of Systems11 organ systems, 60+ symptom checkboxes in colour-coded tables
13. Goals of Care6 structured questions on family understanding, treatment goals, cultural beliefs
14. Functional StatusFull Lansky Performance Scale (0-100) with select column, Karnofsky field
15. Clinician Sign-offCollector details, supervisor cosignature
Design features: Blue-themed colour coding, shaded section headers, alternating row colours, checkbox symbols (☐), and fill-in underlines throughout. Ready to print or fill digitally in Word.

Retinoblastoma history collect format

Finding Sources
Searching the Web

retinoblastoma clinical history taking format presentation diagnosis

Reading File
Reading File
Reading Web Page

https://www.intechopen.com/chapters/66491

Reading File
Finding Sources
Reading File
Reading File
Searching Images

retinoblastoma leukocoria white pupil reflex child

This clinical photograph displays a 5-year-old female child exhibiting a classic hallmark sign of intraocular pathology. The primary finding is leukocoria, or a 'white reflex,' visible in the patient's right eye. While the left eye demonstrates a normal dark pupillary reflex, the right pupil shows a distinct yellowish-white opacification instead of the normal red reflex. This visual phenomenon is highly characteristic of retinoblastoma, the most common primary intraocular malignancy of childhood. The image serves as an educational tool for ophthalmology and pediatrics, emphasizing the importance of recognizing abnormal pupillary reflexes during routine physical examinations. Early detection of leukocoria is critical for the diagnosis of potentially life-threatening and sight-threatening conditions, including retinoblastoma, Coats' disease, or congenital cataracts. The photograph illustrates the typical presentation where a parent or clinician might first notice the abnormality in dim lighting or via flash photography.

This clinical photograph displays a 5-year-old female child exhibiting a classic hallmark sign of intraocular pathology. The primary finding is leukocoria, or a 'white reflex,' visible in the patient's right eye. While the left eye demonstrates a normal dark pupillary reflex, the right pupil shows a distinct yellowish-white opacification instead of the normal red reflex. This visual phenomenon is highly characteristic of retinoblastoma, the most common primary intraocular malignancy of childhood. The image serves as an educational tool for ophthalmology and pediatrics, emphasizing the importance of recognizing abnormal pupillary reflexes during routine physical examinations. Early detection of leukocoria is critical for the diagnosis of potentially life-threatening and sight-threatening conditions, including retinoblastoma, Coats' disease, or congenital cataracts. The photograph illustrates the typical presentation where a parent or clinician might first notice the abnormality in dim lighting or via flash photography.

A clinical photograph of an infant demonstrating leukocoria (white pupillary reflex) and anisocoria. An adult's hand is seen retracting the infant's right upper eyelid to facilitate visualization of the globe. The right pupil exhibits a prominent, milky-white opacification, characteristic of an abnormal red reflex. There is visible nasal deviation of the right eye, suggesting esotropia or pseudostrabismus. The left pupil appears comparatively darker with a bluish-gray hue. This visual presentation is critical in pediatric ophthalmology for the differential diagnosis of conditions such as congenital cataracts, retinoblastoma, or Coats' disease. The image illustrates the 'white reflex' or cat's eye reflex, a significant clinical finding requiring urgent diagnostic evaluation to rule out intraocular malignancy or vision-threatening pathologies.

A clinical photograph of an infant demonstrating leukocoria (white pupillary reflex) and anisocoria. An adult's hand is seen retracting the infant's right upper eyelid to facilitate visualization of the globe. The right pupil exhibits a prominent, milky-white opacification, characteristic of an abnormal red reflex. There is visible nasal deviation of the right eye, suggesting esotropia or pseudostrabismus. The left pupil appears comparatively darker with a bluish-gray hue. This visual presentation is critical in pediatric ophthalmology for the differential diagnosis of conditions such as congenital cataracts, retinoblastoma, or Coats' disease. The image illustrates the 'white reflex' or cat's eye reflex, a significant clinical finding requiring urgent diagnostic evaluation to rule out intraocular malignancy or vision-threatening pathologies.

Now I have comprehensive data from Kanski's Clinical Ophthalmology, Textbook of Family Medicine, IntechOpen, StatPearls, and Medscape. Here is the complete format:

Retinoblastoma - History Collection Format

Tip from Kanski's Clinical Ophthalmology: "Retinoblastoma needs to be excluded in a young child with leukocoria or a squint. Careful enquiry about a family history of ocular tumours is critical."
Leukocoria - Classic sign of retinoblastoma showing white pupillary reflex in the right eye

1. IDENTIFYING / GENERAL DATA

FieldEntry
Patient name
Date of birth / Age
Sex
Medical record number
Date of assessment
Referring physician / source
Address / Contact (parent)
Informant & relationship
Reliability of history

2. CHIEF COMPLAINT

  • Presenting sign (in caregiver's own words): ___________________________
  • Duration since first noticed: ___________________________
  • Who first noticed it? (parent / doctor / photographer / teacher): ___________________________
  • Circumstances of noticing: (dim light / flash photo / routine exam / other): ___________________________

3. HISTORY OF PRESENTING ILLNESS

A. Primary Ocular Symptoms - Detailed Enquiry

For each symptom, document: Present / Absent, Eye affected (R / L / Both), Onset, Duration, Progression
SymptomPresent?Eye (R/L/B)OnsetDurationProgression
Leukocoria (white pupil / "cat's eye" / white flash in photos)
Strabismus (squint / eye turn)
Decreased / poor vision
Red eye (without obvious infection)
Painful eye
Proptosis (bulging eye)
Tearing / watering
Photophobia
Periorbital swelling / redness
Hyphema (blood in front of eye)
Change in pupil size or shape
Key questions to ask:
  • "Have you noticed a white glow or white spot in your child's eye in photographs taken with flash?"
  • "Does the eye look different in dim lighting compared to bright light?"
  • "Has your child been bumping into things or showing difficulty seeing?"

B. Laterality Assessment

  • Affected eye(s): Right / Left / Bilateral
  • If bilateral: Was one eye noticed first? Which and when?
  • Is there any size asymmetry between the two eyes?

C. Onset & Timeline

  • Age at first symptom: ___________________________
  • Duration before seeking medical attention: ___________________________
  • Any prior diagnosis given elsewhere: ___________________________
  • Previous treatments tried (eye drops, glasses, patching): ___________________________

4. ANTENATAL & BIRTH HISTORY

(Helps exclude simulating lesions - Coats disease, PHPV/PFV, ROP, toxocariasis)
ParameterDetails
Gestational age at birth
Mode of delivery
Birth weight
Prematurity? (if yes: gestational age, NICU admission, oxygen therapy duration)
Maternal health during pregnancy
Maternal infections during pregnancy (TORCH: toxoplasmosis, rubella, CMV, herpes)
Drug / toxin / radiation exposure in pregnancy
Neonatal complications
Was leukocoria present at birth or noticed later?
Hearing problems at birth or early infancy (helps DD)
Note: History of prematurity + oxygen therapy raises ROP in the differential. TORCH infections can cause retinal lesions mimicking RB. Leukocoria present from birth suggests congenital cataract or PHPV rather than RB.

5. DEVELOPMENTAL HISTORY

  • Motor, language, social milestones (age appropriate?)
  • Regression of any milestones (especially visual tracking, reaching, facial recognition)?
  • Visual behaviour:
    • Does the child fix and follow objects?
    • Does the child reach for toys or faces?
    • Is there preference for one eye (suggest covering each eye separately)?
    • Any preference for a particular head position?
  • School performance (if school-age)

6. FAMILY HISTORY - CRITICAL SECTION

~40% of retinoblastoma is heritable (germline RB1 mutation). A positive family history points strongly to the diagnosis, as simulating lesions do not occur in this setting. - Kanski's Clinical Ophthalmology & IntechOpen

Cancer & Eye Disease Pedigree

RelationCancer / Eye ConditionAge at DiagnosisEye Removed?Treatment Given
Father
Mother
Sibling 1
Sibling 2
Paternal grandfather
Paternal grandmother
Maternal grandfather
Maternal grandmother
Paternal uncle / aunt
Maternal uncle / aunt
Specific questions to ask:
  • ☐ Any family member with retinoblastoma (diagnosed or suspected)?
  • ☐ Any family member with an enucleated (removed) eye in childhood?
  • ☐ Any family member who was blind in one eye from childhood?
  • ☐ Any family member with osteosarcoma or other bone tumors?
  • ☐ Any family member with soft tissue sarcoma or melanoma?
  • ☐ Any early childhood deaths in the family (unexplained)?
  • Parents had dilated fundus examination? (Some parents with treated RB may have retinoma/retinocytoma on exam and be unaware they were treated as infants)
  • ☐ Consanguinity?
  • ☐ Known RB1 gene mutation in family? Genetic testing done?

7. PAST MEDICAL & SURGICAL HISTORY

ParameterDetails
Prior ocular diagnoses
Prior ocular surgeries / procedures
Previous retinoblastoma treatment (if known case)
History of prior chemotherapy
History of radiotherapy (eye / head)
Chromosomal / genetic conditions (Down syndrome / 13q deletion syndrome)
Other systemic malignancies
Hospitalizations
Blood transfusions
Note: 13q deletion syndrome (partial deletion of chromosome 13q) is associated with retinoblastoma plus dysmorphic features, intellectual disability, and growth delay. Ask specifically about these features.

8. ANIMAL / PET EXPOSURE HISTORY

(Important for excluding Toxocara canis - a common simulator)
  • ☐ Dog or cat in the household?
  • ☐ Any contact with puppies / dogs in parks, farms?
  • ☐ Soil play (sandpits, gardens)?
  • ☐ History of pica (eating soil)?
  • ☐ Serologic testing for Toxocara done? Result?

9. IMMUNIZATION & INFECTION HISTORY

  • Immunization status (up to date?)
  • History of eye infections / uveitis / endophthalmitis
  • History of trauma to the eye (ocular trauma can simulate or coexist)
  • History of TB (retinal granuloma can simulate)

10. DRUG HISTORY & ALLERGIES

FieldDetails
Current eye drops / medications
Systemic medications
Herbal / traditional remedies applied to eye
Drug allergies (with reaction type)

11. SOCIAL HISTORY

ParameterDetails
Household composition
Primary caregiver
Distance from ophthalmology / oncology centre
Financial status / health insurance
Prior healthcare seeking (traditional / religious healers?)
Psychosocial impact on parents (anxiety, depression - note for referral)
Note: The psychological impact on parents of a child with retinoblastoma is high, with many experiencing depression, anxiety and stress (Kanski's Clinical Ophthalmology, 10th ed.). Psychosocial support referral should be considered at first visit.

12. REVIEW OF SYSTEMS

Ocular / Head & Neck

  • ☐ Headache (raised ICP / intracranial extension)
  • ☐ Visual field defects
  • ☐ Diplopia
  • ☐ Nystagmus
  • ☐ Nasal obstruction (orbital extension)
  • ☐ Facial swelling / asymmetry

Neurological (Trilateral retinoblastoma / CNS metastasis)

  • ☐ Seizures
  • ☐ Vomiting (especially morning - raised ICP)
  • ☐ Change in behaviour / personality
  • ☐ Ataxia / unsteady gait
  • ☐ New neurological deficits
  • ☐ Pineal region symptoms (precocious puberty, Parinaud syndrome)
Note: Trilateral retinoblastoma = bilateral RB + pinealoblastoma. Occurs in ~10% of heritable cases, usually before age 5. - Kanski's

Systemic / Metastatic

  • ☐ Bone pain (osteosarcoma as second malignancy; bone metastasis)
  • ☐ Unexplained weight loss
  • ☐ Persistent fever
  • ☐ Lymphadenopathy (regional - preauricular, submandibular, cervical)
  • ☐ Abdominal distension (liver metastasis)
  • ☐ Respiratory symptoms (lung metastasis)

Constitutional

  • ☐ Fever
  • ☐ Weight loss / failure to thrive
  • ☐ Pallor / fatigue
  • ☐ Night sweats

13. DIFFERENTIAL DIAGNOSIS SCREENING HISTORY

The following questions help differentiate RB from its most common simulators:
ConditionKey History Points to Ask
Coats disease (most common simulator)Male child, unilateral, no family history, older age (~5 yrs), yellow fundal reflex
PHPV / PFV (persistent hyperplastic primary vitreous)Leukocoria from birth, microphthalmos, no family history
Retinopathy of PrematurityPrematurity, NICU, oxygen therapy history
ToxocariasisDog / cat contact, soil play, pica
Congenital cataractLeukocoria from birth, family history of cataracts
EndophthalmitisPreceding fever, systemic illness, trauma
ColobomaKeyhole-shaped pupil, may be familial
Retinal detachmentTrauma history, older child, Marfan features

14. CLASSIFICATION SUMMARY (To Complete After Examination)

International Classification of Retinoblastoma (ICRB):
GroupDescriptionEye Affected
ASmall tumors <3 mm, away from foveola and discR / L / B
BTumors >3 mm, macular/juxtapapillary location, or subretinal fluid
CFocal subretinal or vitreous seeding within 3 mm of tumor
DDiffuse subretinal or vitreous seeding >3 mm from tumor
EExtensive RB >50% of globe, glaucoma, hemorrhage, or extraocular extension
  • Laterality: Unilateral / Bilateral
  • Hereditary / Sporadic: (Bilateral = almost always heritable)
  • Genetic testing planned / done: ___________________________

15. CLINICIAN SIGN-OFF

Field
History taken by
Designation
Date & Time
Supervisor cosignature

Quick Reference Summary Card

FeatureStatistic
Most common presentationLeukocoria (60-80%)
2nd most commonStrabismus (20-30%)
Age of diagnosis - bilateral~9-12 months
Age of diagnosis - unilateral~24-30 months
Heritable cases~40% (germline RB1 mutation)
Bilateral cases~40%
Risk of second malignancy (heritable)~6% (30% if external beam RT used)
Trilateral RB (+ pinealoblastoma)~10% of heritable cases
Survival (developed nations)>95%

Sources: Kanski's Clinical Ophthalmology 10th ed. | Textbook of Family Medicine 9th ed. (Harriet Lane) | IntechOpen: Retinoblastoma Presentation, Evaluation & Diagnosis | StatPearls (NCBI) | Medscape Emedicine
This is a shared conversation. Sign in to Orris to start your own chat.