Explain Blood and Body Fluids - Human Physiology
| Group | TBW as % Body Weight |
|---|---|
| Adult male | ~60% |
| Adult female | ~50% (higher fat %) |
| Newborn/premature | 70-75% |
| Elderly | Decreases with age |


| Solute | ECF (mEq/L) | ICF (mEq/L) |
|---|---|---|
| Na+ | 140 | 14 |
| K+ | 4 | 120 |
| Ca2+ (ionized) | 2.5 | ~0.0001 |
| Cl- | 105 | 10 |
| HCO3- | 24 | 10 |
| Protein | low | high (~4x plasma) |
| pH | ~7.4 | ~7.0 (more acidic) |

| Group | Normal Hematocrit |
|---|---|
| Adult males | ~0.42 (42%) |
| Adult females | ~0.38 (38%) |
| Severe anemia | as low as 0.10 |
| Polycythemia | up to 0.65 |
Volume = Amount of indicator injected ÷ Concentration of indicator in sample
| Parameter | Value |
|---|---|
| Total body water (70-kg male) | ~42 L (60% body weight) |
| ICF | ~28 L (2/3 TBW) |
| ECF | ~14 L (1/3 TBW) |
| Plasma | ~3 L |
| Interstitial fluid | ~11 L |
| Blood volume | ~5 L (7% body weight) |
| Hematocrit (male/female) | 42% / 38% |
| Plasma protein | ~7 g/dL |
| Plasma osmolarity | ~290 mOsm/L |
| Main ECF cation | Na+ (140 mEq/L) |
| Main ICF cation | K+ (120 mEq/L) |
Make a presentation on 'Blood Physiology'
ls /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/blood-physiology…
?
Give me results now
~/blood-physiology-ppt/create_pptx.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Blood Physiology";
pres.author = "Orris Medical";
// ─── COLOR PALETTE ───────────────────────────────────────────
const RED = "C0392B"; // deep blood red (dominant)
const DARKRED = "7B241C"; // darker red
const DARKBG = "1A0A0A"; // near-black with red tint
const CARDBG = "2C1010"; // dark card
const CARDBG2 = "3D1515"; // slightly lighter card
const WHITE = "FFFFFF";
const OFFWHITE = "F5E6E6"; // warm off-white
const GRAY = "D0B0B0"; // warm gray
const ACCENT = "E74C3C"; // bright red accent
const LTRED = "F1948A"; // light red for subtext
const GOLD = "F39C12"; // gold for highlights
// ─── HELPERS ─────────────────────────────────────────────────
function addSlideHeader(slide, title, subtitle) {
// Top accent bar
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 0.08, fill: { color: RED }, line: { color: RED }
});
// Left side accent
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0.08, w: 0.07, h: 5.545, fill: { color: DARKRED }, line: { color: DARKRED }
});
slide.addText(title, {
x: 0.3, y: 0.15, w: 9.4, h: 0.6,
fontSize: 22, bold: true, color: WHITE, fontFace: "Calibri",
margin: 0
});
if (subtitle) {
slide.addText(subtitle, {
x: 0.3, y: 0.72, w: 9.4, h: 0.3,
fontSize: 11, color: LTRED, fontFace: "Calibri", margin: 0
});
}
// bottom bar
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 5.55, w: 10, h: 0.075, fill: { color: DARKRED }, line: { color: DARKRED }
});
}
function card(slide, x, y, w, h, color) {
slide.addShape(pres.shapes.RECTANGLE, {
x, y, w, h,
fill: { color: color || CARDBG },
line: { color: RED, pt: 1.2 },
shadow: { type: "outer", color: "000000", blur: 8, offset: 3, angle: 135, opacity: 0.35 }
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
// Large decorative circle
s.addShape(pres.shapes.OVAL, {
x: 6.2, y: -1.2, w: 5.5, h: 5.5,
fill: { color: RED, transparency: 82 }, line: { color: RED, pt: 1.5 }
});
s.addShape(pres.shapes.OVAL, {
x: 6.8, y: -0.6, w: 4.3, h: 4.3,
fill: { color: RED, transparency: 88 }, line: { color: ACCENT, pt: 0.8 }
});
// Red top accent bar
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 5.5, h: 0.1, fill: { color: RED }, line: { color: RED }
});
// Main title
s.addText("BLOOD", {
x: 0.5, y: 0.8, w: 6, h: 1.3,
fontSize: 72, bold: true, color: RED, fontFace: "Calibri",
charSpacing: 8, margin: 0
});
s.addText("PHYSIOLOGY", {
x: 0.5, y: 2.0, w: 6.5, h: 0.9,
fontSize: 36, bold: false, color: WHITE, fontFace: "Calibri",
charSpacing: 14, margin: 0
});
// Divider line
s.addShape(pres.shapes.RECTANGLE, {
x: 0.5, y: 3.0, w: 4.5, h: 0.05, fill: { color: ACCENT }, line: { color: ACCENT }
});
// Subtitle
s.addText("Components • Functions • Disorders\nHuman Physiology", {
x: 0.5, y: 3.18, w: 6, h: 0.8,
fontSize: 13, color: GRAY, fontFace: "Calibri", margin: 0
});
// Bottom tag
s.addText("Medical Physiology Series", {
x: 0.5, y: 5.1, w: 4, h: 0.35,
fontSize: 10, color: LTRED, fontFace: "Calibri", margin: 0
});
// Small RBC decorative dots
for (let i = 0; i < 6; i++) {
s.addShape(pres.shapes.OVAL, {
x: 0.4 + i * 0.55, y: 4.7, w: 0.22, h: 0.22,
fill: { color: RED, transparency: 60 }, line: { color: RED, pt: 0.5 }
});
}
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW / TABLE OF CONTENTS
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
addSlideHeader(s, "Overview", "Topics covered in this presentation");
const topics = [
["01", "Composition of Blood", "Plasma, cells, volume"],
["02", "Red Blood Cells (RBCs)", "Structure, function, lifespan"],
["03", "Haemoglobin", "Structure, oxygen transport"],
["04", "White Blood Cells (WBCs)", "Types and immune roles"],
["05", "Platelets & Haemostasis", "Clotting cascade"],
["06", "Blood Groups", "ABO and Rh systems"],
];
topics.forEach(([num, title, sub], i) => {
const col = i < 3 ? 0 : 1;
const row = i % 3;
const x = 0.4 + col * 4.85;
const y = 1.1 + row * 1.42;
card(s, x, y, 4.55, 1.22, CARDBG);
s.addText(num, {
x: x + 0.12, y: y + 0.1, w: 0.6, h: 0.55,
fontSize: 22, bold: true, color: RED, fontFace: "Calibri", margin: 0
});
s.addShape(pres.shapes.RECTANGLE, {
x: x + 0.72, y: y + 0.15, w: 0.04, h: 0.45,
fill: { color: ACCENT }, line: { color: ACCENT }
});
s.addText(title, {
x: x + 0.86, y: y + 0.1, w: 3.5, h: 0.45,
fontSize: 13, bold: true, color: WHITE, fontFace: "Calibri", margin: 0
});
s.addText(sub, {
x: x + 0.86, y: y + 0.62, w: 3.5, h: 0.35,
fontSize: 9.5, color: GRAY, fontFace: "Calibri", margin: 0
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 3 — COMPOSITION OF BLOOD
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
addSlideHeader(s, "Composition of Blood", "Blood is a specialized connective tissue");
// Left text column
card(s, 0.25, 1.05, 5.5, 4.35, CARDBG);
s.addText("What is Blood?", {
x: 0.45, y: 1.15, w: 5.1, h: 0.4,
fontSize: 14, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
s.addText([
{ text: "Blood is a fluid connective tissue that circulates through the cardiovascular system. In a 70 kg man:", options: { breakLine: true } },
], {
x: 0.45, y: 1.58, w: 5.1, h: 0.55,
fontSize: 10.5, color: OFFWHITE, fontFace: "Calibri"
});
const stats = [
["Total Volume", "~5 Litres (7% body weight)"],
["Plasma", "~55–60% of blood"],
["Formed Elements", "~40–45% of blood"],
["pH", "7.35 – 7.45 (slightly alkaline)"],
["Specific Gravity", "1.050 – 1.060"],
["Viscosity", "3–4× that of water"],
["Temperature", "38°C (slightly > body temp)"],
];
stats.forEach(([k, v], i) => {
const y = 2.18 + i * 0.46;
s.addShape(pres.shapes.RECTANGLE, {
x: 0.45, y, w: 0.06, h: 0.28,
fill: { color: RED }, line: { color: RED }
});
s.addText(k + ":", {
x: 0.62, y, w: 1.8, h: 0.3,
fontSize: 10, bold: true, color: LTRED, fontFace: "Calibri", margin: 0
});
s.addText(v, {
x: 2.4, y, w: 3.2, h: 0.3,
fontSize: 10, color: WHITE, fontFace: "Calibri", margin: 0
});
});
// Right — pie-like breakdown chart
card(s, 5.95, 1.05, 3.8, 4.35, CARDBG2);
s.addText("BLOOD COMPONENTS", {
x: 6.05, y: 1.15, w: 3.6, h: 0.35,
fontSize: 10, bold: true, color: ACCENT, fontFace: "Calibri", align: "center", margin: 0
});
// Vertical stacked bar visual
const barX = 7.0, barY = 1.6, barW = 1.8;
// Plasma bar
s.addShape(pres.shapes.RECTANGLE, {
x: barX, y: barY, w: barW, h: 2.4,
fill: { color: "5D6D7E" }, line: { color: "7F8C8D", pt: 0.5 }
});
s.addText("PLASMA\n55%", {
x: barX, y: barY + 0.9, w: barW, h: 0.7,
fontSize: 11, bold: true, color: WHITE, fontFace: "Calibri", align: "center", margin: 0
});
// RBC bar
s.addShape(pres.shapes.RECTANGLE, {
x: barX, y: barY + 2.4, w: barW, h: 1.6,
fill: { color: RED }, line: { color: ACCENT, pt: 0.5 }
});
s.addText("RBCs\n40%", {
x: barX, y: barY + 2.55, w: barW, h: 0.65,
fontSize: 11, bold: true, color: WHITE, fontFace: "Calibri", align: "center", margin: 0
});
// WBC/Platelet buffy coat
s.addShape(pres.shapes.RECTANGLE, {
x: barX, y: barY + 4.0, w: barW, h: 0.25,
fill: { color: GOLD }, line: { color: GOLD, pt: 0.5 }
});
s.addText("WBCs + Platelets ~1%", {
x: barX - 0.3, y: barY + 4.2, w: barW + 0.7, h: 0.25,
fontSize: 8, color: GOLD, fontFace: "Calibri", align: "center", margin: 0
});
// Legend
const legend = [
[GRAY, "Plasma — water, proteins, electrolytes"],
[RED, "Red Blood Cells (Erythrocytes)"],
[GOLD, "WBCs (Leukocytes) + Platelets"],
];
legend.forEach(([col, txt], i) => {
s.addShape(pres.shapes.RECTANGLE, {
x: 6.1, y: 3.65 + i * 0.38, w: 0.22, h: 0.18,
fill: { color: col }, line: { color: col }
});
s.addText(txt, {
x: 6.4, y: 3.62 + i * 0.38, w: 3.3, h: 0.25,
fontSize: 8.5, color: GRAY, fontFace: "Calibri", margin: 0
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 4 — PLASMA
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
addSlideHeader(s, "Blood Plasma", "The liquid matrix of blood (~55% of total blood volume)");
const cols = [
{
title: "Water (91–92%)",
color: "2E86C1",
points: ["Solvent for all dissolved substances", "Medium for transport of gases, nutrients, waste", "Regulates body temperature"]
},
{
title: "Plasma Proteins (7–8%)",
color: RED,
points: ["Albumin — oncotic pressure, carrier", "Globulins — immunity (IgG, IgA, IgM)", "Fibrinogen — blood coagulation", "Made mostly in liver (except Ig)"]
},
{
title: "Other Solutes (1–2%)",
color: GOLD,
points: ["Electrolytes: Na⁺, K⁺, Ca²⁺, Cl⁻, HCO₃⁻", "Glucose, amino acids, fatty acids", "Waste: urea, creatinine, bilirubin", "Hormones, vitamins, gases (O₂, CO₂)"]
}
];
cols.forEach((col, i) => {
const x = 0.22 + i * 3.25;
card(s, x, 1.05, 3.1, 4.35, CARDBG);
// Header bar
s.addShape(pres.shapes.RECTANGLE, {
x, y: 1.05, w: 3.1, h: 0.38, fill: { color: col.color }, line: { color: col.color }
});
s.addText(col.title, {
x: x + 0.1, y: 1.07, w: 2.9, h: 0.35,
fontSize: 10.5, bold: true, color: WHITE, fontFace: "Calibri", margin: 0
});
col.points.forEach((pt, j) => {
s.addShape(pres.shapes.OVAL, {
x: x + 0.18, y: 1.65 + j * 0.74, w: 0.12, h: 0.12,
fill: { color: col.color }, line: { color: col.color }
});
s.addText(pt, {
x: x + 0.38, y: 1.6 + j * 0.74, w: 2.62, h: 0.62,
fontSize: 9.5, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
});
});
// Bottom key fact
s.addShape(pres.shapes.RECTANGLE, {
x: 0.22, y: 5.22, w: 9.56, h: 0.0, fill: { color: DARKRED }, line: { color: DARKRED, pt: 0 }
});
s.addText("📌 Plasma without fibrinogen = Serum | Normal plasma protein = 6–8 g/dL | Albumin = 3.5–5 g/dL", {
x: 0.3, y: 5.1, w: 9.4, h: 0.3,
fontSize: 9, color: GOLD, fontFace: "Calibri", italic: true, margin: 0
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 5 — RED BLOOD CELLS
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
addSlideHeader(s, "Red Blood Cells (Erythrocytes)", "Most abundant formed element in blood");
// Left big card
card(s, 0.25, 1.05, 5.5, 4.35, CARDBG);
const rbcFacts = [
["Shape", "Biconcave disc (no nucleus in mature form)"],
["Diameter", "6–8 μm"],
["Thickness", "2 μm at rim, 1 μm at centre"],
["Count (male)", "4.5–6.5 million/μL"],
["Count (female)", "3.8–5.8 million/μL"],
["Lifespan", "~120 days"],
["Production", "Erythropoiesis in red bone marrow"],
["Destruction", "Spleen & liver (reticuloendothelial system)"],
["Main protein", "Haemoglobin (~33% of RBC mass)"],
];
s.addText("Key Facts", {
x: 0.45, y: 1.15, w: 5.1, h: 0.38,
fontSize: 13, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
rbcFacts.forEach(([k, v], i) => {
const y = 1.6 + i * 0.42;
const rowBg = i % 2 === 0 ? CARDBG : "3A1212";
s.addShape(pres.shapes.RECTANGLE, {
x: 0.3, y, w: 5.3, h: 0.38, fill: { color: rowBg }, line: { color: rowBg }
});
s.addText(k, {
x: 0.4, y: y + 0.05, w: 1.7, h: 0.28,
fontSize: 9.5, bold: true, color: LTRED, fontFace: "Calibri", margin: 0
});
s.addText(v, {
x: 2.1, y: y + 0.05, w: 3.4, h: 0.28,
fontSize: 9.5, color: WHITE, fontFace: "Calibri", margin: 0
});
});
// Right column — functions & regulation
card(s, 5.95, 1.05, 3.8, 2.0, CARDBG2);
s.addText("FUNCTIONS", {
x: 6.05, y: 1.12, w: 3.6, h: 0.32,
fontSize: 11, bold: true, color: RED, fontFace: "Calibri", margin: 0
});
const funcs = [
"O₂ transport: O₂ lungs → tissues",
"CO₂ transport: tissues → lungs",
"Acid-base buffering (HbH⁺)",
"Nitric oxide transport",
];
funcs.forEach((f, i) => {
s.addShape(pres.shapes.OVAL, {
x: 6.1, y: 1.52 + i * 0.36, w: 0.1, h: 0.1,
fill: { color: ACCENT }, line: { color: ACCENT }
});
s.addText(f, {
x: 6.28, y: 1.48 + i * 0.36, w: 3.3, h: 0.3,
fontSize: 9.5, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
});
card(s, 5.95, 3.22, 3.8, 2.18, CARDBG2);
s.addText("ERYTHROPOIESIS CONTROL", {
x: 6.05, y: 3.3, w: 3.6, h: 0.32,
fontSize: 11, bold: true, color: RED, fontFace: "Calibri", margin: 0
});
const erythro = [
"↓ O₂ → kidney releases Erythropoietin (EPO)",
"EPO → stimulates red bone marrow",
"Reticulocytes released into blood",
"Mature in 1–2 days → RBC",
"Requires: Fe, B12, folate, B6",
];
erythro.forEach((e, i) => {
s.addShape(pres.shapes.RECTANGLE, {
x: 6.1, y: 3.72 + i * 0.32, w: 0.08, h: 0.2,
fill: { color: RED }, line: { color: RED }
});
s.addText(e, {
x: 6.28, y: 3.7 + i * 0.32, w: 3.35, h: 0.28,
fontSize: 9, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 6 — HAEMOGLOBIN
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
addSlideHeader(s, "Haemoglobin (Hb)", "The oxygen-carrying protein of red blood cells");
// Structure card
card(s, 0.25, 1.05, 4.6, 4.35, CARDBG);
s.addText("Structure", {
x: 0.45, y: 1.12, w: 4.2, h: 0.38,
fontSize: 13, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
const structureInfo = [
"Molecular weight: 68,000 daltons",
"4 polypeptide chains (globin)",
"Each chain carries 1 haem group",
"Each haem: 1 Fe²⁺ ion",
"1 Hb molecule binds 4 O₂ molecules",
"Normal values: Male 14–18 g/dL",
" Female 12–16 g/dL",
"Total body Hb: ~750g in adult male",
];
structureInfo.forEach((info, i) => {
s.addShape(pres.shapes.OVAL, {
x: 0.42, y: 1.6 + i * 0.41, w: 0.1, h: 0.1,
fill: { color: RED }, line: { color: RED }
});
s.addText(info, {
x: 0.62, y: 1.56 + i * 0.41, w: 4.1, h: 0.35,
fontSize: 9.5, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
});
// Right — Types of Hb
card(s, 5.05, 1.05, 4.7, 1.95, CARDBG2);
s.addText("Types of Haemoglobin", {
x: 5.2, y: 1.12, w: 4.4, h: 0.35,
fontSize: 12, bold: true, color: RED, fontFace: "Calibri", margin: 0
});
const hbTypes = [
["HbA (adult)", "α₂β₂", "96–98% in adults"],
["HbA₂", "α₂δ₂", "~2% in adults"],
["HbF (fetal)", "α₂γ₂", "High O₂ affinity"],
["HbS (sickle)", "Abnormal β", "Causes sickle cell disease"],
];
hbTypes.forEach(([name, chains, note], i) => {
s.addText(name, {
x: 5.15, y: 1.55 + i * 0.33, w: 1.5, h: 0.28,
fontSize: 9, bold: true, color: LTRED, fontFace: "Calibri", margin: 0
});
s.addText(chains, {
x: 6.65, y: 1.55 + i * 0.33, w: 0.8, h: 0.28,
fontSize: 9, color: GOLD, fontFace: "Calibri", margin: 0
});
s.addText(note, {
x: 7.45, y: 1.55 + i * 0.33, w: 2.2, h: 0.28,
fontSize: 9, color: GRAY, fontFace: "Calibri", margin: 0
});
});
// O2 dissociation curve description
card(s, 5.05, 3.15, 4.7, 2.25, CARDBG2);
s.addText("O₂ Dissociation Curve", {
x: 5.2, y: 3.22, w: 4.4, h: 0.35,
fontSize: 12, bold: true, color: RED, fontFace: "Calibri", margin: 0
});
s.addText("Sigmoidal (S-shaped) curve due to cooperative binding", {
x: 5.2, y: 3.6, w: 4.4, h: 0.3,
fontSize: 9.5, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
const shiftFacts = [
["RIGHT SHIFT (↓ affinity)", "↑ CO₂, ↑ Temp, ↑ H⁺ (↓pH), ↑ 2,3-DPG"],
["LEFT SHIFT (↑ affinity)", "↓ CO₂, ↓ Temp, ↓ H⁺ (↑pH), HbF, CO"],
];
shiftFacts.forEach(([label, detail], i) => {
const bColor = i === 0 ? ACCENT : "2E86C1";
s.addShape(pres.shapes.RECTANGLE, {
x: 5.15, y: 4.0 + i * 0.65, w: 1.55, h: 0.28,
fill: { color: bColor }, line: { color: bColor }
});
s.addText(label, {
x: 5.18, y: 4.0 + i * 0.65, w: 1.5, h: 0.28,
fontSize: 7.5, bold: true, color: WHITE, fontFace: "Calibri", align: "center", margin: 0
});
s.addText(detail, {
x: 6.78, y: 4.0 + i * 0.65, w: 2.9, h: 0.28,
fontSize: 8.5, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
});
s.addText("P₅₀ = PO₂ at which Hb is 50% saturated = 26–27 mmHg (normal)", {
x: 5.15, y: 5.1, w: 4.6, h: 0.28,
fontSize: 8.5, color: GOLD, fontFace: "Calibri", italic: true, margin: 0
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 7 — WHITE BLOOD CELLS
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
addSlideHeader(s, "White Blood Cells (Leukocytes)", "Cellular soldiers of the immune system");
s.addText("Normal WBC count: 4,000 – 11,000 /μL | Differential count identifies subtype proportions", {
x: 0.3, y: 1.08, w: 9.4, h: 0.28,
fontSize: 9.5, color: GOLD, fontFace: "Calibri", italic: true, margin: 0
});
const wbcTypes = [
{ name: "Neutrophils", pct: "50–70%", color: "2874A6", role: "First responders — phagocytose bacteria", multi: "Multi-lobed nucleus (PMN)" },
{ name: "Lymphocytes", pct: "20–40%", color: "1E8449", role: "B cells (antibodies) & T cells (cell-mediated immunity)", multi: "Large round nucleus" },
{ name: "Monocytes", pct: "2–8%", color: "6C3483", role: "Differentiate into macrophages — phagocytosis, APC", multi: "Kidney-shaped nucleus" },
{ name: "Eosinophils", pct: "1–4%", color: GOLD, role: "Allergic reactions, parasite defense", multi: "Bilobed nucleus, red granules" },
{ name: "Basophils", pct: "0–1%", color: ACCENT, role: "Release histamine & heparin — allergic reactions", multi: "S-shaped nucleus, blue granules" },
];
wbcTypes.forEach((wbc, i) => {
const x = 0.22;
const y = 1.42 + i * 0.82;
card(s, x, y, 9.56, 0.72, CARDBG);
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 0.12, h: 0.72, fill: { color: wbc.color }, line: { color: wbc.color }
});
s.addText(wbc.name, {
x: x + 0.22, y: y + 0.08, w: 2.0, h: 0.3,
fontSize: 12, bold: true, color: WHITE, fontFace: "Calibri", margin: 0
});
s.addShape(pres.shapes.RECTANGLE, {
x: x + 0.22, y: y + 0.38, w: 1.5, h: 0.22,
fill: { color: wbc.color }, line: { color: wbc.color }
});
s.addText(wbc.pct, {
x: x + 0.24, y: y + 0.38, w: 1.48, h: 0.22,
fontSize: 9, bold: true, color: WHITE, fontFace: "Calibri", align: "center", margin: 0
});
s.addText(wbc.role, {
x: x + 2.4, y: y + 0.1, w: 4.7, h: 0.3,
fontSize: 10, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
s.addText(wbc.multi, {
x: x + 2.4, y: y + 0.4, w: 4.7, h: 0.24,
fontSize: 8.5, color: GRAY, fontFace: "Calibri", italic: true, margin: 0
});
s.addText("Leukocyte", {
x: x + 7.4, y: y + 0.2, w: 2.1, h: 0.28,
fontSize: 8.5, color: GRAY, fontFace: "Calibri", align: "right", margin: 0
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 8 — PLATELETS & HAEMOSTASIS
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
addSlideHeader(s, "Platelets & Haemostasis", "The blood clotting system");
// Platelets card
card(s, 0.25, 1.05, 4.3, 2.2, CARDBG);
s.addText("Platelets (Thrombocytes)", {
x: 0.42, y: 1.12, w: 4.0, h: 0.38,
fontSize: 12, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
const platFacts = [
"Count: 150,000 – 400,000 /μL",
"Size: 2–4 μm (smallest cells)",
"Origin: Megakaryocytes in bone marrow",
"Lifespan: 8–12 days",
"No nucleus — contain granules",
"Destroyed in spleen",
];
platFacts.forEach((f, i) => {
s.addShape(pres.shapes.OVAL, {
x: 0.4, y: 1.6 + i * 0.26, w: 0.09, h: 0.09,
fill: { color: RED }, line: { color: RED }
});
s.addText(f, {
x: 0.58, y: 1.57 + i * 0.26, w: 3.8, h: 0.24,
fontSize: 9.5, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
});
// Haemostasis steps
card(s, 0.25, 3.35, 4.3, 2.05, CARDBG);
s.addText("Steps of Haemostasis", {
x: 0.42, y: 3.42, w: 4.0, h: 0.35,
fontSize: 12, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
const hemoSteps = [
["1", "Vascular spasm — immediate vasoconstriction"],
["2", "Platelet plug formation (primary haemostasis)"],
["3", "Coagulation cascade (secondary haemostasis)"],
["4", "Fibrinolysis — clot dissolution (plasmin)"],
];
hemoSteps.forEach(([n, txt], i) => {
s.addShape(pres.shapes.OVAL, {
x: 0.4, y: 3.88 + i * 0.36, w: 0.28, h: 0.28,
fill: { color: RED }, line: { color: RED }
});
s.addText(n, {
x: 0.4, y: 3.88 + i * 0.36, w: 0.28, h: 0.28,
fontSize: 9, bold: true, color: WHITE, fontFace: "Calibri", align: "center", margin: 0
});
s.addText(txt, {
x: 0.78, y: 3.88 + i * 0.36, w: 3.65, h: 0.28,
fontSize: 9.5, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
});
// Coagulation cascade
card(s, 4.75, 1.05, 5.0, 4.35, CARDBG2);
s.addText("Coagulation Cascade", {
x: 4.92, y: 1.12, w: 4.7, h: 0.38,
fontSize: 13, bold: true, color: RED, fontFace: "Calibri", margin: 0
});
// Intrinsic pathway
s.addText("INTRINSIC PATHWAY", {
x: 4.92, y: 1.57, w: 2.1, h: 0.28,
fontSize: 8.5, bold: true, color: "2E86C1", fontFace: "Calibri", margin: 0
});
const intrinsic = ["Factor XII (Hageman)", "↓", "XI → IX → VIII", "↓", "Factor X activated"];
intrinsic.forEach((step, i) => {
s.addText(step, {
x: 4.92, y: 1.9 + i * 0.38, w: 2.2, h: 0.32,
fontSize: 9, color: i === 4 ? GOLD : OFFWHITE, fontFace: "Calibri",
bold: i === 4, align: "left", margin: 0
});
});
// Extrinsic pathway
s.addText("EXTRINSIC PATHWAY", {
x: 7.22, y: 1.57, w: 2.4, h: 0.28,
fontSize: 8.5, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
const extrinsic = ["Tissue Factor (III)", "↓", "Factor VII → VIIa", "↓", "Factor X activated"];
extrinsic.forEach((step, i) => {
s.addText(step, {
x: 7.22, y: 1.9 + i * 0.38, w: 2.4, h: 0.32,
fontSize: 9, color: i === 4 ? GOLD : OFFWHITE, fontFace: "Calibri",
bold: i === 4, margin: 0
});
});
// Convergence arrow
s.addShape(pres.shapes.RECTANGLE, {
x: 5.05, y: 3.9, w: 4.6, h: 0.04, fill: { color: GOLD }, line: { color: GOLD }
});
s.addText("COMMON PATHWAY", {
x: 5.8, y: 3.98, w: 3.0, h: 0.28,
fontSize: 9, bold: true, color: GOLD, fontFace: "Calibri", align: "center", margin: 0
});
const common = ["X + Va + Ca²⁺ → Prothrombinase", "Prothrombin → Thrombin", "Fibrinogen → Fibrin (clot)"];
common.forEach((step, i) => {
s.addText("→ " + step, {
x: 4.92, y: 4.3 + i * 0.32, w: 4.7, h: 0.28,
fontSize: 9, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 9 — BLOOD GROUPS
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
addSlideHeader(s, "Blood Groups", "ABO system and Rh system");
// ABO table
card(s, 0.25, 1.05, 5.55, 3.2, CARDBG);
s.addText("ABO Blood Group System", {
x: 0.42, y: 1.12, w: 5.2, h: 0.38,
fontSize: 13, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
// Table
const headers = ["Blood Group", "Antigen on RBC", "Antibody in Plasma", "Can Donate To", "Can Receive From"];
const rows = [
["A", "A", "Anti-B", "A, AB", "A, O"],
["B", "B", "Anti-A", "B, AB", "B, O"],
["AB", "A & B","None", "AB only", "All groups"],
["O", "None", "Anti-A, Anti-B","All groups","O only"],
];
headers.forEach((h, i) => {
s.addShape(pres.shapes.RECTANGLE, {
x: 0.3 + i * 1.07, y: 1.58, w: 1.06, h: 0.3,
fill: { color: DARKRED }, line: { color: RED, pt: 0.5 }
});
s.addText(h, {
x: 0.31 + i * 1.07, y: 1.58, w: 1.04, h: 0.3,
fontSize: 7.5, bold: true, color: WHITE, fontFace: "Calibri", align: "center", margin: 0
});
});
rows.forEach((row, ri) => {
const rowColor = ri % 2 === 0 ? CARDBG : "3A1212";
row.forEach((cell, ci) => {
s.addShape(pres.shapes.RECTANGLE, {
x: 0.3 + ci * 1.07, y: 1.9 + ri * 0.36, w: 1.06, h: 0.34,
fill: { color: rowColor }, line: { color: "4A1010", pt: 0.5 }
});
const isGroup = ci === 0;
s.addText(cell, {
x: 0.31 + ci * 1.07, y: 1.91 + ri * 0.36, w: 1.04, h: 0.3,
fontSize: 8.5, bold: isGroup, color: isGroup ? GOLD : OFFWHITE,
fontFace: "Calibri", align: "center", margin: 0
});
});
});
// O universal donor, AB universal recipient
s.addText("O = Universal Donor | AB = Universal Recipient", {
x: 0.42, y: 4.0, w: 5.3, h: 0.25,
fontSize: 9, bold: true, color: GOLD, fontFace: "Calibri", margin: 0
});
// Rh System
card(s, 5.95, 1.05, 3.8, 4.35, CARDBG2);
s.addText("Rh Blood Group System", {
x: 6.05, y: 1.12, w: 3.6, h: 0.38,
fontSize: 12, bold: true, color: RED, fontFace: "Calibri", margin: 0
});
const rhFacts = [
"Most important after ABO system",
"Rh+ (D antigen present): ~85% people",
"Rh− (D antigen absent): ~15% people",
"No naturally occurring antibodies",
"Anti-D forms only after exposure",
"",
"Erythroblastosis Fetalis:",
"• Rh− mother + Rh+ fetus",
"• 1st pregnancy: sensitization",
"• 2nd pregnancy: anti-D crosses",
" placenta → haemolysis in fetus",
"• Prevention: Anti-D (Rhogam) injection",
" within 72 hrs of delivery/abortion",
];
rhFacts.forEach((f, i) => {
if (f === "") return;
const isBold = f.endsWith(":") || f.startsWith("Rh");
s.addText(f, {
x: 6.08, y: 1.6 + i * 0.26, w: 3.55, h: 0.26,
fontSize: 8.8, bold: isBold, color: isBold ? LTRED : OFFWHITE,
fontFace: "Calibri", margin: 0
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 10 — ANAEMIA
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
addSlideHeader(s, "Anaemia", "Reduction in haemoglobin, RBC count, or haematocrit");
s.addText("Definition: Hb < 13 g/dL (male) or < 12 g/dL (female)", {
x: 0.3, y: 1.07, w: 9.4, h: 0.28,
fontSize: 10, bold: true, color: GOLD, fontFace: "Calibri", margin: 0
});
const anaemiaTypes = [
{ title: "Iron Deficiency Anaemia", color: ACCENT, facts: ["Most common worldwide", "Microcytic hypochromic RBCs", "Causes: poor diet, blood loss, malabsorption", "Tx: oral iron supplements"] },
{ title: "Megaloblastic Anaemia", color: "2E86C1", facts: ["Deficiency of B12 or folate", "Macrocytic RBCs (large, immature)", "Pernicious anaemia = B12 + intrinsic factor lack", "Tx: B12/folate replacement"] },
{ title: "Haemolytic Anaemia", color: GOLD, facts: ["Premature RBC destruction", "Causes: sickle cell, thalassaemia, G6PD deficiency", "Features: jaundice, splenomegaly", "Tx: treat cause, transfusion"] },
{ title: "Aplastic Anaemia", color: "6C3483", facts: ["Bone marrow failure — pancytopenia", "Causes: drugs, radiation, autoimmune, viruses", "All cell lines reduced (RBC, WBC, platelets)", "Tx: BMT, immunosuppression"] },
];
anaemiaTypes.forEach((type, i) => {
const col = i < 2 ? 0 : 1;
const row = i % 2;
const x = 0.22 + col * 4.9;
const y = 1.42 + row * 2.15;
card(s, x, y, 4.65, 2.0, CARDBG);
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 4.65, h: 0.35, fill: { color: type.color }, line: { color: type.color }
});
s.addText(type.title, {
x: x + 0.1, y: y + 0.03, w: 4.45, h: 0.3,
fontSize: 10.5, bold: true, color: WHITE, fontFace: "Calibri", margin: 0
});
type.facts.forEach((fact, j) => {
s.addShape(pres.shapes.OVAL, {
x: x + 0.15, y: y + 0.5 + j * 0.36, w: 0.09, h: 0.09,
fill: { color: type.color }, line: { color: type.color }
});
s.addText(fact, {
x: x + 0.32, y: y + 0.45 + j * 0.36, w: 4.2, h: 0.32,
fontSize: 9, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 11 — HEMATOCRIT & BLOOD INDICES
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
addSlideHeader(s, "Haematocrit & Blood Indices", "Key measurements in clinical haematology");
// Left column
card(s, 0.25, 1.05, 4.5, 4.35, CARDBG);
s.addText("Haematocrit (Packed Cell Volume)", {
x: 0.42, y: 1.12, w: 4.2, h: 0.38,
fontSize: 12, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
const hctFacts = [
["Normal (Male)", "40 – 52%"],
["Normal (Female)", "35 – 47%"],
["Newborn", "44 – 64%"],
["Anaemia", "< 30%"],
["Polycythaemia", "> 60%"],
["Method", "Centrifuge blood, measure RBC column"],
];
hctFacts.forEach(([k, v], i) => {
const y = 1.58 + i * 0.46;
const rowBg = i % 2 === 0 ? CARDBG : "3A1212";
s.addShape(pres.shapes.RECTANGLE, {
x: 0.3, y, w: 4.35, h: 0.4, fill: { color: rowBg }, line: { color: rowBg }
});
s.addText(k, { x: 0.4, y: y + 0.07, w: 1.9, h: 0.28, fontSize: 9.5, bold: true, color: LTRED, fontFace: "Calibri", margin: 0 });
s.addText(v, { x: 2.3, y: y + 0.07, w: 2.2, h: 0.28, fontSize: 9.5, color: WHITE, fontFace: "Calibri", margin: 0 });
});
// Right — blood indices
card(s, 4.95, 1.05, 4.8, 4.35, CARDBG2);
s.addText("Red Cell Indices", {
x: 5.1, y: 1.12, w: 4.5, h: 0.38,
fontSize: 12, bold: true, color: RED, fontFace: "Calibri", margin: 0
});
const indices = [
{ name: "MCV", full: "Mean Corpuscular Volume", norm: "80 – 100 fL", info: "Size of RBC. Low=microcytic, High=macrocytic" },
{ name: "MCH", full: "Mean Corpuscular Hb", norm: "27 – 33 pg", info: "Amount of Hb per RBC" },
{ name: "MCHC", full: "Mean Corpuscular Hb Concentration", norm: "32 – 36 g/dL", info: "Hb concentration in RBCs" },
{ name: "RDW", full: "Red Cell Distribution Width", norm: "11.5 – 14.5%", info: "Variation in RBC size (anisocytosis)" },
{ name: "Reticulocytes", full: "Immature RBCs", norm: "0.5 – 1.5%", info: "Indicator of bone marrow activity" },
];
indices.forEach((idx, i) => {
const y = 1.58 + i * 0.74;
card(s, 5.05, y, 4.65, 0.66, "2C1010");
s.addShape(pres.shapes.RECTANGLE, {
x: 5.05, y, w: 0.08, h: 0.66, fill: { color: RED }, line: { color: RED }
});
s.addText(idx.name, { x: 5.22, y: y + 0.06, w: 1.0, h: 0.28, fontSize: 11, bold: true, color: GOLD, fontFace: "Calibri", margin: 0 });
s.addText(idx.full, { x: 6.22, y: y + 0.06, w: 3.35, h: 0.28, fontSize: 9, color: LTRED, fontFace: "Calibri", margin: 0 });
s.addText("Normal: " + idx.norm, { x: 5.22, y: y + 0.35, w: 1.7, h: 0.24, fontSize: 8.5, color: WHITE, fontFace: "Calibri", margin: 0 });
s.addText(idx.info, { x: 6.95, y: y + 0.35, w: 2.65, h: 0.24, fontSize: 8, color: GRAY, fontFace: "Calibri", margin: 0 });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 12 — SUMMARY / CONCLUSION
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKBG };
// Top bar
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 0.08, fill: { color: RED }, line: { color: RED }
});
// Bottom bar
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 5.55, w: 10, h: 0.075, fill: { color: DARKRED }, line: { color: DARKRED }
});
s.addText("KEY TAKEAWAYS", {
x: 0.4, y: 0.2, w: 9.2, h: 0.55,
fontSize: 24, bold: true, color: RED, fontFace: "Calibri", charSpacing: 5, margin: 0
});
s.addShape(pres.shapes.RECTANGLE, {
x: 0.4, y: 0.76, w: 3.5, h: 0.05, fill: { color: ACCENT }, line: { color: ACCENT }
});
const takeaways = [
["Blood Volume", "~5 L in adults; 7% of body weight"],
["Composition", "55% plasma + 45% formed elements (RBCs, WBCs, platelets)"],
["RBCs", "Biconcave, no nucleus; 120-day lifespan; carry O₂ via haemoglobin"],
["Haemoglobin", "4 globin chains + 4 haem groups; S-shaped O₂ dissociation curve"],
["WBCs", "5 types: neutrophils dominate; lymphocytes give specific immunity"],
["Platelets", "Smallest; essential for haemostasis and clot formation"],
["ABO System", "A, B, AB, O — based on surface antigens; O = universal donor"],
["Rh System", "D antigen; critical in pregnancy to prevent erythroblastosis fetalis"],
];
takeaways.forEach(([k, v], i) => {
const col = i < 4 ? 0 : 1;
const row = i % 4;
const x = 0.3 + col * 4.9;
const y = 0.95 + row * 1.12;
card(s, x, y, 4.55, 1.0, CARDBG);
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: 0.09, h: 1.0, fill: { color: RED }, line: { color: RED }
});
s.addText(k, {
x: x + 0.2, y: y + 0.12, w: 4.2, h: 0.3,
fontSize: 10.5, bold: true, color: LTRED, fontFace: "Calibri", margin: 0
});
s.addText(v, {
x: x + 0.2, y: y + 0.46, w: 4.2, h: 0.45,
fontSize: 9.5, color: OFFWHITE, fontFace: "Calibri", margin: 0
});
});
}
// ─── WRITE FILE ──────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/blood-physiology-ppt/Blood_Physiology.pptx" })
.then(() => console.log("✅ Done: Blood_Physiology.pptx"))
.catch(err => { console.error("❌ Error:", err); process.exit(1); });
cd /home/daytona/workspace/blood-physiology-ppt && node create_pptx.js 2>&1
Blood Physiology
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title Slide — Bold typographic cover with decorative elements |
| 2 | Overview — 6-topic table of contents with numbered cards |
| 3 | Composition of Blood — Key stats + stacked bar (Plasma / RBCs / WBCs) |
| 4 | Plasma — 3-column layout: Water, Plasma Proteins, Other Solutes |
| 5 | Red Blood Cells — Full facts table + erythropoiesis control |
| 6 | Haemoglobin — Structure, types (HbA/F/S/A₂), O₂ dissociation curve (Bohr effect) |
| 7 | White Blood Cells — All 5 types with % counts and functions |
| 8 | Platelets & Haemostasis — Clotting cascade (intrinsic + extrinsic + common pathway) |
| 9 | Blood Groups — Full ABO table + Rh system + erythroblastosis fetalis |
| 10 | Anaemia — 4 types: Iron deficiency, Megaloblastic, Haemolytic, Aplastic |
| 11 | Haematocrit & Indices — MCV, MCH, MCHC, RDW with normal values |
| 12 | Key Takeaways — 8-point summary card layout |
Explain: Nerve Muscle Physiology according to 1st year BHMS, CBDC course.
BHMS 1st year CBDC syllabus nerve muscle physiology topics
https://www.scribd.com/document/798554902/Physiology-CBDC-1s…
| Property | Description |
|---|---|
| Excitability | Ability to respond to an adequate stimulus |
| Conductivity | Ability to conduct an impulse along the membrane |
| Contractility | Ability to shorten in length (muscle specific) |
| Rhythmicity | Ability to generate spontaneous impulses (e.g., cardiac muscle) |
| Tonicity | State of partial continuous contraction (muscle) |
| Extensibility | Ability to be stretched |
| Elasticity | Ability to return to original length after stretch |
| Fibre Type | Diameter | Velocity | Myelination | Function |
|---|---|---|---|---|
| Aα | 13–20 μm | 70–120 m/s | Myelinated | Skeletal muscle motor, proprioception |
| Aβ | 6–12 μm | 30–70 m/s | Myelinated | Touch, pressure |
| Aγ | 3–6 μm | 15–30 m/s | Myelinated | Muscle spindle (fusimotor) |
| Aδ | 1–5 μm | 5–30 m/s | Lightly myelinated | Sharp/fast pain, cold, touch |
| B | 1–3 μm | 3–15 m/s | Lightly myelinated | Preganglionic autonomic |
| C | 0.2–1 μm | 0.5–2 m/s | Unmyelinated | Slow/burning pain, warmth, postganglionic autonomic |
| Group | Corresponds to | Source |
|---|---|---|
| Group I (Ia, Ib) | Aα | Muscle spindle (Ia), Golgi tendon organ (Ib) |
| Group II | Aβ | Secondary muscle spindle endings |
| Group III | Aδ | Free nerve endings (pain, cold) |
| Group IV | C | Unmyelinated free endings (slow pain) |
| Type | Features | Recovery |
|---|---|---|
| Neuropraxia | Conduction block only, no structural damage | Complete, days to weeks |
| Axonotmesis | Axon cut but endoneurium intact | Good, slow (months) |
| Neurotmesis | Complete nerve transection | Poor, surgery needed |
E_ion = (RT/zF) × ln([ion]outside / [ion]inside)
E_K = -94 mV (theoretical)
| Parameter | Value |
|---|---|
| Resting membrane potential | -70 mV |
| Threshold potential | -55 mV |
| Peak overshoot | +30 to +40 mV |
| Duration of AP | ~1 ms (myelinated nerve) |
| Absolute refractory period | ~0.5-1 ms |
| Relative refractory period | ~1-2 ms |
| Conduction velocity (Aα) | 70-120 m/s |
| Drug | Action | Effect |
|---|---|---|
| Neostigmine, Physostigmine | Inhibit AChE | Prolongs ACh action → spasm |
| Succinylcholine | Nicotinic agonist | Sustained depolarisation → block (used in anaesthesia) |
| Curare (tubocurarine) | Nicotinic antagonist | Blocks ACh binding → paralysis |
| Organophosphates | Irreversibly inhibit AChE | Cholinergic crisis |
| Botulinum toxin | Blocks ACh release | Flaccid paralysis |
| Type | Description |
|---|---|
| Isotonic | Muscle shortens, tension constant (e.g., lifting a weight) |
| Isometric | Tension develops, no shortening (e.g., pushing a wall) |
| Eccentric | Muscle lengthens while developing tension |
| Property | Type I (Slow oxidative) | Type II (Fast glycolytic) |
|---|---|---|
| Speed | Slow | Fast |
| Metabolism | Oxidative (aerobic) | Glycolytic (anaerobic) |
| Fatigue | Resistant | Fatigable |
| Colour | Red (myoglobin-rich) | White |
| Function | Posture, endurance | Sudden bursts, power |
| Feature | Skeletal | Smooth |
|---|---|---|
| Control | Voluntary | Involuntary |
| Speed | Fast | Slow |
| Troponin | Present | Absent |
| Trigger | Ca²⁺ + troponin | Ca²⁺ + calmodulin → myosin light chain kinase |
| T-tubules | Present | Absent (caveolae instead) |
| Sarcoplasmic reticulum | Well developed | Less developed |
| Regulation | Neural only | Neural + hormonal + local |
| Topic | Key Point |
|---|---|
| RMP (nerve) | -70 mV; maintained by Na⁺/K⁺ pump + K⁺ permeability |
| Threshold | -55 mV |
| AP duration | ~1 ms (nerve); 1-5 ms (muscle) |
| NMJ transmitter | Acetylcholine (nicotinic receptor) |
| ECC messenger | Ca²⁺ released from sarcoplasmic reticulum |
| Sliding filament | Actin slides over myosin; sarcomere shortens |
| All-or-None law | AP is full or absent; no partial responses |
| Saltatory conduction | Myelinated fibres; jumps between Nodes of Ranvier |
| Nerve regeneration | ~1-3 mm/day in PNS; via Bands of Büngner |
| Myasthenia Gravis | Antibodies against nicotinic ACh receptors → weakness |
Create a PowerPoint on 'Nerve Muscle Physiology' for BHMS 1st Year students
ls /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/nerve-muscle-ppt
~/nerve-muscle-ppt/create_pptx.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Nerve Muscle Physiology";
pres.author = "Orris Medical";
// ─── COLOUR PALETTE (deep navy/teal — neuroscience feel) ─────
const NAVY = "0B1A2E"; // dominant dark bg
const DARKNAVY = "060F1C"; // deeper bg
const TEAL = "0E7C7B"; // primary accent
const LTEAL = "14A8A6"; // lighter teal
const CYAN = "4ECDC4"; // highlight cyan
const WHITE = "FFFFFF";
const OFFWHITE = "E8F4F8";
const GRAY = "A8C4CC";
const GOLD = "F4D03F";
const ORANGE = "E67E22";
const PURPLE = "8E44AD";
const GREEN = "27AE60";
const RED = "E74C3C";
const CARD = "112236"; // card bg
const CARD2 = "0D2A3A"; // alt card bg
// ─── HELPERS ─────────────────────────────────────────────────
function hdr(slide, title, subtitle) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:0.09, fill:{color:TEAL}, line:{color:TEAL} });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0.09, w:0.07, h:5.535, fill:{color:"094545"}, line:{color:"094545"} });
slide.addText(title, { x:0.25, y:0.14, w:9.5, h:0.55, fontSize:21, bold:true, color:WHITE, fontFace:"Calibri", margin:0 });
if (subtitle) slide.addText(subtitle, { x:0.25, y:0.68, w:9.5, h:0.28, fontSize:10, color:CYAN, fontFace:"Calibri", italic:true, margin:0 });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:5.55, w:10, h:0.075, fill:{color:TEAL}, line:{color:TEAL} });
slide.addText("BHMS 1st Year | Nerve Muscle Physiology | CBDC", { x:0.25, y:5.56, w:9.5, h:0.07, fontSize:6.5, color:NAVY, fontFace:"Calibri", margin:0 });
}
function card(slide, x, y, w, h, color) {
slide.addShape(pres.shapes.RECTANGLE, { x, y, w, h, fill:{color:color||CARD}, line:{color:LTEAL, pt:0.9}, shadow:{type:"outer",color:"000000",blur:7,offset:3,angle:135,opacity:0.3} });
}
function dot(slide, x, y, color) {
slide.addShape(pres.shapes.OVAL, { x, y, w:0.1, h:0.1, fill:{color:color||CYAN}, line:{color:color||CYAN} });
}
function badge(slide, x, y, w, h, text, bgColor, textColor) {
slide.addShape(pres.shapes.RECTANGLE, { x, y, w, h, fill:{color:bgColor}, line:{color:bgColor} });
slide.addText(text, { x, y, w, h, fontSize:8.5, bold:true, color:textColor||WHITE, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKNAVY };
// Decorative circles
s.addShape(pres.shapes.OVAL, { x:6.0, y:-0.8, w:5.5, h:5.5, fill:{color:TEAL, transparency:88}, line:{color:TEAL, pt:1.5} });
s.addShape(pres.shapes.OVAL, { x:6.8, y:-0.1, w:3.8, h:3.8, fill:{color:CYAN, transparency:92}, line:{color:CYAN, pt:0.8} });
s.addShape(pres.shapes.OVAL, { x:7.5, y:2.5, w:2.5, h:2.5, fill:{color:TEAL, transparency:85}, line:{color:TEAL, pt:1.2} });
// Top accent
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:5.8, h:0.1, fill:{color:TEAL}, line:{color:TEAL} });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0.1, w:0.08, h:5.52, fill:{color:"094545"}, line:{color:"094545"} });
s.addText("NERVE MUSCLE", { x:0.35, y:0.65, w:7, h:1.15, fontSize:52, bold:true, color:WHITE, fontFace:"Calibri", charSpacing:3, margin:0 });
s.addText("PHYSIOLOGY", { x:0.35, y:1.75, w:7, h:0.82, fontSize:44, bold:false, color:CYAN, fontFace:"Calibri", charSpacing:12, margin:0 });
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:2.68, w:5.0, h:0.055, fill:{color:LTEAL}, line:{color:LTEAL} });
s.addText("BHMS 1st Year • CBDC Syllabus • Human Physiology", { x:0.35, y:2.82, w:7, h:0.32, fontSize:11.5, color:GRAY, fontFace:"Calibri", margin:0 });
const topics = ["Nerve Fibre Types","Membrane Potential","Action Potential","NMJ & Synapse","Muscle Contraction"];
topics.forEach((t,i) => {
s.addShape(pres.shapes.OVAL, { x:0.35+i*1.45, y:3.35, w:0.1, h:0.1, fill:{color:CYAN}, line:{color:CYAN} });
s.addText(t, { x:0.52+i*1.45, y:3.32, w:1.35, h:0.28, fontSize:8.5, color:GRAY, fontFace:"Calibri", margin:0 });
});
s.addText("Orris Medical Education", { x:0.35, y:5.1, w:4, h:0.28, fontSize:9.5, color:TEAL, fontFace:"Calibri", margin:0 });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:5.55, w:10, h:0.075, fill:{color:TEAL}, line:{color:TEAL} });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 2 — SYLLABUS OVERVIEW
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "CBDC Syllabus — Nerve Muscle Physiology", "1st Year BHMS | Topics at a Glance");
const topics = [
{ num:"01", title:"Properties of Nerve Fibres", sub:"Excitability, conductivity, all-or-none law, refractory period", col:TEAL },
{ num:"02", title:"Classification of Nerve Fibres",sub:"Erlanger-Gasser (A,B,C) and Lloyd-Hunt classification", col:CYAN },
{ num:"03", title:"Resting Membrane Potential", sub:"Ion distribution, Nernst equation, Na⁺/K⁺ pump", col:ORANGE },
{ num:"04", title:"Action Potential", sub:"Generation, phases, propagation, saltatory conduction", col:PURPLE },
{ num:"05", title:"Neuromuscular Junction", sub:"Structure, ACh release, end plate potential, drugs", col:GREEN },
{ num:"06", title:"Muscle Contraction", sub:"Sliding filament theory, ECC, twitch, tetanus", col:RED },
{ num:"07", title:"Degeneration & Regeneration", sub:"Wallerian degeneration, nerve repair, Bands of Büngner", col:GOLD },
{ num:"08", title:"Smooth Muscle Physiology", sub:"Types, mechanism, differences from skeletal muscle", col:"2E86C1" },
];
topics.forEach((t, i) => {
const col = i < 4 ? 0 : 1;
const row = i % 4;
const x = 0.22 + col * 4.88;
const y = 1.0 + row * 1.14;
card(s, x, y, 4.65, 1.02, CARD);
s.addShape(pres.shapes.RECTANGLE, { x, y, w:0.1, h:1.02, fill:{color:t.col}, line:{color:t.col} });
s.addText(t.num, { x:x+0.18, y:y+0.08, w:0.5, h:0.38, fontSize:18, bold:true, color:t.col, fontFace:"Calibri", margin:0 });
s.addText(t.title, { x:x+0.7, y:y+0.08, w:3.85, h:0.35, fontSize:10.5, bold:true, color:WHITE, fontFace:"Calibri", margin:0 });
s.addText(t.sub, { x:x+0.7, y:y+0.54, w:3.85, h:0.38, fontSize:8.5, color:GRAY, fontFace:"Calibri", margin:0 });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 3 — PHYSIOLOGICAL PROPERTIES OF NERVE
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "Physiological Properties of Nerve Fibres", "Fundamental properties of excitable tissues");
const props = [
{ name:"Excitability", icon:"⚡", color:GOLD, desc:"Ability to respond to an adequate (threshold) stimulus. Basis of nerve signalling." },
{ name:"Conductivity", icon:"→", color:CYAN, desc:"Ability to propagate an electrical impulse along the nerve membrane without decrement." },
{ name:"All-or-None Law", icon:"◉", color:ORANGE, desc:"If stimulus ≥ threshold → full AP. If below threshold → no AP. No partial responses." },
{ name:"Rhythmicity", icon:"〰", color:GREEN, desc:"Ability to generate spontaneous, repetitive impulses (prominent in cardiac & smooth muscle)." },
{ name:"Contractility", icon:"↕", color:RED, desc:"Ability to shorten in response to stimulus. Characteristic of muscle fibres." },
{ name:"Tonicity", icon:"▣", color:PURPLE, desc:"State of partial, continuous contraction maintaining muscle tone at rest." },
];
props.forEach((p, i) => {
const col = i < 3 ? 0 : 1;
const row = i % 3;
const x = 0.22 + col * 4.9;
const y = 1.05 + row * 1.47;
card(s, x, y, 4.65, 1.3, CARD);
s.addShape(pres.shapes.RECTANGLE, { x, y, w:4.65, h:0.33, fill:{color:p.color}, line:{color:p.color} });
s.addText(p.icon + " " + p.name, { x:x+0.1, y:y+0.02, w:4.4, h:0.3, fontSize:11, bold:true, color:WHITE, fontFace:"Calibri", margin:0 });
s.addText(p.desc, { x:x+0.15, y:y+0.42, w:4.35, h:0.75, fontSize:9.5, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
// Refractory period box at bottom
s.addText("📌 Refractory Period: Absolute (~0.5–1 ms) — no response possible | Relative (~1–2 ms) — only stronger stimulus works", {
x:0.22, y:5.08, w:9.55, h:0.3, fontSize:8.5, color:GOLD, fontFace:"Calibri", italic:true, margin:0
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 4 — CLASSIFICATION OF NERVE FIBRES
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "Classification of Nerve Fibres", "Erlanger & Gasser Classification — based on diameter and conduction velocity");
card(s, 0.22, 1.0, 9.56, 3.98, CARD);
// Table header
const cols = ["Fibre", "Diameter (μm)", "Velocity (m/s)", "Myelination", "Function"];
const colW = [0.7, 1.65, 1.65, 1.55, 4.0];
const startX = 0.3;
let cx = startX;
cols.forEach((c, i) => {
s.addShape(pres.shapes.RECTANGLE, { x:cx, y:1.05, w:colW[i]-0.05, h:0.38, fill:{color:TEAL}, line:{color:TEAL} });
s.addText(c, { x:cx, y:1.06, w:colW[i]-0.05, h:0.35, fontSize:9, bold:true, color:WHITE, fontFace:"Calibri", align:"center", margin:0 });
cx += colW[i];
});
const rows = [
["Aα","13–20","70–120","Myelinated","Skeletal muscle efferent, proprioception (Ia, Ib)", TEAL],
["Aβ","6–12","30–70","Myelinated","Touch, pressure, vibration", CYAN],
["Aγ","3–6","15–30","Myelinated","Muscle spindle (fusimotor fibres)", "2E86C1"],
["Aδ","1–5","5–30","Lightly myelinated","Sharp/fast pain, cold, touch", ORANGE],
["B","1–3","3–15","Lightly myelinated","Preganglionic autonomic fibres", PURPLE],
["C","0.2–1","0.5–2","Unmyelinated","Slow/burning pain, warmth, postganglionic autonomic", RED],
];
rows.forEach((row, ri) => {
const y = 1.48 + ri * 0.42;
const rowBg = ri % 2 === 0 ? CARD : CARD2;
let cx2 = startX;
row.slice(0,5).forEach((cell, ci) => {
s.addShape(pres.shapes.RECTANGLE, { x:cx2, y, w:colW[ci]-0.05, h:0.38, fill:{color:rowBg}, line:{color:"1A3A4A", pt:0.5} });
const isFirst = ci === 0;
s.addText(cell, { x:cx2+0.04, y:y+0.05, w:colW[ci]-0.1, h:0.28, fontSize:isFirst?11:8.8, bold:isFirst, color:isFirst?row[5]:OFFWHITE, fontFace:"Calibri", align:isFirst?"center":"left", margin:0 });
cx2 += colW[ci];
});
});
// Lloyd-Hunt summary
card(s, 0.22, 5.06, 9.56, 0.38, "0A1E32");
s.addText("Lloyd-Hunt Classification (Afferents): Group I (Ia-muscle spindle, Ib-GTO) | Group II (secondary spindle) | Group III (Aδ-pain/cold) | Group IV (C-unmyelinated, slow pain)", {
x:0.35, y:5.1, w:9.3, h:0.28, fontSize:8.5, color:GOLD, fontFace:"Calibri", margin:0
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 5 — RESTING MEMBRANE POTENTIAL
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "Resting Membrane Potential (RMP)", "The electrical potential difference across an unstimulated nerve membrane");
// Left column — basis
card(s, 0.22, 1.0, 5.5, 4.42, CARD);
s.addText("Definition & Values", { x:0.4, y:1.08, w:5.1, h:0.35, fontSize:12.5, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const vals = [
["Nerve (neuron)", "−70 mV"],
["Skeletal muscle", "−80 to −90 mV"],
["Cardiac muscle", "−90 mV"],
["Smooth muscle", "−50 to −55 mV"],
];
vals.forEach(([k,v],i) => {
const y = 1.5 + i*0.45;
s.addShape(pres.shapes.RECTANGLE, { x:0.38, y, w:5.2, h:0.38, fill:{color:i%2===0?CARD:CARD2}, line:{color:CARD2} });
s.addText(k, { x:0.48, y:y+0.06, w:2.5, h:0.26, fontSize:9.5, color:GRAY, fontFace:"Calibri", margin:0 });
s.addText(v, { x:3.0, y:y+0.06, w:2.5, h:0.26, fontSize:12, bold:true, color:GOLD, fontFace:"Calibri", margin:0 });
});
s.addText("Basis of RMP", { x:0.4, y:3.38, w:5.1, h:0.35, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const basis = [
["1", "Unequal ion distribution", "High K⁺ & proteins inside; high Na⁺ & Cl⁻ outside"],
["2", "Selective permeability", "At rest: K⁺ permeability >> Na⁺ permeability (50–100×)"],
["3", "K⁺ diffuses out", "Interior becomes negative; equilibrium reached at E_K"],
["4", "Na⁺/K⁺-ATPase pump", "3 Na⁺ out / 2 K⁺ in → electrogenic contribution (~−4 mV)"],
];
basis.forEach(([n,bold,desc],i) => {
dot(s, 0.42, 3.83+i*0.37, CYAN);
s.addText(bold+": ", { x:0.6, y:3.8+i*0.37, w:1.7, h:0.28, fontSize:9, bold:true, color:LTEAL, fontFace:"Calibri", margin:0 });
s.addText(desc, { x:2.28, y:3.8+i*0.37, w:3.3, h:0.28, fontSize:9, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
// Right column — ion diagram
card(s, 5.9, 1.0, 3.88, 4.42, CARD2);
s.addText("Ion Distribution", { x:6.05, y:1.08, w:3.6, h:0.35, fontSize:12.5, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
// Outside box
s.addShape(pres.shapes.RECTANGLE, { x:6.0, y:1.5, w:3.7, h:1.08, fill:{color:"0A2535"}, line:{color:LTEAL, pt:1} });
s.addText("OUTSIDE (ECF)", { x:6.1, y:1.52, w:3.5, h:0.3, fontSize:9, bold:true, color:GRAY, fontFace:"Calibri", align:"center", margin:0 });
s.addText("Na⁺ 142 mEq/L • Cl⁻ 103 mEq/L • K⁺ 4 mEq/L", { x:6.05, y:1.85, w:3.65, h:0.28, fontSize:9, color:OFFWHITE, fontFace:"Calibri", align:"center", margin:0 });
// Membrane
s.addShape(pres.shapes.RECTANGLE, { x:6.0, y:2.62, w:3.7, h:0.38, fill:{color:TEAL}, line:{color:LTEAL, pt:1} });
s.addText("⬛ MEMBRANE (selectively permeable)", { x:6.05, y:2.65, w:3.65, h:0.28, fontSize:8.5, bold:true, color:WHITE, fontFace:"Calibri", align:"center", margin:0 });
// Inside box
s.addShape(pres.shapes.RECTANGLE, { x:6.0, y:3.04, w:3.7, h:1.08, fill:{color:"0A2535"}, line:{color:LTEAL, pt:1} });
s.addText("INSIDE (ICF) [ −70 mV ]", { x:6.1, y:3.06, w:3.5, h:0.3, fontSize:9, bold:true, color:GOLD, fontFace:"Calibri", align:"center", margin:0 });
s.addText("K⁺ 140 mEq/L • Proteins⁻ high • Na⁺ 14 mEq/L", { x:6.05, y:3.38, w:3.65, h:0.28, fontSize:9, color:OFFWHITE, fontFace:"Calibri", align:"center", margin:0 });
// Nernst equation
card(s, 5.9, 4.2, 3.88, 1.12, "0A1E2E");
s.addText("Nernst Equation", { x:6.08, y:4.25, w:3.6, h:0.28, fontSize:9.5, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
s.addText("E_ion = (RT/zF) × ln([ion]out / [ion]in)", { x:6.08, y:4.57, w:3.6, h:0.28, fontSize:10, color:GOLD, fontFace:"Calibri", italic:true, margin:0 });
s.addText("E_K = −94 mV | E_Na = +61 mV | Actual RMP = −70 mV (GHK equation)", { x:6.08, y:4.88, w:3.65, h:0.28, fontSize:8, color:GRAY, fontFace:"Calibri", margin:0 });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 6 — ACTION POTENTIAL
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "Action Potential (AP)", "Rapid, transient, self-propagating change in membrane potential");
// Left — phases description
card(s, 0.22, 1.0, 5.35, 4.42, CARD);
s.addText("Phases of Action Potential", { x:0.4, y:1.07, w:5.0, h:0.38, fontSize:12.5, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const phases = [
{ name:"Resting Phase", val:"−70 mV", color:GRAY, desc:"Na⁺ channels closed. Resting K⁺ leak channels open. Stable baseline." },
{ name:"Depolarisation", val:"−70→+35 mV", color:RED, desc:"Threshold (−55 mV) reached → voltage-gated Na⁺ channels OPEN → Na⁺ rushes in → rapid rise." },
{ name:"Overshoot", val:"+35 mV", color:ORANGE, desc:"Membrane potential exceeds 0 mV. Na⁺ channels begin to inactivate (h-gate closes)." },
{ name:"Repolarisation", val:"+35→−70 mV", color:GREEN, desc:"Voltage-gated K⁺ channels OPEN → K⁺ flows out → membrane potential falls." },
{ name:"Hyperpolarisation",val:"−70→−80 mV", color:PURPLE, desc:"K⁺ channels close slowly → brief dip below RMP (after-potential). Followed by return to −70 mV." },
];
phases.forEach((p, i) => {
const y = 1.54 + i * 0.75;
s.addShape(pres.shapes.RECTANGLE, { x:0.3, y, w:0.08, h:0.62, fill:{color:p.color}, line:{color:p.color} });
s.addText(p.name, { x:0.46, y:y+0.04, w:2.5, h:0.26, fontSize:9.5, bold:true, color:p.color, fontFace:"Calibri", margin:0 });
badge(s, 2.95, y+0.04, 1.48, 0.24, p.val, p.color, WHITE);
s.addText(p.desc, { x:0.46, y:y+0.32, w:4.95, h:0.3, fontSize:8.5, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
// Right — key values + propagation
card(s, 5.75, 1.0, 4.03, 2.18, CARD2);
s.addText("Key Values", { x:5.9, y:1.07, w:3.7, h:0.33, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const kvs = [
["RMP", "−70 mV"],
["Threshold", "−55 mV"],
["Peak (overshoot)", "+30 to +40 mV"],
["AP duration", "~1 ms (nerve)"],
["Abs. refractory", "~0.5–1 ms"],
["Rel. refractory", "~1–2 ms"],
];
kvs.forEach(([k,v],i) => {
s.addText(k, { x:5.88, y:1.47+i*0.27, w:2.0, h:0.24, fontSize:9, color:GRAY, fontFace:"Calibri", margin:0 });
s.addText(v, { x:7.85, y:1.47+i*0.27, w:1.85, h:0.24, fontSize:9.5, bold:true, color:GOLD, fontFace:"Calibri", margin:0 });
});
card(s, 5.75, 3.28, 4.03, 2.14, CARD2);
s.addText("Propagation", { x:5.9, y:3.35, w:3.7, h:0.33, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const propItems = [
["Continuous conduction", "Unmyelinated fibres — slow (~0.5–2 m/s). Current flows along entire axon membrane."],
["Saltatory conduction", "Myelinated fibres — AP jumps from node to node of Ranvier. Fast (70–120 m/s). Energy-efficient."],
["All-or-None", "AP is full amplitude or absent. Intensity coded by frequency, not amplitude."],
];
propItems.forEach(([title, desc],i) => {
dot(s, 5.88, 3.82+i*0.5, CYAN);
s.addText(title+": ", { x:6.06, y:3.79+i*0.5, w:1.95, h:0.26, fontSize:9, bold:true, color:LTEAL, fontFace:"Calibri", margin:0 });
s.addText(desc, { x:5.88, y:4.03+i*0.5, w:3.82, h:0.26, fontSize:8.5, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 7 — NEUROMUSCULAR JUNCTION
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "Neuromuscular Junction (NMJ)", "Synapse between motor neuron axon terminal and skeletal muscle fibre");
// Structure card
card(s, 0.22, 1.0, 4.5, 4.42, CARD);
s.addText("Structure of NMJ", { x:0.4, y:1.07, w:4.2, h:0.35, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const structItems = [
["Presynaptic terminal", "Axon terminal / bouton; ~300,000 synaptic vesicles; mitochondria (ATP for ACh synthesis)"],
["Synaptic vesicles", "Each contains ~10,000 molecules of Acetylcholine (ACh)"],
["Synaptic cleft", "20–30 nm wide; contains Acetylcholinesterase (AChE)"],
["Motor end plate", "Postsynaptic membrane with junctional folds (subneural clefts)"],
["ACh receptors", "Nicotinic receptors (ligand-gated ion channels) at the junctional folds"],
["Voltage-gated Na⁺", "Channels in subneural clefts — generate muscle AP on stimulation"],
];
structItems.forEach(([title,desc],i) => {
const y = 1.5 + i*0.65;
s.addShape(pres.shapes.RECTANGLE, { x:0.32, y, w:0.07, h:0.52, fill:{color:i%2===0?TEAL:ORANGE}, line:{color:i%2===0?TEAL:ORANGE} });
s.addText(title, { x:0.48, y:y+0.04, w:4.1, h:0.22, fontSize:9.5, bold:true, color:i%2===0?CYAN:GOLD, fontFace:"Calibri", margin:0 });
s.addText(desc, { x:0.48, y:y+0.26, w:4.1, h:0.28, fontSize:8.5, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
// Events card
card(s, 4.9, 1.0, 4.88, 4.42, CARD2);
s.addText("Events at NMJ — Step by Step", { x:5.05, y:1.07, w:4.6, h:0.35, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const steps = [
["1", TEAL, "AP arrives at axon terminal"],
["2", CYAN, "Voltage-gated Ca²⁺ channels open → Ca²⁺ enters (100× rise)"],
["3", GREEN, "Ca²⁺ → exocytosis of ~125 ACh vesicles into cleft"],
["4", ORANGE, "ACh binds nicotinic receptors on motor end plate"],
["5", PURPLE, "Na⁺/K⁺ flow → End Plate Potential (EPP) generated"],
["6", RED, "EPP → threshold → Muscle Action Potential"],
["7", GOLD, "AChE hydrolyses ACh → acetate + choline; choline recycled"],
];
steps.forEach(([n,col,text],i) => {
const y = 1.52 + i*0.55;
s.addShape(pres.shapes.OVAL, { x:5.05, y, w:0.32, h:0.32, fill:{color:col}, line:{color:col} });
s.addText(n, { x:5.05, y, w:0.32, h:0.32, fontSize:10, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
// Arrow
if (i<6) s.addText("↓", { x:5.14, y:y+0.32, w:0.18, h:0.2, fontSize:9, color:col, fontFace:"Calibri", align:"center", margin:0 });
s.addText(text, { x:5.45, y:y+0.03, w:4.25, h:0.3, fontSize:9.5, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 8 — DRUGS AT NMJ & MYASTHENIA GRAVIS
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "Drugs at NMJ & Clinical Disorders", "Pharmacology of neuromuscular junction");
// Drugs table
card(s, 0.22, 1.0, 9.55, 2.75, CARD);
s.addText("Drugs Acting on NMJ", { x:0.4, y:1.07, w:9.2, h:0.35, fontSize:12.5, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const drugCols = ["Drug", "Mechanism", "Effect", "Clinical Use"];
const drugColW = [2.2, 2.8, 2.4, 2.3];
let dcx = 0.3;
drugCols.forEach((h,i) => {
s.addShape(pres.shapes.RECTANGLE, { x:dcx, y:1.48, w:drugColW[i]-0.06, h:0.3, fill:{color:TEAL}, line:{color:TEAL} });
s.addText(h, { x:dcx+0.04, y:1.49, w:drugColW[i]-0.1, h:0.28, fontSize:9, bold:true, color:WHITE, fontFace:"Calibri", align:"center", margin:0 });
dcx += drugColW[i];
});
const drugs = [
["Neostigmine / Physostigmine", "Inhibits AChE (reversible)", "↑ ACh in cleft → spasm", "Myasthenia Gravis Tx"],
["Succinylcholine", "Depolarising block (nicotinic agonist)", "Flaccid paralysis (sustained depol.)", "Anaesthetic muscle relaxant"],
["Curare (tubocurarine)", "Competitive nicotinic antagonist", "Non-depolarising paralysis", "Surgical muscle relaxation"],
["Organophosphates", "Irreversibly inhibit AChE", "Cholinergic crisis, death", "Insecticides, nerve agents"],
["Botulinum toxin", "Blocks ACh vesicle release", "Flaccid paralysis", "Cosmetic, spasticity, strabismus"],
];
drugs.forEach((row, ri) => {
const y = 1.82 + ri * 0.36;
const rowBg = ri%2===0?CARD:CARD2;
let cx2 = 0.3;
row.forEach((cell,ci) => {
s.addShape(pres.shapes.RECTANGLE, { x:cx2, y, w:drugColW[ci]-0.06, h:0.33, fill:{color:rowBg}, line:{color:"1A3A4A",pt:0.5} });
s.addText(cell, { x:cx2+0.06, y:y+0.05, w:drugColW[ci]-0.12, h:0.24, fontSize:8.5, bold:ci===0, color:ci===0?GOLD:OFFWHITE, fontFace:"Calibri", margin:0 });
cx2 += drugColW[ci];
});
});
// Myasthenia Gravis
card(s, 0.22, 3.88, 9.55, 1.5, "0A1E2E");
s.addShape(pres.shapes.RECTANGLE, { x:0.22, y:3.88, w:9.55, h:0.35, fill:{color:RED}, line:{color:RED} });
s.addText("⚠ Myasthenia Gravis — Clinical Pearl", { x:0.35, y:3.9, w:9.3, h:0.3, fontSize:11, bold:true, color:WHITE, fontFace:"Calibri", margin:0 });
const mgItems = [
"Autoimmune disease: Antibodies against NICOTINIC ACh receptors",
"↓ Functional receptors → ↓ EPP amplitude → Muscle weakness & fatigability",
"Hallmark: Weakness WORSE with activity, improves with rest",
"Treatment: Neostigmine (anticholinesterase) | Thymectomy | Immunosuppressants | Anti-CD20",
];
mgItems.forEach((txt,i) => {
dot(s, 0.35, 4.32+i*0.27, RED);
s.addText(txt, { x:0.52, y:4.29+i*0.27, w:9.15, h:0.25, fontSize:9, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 9 — MUSCLE CONTRACTION
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "Skeletal Muscle Contraction", "Sliding Filament Theory & Excitation-Contraction Coupling");
// Left — Sarcomere structure
card(s, 0.22, 1.0, 4.65, 4.42, CARD);
s.addText("Sarcomere — Functional Unit", { x:0.4, y:1.07, w:4.3, h:0.35, fontSize:11.5, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const sarcomere = [
["Sarcomere", "Region between two Z-lines; basic contractile unit"],
["Thick filaments", "Myosin — has globular head (ATPase activity)"],
["Thin filaments", "Actin + Troponin + Tropomyosin"],
["A band", "Dark band; contains thick (+ thin) filaments; CONSTANT width"],
["I band", "Light band; only thin filaments; SHORTENS during contraction"],
["H zone", "Only thick filaments in centre; SHORTENS during contraction"],
["Z line", "Anchors thin filaments; defines sarcomere boundary"],
["M line", "Centre of sarcomere; connects thick filaments"],
];
sarcomere.forEach(([term,def],i) => {
const y = 1.5 + i*0.48;
const bg = i%2===0?CARD:CARD2;
s.addShape(pres.shapes.RECTANGLE, { x:0.3, y, w:4.48, h:0.42, fill:{color:bg}, line:{color:bg} });
s.addText(term, { x:0.4, y:y+0.08, w:1.6, h:0.26, fontSize:9, bold:true, color:LTEAL, fontFace:"Calibri", margin:0 });
s.addText(def, { x:2.05, y:y+0.08, w:2.6, h:0.3, fontSize:8.5, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
// Right — ECC + Sliding Filament
card(s, 5.05, 1.0, 4.73, 2.12, CARD2);
s.addText("Excitation-Contraction Coupling (ECC)", { x:5.2, y:1.07, w:4.5, h:0.35, fontSize:11, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const ecc = [
"Muscle AP → T-tubules (transverse tubules)",
"T-tubules → activate Dihydropyridine receptors",
"DHP receptors → open Ryanodine receptors on SR",
"Ca²⁺ released from Sarcoplasmic Reticulum",
"Ca²⁺ binds Troponin C → tropomyosin moves",
"Actin binding sites EXPOSED",
"Myosin heads bind actin → cross-bridge cycle",
];
ecc.forEach((step,i) => {
dot(s, 5.2, 1.5+i*0.27, i===5?GREEN:TEAL);
s.addText(step, { x:5.38, y:1.47+i*0.27, w:4.3, h:0.24, fontSize:8.8, color:i===5?GOLD:OFFWHITE, fontFace:"Calibri", bold:i===5, margin:0 });
});
card(s, 5.05, 3.22, 4.73, 2.2, CARD2);
s.addText("Cross-Bridge Cycle (Sliding Filament)", { x:5.2, y:3.29, w:4.5, h:0.33, fontSize:11, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const cb = [
["Step 1","Myosin head (ADP+Pi) attaches to ACTIN — cross-bridge formed"],
["Step 2","POWER STROKE — head pivots 45° → actin pulled → sarcomere shortens"],
["Step 3","ATP binds myosin → head DETACHES from actin (rigor mortis = no ATP)"],
["Step 4","ATP hydrolysis → ADP + Pi; myosin head returns to original position (cocked)"],
["Step 5","Cycle repeats as long as Ca²⁺ and ATP are available"],
];
cb.forEach(([n,desc],i) => {
badge(s, 5.18, 3.68+i*0.32, 0.52, 0.22, n, i===1?RED:TEAL, WHITE);
s.addText(desc, { x:5.78, y:3.67+i*0.32, w:3.92, h:0.28, fontSize:8.5, color:i===1?GOLD:OFFWHITE, fontFace:"Calibri", bold:i===1, margin:0 });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 10 — MUSCLE MECHANICS
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "Muscle Mechanics & Types of Contraction", "Twitch, summation, tetanus, and motor unit");
// Contraction types
card(s, 0.22, 1.0, 4.65, 2.08, CARD);
s.addText("Types of Contraction", { x:0.4, y:1.07, w:4.3, h:0.33, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const contTypes = [
["Isotonic", GREEN, "Muscle shortens; tension remains constant. E.g., lifting a weight."],
["Isometric", ORANGE, "Tension develops; no shortening. E.g., pushing a wall."],
["Eccentric", PURPLE, "Muscle lengthens while generating tension. E.g., lowering a weight."],
];
contTypes.forEach(([n,col,d],i) => {
s.addShape(pres.shapes.RECTANGLE, { x:0.3, y:1.45+i*0.5, w:4.5, h:0.42, fill:{color:CARD2}, line:{color:CARD2} });
badge(s, 0.35, 1.5+i*0.5, 0.95, 0.28, n, col, WHITE);
s.addText(d, { x:1.38, y:1.52+i*0.5, w:3.35, h:0.28, fontSize:8.8, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
// Twitch-Tetanus
card(s, 0.22, 3.18, 4.65, 2.25, CARD);
s.addText("Twitch → Summation → Tetanus", { x:0.4, y:3.25, w:4.3, h:0.33, fontSize:11.5, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const tetItems = [
["Twitch", GRAY, "Single AP → single brief contraction & relaxation cycle"],
["Summation", ORANGE, "2nd stimulus before relaxation → greater force (temporal summation)"],
["Unfused Tetanus", GREEN, "~30–40 Hz → sustained but incomplete (serrated) contraction"],
["Fused Tetanus", RED, "~60–80 Hz → smooth, maximal, sustained contraction"],
];
tetItems.forEach(([n,col,d],i) => {
dot(s, 0.35, 3.68+i*0.38, col);
s.addText(n+":", { x:0.52, y:3.65+i*0.38, w:1.45, h:0.28, fontSize:9.5, bold:true, color:col, fontFace:"Calibri", margin:0 });
s.addText(d, { x:1.95, y:3.65+i*0.38, w:2.85, h:0.28, fontSize:8.8, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
// Motor Unit + Fibre types
card(s, 5.05, 1.0, 4.73, 2.18, CARD2);
s.addText("Motor Unit", { x:5.2, y:1.07, w:4.5, h:0.33, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const muItems = [
"1 motor neuron + ALL muscle fibres it innervates",
"Small motor units (e.g., eye): 3–6 fibres → fine control",
"Large motor units (quadriceps): 1000s → coarse/powerful",
"Recruitment: more motor units = greater force",
"Size principle: small (slow) units recruited first",
];
muItems.forEach((txt,i) => {
dot(s, 5.2, 1.52+i*0.3, TEAL);
s.addText(txt, { x:5.38, y:1.49+i*0.3, w:4.3, h:0.28, fontSize:9, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
// Fibre types table
card(s, 5.05, 3.28, 4.73, 2.14, CARD2);
s.addText("Muscle Fibre Types", { x:5.2, y:3.35, w:4.5, h:0.33, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const ftHeader = ["Feature","Type I (Slow)","Type II (Fast)"];
const ftColW = [1.4, 1.5, 1.6];
let ftx = 5.12;
ftHeader.forEach((h,i) => {
s.addShape(pres.shapes.RECTANGLE, { x:ftx, y:3.74, w:ftColW[i]-0.05, h:0.28, fill:{color:TEAL}, line:{color:TEAL} });
s.addText(h, { x:ftx, y:3.75, w:ftColW[i]-0.05, h:0.25, fontSize:8, bold:true, color:WHITE, fontFace:"Calibri", align:"center", margin:0 });
ftx += ftColW[i];
});
const ftRows = [
["Speed","Slow","Fast"],
["Metabolism","Oxidative","Glycolytic"],
["Fatigue","Resistant","Fatigable"],
["Colour","Red","White"],
["Function","Posture/endurance","Power/sprinting"],
];
ftRows.forEach((row,ri) => {
const y = 4.06 + ri*0.26;
const bg = ri%2===0?CARD:CARD2;
let cx3 = 5.12;
row.forEach((cell,ci) => {
s.addShape(pres.shapes.RECTANGLE, { x:cx3, y, w:ftColW[ci]-0.05, h:0.24, fill:{color:bg}, line:{color:"1A3A4A",pt:0.4} });
s.addText(cell, { x:cx3+0.04, y:y+0.04, w:ftColW[ci]-0.08, h:0.18, fontSize:8, color:ci===0?LTEAL:OFFWHITE, fontFace:"Calibri", bold:ci===0, margin:0 });
cx3 += ftColW[ci];
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 11 — DEGENERATION & REGENERATION
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "Degeneration & Regeneration of Nerve Fibres", "Wallerian degeneration and peripheral nerve repair");
card(s, 0.22, 1.0, 5.55, 4.42, CARD);
s.addText("Wallerian Degeneration (Distal to cut)", { x:0.4, y:1.07, w:5.2, h:0.35, fontSize:12, bold:true, color:ORANGE, fontFace:"Calibri", margin:0 });
const wdEvents = [
["Day 1–3", RED, "Axon and myelin disintegrate DISTAL to the injury site"],
["Day 3–5", ORANGE, "Schwann cells proliferate; phagocytose axon/myelin debris"],
["Day 5–7", GOLD, "Macrophages assist in clearance of debris"],
["Day 7+", GREEN, "Empty endoneurial tube (Schwann cell columns) remains"],
["Cell body", PURPLE, "Chromatolysis: Nissl substance dissolves, nucleus displaced peripherally"],
];
wdEvents.forEach(([time,col,desc],i) => {
const y = 1.5 + i*0.6;
badge(s, 0.35, y+0.08, 0.85, 0.25, time, col, WHITE);
s.addText(desc, { x:1.28, y:y+0.05, w:4.35, h:0.45, fontSize:9.5, color:OFFWHITE, fontFace:"Calibri", margin:0 });
if(i<4) s.addShape(pres.shapes.RECTANGLE, { x:0.7, y:y+0.38, w:0.02, h:0.22, fill:{color:col}, line:{color:col} });
});
s.addText("Regeneration", { x:0.4, y:4.58, w:5.2, h:0.3, fontSize:11, bold:true, color:GREEN, fontFace:"Calibri", margin:0 });
s.addText("Rate: ~1–3 mm/day (1 inch/month) | PNS can regenerate; CNS generally cannot | Guided by Bands of Büngner (Schwann cell tubes)", {
x:0.4, y:4.9, w:5.2, h:0.3, fontSize:8.5, color:GRAY, fontFace:"Calibri", margin:0
});
// Right — Seddon classification
card(s, 5.95, 1.0, 3.83, 4.42, CARD2);
s.addText("Seddon's Classification of Nerve Injury", { x:6.05, y:1.07, w:3.6, h:0.45, fontSize:11, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const seddon = [
{ name:"Neuropraxia", col:GREEN, desc:"Conduction block only. Axon & endoneurium intact. No structural damage.", recovery:"Complete recovery in days–weeks." },
{ name:"Axonotmesis", col:ORANGE, desc:"Axon cut but endoneurium intact. Wallerian degeneration occurs distally.", recovery:"Good recovery (months). Guided by intact endoneurium." },
{ name:"Neurotmesis", col:RED, desc:"Complete nerve transection. All layers severed (axon + myelin + connective tissue).", recovery:"Poor without surgery. Requires nerve repair/grafting." },
];
seddon.forEach((item,i) => {
const y = 1.6 + i*1.3;
card(s, 6.0, y, 3.7, 1.18, CARD);
s.addShape(pres.shapes.RECTANGLE, { x:6.0, y, w:3.7, h:0.32, fill:{color:item.col}, line:{color:item.col} });
s.addText(item.name, { x:6.08, y:y+0.02, w:3.55, h:0.28, fontSize:11, bold:true, color:WHITE, fontFace:"Calibri", margin:0 });
s.addText(item.desc, { x:6.08, y:y+0.38, w:3.55, h:0.42, fontSize:9, color:OFFWHITE, fontFace:"Calibri", margin:0 });
s.addText("↳ "+item.recovery, { x:6.08, y:y+0.82, w:3.55, h:0.28, fontSize:8.5, color:GOLD, fontFace:"Calibri", italic:true, margin:0 });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 12 — SMOOTH MUSCLE
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: NAVY };
hdr(s, "Smooth Muscle Physiology", "Involuntary muscle found in visceral organs");
card(s, 0.22, 1.0, 4.65, 2.1, CARD);
s.addText("Types of Smooth Muscle", { x:0.4, y:1.07, w:4.3, h:0.33, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const smTypes = [
{ name:"Multi-unit", col:TEAL, desc:"Each fibre independently innervated. E.g., ciliary muscle, iris, piloerector muscles. Neural control dominant." },
{ name:"Unitary (Visceral/Single-unit)", col:ORANGE, desc:"Fibres connected by GAP JUNCTIONS → contract as a unit. Spontaneous activity. E.g., GI tract, uterus, ureter, bladder." },
];
smTypes.forEach(({name,col,desc},i) => {
const y = 1.48 + i*0.75;
s.addShape(pres.shapes.RECTANGLE, { x:0.3, y, w:4.48, h:0.62, fill:{color:CARD2}, line:{color:CARD2} });
badge(s, 0.35, y+0.1, 1.5, 0.26, name, col, WHITE);
s.addText(desc, { x:1.92, y:y+0.07, w:2.75, h:0.52, fontSize:8.8, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
card(s, 0.22, 3.18, 4.65, 2.24, CARD);
s.addText("Contraction Mechanism", { x:0.4, y:3.25, w:4.3, h:0.33, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const smMech = [
"Ca²⁺ enters from ECF (L-type channels) or released from SR",
"Ca²⁺ + Calmodulin → Ca-Calmodulin complex",
"Activates Myosin Light Chain Kinase (MLCK)",
"MLCK phosphorylates myosin → cross-bridge cycling",
"Relaxation: MLCK inactivated; myosin phosphatase dephosphorylates",
"NO TROPONIN in smooth muscle (unlike skeletal)",
];
smMech.forEach((txt,i) => {
dot(s, 0.35, 3.68+i*0.3, i===5?RED:TEAL);
s.addText(txt, { x:0.52, y:3.65+i*0.3, w:4.25, h:0.28, fontSize:8.8, bold:i===5, color:i===5?GOLD:OFFWHITE, fontFace:"Calibri", margin:0 });
});
// Comparison table
card(s, 5.05, 1.0, 4.73, 4.42, CARD2);
s.addText("Skeletal vs Smooth Muscle", { x:5.2, y:1.07, w:4.5, h:0.33, fontSize:12, bold:true, color:CYAN, fontFace:"Calibri", margin:0 });
const compHeader = ["Feature","Skeletal","Smooth"];
const compColW = [1.55, 1.55, 1.55];
let compX = 5.1;
compHeader.forEach((h,i) => {
s.addShape(pres.shapes.RECTANGLE, { x:compX, y:1.46, w:compColW[i]-0.05, h:0.3, fill:{color:TEAL}, line:{color:TEAL} });
s.addText(h, { x:compX, y:1.47, w:compColW[i]-0.05, h:0.28, fontSize:8.5, bold:true, color:WHITE, fontFace:"Calibri", align:"center", margin:0 });
compX += compColW[i];
});
const compRows = [
["Control","Voluntary","Involuntary"],
["Speed","Fast","Slow"],
["Troponin","Present","ABSENT"],
["Trigger","Ca²⁺+Troponin","Ca²⁺+Calmodulin/MLCK"],
["T-tubules","Present","Absent (caveolae)"],
["SR","Well developed","Less developed"],
["Striations","Yes","No"],
["Nuclei","Multi-nucleate","Single nucleus"],
["Fatigue","Fatigable","Resistant"],
["Regulation","Neural only","Neural+hormonal+local"],
];
compRows.forEach((row,ri) => {
const y = 1.8 + ri*0.36;
const bg = ri%2===0?CARD:CARD2;
let cx4 = 5.1;
row.forEach((cell,ci) => {
s.addShape(pres.shapes.RECTANGLE, { x:cx4, y, w:compColW[ci]-0.05, h:0.32, fill:{color:bg}, line:{color:"1A3A4A",pt:0.4} });
const isHighlight = (cell==="ABSENT"||cell==="Yes"||cell==="No");
s.addText(cell, { x:cx4+0.04, y:y+0.06, w:compColW[ci]-0.08, h:0.22, fontSize:8, bold:ci===0||isHighlight, color:ci===0?LTEAL:(isHighlight?RED:OFFWHITE), fontFace:"Calibri", margin:0 });
cx4 += compColW[ci];
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 13 — SUMMARY / KEY TAKEAWAYS
// ═══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: DARKNAVY };
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:0.09, fill:{color:TEAL}, line:{color:TEAL} });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:5.55, w:10, h:0.075, fill:{color:TEAL}, line:{color:TEAL} });
// Decorative
s.addShape(pres.shapes.OVAL, { x:7.5, y:3.0, w:3.5, h:3.5, fill:{color:TEAL, transparency:91}, line:{color:TEAL, pt:1} });
s.addText("KEY TAKEAWAYS", { x:0.35, y:0.18, w:9.2, h:0.5, fontSize:22, bold:true, color:WHITE, fontFace:"Calibri", charSpacing:5, margin:0 });
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:0.68, w:3.8, h:0.05, fill:{color:CYAN}, line:{color:CYAN} });
const takeaways = [
{ topic:"RMP", val:"−70 mV (nerve); maintained by Na⁺/K⁺ pump + K⁺ permeability", col:TEAL },
{ topic:"Action Potential", val:"Threshold −55 mV; Na⁺ in (depol.) → K⁺ out (repol.); All-or-None", col:CYAN },
{ topic:"Saltatory Conduction",val:"AP jumps node to node in myelinated fibres; 70–120 m/s", col:GREEN },
{ topic:"Nerve Fibre Types", val:"Aα fastest (70–120 m/s); C slowest (0.5–2 m/s); B = preganglionic autonomic", col:ORANGE },
{ topic:"NMJ Transmitter", val:"Acetylcholine → nicotinic receptors → EPP → Muscle AP", col:PURPLE },
{ topic:"ECC Messenger", val:"Ca²⁺ released from SR → binds Troponin C → exposes actin sites", col:RED },
{ topic:"Sliding Filament", val:"Myosin heads attach to actin → power stroke → sarcomere shortens; ATP needed", col:GOLD },
{ topic:"Smooth Muscle", val:"No troponin; Ca²⁺ + calmodulin → MLCK → myosin phosphorylation → contraction", col:"2E86C1" },
];
takeaways.forEach((t, i) => {
const col = i < 4 ? 0 : 1;
const row = i % 4;
const x = 0.22 + col * 4.9;
const y = 0.82 + row * 1.17;
card(s, x, y, 4.65, 1.05, CARD);
s.addShape(pres.shapes.RECTANGLE, { x, y, w:0.09, h:1.05, fill:{color:t.col}, line:{color:t.col} });
s.addText(t.topic, { x:x+0.2, y:y+0.1, w:4.3, h:0.3, fontSize:10.5, bold:true, color:t.col, fontFace:"Calibri", margin:0 });
s.addText(t.val, { x:x+0.2, y:y+0.44, w:4.3, h:0.52, fontSize:9, color:OFFWHITE, fontFace:"Calibri", margin:0 });
});
}
// ─── WRITE ────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/nerve-muscle-ppt/Nerve_Muscle_Physiology_BHMS.pptx" })
.then(() => console.log("✅ Done: Nerve_Muscle_Physiology_BHMS.pptx"))
.catch(err => { console.error("❌", err); process.exit(1); });
cd /home/daytona/workspace/nerve-muscle-ppt && node create_pptx.js 2>&1
Nerve Muscle Physiology BHMS
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title Slide — Bold typographic cover with decorative neural elements |
| 2 | CBDC Syllabus Overview — 8 numbered topic cards at a glance |
| 3 | Physiological Properties — 6 properties (excitability, conductivity, all-or-none, etc.) |
| 4 | Classification of Nerve Fibres — Complete Erlanger-Gasser table (Aα, Aβ, Aγ, Aδ, B, C) + Lloyd-Hunt |
| 5 | Resting Membrane Potential — Values table, ion distribution diagram, Nernst equation |
| 6 | Action Potential — All 5 phases with ion mechanisms + key numerical values + propagation |
| 7 | Neuromuscular Junction — Structure + 7-step event sequence (ACh release to AChE destruction) |
| 8 | Drugs at NMJ & Myasthenia Gravis — Drug table (neostigmine, curare, botox, etc.) + MG clinical pearl |
| 9 | Muscle Contraction — Sarcomere anatomy + ECC steps + cross-bridge cycle |
| 10 | Muscle Mechanics — Isotonic/isometric/eccentric + twitch/tetanus + motor unit + fibre types |
| 11 | Degeneration & Regeneration — Wallerian degeneration timeline + Seddon's classification |
| 12 | Smooth Muscle — Types, contraction mechanism (MLCK pathway), full comparison table vs. skeletal |
| 13 | Key Takeaways — 8-point summary cards for quick revision |