Explain me this in detail as I know nothing and Iām a medical student
Add some images to it
cd /home/daytona/workspace/attachments/1f04f022-df2a-4ccb-b02c-6b04d9b8c789 && python -m markitdown "Childhood Infectious Disease(1).ppt" 2>&1 | head -300
cd /home/daytona/workspace/attachments/1f04f022-df2a-4ccb-b02c-6b04d9b8c789 && python3 -c " import zipfile, os, re # .ppt is old format, try python-pptx or libreoffice conversion # First convert to pptx " && ls /home/daytona/workspace/attachments/1f04f022-df2a-4ccb-b02c-6b04d9b8c789/
mkdir -p /home/daytona/workspace/childhood-infectious && libreoffice --headless --convert-to pptx "/home/daytona/workspace/attachments/1f04f022-df2a-4ccb-b02c-6b04d9b8c789/Childhood Infectious Disease(1).ppt" --outdir /home/daytona/workspace/childhood-infectious/ 2>&1
Continue
cp "/home/daytona/workspace/attachments/1f04f022-df2a-4ccb-b02c-6b04d9b8c789/Childhood Infectious Disease(1).ppt" /home/daytona/workspace/childhood-infectious/input.ppt && libreoffice --headless --convert-to pptx /home/daytona/workspace/childhood-infectious/input.ppt --outdir /home/daytona/workspace/childhood-infectious/ 2>&1
mkdir -p /home/daytona/workspace/childhood-infectious && cp "/home/daytona/workspace/attachments/1f04f022-df2a-4ccb-b02c-6b04d9b8c789/Childhood Infectious Disease(1).ppt" /home/daytona/workspace/childhood-infectious/input.ppt && echo "Copied OK"
libreoffice --headless --convert-to pptx /home/daytona/workspace/childhood-infectious/input.ppt --outdir /home/daytona/workspace/childhood-infectious/ 2>&1
# Try python-pptx to read the old .ppt format, or use python-ppt python3 -c " import subprocess result = subprocess.run(['libreoffice', '--headless', '--convert-to', 'txt', '/home/daytona/workspace/childhood-infectious/input.ppt', '--outdir', '/home/daytona/workspace/childhood-infectious/'], capture_output=True, text=True) print(result.stdout) print(result.stderr) "
# Try extracting text from old .ppt binary format using python python3 -c " import re with open('/home/daytona/workspace/childhood-infectious/input.ppt', 'rb') as f: data = f.read() # Extract readable text strings from binary PPT text = data.decode('latin-1', errors='ignore') # Find sequences of printable ASCII chars strings = re.findall(r'[ -~]{4,}', text) for s in strings: s = s.strip() if len(s) > 5 and not s.startswith('http'): print(s) " 2>&1 | head -200
# Try using python-pptx after converting via unoconv or use olefile for old PPT python3 -c "import olefile; print('olefile ok')" 2>&1 python3 -c "import pptx; print('pptx ok')" 2>&1 python3 -c "import unoconv; print('unoconv ok')" 2>&1
pip install python-pptx olefile --quiet --user 2>&1 | tail -5
# Use olefile to read old PPT binary format and extract text python3 -c " import olefile import struct import re ole = olefile.OleFileIO('/home/daytona/workspace/childhood-infectious/input.ppt') print('Streams:', ole.listdir()) " 2>&1 | head -50
python3 << 'EOF' import olefile import struct import re ole = olefile.OleFileIO('/home/daytona/workspace/childhood-infectious/input.ppt') data = ole.openstream('PowerPoint Document').read() # PPT binary format: records have header (recVer+recType 4 bytes, recLen 4 bytes) # TextBytesAtom (type 0x0FA8) and TextCharsAtom (type 0x0FA0) contain slide text i = 0 texts = [] while i < len(data) - 8: rec_type = struct.unpack_from('<H', data, i+2)[0] rec_len = struct.unpack_from('<I', data, i+4)[0] if rec_type == 0x0FA0: # TextCharsAtom - UTF-16LE raw = data[i+8:i+8+rec_len] try: t = raw.decode('utf-16-le', errors='ignore').strip() if t: texts.append(t) except: pass elif rec_type == 0x0FA8: # TextBytesAtom - latin-1 raw = data[i+8:i+8+rec_len] try: t = raw.decode('latin-1', errors='ignore').strip() if t: texts.append(t) except: pass i += 8 + rec_len for t in texts: print('---') print(t) EOF
python3 << 'EOF' import olefile import struct ole = olefile.OleFileIO('/home/daytona/workspace/childhood-infectious/input.ppt') data = ole.openstream('PowerPoint Document').read() print(f"Total bytes: {len(data)}") # Scan all record types to understand structure i = 0 record_types = {} while i < len(data) - 8: rec_ver = struct.unpack_from('<H', data, i)[0] rec_type = struct.unpack_from('<H', data, i+2)[0] rec_len = struct.unpack_from('<I', data, i+4)[0] if rec_len > len(data) - i - 8 or rec_len > 10000000: i += 1 continue record_types[rec_type] = record_types.get(rec_type, 0) + 1 i += 8 + rec_len # Print common record types for k,v in sorted(record_types.items()): print(f"Type 0x{k:04X} ({k}): {v} occurrences") EOF
python3 << 'EOF' import olefile, struct, re ole = olefile.OleFileIO('/home/daytona/workspace/childhood-infectious/input.ppt') data = ole.openstream('PowerPoint Document').read() # The record scanning didn't find text records ā the file may use container records # Let's try a raw unicode string extraction instead # Extract UTF-16LE strings (2-byte chars, printable ASCII range) texts = [] i = 0 while i < len(data) - 4: # Look for sequences of UTF-16LE printable chars (ASCII printable = 0x20-0x7E) if 0x20 <= data[i] <= 0x7E and data[i+1] == 0x00: j = i chars = [] while j < len(data) - 1 and 0x20 <= data[j] <= 0x7E and data[j+1] == 0x00: chars.append(chr(data[j])) j += 2 if len(chars) >= 4: texts.append(''.join(chars)) i = j else: i += 1 # Deduplicate while preserving order seen = set() unique = [] for t in texts: t = t.strip() if t and t not in seen: seen.add(t) unique.append(t) for t in unique: print(t) EOF
meningococcal infection purpura rash skin meningococcemia
scarlet fever strawberry tongue rash streptococcal
measles maculopapular rash Koplik spots child
diphtheria pseudomembrane throat fibrinous bull neck
~/childhood-infectious/build.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
// āāā fetch images as base64 āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
const imageUrls = [
// Meningococcal: petechiae trunk (child), purpura fulminans ICU
"https://cdn.orris.care/cdss_images/DermNetNZ_1760029720572_dc77e85f-cd9b-443c-a945-69d621c6f7d7.jpg",
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_96c5c285789dca27a235f24ed7e8fd5bf54f4a9843bf8ae3876ff648e1ff9bf6.jpg",
// Scarlet fever: rash trunk, strawberry tongue
"https://cdn.orris.care/cdss_images/DermNetNZ_1760029690031_37e777d8-b1a1-4be5-a63c-93fb5fcb5bdf.jpg",
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_1b77da1ec31033e4f6f25430cf7d56b56263ec84f1dae3baf062fcc4ae987354.jpg",
// Measles: Koplik spots, maculopapular rash
"https://cdn.orris.care/cdss_images/DermNetNZ_1760036150745_997530dc-9823-4692-9634-3e09b8743fff.jpg",
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_7d2ba4631cdeaad29d8853c75916e5993e0ed3835127258c3352058b7bb1fee5.jpg",
// Diphtheria: bull-neck + pseudomembrane, cutaneous ulcers
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_06871573d8a84a21246a1b99c7e715d3c59c2bc216216b29596dc05be843692f.jpg",
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_55910483e7e64652a4f210202447f25ee316eed4ade0465c1e2c5c532ea0e95a.jpg",
];
console.log("Downloading images...");
const imgs = JSON.parse(
execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${imageUrls.map(u => `"${u}"`).join(" ")}`
).toString()
);
console.log("Images downloaded:", imgs.map(i => i.error || "OK"));
// āāā helpers āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
const DARK_BG = "0D1B2A"; // deep navy
const MID_BG = "1B2A3B"; // slide backgrounds
const ACCENT = "E8A020"; // golden-amber
const WHITE = "FFFFFF";
const LIGHT = "D0E4F5";
const SUBTEXT = "B0C4D8";
const RED_ACC = "D94F3D";
const GREEN_ACC= "4CAF83";
function titleSlide(pres, title, subtitle, bgColor) {
const s = pres.addSlide();
s.background = { color: bgColor || DARK_BG };
// top accent bar
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: 0.08, fill: { color: ACCENT } });
s.addText(title, {
x: 0.5, y: 1.6, w: 9, h: 1.4,
fontSize: 40, bold: true, color: WHITE, align: "center",
fontFace: "Calibri", shadow: { type: "outer", blur: 8, offset: 3, color: "000000", opacity: 0.5 }
});
if (subtitle) {
s.addText(subtitle, {
x: 0.5, y: 3.1, w: 9, h: 0.9,
fontSize: 18, color: ACCENT, align: "center", fontFace: "Calibri"
});
}
s.addShape(pres.ShapeType.rect, { x: 3.5, y: 4.0, w: 3, h: 0.06, fill: { color: ACCENT } });
return s;
}
function sectionDivider(pres, title, subtitle, color) {
const s = pres.addSlide();
s.background = { color: color || MID_BG };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: color || MID_BG } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 2.3, w: 0.12, h: 1.2, fill: { color: ACCENT } });
s.addText(title, {
x: 0.3, y: 2.1, w: 9.4, h: 1.0,
fontSize: 36, bold: true, color: WHITE, fontFace: "Calibri"
});
if (subtitle) {
s.addText(subtitle, {
x: 0.3, y: 3.2, w: 9.4, h: 0.7,
fontSize: 16, color: SUBTEXT, fontFace: "Calibri"
});
}
return s;
}
function bulletSlide(pres, title, bullets, note) {
const s = pres.addSlide();
s.background = { color: MID_BG };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: 0.55, fill: { color: DARK_BG } });
s.addText(title, {
x: 0.3, y: 0.07, w: 9.4, h: 0.45,
fontSize: 20, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
const items = bullets.map((b, i) => ({
text: b,
options: { bullet: { code: "2022" }, color: i === 0 ? WHITE : LIGHT, fontSize: 14.5, fontFace: "Calibri", breakLine: i < bullets.length - 1, paraSpaceBefore: 4 }
}));
s.addText(items, { x: 0.3, y: 0.65, w: 9.4, h: 4.7 });
if (note) {
s.addShape(pres.ShapeType.rect, { x: 0, y: 5.25, w: "100%", h: 0.375, fill: { color: "0A1520" } });
s.addText("š " + note, { x: 0.3, y: 5.27, w: 9.4, h: 0.33, fontSize: 11, color: ACCENT, fontFace: "Calibri", margin: 0 });
}
return s;
}
function twoColSlide(pres, title, leftTitle, leftBullets, rightTitle, rightBullets) {
const s = pres.addSlide();
s.background = { color: MID_BG };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: 0.55, fill: { color: DARK_BG } });
s.addText(title, { x: 0.3, y: 0.07, w: 9.4, h: 0.45, fontSize: 20, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0 });
// divider
s.addShape(pres.ShapeType.rect, { x: 4.85, y: 0.65, w: 0.03, h: 4.7, fill: { color: ACCENT } });
// left col
s.addText(leftTitle, { x: 0.3, y: 0.65, w: 4.4, h: 0.4, fontSize: 15, bold: true, color: ACCENT, fontFace: "Calibri" });
const li = leftBullets.map((b, i) => ({ text: b, options: { bullet: { code: "2022" }, color: LIGHT, fontSize: 13.5, fontFace: "Calibri", breakLine: i < leftBullets.length - 1, paraSpaceBefore: 4 } }));
s.addText(li, { x: 0.3, y: 1.1, w: 4.4, h: 4.2 });
// right col
s.addText(rightTitle, { x: 5.0, y: 0.65, w: 4.7, h: 0.4, fontSize: 15, bold: true, color: ACCENT, fontFace: "Calibri" });
const ri = rightBullets.map((b, i) => ({ text: b, options: { bullet: { code: "2022" }, color: LIGHT, fontSize: 13.5, fontFace: "Calibri", breakLine: i < rightBullets.length - 1, paraSpaceBefore: 4 } }));
s.addText(ri, { x: 5.0, y: 1.1, w: 4.7, h: 4.2 });
return s;
}
function imageSlide(pres, title, img1, cap1, img2, cap2, note) {
const s = pres.addSlide();
s.background = { color: DARK_BG };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: 0.55, fill: { color: MID_BG } });
s.addText(title, { x: 0.3, y: 0.07, w: 9.4, h: 0.45, fontSize: 20, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0 });
if (img1 && !img1.error) {
s.addImage({ data: img1.base64, x: 0.4, y: 0.7, w: 4.3, h: 3.6 });
if (cap1) s.addText(cap1, { x: 0.4, y: 4.35, w: 4.3, h: 0.6, fontSize: 11, color: SUBTEXT, fontFace: "Calibri", align: "center", italic: true });
}
if (img2 && !img2.error) {
s.addImage({ data: img2.base64, x: 5.3, y: 0.7, w: 4.3, h: 3.6 });
if (cap2) s.addText(cap2, { x: 5.3, y: 4.35, w: 4.3, h: 0.6, fontSize: 11, color: SUBTEXT, fontFace: "Calibri", align: "center", italic: true });
}
if (note) {
s.addShape(pres.ShapeType.rect, { x: 0, y: 5.15, w: "100%", h: 0.475, fill: { color: "0A1520" } });
s.addText("š " + note, { x: 0.3, y: 5.18, w: 9.4, h: 0.42, fontSize: 11.5, color: ACCENT, fontFace: "Calibri", margin: 0 });
}
return s;
}
function pathologySlide(pres, title, stages) {
const s = pres.addSlide();
s.background = { color: MID_BG };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: 0.55, fill: { color: DARK_BG } });
s.addText(title, { x: 0.3, y: 0.07, w: 9.4, h: 0.45, fontSize: 20, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0 });
stages.forEach((st, i) => {
const col = i % 2 === 0 ? "15283A" : "1D3348";
const x = (i % 2) * 4.85 + 0.15;
const y = Math.floor(i / 2) * 2.35 + 0.7;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.6, h: 2.15, fill: { color: col }, line: { color: ACCENT, width: 1 }, rectRadius: 0.1 });
s.addText(st.day, { x: x + 0.15, y: y + 0.08, w: 4.3, h: 0.35, fontSize: 12, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0 });
s.addText(st.text, { x: x + 0.15, y: y + 0.45, w: 4.3, h: 1.6, fontSize: 12.5, color: LIGHT, fontFace: "Calibri", margin: 0 });
});
return s;
}
function summaryTable(pres) {
const s = pres.addSlide();
s.background = { color: DARK_BG };
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: 0.55, fill: { color: MID_BG } });
s.addText("Quick Comparison: All 4 Diseases at a Glance", { x: 0.3, y: 0.07, w: 9.4, h: 0.45, fontSize: 20, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0 });
const rows = [
[{ text: "Feature", options: { bold: true, color: ACCENT, fill: { color: "0D1B2A" } } },
{ text: "Meningococcal",options: { bold: true, color: "EE9944", fill: { color: "1A2B3C" } } },
{ text: "Scarlet Fever",options: { bold: true, color: "44CC88", fill: { color: "1A2B3C" } } },
{ text: "Measles", options: { bold: true, color: "55AAFF", fill: { color: "1A2B3C" } } },
{ text: "Diphtheria", options: { bold: true, color: "FF6655", fill: { color: "1A2B3C" } } }],
[{ text: "Pathogen" }, { text: "N. meningitidis (gram-neg diplococcus)" }, { text: "Group A β-Hemolytic Streptococcus" }, { text: "RNA Paramyxovirus (Morbillivirus)" }, { text: "Corynebacterium diphtheriae (gram+ bacillus)" }],
[{ text: "Route" }, { text: "Airborne droplets" }, { text: "Airborne / contact" }, { text: "Airborne" }, { text: "Airborne / contact" }],
[{ text: "Key Sign" }, { text: "Petechial / purpuric rash (non-blanching)" }, { text: "Sandpaper rash + strawberry tongue" }, { text: "Koplik spots ā maculopapular rash" }, { text: "Grey pseudomembrane + bull-neck" }],
[{ text: "Danger" }, { text: "Waterhouse-Friderichsen, DIC, septic shock" }, { text: "Glomerulonephritis, rheumatic fever" }, { text: "Croup, pneumonia, encephalitis" }, { text: "Myocarditis, airway obstruction, neuritis" }],
[{ text: "Prevention" }, { text: "Meningococcal vaccine (MenACWY)" }, { text: "Penicillin (GAS eradication)" }, { text: "MMR vaccine" }, { text: "DTP vaccine" }],
];
s.addTable(rows, {
x: 0.15, y: 0.65, w: 9.7, h: 4.7,
colW: [1.4, 2.1, 1.9, 2.0, 2.3],
border: { type: "solid", color: "1E3A52", pt: 0.5 },
fontFace: "Calibri",
fontSize: 11.5,
color: LIGHT,
fill: { color: MID_BG },
align: "left",
valign: "middle",
});
return s;
}
// āāā BUILD PRESENTATION āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Childhood Infectious Diseases ā A Student Guide";
const [imgMeningRash, imgMeningICU, imgScarlRash, imgScarlTongue, imgKoplik, imgMeaslesRash, imgDiphBullneck, imgDiphMembrane] = imgs;
// āā COVER āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
titleSlide(pres,
"Childhood Infectious Diseases",
"Meningococcal ⢠Scarlet Fever ⢠Measles ⢠Diphtheria\n\nA Beginner-Friendly Medical Student Guide",
DARK_BG
);
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
// SECTION 1 ā MENINGOCOCCAL INFECTION
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
sectionDivider(pres,
"PART 1 ā MENINGOCOCCAL INFECTION",
"Neisseria meningitidis | Gram-negative diplococcus | Airborne",
"112233"
);
bulletSlide(pres, "What Is Meningococcal Infection? ā Overview", [
"Caused by Neisseria meningitidis ā a gram-negative diplococcus (two beans stuck together)",
"Spread by airborne droplets from sick patients or healthy CARRIERS (people who harbour the bug without symptoms)",
"Three classic clinical forms:",
" 1ļøā£ Naso-pharyngitis ā mild, like a common cold; most cases",
" 2ļøā£ Purulent meningitis ā infection of the meninges (brain lining) ā severe headache, stiff neck",
" 3ļøā£ Meningococcaemia ā bacteria enter the bloodstream ā septicaemia, haemorrhagic rash",
"Epidemic potential: clusters can occur in schools, military barracks, dormitories",
"5 morphological forms: meningitis, naso-pharyngitis, pneumonia, meningo-encephalitis, meningococcaemia",
], "Key fact: The CARRIER STATE is the most common source of spread ā not sick patients!");
twoColSlide(pres,
"Pathology Timeline of Meningococcal Meningitis",
"š§ Meningeal Changes",
[
"Day 1-2: Circulatory disturbances + serous exudate (watery fluid around brain)",
"Day 3: Pus (purulent exudate) begins forming",
"End of Week 1: Full purulent inflammation + fibrin",
"Week 3: Exudate resorbs (clears) OR organises (scars)",
"1.5 months+: HYDROCEPHALUS if CSF drainage holes get blocked by scar tissue",
],
"š” Why Hydrocephalus?",
[
"The exudate (pus+fibrin) organises around the ventricular foramina",
"CSF cannot drain ā lateral ventricles dilate markedly",
"Brain tissue is compressed ā atrophy (thinning)",
"Neurons die ā diffuse gliosis (scarring of brain)",
"Clinically: DEMENTIA in survivors",
"Microscopically: neuron atrophy + gliosis",
]
);
bulletSlide(pres, "Meningococcaemia ā Septicaemia Form (Most Dangerous)", [
"Bacteria invade the BLOODSTREAM ā systemic sepsis",
"KEY PATHOLOGICAL CHANGES:",
" ⢠Severe circulatory collapse",
" ⢠Haemorrhagic syndrome: petechiae on skin, adrenal gland haemorrhage",
" ⢠Generalised vasculitis (inflammation of blood vessels everywhere)",
" ⢠Purulent arthritis and iridocyclitis (eye inflammation)",
" ⢠Acute tubular necrosis (kidney failure)",
" ⢠Bilateral adrenal haemorrhage ā acute adrenal insufficiency",
"WATERHOUSE-FRIDERICHSEN SYNDROME: massive bilateral adrenal necrosis + haemorrhage",
" ā sudden collapse in adrenal hormones ā catastrophic shock",
"Course: can be FATAL within 24-48 hours ā one of the fastest-killing infections known",
], "Waterhouse-Friderichsen = bilateral adrenal haemorrhage ā acute adrenal insufficiency ā shock");
imageSlide(pres,
"Clinical Images: The Classic Rash of Meningococcaemia",
imgMeningRash,
"Non-blanching petechiae on the trunk of a child ā a RED FLAG requiring immediate assessment",
imgMeningICU,
"Confluent purpura fulminans in a critically-ill patient ā advanced meningococcaemia with DIC",
"REMEMBER: A non-blanching rash in a febrile child = EMERGENCY. Press a glass to it ā if it doesn't fade, call for help NOW!"
);
bulletSlide(pres, "Meningococcal Infection ā Microscopy & Causes of Death", [
"CSF (lumbar puncture) findings in meningococcal meningitis:",
" ⢠High neutrophil count ā the body's first responders",
" ⢠Gram-negative diplococci seen inside and outside neutrophils",
" ⢠Turbid (cloudy) CSF ā normal CSF is crystal clear",
"Brain histology: neutrophilic exudate in meninges, dilated vessels, cortical oedema",
"Meningococci found inside CNS blood vessels, attached to endothelium",
"CAUSES OF DEATH:",
" 1. Bacterial (septic) shock in meningococcaemia",
" 2. Acute renal failure",
" 3. Purulent meningitis / meningo-encephalitis",
" 4. Septicopiemia (infection seeded to multiple organs)",
" 5. Cerebral cachexia (late ā due to hydrocephalus)",
], "Lumbar puncture: appearance of CSF ā cloudy = infection, clear = normal");
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
// SECTION 2 ā SCARLET FEVER
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
sectionDivider(pres,
"PART 2 ā SCARLET FEVER",
"Streptococcus pyogenes (Group A β-haemolytic Streptococcus) | Streptococcal toxin-mediated disease",
"1A2510"
);
bulletSlide(pres, "Scarlet Fever ā Overview & Pathogenesis", [
"Definition: Acute infectious disease with local throat inflammation + characteristic rash",
"Cause: Group A β-haemolytic Streptococcus (GAS) ā produces ERYTHROGENIC TOXIN ā rash",
"Source: Sick person OR carrier (remember: carrier = no symptoms but still spreads bacteria!)",
"Routes: Airborne droplets (most common) ā Contact ā Food (rare)",
"Primary fixation sites:",
" ⢠Tonsils (most common) ā 'buccal scarlet fever'",
" ⢠Skin, lungs, other sites ā 'extrabuccal scarlet fever'",
"TWO PERIODS of disease:",
" Period 1 (Weeks 1-2): TOXIC changes ā toxin causes direct tissue damage",
" Period 2 (Weeks 3+): ALLERGIC changes ā immune reaction to streptococcal antigens",
], "The rash is caused by the TOXIN, not the bacteria directly. It appears on day 2, sparing the nasolabial triangle.");
twoColSlide(pres,
"Scarlet Fever ā Primary Complex & General Changes",
"š“ Primary Scarlet Affect (Throat)",
[
"Inflammatory changes at PRIMARY FIXATION site",
"Palatine TONSILS most affected",
"Two types of tonsillitis:",
" ⢠Catarrhal tonsillitis ā redness, swelling",
" ⢠Necrotic tonsillitis ā tissue death (more severe)",
"Regional lymphadenitis ā swollen neck nodes",
"Primary complex = tonsillitis + regional lymphadenitis",
],
"š”ļø General (Systemic) Changes",
[
"Small-point RASH (day 2): everywhere except nasolabial triangle (circumoral pallor)",
"Strawberry tongue: white coat ā red strawberry appearance",
"Liver, kidney, myocardium: dystrophic changes (toxin damage)",
"Circulatory disorders in brain + other organs",
"Rash has sandpaper texture ā classic feel",
"Pastia's lines: accentuation of rash in skin folds (axillae, groin)",
]
);
bulletSlide(pres, "Scarlet Fever ā Complications of Period 1 & 2", [
"PERIOD 1 COMPLICATIONS (Toxic + Purulent-Necrotic):",
" ⢠Pharyngeal abscess (pus pocket behind throat)",
" ⢠Otitis / mastoiditis ā possible temporal bone osteomyelitis",
" ⢠Purulent-necrotic lymphadenitis (pus in neck nodes)",
" ⢠Neck phlegmon (spreading soft tissue infection ā dangerous!)",
" ⢠Brain abscess + purulent meningitis",
" ⢠Septicopiemia (bacteria seed bloodstream)",
"PERIOD 2 COMPLICATIONS (Allergic ā immune-mediated):",
" ⢠Glomerulonephritis ā immune complexes damage kidney glomeruli",
" ⢠Warty / verrucous endocarditis ā valve damage",
" ⢠Serous arthritis ā joint inflammation",
" ⢠Vasculitis ā blood vessel inflammation",
" ⢠These begin 2-3 WEEKS after initial illness",
], "Period 2 complications arise because antibodies made against Streptococcus cross-react with your own tissues (molecular mimicry)");
imageSlide(pres,
"Clinical Images: Scarlet Fever",
imgScarlRash,
"Sandpaper-like erythematous rash covering the trunk ā blanching, rough texture",
imgScarlTongue,
"White strawberry tongue: white coating with prominent red papillae ā classic scarlet fever sign",
"KEY: The rash spares the nasolabial triangle (around nose/mouth) = circumoral pallor. The tongue goes from white ā red strawberry as coating peels off."
);
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
// SECTION 3 ā MEASLES
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
sectionDivider(pres,
"PART 3 ā MEASLES (RUBEOLA)",
"RNA Paramyxovirus | Genus Morbillivirus | Most contagious infection known",
"0D1E35"
);
bulletSlide(pres, "Measles ā Overview & Pathogenesis", [
"Definition: Highly contagious viral disease ā catarrhal inflammation of airways + papular rash",
"Virus: RNA Paramyxovirus, genus Morbillivirus ā has HEMAGGLUTININ surface antigen (one type only)",
"Source: ONLY sick humans (no animal reservoir) | Spread: Airborne",
"Incubation: ~14 days (range 6-19 days) | Contagious: 4 days before rash ā 5 days after",
"PATHOGENESIS STEPS (learn this sequence!):",
" 1. Virus enters upper respiratory tract + conjunctiva ā local replication",
" 2. Short-term viremia (virus in blood)",
" 3. Virus seeds LYMPHOID tissue (tonsils, lymph nodes, Peyer's patches)",
" 4. Pronounced second viremia",
" 5. Rash appears (immune-mediated + direct viral effect)",
"KEY: Measles suppresses immunity ā 'anergy' ā patient vulnerable to secondary infections",
], "Measles has the HIGHEST reproductive number (R0 = 12-18) of any infectious disease ā one case infects up to 18 unvaccinated contacts");
twoColSlide(pres,
"Measles ā Clinical Features & Local Changes",
"š¤ PRODROME (Days 1-4) ā 3 Cs",
[
"Cough, Coryza (runny nose), Conjunctivitis",
"Fever up to 40°C",
"KOPLIK'S SPOTS (enanthem) ā pathognomonic!",
" ⢠Bluish-white spots on buccal mucosa",
" ⢠Appear 1-2 days BEFORE the rash",
" ⢠Look like 'grains of salt on red background'",
" ⢠Located opposite lower molars",
"Bilshovsky-Filatov-Koplik spots on cheek mucosa",
],
"š“ EXANTHEM (Rash, Days 4-10)",
[
"Maculopapular rash ā red, slightly raised spots",
"Begins behind the ears ā face ā descends cephalocaudally (head to toe)",
"Lasts up to 8 days, then desquamates",
"General changes:",
" ⢠Hyperplasia of ALL lymphoid tissue",
" ⢠Interstitial (giant cell) pneumonia",
" ⢠Warthin-Finkeldey cells ā giant cells in lymphoid tissue (pathognomonic of measles!)",
" ⢠Measles encephalitis (rare, serious)",
"False croup: reflex laryngeal spasm from mucosal oedema",
]
);
bulletSlide(pres, "Measles ā Immunosuppression & Complications", [
"Measles virus causes PROFOUND ANERGY (immune suppression):",
" ⢠Reduces epithelial barrier function",
" ⢠Reduces phagocyte activity (macrophages become less effective)",
" ⢠Drops levels of anti-infective antibodies",
" ā Patient becomes vulnerable to secondary bacterial infections for weeks to months",
"COMPLICATIONS (mostly from secondary infection):",
" ⢠Severe bronchitis / pneumonia (most common cause of death)",
" ⢠Necrotic bronchitis ā purulent-necrotic bronchitis (secondary bacterial)",
" ⢠Asphyxia from false croup (laryngeal spasm)",
" ⢠Reactivation of latent TB ā measles can unmask dormant tuberculosis",
" ⢠Subacute sclerosing panencephalitis (SSPE) ā rare but fatal, years later",
"CAUSES OF DEATH: Pneumonia (most common) + Asphyxia from croup",
"Prevention: MMR (Measles-Mumps-Rubella) vaccine ā 2 doses give >97% protection",
], "SSPE = slow, fatal encephalitis occurring 7-10 years after measles ā due to persistent virus in brain neurons");
imageSlide(pres,
"Clinical Images: Measles",
imgKoplik,
"Koplik's spots ā tiny bluish-white macules on red buccal mucosa (pathognomonic, appear BEFORE the rash)",
imgMeaslesRash,
"Classic maculopapular rash + Koplik spots ā cephalocaudal spread; note discrete red-brown lesions",
"Koplik spots are 100% specific for measles. If you see them, no other diagnosis is needed. They disappear as the rash appears."
);
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
// SECTION 4 ā DIPHTHERIA
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
sectionDivider(pres,
"PART 4 ā DIPHTHERIA",
"Corynebacterium diphtheriae | Gram-positive bacillus | Exotoxin-mediated disease",
"1E0A0A"
);
bulletSlide(pres, "Diphtheria ā Overview & Mechanism", [
"Definition: Acute infection with fibrinous inflammation at primary site + severe systemic intoxication",
"Cause: Corynebacterium diphtheriae ā Greek 'koryne' (club) + 'bacterion' (little rod) ā club-shaped gram+ bacillus",
"Critical: Toxin production ONLY occurs when C. diphtheriae is infected by a PHAGE carrying the tox gene",
"Source: Carrier (MORE common) + sick person | Route: Airborne, contact",
"Incubation: 2-5 days (up to 10)",
"EXOTOXIN MECHANISM (2 steps):",
" Step 1: Bacteria multiply at fixation site ā local necrosis + fibrinous inflammation",
" Step 2: Exotoxin absorbed into bloodstream ā severe systemic intoxication",
"ORGANS TARGETED by exotoxin:",
" ⢠Heart (cardiovascular system) ā myocarditis",
" ⢠Peripheral nerves ā parenchymal neuritis, paralysis",
" ⢠Kidneys ā tubular necrosis",
" ⢠Adrenal glands ā necrotic + dystrophic changes",
], "The MEMBRANE (pseudomembrane) stays at the local site. The TOXIN travels through blood to kill heart and nerves remotely.");
twoColSlide(pres,
"Diphtheria ā Local Forms & Types of Inflammation",
"š Clinical-Morphological Forms",
[
"THROAT/TONSILS (70-90%): most common",
" ⢠Localised / Common / Toxic forms",
"RESPIRATORY TRACT (diphtheria croup):",
" ⢠Larynx only (localised)",
" ⢠Larynx + trachea",
" ⢠DESCENDING CROUP = larynx + trachea + bronchi (most dangerous ā can obstruct all airways)",
"NOSE + rare sites: lower intoxication but prolonged membrane",
"CUTANEOUS diphtheria: 'punched-out' ulcers on legs with grey membrane",
],
"š¬ Type of Inflammation",
[
"THROAT/TONSILS ā DIPHTHERITIC (fibrinous) inflammation:",
" ⢠Membrane FIRMLY adherent to mucosa",
" ⢠Removing membrane causes bleeding",
" ⢠Deep necrosis ā toxin effect",
" ⢠High toxin absorption ā severe intoxication",
"LARYNX/TRACHEA ā CROUPOUS (fibrinous) inflammation:",
" ⢠Membrane loosely attached",
" ⢠Can detach ā ASPHYXIA risk",
" ⢠Less intoxication but mechanical obstruction",
"DESCENDING CROUP: worst ā membrane in all airways",
]
);
bulletSlide(pres, "Diphtheria ā Systemic (Toxic) Complications", [
"TOXIC MYOCARDITIS (2 types):",
" ⢠Alterative myocarditis ā cardiomyocyte necrosis + fatty degeneration (myolysis)",
" ⢠Interstitial myocarditis ā lymphohistiocytic infiltration + oedema",
" ā EARLY HEART PARALYSIS: 2nd-3rd week of illness (most common cause of early death)",
"PARENCHYMAL NEURITIS (peripheral nerve demyelination by toxin):",
" ā LATE HEART PARALYSIS: 2-2.5 months after illness (long nerve damage timeline)",
" ā Palate palsy (nasal voice, regurgitation) ā earliest nerve sign",
" ā Diplopia, limb paralysis, diaphragmatic paralysis",
"ADRENAL CHANGES: necrosis + dystrophy ā adrenal insufficiency",
"CAUSES OF DEATH (in order):",
" 1. Early cardiac paralysis (myocarditis ā Weeks 2-3)",
" 2. Late cardiac paralysis (neuritis ā Month 2-2.5)",
" 3. Asphyxia (true or false croup)",
" 4. Pneumonia + other complications",
], "REMEMBER: Diphtheria toxin inhibits PROTEIN SYNTHESIS (elongation factor EF-2) in heart cells and nerve sheaths ā cell death");
imageSlide(pres,
"Clinical Images: Diphtheria",
imgDiphBullneck,
"Left: grey pseudomembrane in oropharynx. Right: 'bull-neck' ā massive cervical lymphadenopathy + oedema",
imgDiphMembrane,
"Close-up: thick adherent grey-white pseudomembrane covering tonsils and pharyngeal wall",
"BULL-NECK = soft tissue swelling of neck from toxic oedema + lymphadenopathy. It is PATHOGNOMONIC of severe/toxic diphtheria."
);
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
// COMPARISON TABLE
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
summaryTable(pres);
// āā FINAL SLIDE āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
const end = pres.addSlide();
end.background = { color: DARK_BG };
end.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: 0.08, fill: { color: ACCENT } });
end.addShape(pres.ShapeType.rect, { x: 0, y: 5.545, w: "100%", h: 0.08, fill: { color: ACCENT } });
end.addText("Key Mnemonics to Remember", {
x: 0.5, y: 0.3, w: 9, h: 0.6, fontSize: 22, bold: true, color: ACCENT, align: "center", fontFace: "Calibri"
});
const mnemonics = [
{ text: "MENINGOCOCCAL", options: { bold: true, color: ACCENT, fontSize: 13, fontFace: "Calibri", breakLine: true } },
{ text: "Non-blanching petechiae + fever = EMERGENCY. Waterhouse-Friderichsen = bilateral adrenal bleed.", options: { color: LIGHT, fontSize: 13, fontFace: "Calibri", breakLine: true, paraSpaceBefore: 0 } },
{ text: "\nSCARLET FEVER", options: { bold: true, color: "44CC88", fontSize: 13, fontFace: "Calibri", breakLine: true } },
{ text: "SANDPAPER rash + STRAWBERRY tongue + STREP. Period 2 complications = immune/allergic (3 weeks later).", options: { color: LIGHT, fontSize: 13, fontFace: "Calibri", breakLine: true, paraSpaceBefore: 0 } },
{ text: "\nMEASLES", options: { bold: true, color: "55AAFF", fontSize: 13, fontFace: "Calibri", breakLine: true } },
{ text: "3 Cs (Cough, Coryza, Conjunctivitis) + KOPLIK SPOTS (before rash) + head-to-toe rash. MMR prevents it.", options: { color: LIGHT, fontSize: 13, fontFace: "Calibri", breakLine: true, paraSpaceBefore: 0 } },
{ text: "\nDIPHTHERIA", options: { bold: true, color: "FF6655", fontSize: 13, fontFace: "Calibri", breakLine: true } },
{ text: "PSEUDOMEMBRANE + BULL-NECK. Toxin kills HEART (week 2-3) and NERVES (month 2-2.5). DTP vaccine prevents it.", options: { color: LIGHT, fontSize: 13, fontFace: "Calibri", breakLine: false, paraSpaceBefore: 0 } },
];
end.addText(mnemonics, { x: 0.5, y: 0.95, w: 9, h: 4.4 });
// āā WRITE FILE āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
const outPath = "/home/daytona/workspace/childhood-infectious/Childhood_Infectious_Diseases_Enhanced.pptx";
pres.writeFile({ fileName: outPath }).then(() => {
console.log("ā
Done:", outPath);
});
cd /home/daytona/workspace/childhood-infectious && npm install pptxgenjs --save-quiet 2>&1 | tail -3 && node build.js 2>&1
ls -lh /home/daytona/workspace/childhood-infectious/Childhood_Infectious_Diseases_Enhanced.pptx
Childhood Infectious Diseases Enhanced
Presentation Ā· PPTX
| Section | Slides |
|---|---|
| Cover | Title slide |
| Part 1 ā Meningococcal | Overview, pathology timeline, meningococcaemia, 2 clinical photos (petechiae + purpura), microscopy & causes of death |
| Part 2 ā Scarlet Fever | Overview & pathogenesis, primary complex, complications periods 1 & 2, 2 clinical photos (sandpaper rash + strawberry tongue) |
| Part 3 ā Measles | Overview & pathogenesis, clinical features (Koplik + rash), immunosuppression & complications, 2 clinical photos (Koplik spots + maculopapular rash) |
| Part 4 ā Diphtheria | Overview & toxin mechanism, local forms, systemic complications, 2 clinical photos (bull-neck + pseudomembrane) |
| Final slides | Full comparison table + key mnemonics |