Hey I want to Crrate ppt for my fmt seminar MBBS third year Can u make it ready to present If I give you content to you
Overview Introduction Features Toxic principle Mechanism of action Clinical features Management Autopsy findings Medicolegal importance
Overview Introduction Features Toxic principle Mechanism of action Clinical features Management Autopsy findings Medicolegal importance Introduction It is a organic poisonous plant Gastrointestinal irritant Botanical name - Ricinus communis Common name - Castor , arandi Features Tall plant & Grows all over in India , especially in waste lands Leaves - Lobate with toothed margins Fruit - 1.2 to 2.5 cm long, Globular, three-lobed, softly spiny, blue-green or rose-red when immature, brown and bristly when ripe and dry. Seeds -Seeds are variable, smooth, flattened-oval in shape And are of two size large and small Large seeds - mottled, dark-brown in color With shiny hard seed cover ( pericarp ) small seeds - 1-2 cm long 0.8 cm broad in size Resembles croton seeds Toxic principle Entire plant is toxic but seeds are more toxic containing toxalbumen ricin, a water-soluble glycoprotein (highest level in the seeds), and a powerful allergen . The seeds are rich in a purgative oil, which is pale-yellow with a faint odour and acrid taste. The oil extract of the seeds has an acid called ricinoleic acid and the left over cake has the toxalbumin called ricin . Unbroken seeds - non poisonous when swallowed or cooked Castor oil - non poisonous Crushed seeds - poisonous can be in the form of a powder, mist or pellet Toxalbumin or phytotoxin is a toxic protein that disable ribosomes and thereby inhibit protein synthesis, and present in the plants like in castor, croton or rati. • It is antigenie in nature, agglutinates red cells, causes hemolysis and cell destruction. Toxalbumins are similar in structure to the toxins found in cholera, tetanus, diphtheria, pseudomonas and botulinum; and their physiological and toxic properties are similar to those of viperine snake venom. Mechanism of action Ricin has 2 polypeptide chains ( A and B) Connected by Disulfide bond In GIT , Chain B binds the cell surface & Chain A enters into cytoplasm Chain A acts on 60S ribosomal unit of cell and disrupt Protein synthesis It is antigenic in nature , agglutinates red cells , causes hemolysis and cell destruction . Basic Structure Ricin is a toxalbumin composed of two polypeptide chains: * A chain (active/toxic component) * B chain (binding component) These are linked by a disulfide bond. ⸻ 🔹 Stepwise Mechanism 1. Binding to Cell Surface * The B chain binds to galactose-containing receptors on the cell membrane (glycoproteins and glycolipids). ⸻ 2. Cell Entry * After binding, ricin enters the cell via endocytosis. * It is then transported through: * Endosomes → Golgi apparatus → Endoplasmic reticulum (ER) ⸻ 3. Translocation * In the ER, the A chain separates and translocates into the cytosol. ⸻ 4. Inhibition of Protein Synthesis (Key Step) * The A chain inactivates ribosomes by damaging the 28S rRNA of the 60S ribosomal subunit. 👉 This leads to: * Irreversible inhibition of protein synthesis ⸻ 5. Cell Death * Due to failure of protein synthesis, the cell cannot survive, resulting in cell death (cytotoxic effect). Clinical features Ricin can be absorbed through inhalation , ingestion, injection and through skin contact . Dust of the seeds may cause- rwatering of the eyes, conjunctivitis, sneezing, acute nasal inflammation, headache, pharyngitis, asthmatic bronchitis, dermatitis and gastric upset. Inhalation exposure- Redness and pain in the eye, throat, Dyspnea Wheezing Respiratory distress Fever Cough Tightness in chest Sweating Pulmonary edema Oral Ingestion - When crushed seeds are ingested, it produces following clinical features: • Abdominal pain • Vomiting and diarrhea with or without blood (hematemesis and melena) • Dehydration • Circulatory collapse • Muscular pain and cramps in limbs • Convulsions • Drowsiness • Delirium jaundice haendlyess • Hepatic failure Oliguria Uremia Death may be due to multiorgan failure or cardiovascular collapse. Injection manifestation - Pain at injection site, erythema, induration or localized necrosis Muscular pain Capillary leak syndrome Circulatory collapse Convulsions Multiorgan failure Respiratory failure Fatal Dose • 5-10 seeds • 1 mg/kg body weight for Ricin • Fatal period: 2 days to few days. Management No antidote In case of ingestion: - Gastric lavage - Emetics and demulcents - Administration of glucose and saline - 2-5 g of sodium bicarbonate is given 8 hourly by mouth - Blood transfusion may be needed in some patients OR Gastric lavage and administration of activated charcoal. • Supportive treatment consists of management of shock, correction of electrolyte abnormalities and treatment of convulsion. Autopsy findings • GIT- mucosa is congested, softened and inflamed with occasional erosions and submucous hemorrhages. • Fragments of seeds in the stomach and intestines. • Dilation of heart and hemorrhages in the pleura. • Edema and congestion of liver, kidneys, spleen and lungs. Medicolegal importance • • Accidental poisoning may occur especially in children while playing or exploring the plant and seeds. • Ricin is used for homicidal purpose. • Used to procure criminal abortion. • Can cause anaphylactic type of hypersensitivity in humans. • The pulp of seed contains allergenic glycoprotein, which may cause dermatitis, rhinitis, asthma, and conjunctivitis in allergic individuals. • Potential bioweapen: Because of easy availability and toxicity, ricin has been classified by the Center for Disease Control and Prevention (CDC) as a category B biological weapon. • In 1978, Georgi Markov, died after he was attacked by a man with an umbrella, which was rigged to inject ricin pellet under Markov's skin. Laboratory Diagnosis + Liquid chromatography-mass spectrometry and immunoassays. * Ricinine, an alkaloid can be detected in serum and unne. Comprehensive untargeted urine drug screening testing is highly valuable. • Ricin-antibody conjugates can be detected in surviving patients after 2 weeks. This is the contents Use this and make a good ppt Correct and Easy to understand
ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace/
mkdir -p /home/daytona/workspace/ricin-ppt
~/ricin-ppt/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Ricin Poisoning - FMT Seminar";
pres.author = "MBBS Third Year";
// ─── COLOR PALETTE ────────────────────────────────────────────────────────────
// Deep forest green dominant, cream accent, red warning, gold highlight
const C = {
darkGreen: "1A3C2E", // dominant dark bg
midGreen: "2D6A4F", // section header bg
lightGreen: "40916C", // accent bars
cream: "F8F4E8", // body text / card bg
offWhite: "FAFAFA",
gold: "D4A017", // accent / highlight
red: "C0392B", // warning / fatal
charcoal: "2C2C2C", // dark text on light bg
white: "FFFFFF",
mutedGray: "B0B0B0",
};
// ─── HELPERS ──────────────────────────────────────────────────────────────────
function titleSlide(slide) {
// full bg
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });
// decorative left bar
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.35, h: 5.625, fill: { color: C.lightGreen } });
// gold accent line
slide.addShape(pres.ShapeType.rect, { x: 0.35, y: 2.55, w: 9.3, h: 0.06, fill: { color: C.gold } });
}
function sectionHeaderSlide(slide) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.35, h: 5.625, fill: { color: C.lightGreen } });
slide.addShape(pres.ShapeType.rect, { x: 0.35, y: 4.9, w: 9.3, h: 0.1, fill: { color: C.gold } });
}
function contentSlide(slide) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream } });
// top header band
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.05, fill: { color: C.darkGreen } });
// left accent bar
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.22, h: 5.625, fill: { color: C.lightGreen } });
// gold bottom line
slide.addShape(pres.ShapeType.rect, { x: 0.22, y: 5.45, w: 9.6, h: 0.06, fill: { color: C.gold } });
}
function slideTitle(slide, text) {
slide.addText(text, {
x: 0.45, y: 0.12, w: 9.3, h: 0.78,
fontSize: 26, bold: true, color: C.white,
fontFace: "Calibri", valign: "middle", margin: 0,
});
}
function bullets(slide, items, opts = {}) {
const defaults = {
x: 0.55, y: 1.18, w: 9.1, h: 4.1,
fontSize: 17, color: C.charcoal, fontFace: "Calibri",
valign: "top", paraSpaceAfter: 4,
};
const merged = Object.assign({}, defaults, opts);
slide.addText(items.map((item, i) => {
const isLast = i === items.length - 1;
if (typeof item === "string") {
return { text: item, options: { bullet: { type: "bullet", indent: 15 }, breakLine: !isLast } };
}
// { text, sub, bold, color }
return {
text: item.text,
options: {
bullet: item.sub ? { type: "bullet", indent: item.sub ? 30 : 15 } : { type: "bullet", indent: 15 },
bold: !!item.bold,
color: item.color || C.charcoal,
breakLine: !isLast,
indentLevel: item.sub ? 1 : 0,
},
};
}), merged);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
titleSlide(sl);
// Subtitle label top
sl.addText("FMT SEMINAR • MBBS THIRD YEAR", {
x: 0.55, y: 0.55, w: 9, h: 0.4,
fontSize: 11, color: C.mutedGray, charSpacing: 3,
fontFace: "Calibri", bold: false,
});
// Main title
sl.addText("RICIN POISONING", {
x: 0.55, y: 1.25, w: 9, h: 1.2,
fontSize: 48, bold: true, color: C.white,
fontFace: "Calibri", charSpacing: 2,
});
// Botanical subtitle
sl.addText("Ricinus communis | Castor Plant Toxicology", {
x: 0.55, y: 2.6, w: 9, h: 0.5,
fontSize: 18, color: C.gold, fontFace: "Calibri", italic: true,
});
// Tags row
const tags = ["Toxalbumin", "Phytotoxin", "Bioweapon Category B", "GIT Irritant"];
tags.forEach((tag, i) => {
sl.addShape(pres.ShapeType.roundRect, {
x: 0.55 + i * 2.3, y: 3.3, w: 2.1, h: 0.38,
fill: { color: C.midGreen }, line: { color: C.lightGreen, width: 1 },
rectRadius: 0.08,
});
sl.addText(tag, {
x: 0.55 + i * 2.3, y: 3.3, w: 2.1, h: 0.38,
fontSize: 11, color: C.cream, fontFace: "Calibri",
align: "center", valign: "middle", margin: 0,
});
});
// Footer
sl.addText("Forensic Medicine & Toxicology", {
x: 0.55, y: 5.1, w: 9, h: 0.35,
fontSize: 12, color: C.mutedGray, fontFace: "Calibri",
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW (TABLE OF CONTENTS)
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Overview");
const topics = [
"01 Introduction",
"02 Features of the Plant",
"03 Toxic Principle",
"04 Mechanism of Action",
"05 Clinical Features",
"06 Management",
"07 Autopsy Findings",
"08 Medicolegal Importance",
];
// Two columns
const col1 = topics.slice(0, 4);
const col2 = topics.slice(4);
const boxOpts = (x, y) => ({
x, y, w: 4.35, h: 0.62,
fill: { color: C.midGreen },
line: { color: C.lightGreen, width: 1 },
rectRadius: 0.07,
});
const textOpts = (x, y) => ({
x, y, w: 4.35, h: 0.62,
fontSize: 15, color: C.cream,
fontFace: "Calibri", valign: "middle", margin: 8,
});
col1.forEach((t, i) => {
sl.addShape(pres.ShapeType.roundRect, boxOpts(0.4, 1.22 + i * 0.74));
sl.addText(t, textOpts(0.4, 1.22 + i * 0.74));
});
col2.forEach((t, i) => {
sl.addShape(pres.ShapeType.roundRect, boxOpts(5.2, 1.22 + i * 0.74));
sl.addText(t, textOpts(5.2, 1.22 + i * 0.74));
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — SECTION: INTRODUCTION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sectionHeaderSlide(sl);
sl.addText("01", { x: 0.55, y: 0.7, w: 9, h: 1.2, fontSize: 96, color: C.lightGreen, fontFace: "Calibri", bold: true, transparency: 60 });
sl.addText("Introduction", { x: 0.55, y: 1.5, w: 9, h: 1.2, fontSize: 44, bold: true, color: C.white, fontFace: "Calibri" });
sl.addText("Ricinus communis — The Castor Plant", { x: 0.55, y: 2.8, w: 9, h: 0.5, fontSize: 18, color: C.gold, fontFace: "Calibri", italic: true });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — INTRODUCTION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Introduction");
// Info cards
const cards = [
{ label: "Type", value: "Organic poisonous plant" },
{ label: "Botanical Name", value: "Ricinus communis" },
{ label: "Common Names", value: "Castor, Arandi, Arand" },
{ label: "Poison Class", value: "Gastrointestinal Irritant" },
];
cards.forEach((card, i) => {
const x = 0.4 + (i % 2) * 4.8;
const y = 1.25 + Math.floor(i / 2) * 1.55;
// card bg
sl.addShape(pres.ShapeType.roundRect, { x, y, w: 4.5, h: 1.3, fill: { color: C.white }, line: { color: C.lightGreen, width: 1.5 }, rectRadius: 0.1 });
// label bar
sl.addShape(pres.ShapeType.roundRect, { x, y, w: 4.5, h: 0.42, fill: { color: C.midGreen }, line: { color: C.midGreen, width: 0 }, rectRadius: 0.1 });
sl.addText(card.label, { x, y, w: 4.5, h: 0.42, fontSize: 13, bold: true, color: C.cream, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
sl.addText(card.value, { x, y: y + 0.45, w: 4.5, h: 0.8, fontSize: 16, color: C.charcoal, fontFace: "Calibri", align: "center", valign: "middle", margin: 4 });
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — SECTION: FEATURES
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sectionHeaderSlide(sl);
sl.addText("02", { x: 0.55, y: 0.7, w: 9, h: 1.2, fontSize: 96, color: C.lightGreen, fontFace: "Calibri", bold: true, transparency: 60 });
sl.addText("Features of the Plant", { x: 0.55, y: 1.5, w: 9, h: 1.2, fontSize: 44, bold: true, color: C.white, fontFace: "Calibri" });
sl.addText("Morphology of Ricinus communis", { x: 0.55, y: 2.8, w: 9, h: 0.5, fontSize: 18, color: C.gold, fontFace: "Calibri", italic: true });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — FEATURES: PLANT & LEAVES
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Features — Plant & Leaves");
bullets(sl, [
{ text: "Plant", bold: true, color: C.midGreen },
{ text: "Tall plant, grows all over India — especially in wastelands", sub: true },
{ text: "" },
{ text: "Leaves", bold: true, color: C.midGreen },
{ text: "Lobate with toothed (serrated) margins", sub: true },
{ text: "" },
{ text: "Fruit", bold: true, color: C.midGreen },
{ text: "1.2 – 2.5 cm long, globular, three-lobed, softly spiny", sub: true },
{ text: "Blue-green or rose-red when immature", sub: true },
{ text: "Brown and bristly when ripe and dry", sub: true },
], { fontSize: 16 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — FEATURES: SEEDS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Features — Seeds");
// Two boxes: large seeds & small seeds
const boxData = [
{
label: "Large Seeds",
color: C.darkGreen,
points: [
"Mottled, dark-brown in color",
"Shiny hard seed cover (pericarp)",
"Variable, smooth, flattened-oval shape",
],
},
{
label: "Small Seeds",
color: C.red,
points: [
"1–2 cm long, 0.8 cm broad",
"Variable, smooth, flattened-oval shape",
"Resembles croton seeds",
],
},
];
boxData.forEach((box, i) => {
const x = 0.4 + i * 4.8;
sl.addShape(pres.ShapeType.roundRect, { x, y: 1.2, w: 4.5, h: 3.9, fill: { color: C.white }, line: { color: box.color, width: 2 }, rectRadius: 0.12 });
sl.addShape(pres.ShapeType.roundRect, { x, y: 1.2, w: 4.5, h: 0.55, fill: { color: box.color }, line: { color: box.color, width: 0 }, rectRadius: 0.12 });
sl.addText(box.label, { x, y: 1.2, w: 4.5, h: 0.55, fontSize: 15, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
const items = box.points.map((p, pi) => ({
text: p,
options: { bullet: { type: "bullet", indent: 15 }, breakLine: pi < box.points.length - 1, color: C.charcoal },
}));
sl.addText(items, { x: x + 0.15, y: 1.85, w: 4.2, h: 3.1, fontSize: 15, fontFace: "Calibri", valign: "top", color: C.charcoal, paraSpaceAfter: 6 });
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — SECTION: TOXIC PRINCIPLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sectionHeaderSlide(sl);
sl.addText("03", { x: 0.55, y: 0.7, w: 9, h: 1.2, fontSize: 96, color: C.lightGreen, fontFace: "Calibri", bold: true, transparency: 60 });
sl.addText("Toxic Principle", { x: 0.55, y: 1.5, w: 9, h: 1.2, fontSize: 44, bold: true, color: C.white, fontFace: "Calibri" });
sl.addText("Ricin — A Deadly Toxalbumin", { x: 0.55, y: 2.8, w: 9, h: 0.5, fontSize: 18, color: C.gold, fontFace: "Calibri", italic: true });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — TOXIC PRINCIPLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Toxic Principle");
bullets(sl, [
{ text: "Entire plant is toxic — seeds are MOST toxic", bold: true, color: C.red },
{ text: "Active toxin: Ricin — a water-soluble glycoprotein (toxalbumin)", sub: true },
{ text: "Seeds also contain ricinoleic acid (purgative oil)", sub: true },
{ text: "" },
{ text: "Key facts about ricin forms:", bold: true, color: C.midGreen },
{ text: "Unbroken seeds — NON-poisonous when swallowed or cooked", sub: true },
{ text: "Castor oil — NON-poisonous", sub: true },
{ text: "Crushed seeds — POISONOUS", sub: true },
{ text: "Available as powder, mist, or pellet", sub: true },
{ text: "" },
{ text: "Toxalbumin (phytotoxin) properties:", bold: true, color: C.midGreen },
{ text: "Inhibits ribosomes → disrupts protein synthesis", sub: true },
{ text: "Antigenic in nature, agglutinates RBCs, causes hemolysis & cell destruction", sub: true },
{ text: "Similar in structure to toxins of cholera, tetanus, diphtheria, botulinum, pseudomonas", sub: true },
{ text: "Physiological properties similar to viperine snake venom", sub: true },
], { fontSize: 14.5 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — SECTION: MECHANISM OF ACTION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sectionHeaderSlide(sl);
sl.addText("04", { x: 0.55, y: 0.7, w: 9, h: 1.2, fontSize: 96, color: C.lightGreen, fontFace: "Calibri", bold: true, transparency: 60 });
sl.addText("Mechanism of Action", { x: 0.55, y: 1.5, w: 9, h: 1.2, fontSize: 44, bold: true, color: C.white, fontFace: "Calibri" });
sl.addText("How Ricin Kills Cells", { x: 0.55, y: 2.8, w: 9, h: 0.5, fontSize: 18, color: C.gold, fontFace: "Calibri", italic: true });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — MECHANISM: STRUCTURE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Mechanism of Action — Structure of Ricin");
// Structure box
sl.addShape(pres.ShapeType.roundRect, { x: 0.4, y: 1.2, w: 9.2, h: 1.3, fill: { color: C.midGreen }, line: { color: C.lightGreen, width: 1.5 }, rectRadius: 0.12 });
sl.addText([
{ text: "Ricin = Two Polypeptide Chains linked by a Disulfide Bond\n", options: { bold: true, color: C.gold, breakLine: true } },
{ text: " Chain A ", options: { bold: true, color: C.cream } },
{ text: "(Active / Toxic component) ", options: { color: C.cream } },
{ text: " Chain B ", options: { bold: true, color: C.cream } },
{ text: "(Binding component)", options: { color: C.cream } },
], { x: 0.4, y: 1.2, w: 9.2, h: 1.3, fontSize: 15, fontFace: "Calibri", align: "center", valign: "middle", margin: 6 });
// Steps
const steps = [
{ num: "1", title: "Binding", desc: "Chain B binds galactose receptors on cell membrane (glycoproteins/glycolipids)" },
{ num: "2", title: "Cell Entry", desc: "Ricin enters via endocytosis → Endosomes → Golgi → Endoplasmic Reticulum" },
{ num: "3", title: "Translocation", desc: "Chain A separates in ER and moves into cytosol" },
{ num: "4", title: "Ribosome Damage", desc: "Chain A inactivates 28S rRNA of 60S ribosomal subunit" },
{ num: "5", title: "Cell Death", desc: "Irreversible inhibition of protein synthesis → cytotoxic cell death" },
];
steps.forEach((step, i) => {
const x = 0.4 + (i % 3) * 3.08;
const y = i < 3 ? 2.68 : 4.0;
const w = i >= 3 ? 4.5 : 2.85;
const xx = i >= 3 ? 0.4 + (i - 3) * 4.8 : x;
sl.addShape(pres.ShapeType.roundRect, { x: xx, y, w, h: 1.05, fill: { color: C.white }, line: { color: C.lightGreen, width: 1.2 }, rectRadius: 0.1 });
sl.addShape(pres.ShapeType.ellipse, { x: xx + 0.07, y: y + 0.28, w: 0.48, h: 0.48, fill: { color: C.darkGreen }, line: { color: C.darkGreen, width: 0 } });
sl.addText(step.num, { x: xx + 0.07, y: y + 0.28, w: 0.48, h: 0.48, fontSize: 13, bold: true, color: C.gold, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
sl.addText(step.title, { x: xx + 0.62, y: y + 0.06, w: w - 0.72, h: 0.38, fontSize: 13, bold: true, color: C.darkGreen, fontFace: "Calibri", valign: "middle", margin: 0 });
sl.addText(step.desc, { x: xx + 0.62, y: y + 0.44, w: w - 0.72, h: 0.55, fontSize: 11, color: C.charcoal, fontFace: "Calibri", valign: "top", margin: 0 });
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — SECTION: CLINICAL FEATURES
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sectionHeaderSlide(sl);
sl.addText("05", { x: 0.55, y: 0.7, w: 9, h: 1.2, fontSize: 96, color: C.lightGreen, fontFace: "Calibri", bold: true, transparency: 60 });
sl.addText("Clinical Features", { x: 0.55, y: 1.5, w: 9, h: 1.2, fontSize: 44, bold: true, color: C.white, fontFace: "Calibri" });
sl.addText("Routes: Inhalation • Ingestion • Injection • Skin Contact", { x: 0.55, y: 2.8, w: 9, h: 0.5, fontSize: 17, color: C.gold, fontFace: "Calibri", italic: true });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 13 — CLINICAL: INHALATION / DUST
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Clinical Features — Dust & Inhalation Exposure");
// Two panels
const panels = [
{
label: "Dust of Seeds",
color: C.midGreen,
items: ["Watering of the eyes (lacrimation)", "Conjunctivitis", "Sneezing", "Acute nasal inflammation", "Headache", "Pharyngitis", "Asthmatic bronchitis", "Dermatitis", "Gastric upset"],
},
{
label: "Inhalation Exposure",
color: C.red,
items: ["Redness and pain in eyes and throat", "Dyspnea (difficulty breathing)", "Wheezing", "Respiratory distress", "Fever and cough", "Tightness in chest", "Sweating", "Pulmonary edema"],
},
];
panels.forEach((panel, i) => {
const x = 0.4 + i * 4.8;
sl.addShape(pres.ShapeType.roundRect, { x, y: 1.2, w: 4.45, h: 4.0, fill: { color: C.white }, line: { color: panel.color, width: 2 }, rectRadius: 0.12 });
sl.addShape(pres.ShapeType.roundRect, { x, y: 1.2, w: 4.45, h: 0.5, fill: { color: panel.color }, line: { color: panel.color, width: 0 }, rectRadius: 0.12 });
sl.addText(panel.label, { x, y: 1.2, w: 4.45, h: 0.5, fontSize: 14, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
const items = panel.items.map((p, pi) => ({
text: p,
options: { bullet: { type: "bullet", indent: 12 }, breakLine: pi < panel.items.length - 1, color: C.charcoal },
}));
sl.addText(items, { x: x + 0.12, y: 1.8, w: 4.2, h: 3.3, fontSize: 13.5, fontFace: "Calibri", valign: "top", color: C.charcoal, paraSpaceAfter: 4 });
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 14 — CLINICAL: ORAL INGESTION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Clinical Features — Oral Ingestion (Crushed Seeds)");
const left = [
"Abdominal pain",
"Vomiting & diarrhea (with/without blood)",
"Hematemesis and melena",
"Dehydration",
"Circulatory collapse",
"Muscular pain and cramps in limbs",
"Convulsions",
];
const right = [
"Drowsiness and delirium",
"Jaundice",
"Hepatic failure",
"Oliguria",
"Uremia",
"Multiorgan failure",
"Cardiovascular collapse",
];
const renderList = (items, x) => items.map((p, pi) => ({
text: p,
options: { bullet: { type: "bullet", indent: 12 }, breakLine: pi < items.length - 1, color: C.charcoal },
}));
sl.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.15, w: 4.5, h: 4.0, fill: { color: C.white }, line: { color: C.midGreen, width: 1.5 }, rectRadius: 0.1 });
sl.addShape(pres.ShapeType.roundRect, { x: 5.15, y: 1.15, w: 4.5, h: 4.0, fill: { color: C.white }, line: { color: C.midGreen, width: 1.5 }, rectRadius: 0.1 });
sl.addText(renderList(left, 0.5), { x: 0.5, y: 1.25, w: 4.2, h: 3.8, fontSize: 14.5, fontFace: "Calibri", color: C.charcoal, valign: "top", paraSpaceAfter: 5 });
sl.addText(renderList(right, 5.3), { x: 5.3, y: 1.25, w: 4.2, h: 3.8, fontSize: 14.5, fontFace: "Calibri", color: C.charcoal, valign: "top", paraSpaceAfter: 5 });
// Fatal dose banner
sl.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 5.12, w: 9.3, h: 0.38, fill: { color: C.red }, line: { color: C.red, width: 0 }, rectRadius: 0.08 });
sl.addText("FATAL DOSE: 5–10 seeds | 1 mg/kg body weight | Fatal Period: 2 days to a few days", {
x: 0.35, y: 5.12, w: 9.3, h: 0.38,
fontSize: 12, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 0,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 15 — CLINICAL: INJECTION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Clinical Features — Injection Exposure");
bullets(sl, [
{ text: "Local Effects at Injection Site:", bold: true, color: C.midGreen },
{ text: "Pain, erythema (redness), induration", sub: true },
{ text: "Localized necrosis at injection site", sub: true },
{ text: "" },
{ text: "Systemic Effects:", bold: true, color: C.midGreen },
{ text: "Muscular pain", sub: true },
{ text: "Capillary leak syndrome", sub: true },
{ text: "Circulatory collapse", sub: true },
{ text: "Convulsions", sub: true },
{ text: "Multiorgan failure", sub: true },
{ text: "Respiratory failure", sub: true },
], { fontSize: 16 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 16 — SECTION: MANAGEMENT
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sectionHeaderSlide(sl);
sl.addText("06", { x: 0.55, y: 0.7, w: 9, h: 1.2, fontSize: 96, color: C.lightGreen, fontFace: "Calibri", bold: true, transparency: 60 });
sl.addText("Management", { x: 0.55, y: 1.5, w: 9, h: 1.2, fontSize: 44, bold: true, color: C.white, fontFace: "Calibri" });
sl.addText("Supportive — No Specific Antidote Available", { x: 0.55, y: 2.8, w: 9, h: 0.5, fontSize: 18, color: C.red, fontFace: "Calibri", bold: true });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 17 — MANAGEMENT
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Management");
// No antidote banner
sl.addShape(pres.ShapeType.roundRect, { x: 0.4, y: 1.15, w: 9.2, h: 0.48, fill: { color: C.red }, line: { color: C.red, width: 0 }, rectRadius: 0.1 });
sl.addText("NO SPECIFIC ANTIDOTE AVAILABLE — Treatment is purely supportive", {
x: 0.4, y: 1.15, w: 9.2, h: 0.48,
fontSize: 14, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 0,
});
const mgmt = [
{ label: "Decontamination", color: C.midGreen, items: ["Gastric lavage", "Emetics and demulcents", "Activated charcoal administration"] },
{ label: "IV Fluids & Correction", color: C.darkGreen, items: ["Glucose and saline administration", "Sodium bicarbonate 2–5 g every 8 hours by mouth", "Correction of electrolyte abnormalities"] },
{ label: "Supportive Care", color: C.lightGreen, items: ["Management of shock", "Treatment of convulsions", "Blood transfusion if needed"] },
];
mgmt.forEach((box, i) => {
const x = 0.4 + i * 3.12;
sl.addShape(pres.ShapeType.roundRect, { x, y: 1.75, w: 2.95, h: 3.6, fill: { color: C.white }, line: { color: box.color, width: 2 }, rectRadius: 0.12 });
sl.addShape(pres.ShapeType.roundRect, { x, y: 1.75, w: 2.95, h: 0.52, fill: { color: box.color }, line: { color: box.color, width: 0 }, rectRadius: 0.12 });
sl.addText(box.label, { x, y: 1.75, w: 2.95, h: 0.52, fontSize: 13, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
const items = box.items.map((p, pi) => ({
text: p,
options: { bullet: { type: "bullet", indent: 12 }, breakLine: pi < box.items.length - 1, color: C.charcoal },
}));
sl.addText(items, { x: x + 0.12, y: 2.35, w: 2.7, h: 2.9, fontSize: 13, fontFace: "Calibri", valign: "top", color: C.charcoal, paraSpaceAfter: 6 });
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 18 — SECTION: AUTOPSY FINDINGS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sectionHeaderSlide(sl);
sl.addText("07", { x: 0.55, y: 0.7, w: 9, h: 1.2, fontSize: 96, color: C.lightGreen, fontFace: "Calibri", bold: true, transparency: 60 });
sl.addText("Autopsy Findings", { x: 0.55, y: 1.5, w: 9, h: 1.2, fontSize: 44, bold: true, color: C.white, fontFace: "Calibri" });
sl.addText("Post-mortem Changes in Ricin Poisoning", { x: 0.55, y: 2.8, w: 9, h: 0.5, fontSize: 18, color: C.gold, fontFace: "Calibri", italic: true });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 19 — AUTOPSY FINDINGS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Autopsy Findings");
const findings = [
{ organ: "Gastrointestinal Tract", desc: "Mucosa is congested, softened and inflamed with occasional erosions and submucous hemorrhages. Fragments of seeds may be found in stomach and intestines." },
{ organ: "Heart", desc: "Dilation of the heart chambers with hemorrhages in the pleura." },
{ organ: "Liver, Kidneys, Spleen, Lungs", desc: "Edema and congestion of all these organs — hallmark of multiorgan involvement." },
];
findings.forEach((f, i) => {
sl.addShape(pres.ShapeType.roundRect, { x: 0.4, y: 1.25 + i * 1.38, w: 9.2, h: 1.22, fill: { color: C.white }, line: { color: C.midGreen, width: 1.5 }, rectRadius: 0.1 });
sl.addShape(pres.ShapeType.roundRect, { x: 0.4, y: 1.25 + i * 1.38, w: 2.5, h: 1.22, fill: { color: C.midGreen }, line: { color: C.midGreen, width: 0 }, rectRadius: 0.1 });
sl.addText(f.organ, { x: 0.4, y: 1.25 + i * 1.38, w: 2.5, h: 1.22, fontSize: 13.5, bold: true, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 6 });
sl.addText(f.desc, { x: 3.05, y: 1.3 + i * 1.38, w: 6.35, h: 1.12, fontSize: 13.5, color: C.charcoal, fontFace: "Calibri", valign: "middle", margin: 4, wrap: true });
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 20 — SECTION: MEDICOLEGAL IMPORTANCE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sectionHeaderSlide(sl);
sl.addText("08", { x: 0.55, y: 0.7, w: 9, h: 1.2, fontSize: 96, color: C.lightGreen, fontFace: "Calibri", bold: true, transparency: 60 });
sl.addText("Medicolegal Importance", { x: 0.55, y: 1.5, w: 9, h: 1.2, fontSize: 44, bold: true, color: C.white, fontFace: "Calibri" });
sl.addText("Forensic & Legal Significance of Ricin", { x: 0.55, y: 2.8, w: 9, h: 0.5, fontSize: 18, color: C.gold, fontFace: "Calibri", italic: true });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 21 — MEDICOLEGAL IMPORTANCE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Medicolegal Importance");
bullets(sl, [
{ text: "Accidental poisoning", bold: true, color: C.midGreen },
{ text: "Common in children while playing with seeds or exploring the plant", sub: true },
{ text: "" },
{ text: "Homicidal use", bold: true, color: C.red },
{ text: "Ricin has been used for deliberate homicide", sub: true },
{ text: "" },
{ text: "Criminal abortion", bold: true, color: C.red },
{ text: "Pulp of seeds used to procure illegal abortion", sub: true },
{ text: "" },
{ text: "Allergic/hypersensitivity reactions", bold: true, color: C.midGreen },
{ text: "Causes anaphylactic-type reactions, dermatitis, rhinitis, asthma, conjunctivitis", sub: true },
{ text: "" },
{ text: "Potential Bioweapon (CDC Category B)", bold: true, color: C.red },
{ text: "Easy availability and high toxicity — classified as Category B biological weapon by CDC", sub: true },
], { fontSize: 14.5 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 22 — GEORGI MARKOV CASE (Historical)
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.35, h: 5.625, fill: { color: C.lightGreen } });
sl.addShape(pres.ShapeType.rect, { x: 0.35, y: 5.45, w: 9.3, h: 0.06, fill: { color: C.gold } });
sl.addText("Notable Case — Georgi Markov (1978)", {
x: 0.55, y: 0.3, w: 9, h: 0.65,
fontSize: 22, bold: true, color: C.gold, fontFace: "Calibri",
});
sl.addShape(pres.ShapeType.roundRect, { x: 0.55, y: 1.05, w: 8.9, h: 3.2, fill: { color: C.midGreen }, line: { color: C.lightGreen, width: 1.5 }, rectRadius: 0.14 });
sl.addText([
{ text: "In 1978, Georgi Markov, a Bulgarian dissident and journalist, was assassinated in London.\n\n", options: { bold: false, color: C.cream, breakLine: true } },
{ text: "A man attacked him with a specially rigged umbrella that injected a tiny ricin-laced pellet under the skin of his thigh.\n\n", options: { color: C.cream, breakLine: true } },
{ text: "He died 3 days later. ", options: { color: C.cream } },
{ text: "This remains one of the most famous cases of ricin poisoning used as an assassination weapon.", options: { color: C.gold, bold: true } },
], { x: 0.75, y: 1.15, w: 8.5, h: 3.0, fontSize: 15, fontFace: "Calibri", valign: "middle", paraSpaceAfter: 4 });
sl.addText("Forensic Significance: Demonstrates ricin's potential as a covert assassination tool", {
x: 0.55, y: 4.45, w: 8.9, h: 0.45,
fontSize: 12.5, color: C.mutedGray, fontFace: "Calibri", italic: true,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 23 — LABORATORY DIAGNOSIS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
contentSlide(sl);
slideTitle(sl, "Laboratory Diagnosis");
bullets(sl, [
{ text: "Liquid Chromatography-Mass Spectrometry (LC-MS)", bold: true, color: C.midGreen },
{ text: "Gold-standard confirmatory test for ricin detection", sub: true },
{ text: "" },
{ text: "Immunoassays", bold: true, color: C.midGreen },
{ text: "Enzyme-linked immunosorbent assay (ELISA) and similar tests", sub: true },
{ text: "" },
{ text: "Ricinine detection", bold: true, color: C.midGreen },
{ text: "Ricinine (an alkaloid) can be detected in serum and urine", sub: true },
{ text: "Comprehensive untargeted urine drug screening is highly valuable", sub: true },
{ text: "" },
{ text: "Ricin-antibody conjugates", bold: true, color: C.midGreen },
{ text: "Detectable in surviving patients after approximately 2 weeks", sub: true },
], { fontSize: 15.5 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 24 — SUMMARY SLIDE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkGreen } });
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.35, h: 5.625, fill: { color: C.lightGreen } });
sl.addText("Key Takeaways", {
x: 0.55, y: 0.18, w: 9, h: 0.65,
fontSize: 26, bold: true, color: C.gold, fontFace: "Calibri",
});
const points = [
["Plant", "Ricinus communis — GIT irritant; toxic due to ricin (toxalbumin)"],
["Most Toxic Part", "Crushed seeds — unbroken seeds and castor oil are non-toxic"],
["Mechanism", "Ricin A chain inactivates 28S rRNA → inhibits protein synthesis → cell death"],
["Fatal Dose", "5–10 seeds or 1 mg/kg body weight; fatal period: 2 days"],
["Treatment", "No antidote — gastric lavage, activated charcoal, supportive care"],
["Bioweapon", "CDC Category B biological weapon; Markov assassination (1978)"],
];
points.forEach((pt, i) => {
const y = 0.98 + i * 0.73;
sl.addShape(pres.ShapeType.roundRect, { x: 0.45, y, w: 9.1, h: 0.62, fill: { color: C.midGreen }, line: { color: C.lightGreen, width: 1 }, rectRadius: 0.08 });
sl.addText(pt[0], { x: 0.55, y, w: 1.7, h: 0.62, fontSize: 13, bold: true, color: C.gold, fontFace: "Calibri", valign: "middle", margin: 4 });
sl.addShape(pres.ShapeType.rect, { x: 2.2, y: y + 0.08, w: 0.04, h: 0.46, fill: { color: C.lightGreen } });
sl.addText(pt[1], { x: 2.35, y, w: 7.0, h: 0.62, fontSize: 13, color: C.cream, fontFace: "Calibri", valign: "middle", margin: 4 });
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 25 — THANK YOU
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
titleSlide(sl);
sl.addText("THANK YOU", {
x: 0.55, y: 1.4, w: 9, h: 1.2,
fontSize: 52, bold: true, color: C.white,
fontFace: "Calibri", charSpacing: 4, align: "center",
});
sl.addShape(pres.ShapeType.rect, { x: 2.5, y: 2.75, w: 5, h: 0.06, fill: { color: C.gold } });
sl.addText("Ricin Poisoning | Forensic Medicine & Toxicology", {
x: 0.55, y: 2.9, w: 9, h: 0.5,
fontSize: 17, color: C.gold, fontFace: "Calibri", italic: true, align: "center",
});
sl.addText("MBBS Third Year • FMT Seminar", {
x: 0.55, y: 3.55, w: 9, h: 0.42,
fontSize: 14, color: C.mutedGray, fontFace: "Calibri", align: "center",
});
sl.addText("References: Reddy's Essentials of Forensic Medicine & Toxicology | Narayan Reddy | Modi's Medical Jurisprudence", {
x: 0.55, y: 4.95, w: 9, h: 0.35,
fontSize: 10, color: C.mutedGray, fontFace: "Calibri", align: "center",
});
}
// ─── WRITE FILE ────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/ricin-ppt/Ricin_Poisoning_FMT.pptx" })
.then(() => console.log("SUCCESS: Presentation created."))
.catch(err => { console.error("ERROR:", err); process.exit(1); });
cd /home/daytona/workspace/ricin-ppt && node build.js
ls -lh /home/daytona/workspace/ricin-ppt/Ricin_Poisoning_FMT.pptx
Ricin Poisoning FMT
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide — Ricin Poisoning, MBBS FMT Seminar |
| 2 | Overview / Table of Contents (visual grid) |
| 3-4 | Introduction — info cards: botanical name, common names, poison class |
| 5-7 | Features — plant, leaves, fruit, large vs small seeds (side-by-side comparison) |
| 8-9 | Toxic Principle — ricin structure, forms, toxalbumin properties |
| 10-11 | Mechanism of Action — 5-step flowchart (binding → cell entry → translocation → ribosome damage → cell death) |
| 12-13 | Clinical Features — Dust & Inhalation (two-column layout) |
| 14 | Clinical Features — Oral ingestion with fatal dose banner in red |
| 15 | Clinical Features — Injection exposure |
| 16-17 | Management — three-column cards (decontamination, IV fluids, supportive care) with no-antidote warning |
| 18-19 | Autopsy Findings — organ-by-organ layout |
| 20-21 | Medicolegal Importance |
| 22 | Georgi Markov 1978 case (historical case slide) |
| 23 | Laboratory Diagnosis |
| 24 | Key Takeaways / Summary |
| 25 | Thank You slide with references |
So much error in PDF
I m opening in flies app of iPhone , boxes are blank , pages blank , text overlapping and plss Chnage color of ppt use light colors
~/ricin-ppt/build2.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Ricin Poisoning - FMT Seminar";
// ─── LIGHT COLOR PALETTE ──────────────────────────────────────────────────────
const C = {
bgWhite: "FFFFFF",
bgLight: "F4F8FF", // very light blue-white for slide bg
headerBlue: "1565C0", // deep blue for headers
accentBlue: "1E88E5", // medium blue
lightBlue: "BBDEFB", // pale blue for card bg
teal: "00838F", // teal accent
lightTeal: "E0F7FA", // very light teal
green: "2E7D32", // dark green text
lightGreen: "E8F5E9", // light green card bg
orange: "E65100", // warning / fatal
lightOrange:"FFF3E0", // light orange card bg
red: "C62828", // danger
lightRed: "FFEBEE", // light red bg
charcoal: "212121", // body text
darkGray: "424242",
midGray: "757575",
white: "FFFFFF",
};
// ─── HELPER: draw plain rect (no roundRect) ───────────────────────────────────
function rect(sl, x, y, w, h, fill, lineColor) {
sl.addShape(pres.ShapeType.rect, {
x, y, w, h,
fill: { color: fill },
line: lineColor ? { color: lineColor, width: 1.5 } : { color: fill, width: 0 },
});
}
// ─── HELPER: slide background ─────────────────────────────────────────────────
function lightBg(sl) {
rect(sl, 0, 0, 10, 5.625, C.bgLight);
}
// ─── HELPER: header bar on content slides ────────────────────────────────────
function addHeader(sl, title) {
rect(sl, 0, 0, 10, 1.0, C.headerBlue);
sl.addText(title, {
x: 0.3, y: 0.0, w: 9.4, h: 1.0,
fontSize: 26, bold: true, color: C.white,
fontFace: "Calibri", valign: "middle",
});
// thin accent line below header
rect(sl, 0, 1.0, 10, 0.05, C.accentBlue);
}
// ─── HELPER: bullet list ──────────────────────────────────────────────────────
function addBullets(sl, items, x, y, w, h, fontSize) {
const fs = fontSize || 16;
sl.addText(
items.map((item, i) => {
const last = i === items.length - 1;
if (typeof item === "string") {
return { text: item, options: { bullet: { indent: 20 }, breakLine: !last, color: C.charcoal } };
}
return {
text: item.text,
options: {
bullet: item.sub ? { indent: 40 } : { indent: 20 },
bold: !!item.bold,
color: item.color || C.charcoal,
breakLine: !last,
fontSize: item.small ? fs - 1.5 : fs,
},
};
}),
{ x, y, w, h, fontSize: fs, fontFace: "Calibri", valign: "top", paraSpaceAfter: 5, color: C.charcoal }
);
}
// ─── HELPER: simple colored label box (plain rect) ───────────────────────────
function labelBox(sl, x, y, w, h, bgColor, textColor, label, fontSize) {
rect(sl, x, y, w, h, bgColor, bgColor);
sl.addText(label, {
x, y, w, h,
fontSize: fontSize || 14,
bold: true,
color: textColor,
fontFace: "Calibri",
align: "center",
valign: "middle",
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
// bg gradient-like: top blue, bottom white
rect(sl, 0, 0, 10, 3.2, C.headerBlue);
rect(sl, 0, 3.2, 10, 2.425, C.bgLight);
// accent stripe
rect(sl, 0, 3.15, 10, 0.12, C.accentBlue);
sl.addText("RICIN POISONING", {
x: 0.5, y: 0.5, w: 9, h: 1.3,
fontSize: 46, bold: true, color: C.white,
fontFace: "Calibri", align: "center",
});
sl.addText("Ricinus communis | Castor Plant Toxicology", {
x: 0.5, y: 1.85, w: 9, h: 0.6,
fontSize: 19, color: C.lightBlue, fontFace: "Calibri",
italic: true, align: "center",
});
sl.addText("FMT Seminar • MBBS Third Year • Forensic Medicine & Toxicology", {
x: 0.5, y: 3.5, w: 9, h: 0.5,
fontSize: 14, color: C.darkGray, fontFace: "Calibri", align: "center",
});
// tag row
const tags = ["Toxalbumin", "Phytotoxin", "Bioweapon Cat. B", "GIT Irritant"];
tags.forEach((tag, i) => {
rect(sl, 0.5 + i * 2.28, 4.2, 2.1, 0.38, C.lightBlue, C.accentBlue);
sl.addText(tag, {
x: 0.5 + i * 2.28, y: 4.2, w: 2.1, h: 0.38,
fontSize: 12, color: C.headerBlue, fontFace: "Calibri",
align: "center", valign: "middle", bold: true,
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Overview");
const topics = [
"01 Introduction",
"02 Features of the Plant",
"03 Toxic Principle",
"04 Mechanism of Action",
"05 Clinical Features",
"06 Management",
"07 Autopsy Findings",
"08 Medicolegal Importance",
];
topics.forEach((t, i) => {
const col = i < 4 ? 0 : 1;
const row = i % 4;
const x = 0.35 + col * 4.9;
const y = 1.2 + row * 1.05;
rect(sl, x, y, 4.55, 0.82, C.lightBlue, C.accentBlue);
sl.addText(t, {
x: x + 0.15, y, w: 4.2, h: 0.82,
fontSize: 16, color: C.headerBlue, fontFace: "Calibri",
valign: "middle", bold: false,
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — SECTION DIVIDER: INTRODUCTION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
rect(sl, 0, 0, 10, 5.625, C.headerBlue);
rect(sl, 0, 4.8, 10, 0.12, C.accentBlue);
sl.addText("01", {
x: 0.5, y: 0.3, w: 3, h: 2.2,
fontSize: 130, bold: true, color: C.accentBlue,
fontFace: "Calibri", transparency: 50,
});
sl.addText("Introduction", {
x: 0.5, y: 1.6, w: 9, h: 1.3,
fontSize: 46, bold: true, color: C.white, fontFace: "Calibri",
});
sl.addText("Ricinus communis — The Castor Plant", {
x: 0.5, y: 3.1, w: 9, h: 0.6,
fontSize: 20, color: C.lightBlue, fontFace: "Calibri", italic: true,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — INTRODUCTION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Introduction");
const cards = [
{ label: "Type", value: "Organic Poisonous Plant", bg: C.lightBlue },
{ label: "Class", value: "Gastrointestinal Irritant", bg: C.lightTeal },
{ label: "Botanical Name", value: "Ricinus communis", bg: C.lightGreen },
{ label: "Common Names", value: "Castor / Arandi / Arand", bg: C.lightOrange },
];
cards.forEach((card, i) => {
const x = 0.35 + (i % 2) * 4.85;
const y = 1.25 + Math.floor(i / 2) * 1.95;
rect(sl, x, y, 4.55, 1.65, card.bg, C.accentBlue);
sl.addText(card.label, {
x: x + 0.15, y: y + 0.12, w: 4.25, h: 0.45,
fontSize: 13, bold: true, color: C.headerBlue, fontFace: "Calibri",
});
sl.addText(card.value, {
x: x + 0.15, y: y + 0.55, w: 4.25, h: 0.85,
fontSize: 17, color: C.charcoal, fontFace: "Calibri", valign: "middle",
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — SECTION DIVIDER: FEATURES
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
rect(sl, 0, 0, 10, 5.625, C.teal);
rect(sl, 0, 4.8, 10, 0.12, "00ACC1");
sl.addText("02", {
x: 0.5, y: 0.3, w: 3, h: 2.2,
fontSize: 130, bold: true, color: "00ACC1",
fontFace: "Calibri", transparency: 50,
});
sl.addText("Features of the Plant", {
x: 0.5, y: 1.6, w: 9, h: 1.3,
fontSize: 40, bold: true, color: C.white, fontFace: "Calibri",
});
sl.addText("Morphology of Ricinus communis", {
x: 0.5, y: 3.1, w: 9, h: 0.6,
fontSize: 20, color: C.lightTeal, fontFace: "Calibri", italic: true,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — FEATURES: PLANT, LEAVES, FRUIT
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Features — Plant, Leaves & Fruit");
addBullets(sl, [
{ text: "Plant", bold: true, color: C.headerBlue },
{ text: "Tall plant — grows all over India, especially in wastelands", sub: true },
"",
{ text: "Leaves", bold: true, color: C.headerBlue },
{ text: "Lobate with toothed (serrated) margins", sub: true },
"",
{ text: "Fruit", bold: true, color: C.headerBlue },
{ text: "1.2 to 2.5 cm long, globular, three-lobed, softly spiny", sub: true },
{ text: "Blue-green or rose-red when immature", sub: true },
{ text: "Brown and bristly when ripe and dry", sub: true },
], 0.4, 1.15, 9.2, 4.3, 16);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — FEATURES: SEEDS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Features — Seeds");
// Large seeds box
rect(sl, 0.35, 1.15, 4.55, 4.0, C.lightBlue, C.accentBlue);
labelBox(sl, 0.35, 1.15, 4.55, 0.5, C.accentBlue, C.white, "Large Seeds", 14);
addBullets(sl, [
"Mottled, dark-brown in color",
"Shiny hard seed cover (pericarp)",
"Variable, smooth, flattened-oval shape",
], 0.55, 1.75, 4.15, 3.3, 15);
// Small seeds box
rect(sl, 5.1, 1.15, 4.55, 4.0, C.lightGreen, C.green);
labelBox(sl, 5.1, 1.15, 4.55, 0.5, C.green, C.white, "Small Seeds", 14);
addBullets(sl, [
"1–2 cm long, 0.8 cm broad",
"Variable, smooth, flattened-oval shape",
"Resembles croton seeds",
], 5.3, 1.75, 4.15, 3.3, 15);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — SECTION DIVIDER: TOXIC PRINCIPLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
rect(sl, 0, 0, 10, 5.625, C.green);
rect(sl, 0, 4.8, 10, 0.12, "43A047");
sl.addText("03", {
x: 0.5, y: 0.3, w: 3, h: 2.2,
fontSize: 130, bold: true, color: "43A047",
fontFace: "Calibri", transparency: 50,
});
sl.addText("Toxic Principle", {
x: 0.5, y: 1.6, w: 9, h: 1.3,
fontSize: 44, bold: true, color: C.white, fontFace: "Calibri",
});
sl.addText("Ricin — A Deadly Toxalbumin", {
x: 0.5, y: 3.1, w: 9, h: 0.6,
fontSize: 20, color: C.lightGreen, fontFace: "Calibri", italic: true,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — TOXIC PRINCIPLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Toxic Principle");
// Key warning box
rect(sl, 0.35, 1.12, 9.3, 0.55, C.lightRed, C.red);
sl.addText("Entire plant is toxic — SEEDS are most toxic (contain ricin, a water-soluble glycoprotein)", {
x: 0.5, y: 1.12, w: 9.0, h: 0.55,
fontSize: 14, bold: true, color: C.red, fontFace: "Calibri", valign: "middle",
});
addBullets(sl, [
{ text: "Ricin forms — which are poisonous?", bold: true, color: C.headerBlue },
{ text: "Unbroken seeds — NON-poisonous when swallowed or cooked", sub: true },
{ text: "Castor oil — NON-poisonous", sub: true },
{ text: "Crushed seeds — POISONOUS", sub: true },
{ text: "Can be in form of powder, mist or pellet", sub: true },
"",
{ text: "Toxalbumin (Ricin) properties:", bold: true, color: C.headerBlue },
{ text: "Inhibits ribosomes → disrupts protein synthesis", sub: true },
{ text: "Antigenic — agglutinates RBCs, causes hemolysis & cell destruction", sub: true },
{ text: "Similar structure to toxins of cholera, tetanus, diphtheria, botulinum", sub: true },
{ text: "Similar properties to viperine snake venom", sub: true },
], 0.4, 1.78, 9.2, 3.7, 14.5);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — SECTION DIVIDER: MECHANISM OF ACTION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
rect(sl, 0, 0, 10, 5.625, "4527A0");
rect(sl, 0, 4.8, 10, 0.12, "7E57C2");
sl.addText("04", {
x: 0.5, y: 0.3, w: 3, h: 2.2,
fontSize: 130, bold: true, color: "7E57C2",
fontFace: "Calibri", transparency: 50,
});
sl.addText("Mechanism of Action", {
x: 0.5, y: 1.6, w: 9, h: 1.3,
fontSize: 40, bold: true, color: C.white, fontFace: "Calibri",
});
sl.addText("How Ricin Kills Cells", {
x: 0.5, y: 3.1, w: 9, h: 0.6,
fontSize: 20, color: "EDE7F6", fontFace: "Calibri", italic: true,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — MECHANISM: STRUCTURE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Mechanism of Action — Structure of Ricin");
// Structure banner
rect(sl, 0.35, 1.12, 9.3, 0.62, "EDE7F6", "7E57C2");
sl.addText("Ricin = Chain A (Toxic) + Chain B (Binding) linked by a Disulfide Bond", {
x: 0.5, y: 1.12, w: 9.0, h: 0.62,
fontSize: 15, bold: true, color: "4527A0", fontFace: "Calibri",
align: "center", valign: "middle",
});
// 5 steps as numbered rows
const steps = [
{ num: "1", title: "Binding", desc: "Chain B binds galactose receptors on cell membrane" },
{ num: "2", title: "Cell Entry", desc: "Endocytosis → Endosomes → Golgi → Endoplasmic Reticulum" },
{ num: "3", title: "Translocation", desc: "Chain A separates in ER and moves into cytosol" },
{ num: "4", title: "Ribosome Damage", desc: "Chain A inactivates 28S rRNA of 60S ribosomal subunit" },
{ num: "5", title: "Cell Death", desc: "Irreversible inhibition of protein synthesis → cytotoxic death" },
];
const rowBg = ["EDE7F6", "E8EAF6", "E3F2FD", "E0F2F1", "FFEBEE"];
const numColors = ["4527A0", "283593", "0277BD", "00695C", C.red];
steps.forEach((step, i) => {
const y = 1.85 + i * 0.72;
rect(sl, 0.35, y, 9.3, 0.65, rowBg[i], rowBg[i]);
// number circle (use rect as fallback)
rect(sl, 0.38, y + 0.1, 0.44, 0.44, numColors[i], numColors[i]);
sl.addText(step.num, {
x: 0.38, y: y + 0.1, w: 0.44, h: 0.44,
fontSize: 14, bold: true, color: C.white, fontFace: "Calibri",
align: "center", valign: "middle",
});
sl.addText(step.title + ":", {
x: 0.9, y: y + 0.08, w: 2.1, h: 0.5,
fontSize: 14, bold: true, color: numColors[i], fontFace: "Calibri", valign: "middle",
});
sl.addText(step.desc, {
x: 3.1, y: y + 0.08, w: 6.3, h: 0.5,
fontSize: 13.5, color: C.charcoal, fontFace: "Calibri", valign: "middle",
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — SECTION DIVIDER: CLINICAL FEATURES
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
rect(sl, 0, 0, 10, 5.625, C.orange);
rect(sl, 0, 4.8, 10, 0.12, "FF8F00");
sl.addText("05", {
x: 0.5, y: 0.3, w: 3, h: 2.2,
fontSize: 130, bold: true, color: "FF8F00",
fontFace: "Calibri", transparency: 50,
});
sl.addText("Clinical Features", {
x: 0.5, y: 1.6, w: 9, h: 1.3,
fontSize: 44, bold: true, color: C.white, fontFace: "Calibri",
});
sl.addText("Routes: Inhalation • Ingestion • Injection • Skin Contact", {
x: 0.5, y: 3.1, w: 9, h: 0.6,
fontSize: 18, color: C.lightOrange, fontFace: "Calibri", italic: true,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 13 — CLINICAL: DUST & INHALATION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Clinical Features — Dust & Inhalation");
// Dust panel
rect(sl, 0.35, 1.15, 4.55, 4.15, C.lightTeal, C.teal);
labelBox(sl, 0.35, 1.15, 4.55, 0.5, C.teal, C.white, "Dust of Seeds", 14);
addBullets(sl, [
"Watering of the eyes (lacrimation)",
"Conjunctivitis",
"Sneezing",
"Acute nasal inflammation",
"Headache",
"Pharyngitis",
"Asthmatic bronchitis",
"Dermatitis & gastric upset",
], 0.5, 1.72, 4.25, 3.5, 14);
// Inhalation panel
rect(sl, 5.1, 1.15, 4.55, 4.15, C.lightOrange, C.orange);
labelBox(sl, 5.1, 1.15, 4.55, 0.5, C.orange, C.white, "Inhalation Exposure", 14);
addBullets(sl, [
"Redness and pain in eyes & throat",
"Dyspnea (difficulty breathing)",
"Wheezing",
"Respiratory distress",
"Fever and cough",
"Tightness in chest",
"Sweating",
"Pulmonary edema",
], 5.25, 1.72, 4.25, 3.5, 14);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 14 — CLINICAL: ORAL INGESTION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Clinical Features — Oral Ingestion (Crushed Seeds)");
rect(sl, 0.35, 1.15, 4.55, 3.7, C.lightBlue, C.accentBlue);
addBullets(sl, [
"Abdominal pain",
"Vomiting & diarrhea (with/without blood)",
"Hematemesis and melena",
"Dehydration",
"Circulatory collapse",
"Muscular pain & cramps in limbs",
"Convulsions",
], 0.5, 1.2, 4.25, 3.55, 14.5);
rect(sl, 5.1, 1.15, 4.55, 3.7, C.lightRed, C.red);
addBullets(sl, [
"Drowsiness and delirium",
"Jaundice",
"Hepatic failure",
"Oliguria",
"Uremia",
"Multiorgan failure",
"Cardiovascular collapse",
], 5.25, 1.2, 4.25, 3.55, 14.5);
// Fatal dose
rect(sl, 0.35, 5.0, 9.3, 0.48, C.red, C.red);
sl.addText("FATAL DOSE: 5–10 seeds | 1 mg/kg body weight | Fatal Period: 2 days to a few days", {
x: 0.4, y: 5.0, w: 9.2, h: 0.48,
fontSize: 13, bold: true, color: C.white, fontFace: "Calibri",
align: "center", valign: "middle",
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 15 — CLINICAL: INJECTION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Clinical Features — Injection Exposure");
addBullets(sl, [
{ text: "Local Effects at Injection Site:", bold: true, color: C.headerBlue },
{ text: "Pain, erythema (redness), induration", sub: true },
{ text: "Localized necrosis at injection site", sub: true },
"",
{ text: "Systemic Effects:", bold: true, color: C.red },
{ text: "Muscular pain", sub: true },
{ text: "Capillary leak syndrome", sub: true },
{ text: "Circulatory collapse", sub: true },
{ text: "Convulsions", sub: true },
{ text: "Multiorgan failure", sub: true },
{ text: "Respiratory failure", sub: true },
], 0.4, 1.15, 9.2, 4.3, 16);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 16 — SECTION DIVIDER: MANAGEMENT
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
rect(sl, 0, 0, 10, 5.625, C.red);
rect(sl, 0, 4.8, 10, 0.12, "EF5350");
sl.addText("06", {
x: 0.5, y: 0.3, w: 3, h: 2.2,
fontSize: 130, bold: true, color: "EF5350",
fontFace: "Calibri", transparency: 50,
});
sl.addText("Management", {
x: 0.5, y: 1.6, w: 9, h: 1.3,
fontSize: 46, bold: true, color: C.white, fontFace: "Calibri",
});
sl.addText("No Antidote — Treatment is Purely Supportive", {
x: 0.5, y: 3.1, w: 9, h: 0.6,
fontSize: 19, color: C.lightRed, fontFace: "Calibri", bold: true,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 17 — MANAGEMENT
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Management");
// No antidote warning
rect(sl, 0.35, 1.12, 9.3, 0.52, C.lightRed, C.red);
sl.addText("NO SPECIFIC ANTIDOTE — Treatment is purely supportive", {
x: 0.5, y: 1.12, w: 9.0, h: 0.52,
fontSize: 14, bold: true, color: C.red, fontFace: "Calibri",
align: "center", valign: "middle",
});
// 3 columns
const cols = [
{ label: "Decontamination", bg: C.lightBlue, hdr: C.accentBlue, items: ["Gastric lavage", "Emetics and demulcents", "Activated charcoal"] },
{ label: "IV Fluids & Correction", bg: C.lightTeal, hdr: C.teal, items: ["Glucose and saline", "Sodium bicarbonate 2–5 g every 8 hours by mouth", "Correct electrolyte abnormalities"] },
{ label: "Supportive Care", bg: C.lightGreen, hdr: C.green, items: ["Management of shock", "Treatment of convulsions", "Blood transfusion if needed"] },
];
cols.forEach((col, i) => {
const x = 0.35 + i * 3.12;
rect(sl, x, 1.75, 2.95, 3.65, col.bg, col.hdr);
labelBox(sl, x, 1.75, 2.95, 0.5, col.hdr, C.white, col.label, 13);
addBullets(sl, col.items, x + 0.12, 2.32, 2.7, 3.0, 13.5);
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 18 — SECTION DIVIDER: AUTOPSY FINDINGS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
rect(sl, 0, 0, 10, 5.625, "37474F");
rect(sl, 0, 4.8, 10, 0.12, "78909C");
sl.addText("07", {
x: 0.5, y: 0.3, w: 3, h: 2.2,
fontSize: 130, bold: true, color: "78909C",
fontFace: "Calibri", transparency: 50,
});
sl.addText("Autopsy Findings", {
x: 0.5, y: 1.6, w: 9, h: 1.3,
fontSize: 44, bold: true, color: C.white, fontFace: "Calibri",
});
sl.addText("Post-mortem Changes in Ricin Poisoning", {
x: 0.5, y: 3.1, w: 9, h: 0.6,
fontSize: 19, color: "B0BEC5", fontFace: "Calibri", italic: true,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 19 — AUTOPSY FINDINGS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Autopsy Findings");
const findings = [
{
organ: "GIT",
bg: C.lightRed, hdr: C.red,
desc: "Congested, softened & inflamed mucosa with erosions and submucous hemorrhages. Fragments of seeds may be found in stomach and intestines.",
},
{
organ: "Heart",
bg: C.lightOrange, hdr: C.orange,
desc: "Dilation of heart chambers with hemorrhages in the pleura.",
},
{
organ: "Liver / Kidneys / Spleen / Lungs",
bg: C.lightBlue, hdr: C.accentBlue,
desc: "Edema and congestion — hallmark of multiorgan involvement.",
},
];
findings.forEach((f, i) => {
const y = 1.15 + i * 1.42;
rect(sl, 0.35, y, 9.3, 1.25, f.bg, f.hdr);
labelBox(sl, 0.35, y, 2.2, 1.25, f.hdr, C.white, f.organ, 13);
sl.addText(f.desc, {
x: 2.65, y: y + 0.12, w: 6.85, h: 1.0,
fontSize: 14, color: C.charcoal, fontFace: "Calibri", valign: "middle", wrap: true,
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 20 — SECTION DIVIDER: MEDICOLEGAL
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
rect(sl, 0, 0, 10, 5.625, "880E4F");
rect(sl, 0, 4.8, 10, 0.12, "E91E63");
sl.addText("08", {
x: 0.5, y: 0.3, w: 3, h: 2.2,
fontSize: 130, bold: true, color: "E91E63",
fontFace: "Calibri", transparency: 50,
});
sl.addText("Medicolegal Importance", {
x: 0.5, y: 1.6, w: 9, h: 1.3,
fontSize: 38, bold: true, color: C.white, fontFace: "Calibri",
});
sl.addText("Forensic & Legal Significance of Ricin", {
x: 0.5, y: 3.1, w: 9, h: 0.6,
fontSize: 19, color: "FCE4EC", fontFace: "Calibri", italic: true,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 21 — MEDICOLEGAL IMPORTANCE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Medicolegal Importance");
addBullets(sl, [
{ text: "Accidental Poisoning", bold: true, color: C.headerBlue },
{ text: "Common in children while playing with seeds or exploring the plant", sub: true },
"",
{ text: "Homicidal Use", bold: true, color: C.red },
{ text: "Ricin has been used for deliberate homicide (e.g. Georgi Markov, 1978)", sub: true },
"",
{ text: "Criminal Abortion", bold: true, color: C.red },
{ text: "Seed pulp used to procure illegal abortion", sub: true },
"",
{ text: "Hypersensitivity Reactions", bold: true, color: C.teal },
{ text: "Allergenic glycoprotein causes dermatitis, rhinitis, asthma, conjunctivitis", sub: true },
"",
{ text: "Bioweapon — CDC Category B", bold: true, color: C.red },
{ text: "Easy availability + high toxicity = classified as Category B biological weapon", sub: true },
], 0.4, 1.15, 9.2, 4.3, 14.5);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 22 — GEORGI MARKOV CASE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Notable Case — Georgi Markov (1978)");
rect(sl, 0.35, 1.15, 9.3, 3.7, "FCE4EC", "E91E63");
sl.addText([
{ text: "Georgi Markov", options: { bold: true, color: C.red } },
{ text: " was a Bulgarian dissident and journalist.\n\n", options: { color: C.charcoal, breakLine: true } },
{ text: "In 1978 in London, he was attacked by a man with a specially rigged ", options: { color: C.charcoal } },
{ text: "umbrella", options: { bold: true, color: C.red } },
{ text: " that injected a tiny ", options: { color: C.charcoal } },
{ text: "ricin-laced pellet", options: { bold: true, color: C.red } },
{ text: " under the skin of his thigh.\n\n", options: { color: C.charcoal, breakLine: true } },
{ text: "He died 3 days later.", options: { bold: true, color: C.red } },
{ text: "\n\nThis remains one of the most famous cases of ricin used as an assassination weapon.", options: { color: C.charcoal, breakLine: true } },
{ text: "\n\nForensic significance: Demonstrates ricin's potential as a covert assassination tool — relevant for medicolegal practice.", options: { color: C.darkGray, italic: true } },
], {
x: 0.6, y: 1.25, w: 8.9, h: 3.55,
fontSize: 15, fontFace: "Calibri", valign: "top", paraSpaceAfter: 4,
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 23 — LABORATORY DIAGNOSIS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Laboratory Diagnosis");
const labs = [
{ label: "LC-MS", full: "Liquid Chromatography-Mass Spectrometry", desc: "Gold-standard confirmatory test for ricin detection", bg: C.lightBlue, hdr: C.accentBlue },
{ label: "Immunoassays", full: "ELISA & similar assays", desc: "Detect ricin-specific antibodies in blood", bg: C.lightTeal, hdr: C.teal },
{ label: "Ricinine Detection", full: "Serum & Urine screening", desc: "Ricinine (alkaloid) detectable in serum and urine; untargeted urine screening is highly valuable", bg: C.lightGreen, hdr: C.green },
{ label: "Ricin-Antibody Conjugates", full: "In surviving patients", desc: "Detectable approximately 2 weeks after exposure", bg: C.lightOrange, hdr: C.orange },
];
labs.forEach((lab, i) => {
const x = 0.35 + (i % 2) * 4.85;
const y = 1.18 + Math.floor(i / 2) * 2.05;
rect(sl, x, y, 4.55, 1.8, lab.bg, lab.hdr);
labelBox(sl, x, y, 4.55, 0.5, lab.hdr, C.white, lab.label, 13);
sl.addText(lab.full, {
x: x + 0.12, y: y + 0.55, w: 4.3, h: 0.42,
fontSize: 12.5, bold: true, color: C.darkGray, fontFace: "Calibri",
});
sl.addText(lab.desc, {
x: x + 0.12, y: y + 0.95, w: 4.3, h: 0.75,
fontSize: 12.5, color: C.charcoal, fontFace: "Calibri", valign: "top",
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 24 — KEY TAKEAWAYS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
lightBg(sl);
addHeader(sl, "Key Takeaways");
const rows = [
["Plant", "Ricinus communis — GIT irritant; toxalbumin ricin is the active poison"],
["Most Toxic Part", "Crushed seeds — unbroken seeds and castor oil are NON-toxic"],
["Mechanism", "Chain A of ricin inactivates 28S rRNA → inhibits protein synthesis → cell death"],
["Fatal Dose", "5–10 seeds or 1 mg/kg; fatal period: 2 days"],
["Treatment", "No antidote — gastric lavage, activated charcoal, supportive care"],
["Bioweapon", "CDC Category B; Markov assassination (1978)"],
];
const rowBgs = [C.lightBlue, C.lightTeal, "EDE7F6", C.lightRed, C.lightGreen, C.lightOrange];
const hdrBgs = [C.accentBlue, C.teal, "7E57C2", C.red, C.green, C.orange];
rows.forEach((row, i) => {
const y = 1.12 + i * 0.73;
rect(sl, 0.35, y, 9.3, 0.65, rowBgs[i], rowBgs[i]);
rect(sl, 0.35, y, 1.9, 0.65, hdrBgs[i], hdrBgs[i]);
sl.addText(row[0], {
x: 0.4, y, w: 1.8, h: 0.65,
fontSize: 13, bold: true, color: C.white, fontFace: "Calibri",
align: "center", valign: "middle",
});
sl.addText(row[1], {
x: 2.35, y, w: 7.1, h: 0.65,
fontSize: 13.5, color: C.charcoal, fontFace: "Calibri", valign: "middle",
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 25 — THANK YOU
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
rect(sl, 0, 0, 10, 5.625, C.headerBlue);
rect(sl, 0, 3.1, 10, 0.1, C.accentBlue);
rect(sl, 0, 3.2, 10, 2.425, C.bgLight);
sl.addText("THANK YOU", {
x: 0.5, y: 0.6, w: 9, h: 1.4,
fontSize: 52, bold: true, color: C.white,
fontFace: "Calibri", align: "center",
});
sl.addText("Ricin Poisoning | Forensic Medicine & Toxicology", {
x: 0.5, y: 2.0, w: 9, h: 0.55,
fontSize: 18, color: C.lightBlue, fontFace: "Calibri",
italic: true, align: "center",
});
sl.addText("MBBS Third Year • FMT Seminar", {
x: 0.5, y: 3.4, w: 9, h: 0.45,
fontSize: 15, color: C.darkGray, fontFace: "Calibri", align: "center",
});
sl.addText("References: Reddy's Essentials of Forensic Medicine & Toxicology | Narayan Reddy | Modi's Medical Jurisprudence", {
x: 0.5, y: 5.1, w: 9, h: 0.35,
fontSize: 10, color: C.midGray, fontFace: "Calibri", align: "center",
});
}
// ─── WRITE ────────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/ricin-ppt/Ricin_Poisoning_FMT_v2.pptx" })
.then(() => console.log("SUCCESS"))
.catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/ricin-ppt && node build2.js
ls -lh /home/daytona/workspace/ricin-ppt/Ricin_Poisoning_FMT_v2.pptx
Ricin Poisoning FMT v2
Presentation · PPTX
What happened
Where is new file
Ricin Poisoning FMT v2
Presentation · PPTX
Hey listen
Don't short my content , try to write as it is with correct English and heading wise , keep simple Pdf No extra slide of only heading , Dont use very short letters ,make lenghty PDF ,
~/ricin-ppt/build3.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Ricin Poisoning - FMT Seminar";
// ── PALETTE ──────────────────────────────────────────────────────────────────
const BLUE = "1565C0";
const LBLUE = "E3F2FD";
const WHITE = "FFFFFF";
const BLACK = "1A1A1A";
const GRAY = "F5F5F5";
const RED = "B71C1C";
const LRED = "FFEBEE";
const GREEN = "1B5E20";
const LGREEN = "E8F5E9";
const TEAL = "004D40";
const LTEAL = "E0F2F1";
const ORANGE = "E65100";
const LORNG = "FFF3E0";
const PURPLE = "4A148C";
const LPURP = "F3E5F5";
// ── HELPERS ──────────────────────────────────────────────────────────────────
function bg(sl, color) {
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color}, line:{color,width:0} });
}
function hbar(sl, title, barColor) {
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:1.1, fill:{color: barColor||BLUE}, line:{color: barColor||BLUE,width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:1.1, w:10, h:0.07, fill:{color:"90CAF9"}, line:{color:"90CAF9",width:0} });
sl.addText(title, {
x:0.4, y:0, w:9.2, h:1.1,
fontSize:27, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle"
});
}
// Rich-text bullet builder
// items = array of strings OR {text, bold, color, sub, breakLine}
function makeBullets(items, fontSize, defaultColor) {
const fs = fontSize || 17;
const dc = defaultColor || BLACK;
return items.map((item, i) => {
const last = i === items.length - 1;
if (item === "") {
return { text:" ", options:{ bullet:false, breakLine:true, fontSize: fs-4, color:WHITE } };
}
if (typeof item === "string") {
return { text:item, options:{ bullet:{indent:18}, breakLine:!last, fontSize:fs, color:dc } };
}
return {
text: item.text,
options: {
bullet: { indent: item.sub ? 36 : 18 },
bold: !!item.bold,
color: item.color || dc,
breakLine: !last,
fontSize: item.sub ? fs-1 : fs,
italic: !!item.italic,
}
};
});
}
function addBulletBox(sl, items, x, y, w, h, fontSize, defaultColor) {
sl.addText(makeBullets(items, fontSize, defaultColor), {
x, y, w, h, fontFace:"Calibri", valign:"top", paraSpaceAfter:6, color: defaultColor||BLACK
});
}
function colorBox(sl, x, y, w, h, bgColor, borderColor, label, labelColor, labelSize) {
sl.addShape(pres.ShapeType.rect, { x, y, w, h, fill:{color:bgColor}, line:{color:borderColor||bgColor, width:1.5} });
if (label) {
sl.addText(label, { x, y, w, h, fontSize:labelSize||14, bold:true, color:labelColor||WHITE, fontFace:"Calibri", align:"center", valign:"middle" });
}
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, LBLUE);
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:3.0, fill:{color:BLUE}, line:{color:BLUE,width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:3.0, w:10, h:0.1, fill:{color:"42A5F5"}, line:{color:"42A5F5",width:0} });
sl.addText("RICIN POISONING", {
x:0.5, y:0.35, w:9, h:1.35,
fontSize:50, bold:true, color:WHITE, fontFace:"Calibri", align:"center"
});
sl.addText("Ricinus communis — Castor Plant Toxicology", {
x:0.5, y:1.75, w:9, h:0.65,
fontSize:21, color:"BBDEFB", fontFace:"Calibri", italic:true, align:"center"
});
sl.addText("FMT Seminar • MBBS Third Year • Forensic Medicine & Toxicology", {
x:0.5, y:3.25, w:9, h:0.5,
fontSize:15, color:"424242", fontFace:"Calibri", align:"center"
});
sl.addText("Topics Covered: Introduction | Features | Toxic Principle | Mechanism of Action |\nClinical Features | Management | Autopsy Findings | Medicolegal Importance", {
x:0.5, y:3.95, w:9, h:0.9,
fontSize:14, color:"37474F", fontFace:"Calibri", align:"center", valign:"middle"
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 2 — INTRODUCTION
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "1. Introduction", BLUE);
addBulletBox(sl, [
{ text:"Ricin is derived from an organic poisonous plant known as Ricinus communis.", bold:false },
{ text:"It belongs to the category of Gastrointestinal Irritants.", bold:false },
"",
{ text:"Botanical Name:", bold:true, color:BLUE },
{ text:"Ricinus communis", sub:true, italic:true },
"",
{ text:"Common Names:", bold:true, color:BLUE },
{ text:"Castor, Arandi, Arand", sub:true },
"",
{ text:"The plant is widely distributed across India and found in tropical regions worldwide.",bold:false },
{ text:"It is commonly found growing in wastelands, roadsides, and uncultivated lands.", bold:false },
], 0.4, 1.25, 9.2, 4.2, 17, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 3 — FEATURES: PLANT & LEAVES & FRUIT
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "2. Features of the Plant", TEAL);
addBulletBox(sl, [
{ text:"General Appearance:", bold:true, color:TEAL },
{ text:"Tall plant that grows all over India, especially in wastelands and uncultivated areas.", sub:true },
"",
{ text:"Leaves:", bold:true, color:TEAL },
{ text:"Lobate (palm-shaped) with toothed (serrated) margins.", sub:true },
"",
{ text:"Fruit:", bold:true, color:TEAL },
{ text:"1.2 to 2.5 cm long, globular in shape, three-lobed, softly spiny.", sub:true },
{ text:"Blue-green or rose-red coloured when immature.", sub:true },
{ text:"Turns brown and bristly when ripe and dry.", sub:true },
], 0.4, 1.25, 9.2, 4.2, 17, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 4 — FEATURES: SEEDS
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "2. Features — Seeds", TEAL);
addBulletBox(sl, [
{ text:"Seeds — General Properties:", bold:true, color:TEAL },
{ text:"Seeds are variable, smooth, and flattened-oval in shape.", sub:true },
{ text:"They are present in two sizes: Large and Small.", sub:true },
"",
{ text:"Large Seeds:", bold:true, color:BLUE },
{ text:"Mottled, dark-brown in colour.", sub:true },
{ text:"Covered with a shiny hard seed coat called Pericarp.", sub:true },
"",
{ text:"Small Seeds:", bold:true, color:GREEN },
{ text:"1 to 2 cm long and 0.8 cm broad in size.", sub:true },
{ text:"Variable, smooth, flattened-oval in shape.", sub:true },
{ text:"Closely resemble Croton seeds in appearance.", sub:true },
], 0.4, 1.25, 9.2, 4.2, 17, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 5 — TOXIC PRINCIPLE (Part 1)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "3. Toxic Principle", GREEN);
addBulletBox(sl, [
{ text:"The entire plant is toxic, but the seeds are the most toxic part.", bold:true, color:RED },
{ text:"Seeds contain Ricin — a water-soluble glycoprotein (toxalbumin) present at the highest levels.", sub:true },
{ text:"Seeds also contain a powerful allergen.", sub:true },
"",
{ text:"The seeds are rich in a purgative oil — pale-yellow with a faint odour and acrid taste.", bold:false },
{ text:"The oil extract of the seeds contains an acid called Ricinoleic Acid.", sub:true },
{ text:"The leftover seed cake after oil extraction contains the toxalbumin Ricin.", sub:true },
"",
{ text:"Important Points Regarding Forms:", bold:true, color:GREEN },
{ text:"Unbroken seeds — Non-poisonous when swallowed or cooked.", sub:true },
{ text:"Castor oil — Non-poisonous.", sub:true },
{ text:"Crushed seeds — Poisonous.", sub:true },
{ text:"Ricin can exist in the form of a powder, mist, or pellet.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 16, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 6 — TOXIC PRINCIPLE (Part 2 — Toxalbumin)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "3. Toxic Principle — Toxalbumin (Ricin)", GREEN);
addBulletBox(sl, [
{ text:"Toxalbumin (Phytotoxin) is a toxic protein found in plants such as Castor, Croton, and Rati (Abrus precatorius).", bold:false },
"",
{ text:"Properties of Toxalbumin:", bold:true, color:GREEN },
{ text:"Disables ribosomes and thereby inhibits protein synthesis.", sub:true },
{ text:"Antigenic in nature — capable of stimulating immune response.", sub:true },
{ text:"Agglutinates (clumps) red blood cells.", sub:true },
{ text:"Causes haemolysis (destruction of RBCs) and cell destruction.", sub:true },
"",
{ text:"Comparison with Other Toxins:", bold:true, color:GREEN },
{ text:"Toxalbumins are similar in structure to the toxins found in Cholera, Tetanus, Diphtheria, Pseudomonas, and Botulinum.", sub:true },
{ text:"Their physiological and toxic properties are also similar to those of Viperine snake venom.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 17, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 7 — MECHANISM OF ACTION (Structure)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "4. Mechanism of Action — Structure of Ricin", PURPLE);
addBulletBox(sl, [
{ text:"Ricin is a toxalbumin composed of Two Polypeptide Chains:", bold:true, color:PURPLE },
{ text:"Chain A — Active / Toxic component.", sub:true },
{ text:"Chain B — Binding component.", sub:true },
{ text:"Both chains are connected to each other by a Disulfide Bond.", sub:true },
"",
{ text:"In the Gastrointestinal Tract (GIT):", bold:true, color:PURPLE },
{ text:"Chain B binds to the surface of the cell (to galactose-containing receptors on glycoproteins and glycolipids).", sub:true },
{ text:"Chain A enters into the cytoplasm of the cell.", sub:true },
"",
{ text:"Effect of Chain A:", bold:true, color:PURPLE },
{ text:"Chain A acts on the 60S ribosomal subunit (specifically the 28S rRNA) and disrupts protein synthesis.", sub:true },
{ text:"Ricin is antigenic in nature, agglutinates red blood cells, and causes haemolysis and cell destruction.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 17, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 8 — MECHANISM OF ACTION (Step-by-step)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "4. Mechanism of Action — Step-by-Step", PURPLE);
addBulletBox(sl, [
{ text:"Step 1 — Binding to Cell Surface:", bold:true, color:PURPLE },
{ text:"The B chain binds to galactose-containing receptors on the cell membrane (glycoproteins and glycolipids).", sub:true },
"",
{ text:"Step 2 — Cell Entry:", bold:true, color:PURPLE },
{ text:"After binding, ricin enters the cell via Endocytosis.", sub:true },
{ text:"It is then transported through: Endosomes → Golgi Apparatus → Endoplasmic Reticulum (ER).", sub:true },
"",
{ text:"Step 3 — Translocation:", bold:true, color:PURPLE },
{ text:"Inside the ER, the A chain separates from the B chain and translocates into the cytosol.", sub:true },
"",
{ text:"Step 4 — Inhibition of Protein Synthesis (Key Step):", bold:true, color:RED },
{ text:"The A chain inactivates ribosomes by damaging the 28S rRNA of the 60S ribosomal subunit.", sub:true },
{ text:"This leads to irreversible inhibition of protein synthesis throughout the cell.", sub:true },
"",
{ text:"Step 5 — Cell Death:", bold:true, color:RED },
{ text:"Due to failure of protein synthesis, the cell cannot survive, resulting in cell death (cytotoxic effect).", sub:true },
], 0.4, 1.25, 9.2, 4.22, 15.5, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 9 — CLINICAL FEATURES: Routes & Dust
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "5. Clinical Features — Routes of Exposure & Dust", ORANGE);
addBulletBox(sl, [
{ text:"Routes of Absorption:", bold:true, color:ORANGE },
{ text:"Ricin can be absorbed through Inhalation, Ingestion, Injection, and Skin Contact.", sub:true },
"",
{ text:"Dust of Seeds — Features:", bold:true, color:ORANGE },
{ text:"Watering of the eyes (Lacrimation)", sub:true },
{ text:"Conjunctivitis (inflammation of the conjunctiva)", sub:true },
{ text:"Sneezing", sub:true },
{ text:"Acute nasal inflammation (Rhinitis)", sub:true },
{ text:"Headache", sub:true },
{ text:"Pharyngitis (throat inflammation)", sub:true },
{ text:"Asthmatic bronchitis", sub:true },
{ text:"Dermatitis (skin inflammation)", sub:true },
{ text:"Gastric upset", sub:true },
], 0.4, 1.25, 9.2, 4.22, 16, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 10 — CLINICAL FEATURES: Inhalation
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "5. Clinical Features — Inhalation Exposure", ORANGE);
addBulletBox(sl, [
{ text:"When ricin is inhaled, it produces the following clinical features:", bold:false },
"",
{ text:"Redness and pain in the eyes and throat", bold:false },
{ text:"Dyspnoea (difficulty in breathing)", bold:false },
{ text:"Wheezing", bold:false },
{ text:"Respiratory distress", bold:false },
{ text:"Fever", bold:false },
{ text:"Cough", bold:false },
{ text:"Tightness in the chest", bold:false },
{ text:"Sweating", bold:false },
{ text:"Pulmonary Oedema (fluid accumulation in the lungs)", bold:false },
], 0.4, 1.25, 9.2, 4.22, 18, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 11 — CLINICAL FEATURES: Oral Ingestion
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "5. Clinical Features — Oral Ingestion (Crushed Seeds)", RED);
addBulletBox(sl, [
{ text:"When crushed seeds are ingested, the following clinical features are produced:", bold:false },
"",
{ text:"Abdominal pain", bold:false },
{ text:"Vomiting and diarrhoea with or without blood (Haematemesis and Melaena)", bold:false },
{ text:"Dehydration", bold:false },
{ text:"Circulatory collapse", bold:false },
{ text:"Muscular pain and cramps in the limbs", bold:false },
{ text:"Convulsions", bold:false },
{ text:"Drowsiness", bold:false },
{ text:"Delirium", bold:false },
{ text:"Jaundice", bold:false },
{ text:"Haemolysis (destruction of red blood cells)", bold:false },
{ text:"Hepatic failure (liver failure)", bold:false },
{ text:"Oliguria (reduced urine output)", bold:false },
{ text:"Uraemia (accumulation of waste products in blood)", bold:false },
{ text:"Death may occur due to Multiorgan Failure or Cardiovascular Collapse.", bold:true, color:RED },
], 0.4, 1.25, 9.2, 4.22, 15.5, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 12 — CLINICAL FEATURES: Injection + Fatal Dose
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "5. Clinical Features — Injection & Fatal Dose", RED);
addBulletBox(sl, [
{ text:"Injection Manifestations:", bold:true, color:RED },
{ text:"Pain at the injection site, erythema (redness), induration, or localised necrosis.", sub:true },
{ text:"Muscular pain.", sub:true },
{ text:"Capillary leak syndrome.", sub:true },
{ text:"Circulatory collapse.", sub:true },
{ text:"Convulsions.", sub:true },
{ text:"Multiorgan failure.", sub:true },
{ text:"Respiratory failure.", sub:true },
"",
{ text:"Fatal Dose:", bold:true, color:RED },
{ text:"5 to 10 seeds.", sub:true },
{ text:"1 mg/kg body weight for Ricin.", sub:true },
{ text:"Fatal Period: 2 days to a few days.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 17, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 13 — MANAGEMENT
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "6. Management", BLUE);
// No antidote box
sl.addShape(pres.ShapeType.rect, { x:0.4, y:1.2, w:9.2, h:0.58, fill:{color:LRED}, line:{color:RED,width:1.5} });
sl.addText("IMPORTANT: There is no specific antidote available for Ricin poisoning.", {
x:0.5, y:1.2, w:9.0, h:0.58,
fontSize:15, bold:true, color:RED, fontFace:"Calibri", valign:"middle"
});
addBulletBox(sl, [
{ text:"In Case of Ingestion:", bold:true, color:BLUE },
{ text:"Gastric lavage (stomach wash).", sub:true },
{ text:"Administration of Emetics and Demulcents.", sub:true },
{ text:"Administration of Glucose and Saline intravenously.", sub:true },
{ text:"2 to 5 g of Sodium Bicarbonate given 8 hourly by mouth.", sub:true },
{ text:"Blood transfusion may be needed in some patients.", sub:true },
{ text:"Gastric lavage followed by administration of Activated Charcoal.", sub:true },
"",
{ text:"Supportive Treatment:", bold:true, color:BLUE },
{ text:"Management of shock.", sub:true },
{ text:"Correction of electrolyte abnormalities.", sub:true },
{ text:"Treatment of convulsions.", sub:true },
], 0.4, 1.88, 9.2, 3.62, 16, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 14 — AUTOPSY FINDINGS
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "7. Autopsy Findings", "37474F");
addBulletBox(sl, [
{ text:"Gastrointestinal Tract (GIT):", bold:true, color:"37474F" },
{ text:"The mucosa is congested, softened, and inflamed.", sub:true },
{ text:"Occasional erosions are present.", sub:true },
{ text:"Submucous haemorrhages are seen.", sub:true },
{ text:"Fragments of seeds may be found in the stomach and intestines.", sub:true },
"",
{ text:"Heart:", bold:true, color:"37474F" },
{ text:"Dilation of the heart chambers is observed.", sub:true },
{ text:"Haemorrhages are present in the pleura.", sub:true },
"",
{ text:"Other Organs — Liver, Kidneys, Spleen, and Lungs:", bold:true, color:"37474F" },
{ text:"Oedema (swelling) and congestion of all these organs are noted.", sub:true },
{ text:"This reflects multiorgan involvement as a result of systemic ricin toxicity.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 17, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 15 — MEDICOLEGAL IMPORTANCE
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "8. Medicolegal Importance", "880E4F");
addBulletBox(sl, [
{ text:"Accidental Poisoning:", bold:true, color:"880E4F" },
{ text:"Accidental poisoning may occur especially in children while playing or exploring the plant and its seeds.", sub:true },
"",
{ text:"Homicidal Use:", bold:true, color:RED },
{ text:"Ricin has been used for homicidal purposes due to its extreme potency.", sub:true },
"",
{ text:"Criminal Abortion:", bold:true, color:RED },
{ text:"Ricin has been used to procure criminal abortion.", sub:true },
"",
{ text:"Anaphylactic Hypersensitivity:", bold:true, color:"880E4F" },
{ text:"Ricin can cause an anaphylactic type of hypersensitivity reaction in humans.", sub:true },
{ text:"The pulp of the seed contains an allergenic glycoprotein which may cause Dermatitis, Rhinitis, Asthma, and Conjunctivitis in allergic individuals.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 16, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 16 — MEDICOLEGAL: Bioweapon + Markov Case
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "8. Medicolegal Importance — Bioweapon & Case", "880E4F");
addBulletBox(sl, [
{ text:"Potential Bioweapon:", bold:true, color:RED },
{ text:"Because of its easy availability and extreme toxicity, Ricin has been classified by the Centre for Disease Control and Prevention (CDC) as a Category B Biological Weapon.", sub:true },
{ text:"Category B agents are the second highest priority agents and include those that are moderately easy to disseminate.", sub:true },
"",
{ text:"Notable Historical Case — Georgi Markov (1978):", bold:true, color:"880E4F" },
{ text:"In 1978, Georgi Markov, a Bulgarian dissident and journalist, died after being attacked by a man wielding an umbrella.", sub:true },
{ text:"The umbrella was specially rigged to inject a ricin-laced pellet under the skin of Markov's thigh.", sub:true },
{ text:"He died three days after the attack.", sub:true },
{ text:"This case remains one of the most documented examples of ricin being used as a covert assassination weapon.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 16, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 17 — LABORATORY DIAGNOSIS
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Laboratory Diagnosis", TEAL);
addBulletBox(sl, [
{ text:"Liquid Chromatography-Mass Spectrometry (LC-MS):", bold:true, color:TEAL },
{ text:"The gold-standard confirmatory test for detection of Ricin.", sub:true },
"",
{ text:"Immunoassays:", bold:true, color:TEAL },
{ text:"Enzyme-linked immunosorbent assay (ELISA) and similar immunological tests are used.", sub:true },
"",
{ text:"Ricinine Detection:", bold:true, color:TEAL },
{ text:"Ricinine is an alkaloid present in the castor plant.", sub:true },
{ text:"It can be detected in both serum and urine samples.", sub:true },
{ text:"Comprehensive untargeted urine drug screening is highly valuable for diagnosis.", sub:true },
"",
{ text:"Ricin-Antibody Conjugates:", bold:true, color:TEAL },
{ text:"Ricin-specific antibody conjugates can be detected in surviving patients approximately 2 weeks after exposure.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 17, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 18 — SUMMARY / KEY POINTS
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, LBLUE);
hbar(sl, "Key Points — Summary", BLUE);
const rows = [
["Plant", "Ricinus communis — GIT irritant; toxalbumin ricin is the main poison", LBLUE, BLUE],
["Toxic Part", "Crushed seeds are toxic; unbroken seeds and castor oil are non-toxic", LGREEN, GREEN],
["Mechanism", "Chain A → damages 28S rRNA of 60S ribosome → inhibits protein synthesis → cell death", LPURP, PURPLE],
["Fatal Dose", "5–10 seeds | 1 mg/kg body weight | Fatal Period: 2 days", LRED, RED],
["Treatment", "No antidote — gastric lavage, activated charcoal, supportive care", LORNG, ORANGE],
["Bioweapon", "CDC Category B biological weapon; Georgi Markov assassination (1978)", LRED, RED],
];
rows.forEach((r, i) => {
const y = 1.22 + i * 0.7;
sl.addShape(pres.ShapeType.rect, { x:0.35, y, w:9.3, h:0.62, fill:{color:r[2]}, line:{color:r[3],width:1} });
sl.addShape(pres.ShapeType.rect, { x:0.35, y, w:1.95, h:0.62, fill:{color:r[3]}, line:{color:r[3],width:0} });
sl.addText(r[0], { x:0.4, y, w:1.85, h:0.62, fontSize:13, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle" });
sl.addText(r[1], { x:2.4, y, w:7.1, h:0.62, fontSize:13.5, color:BLACK, fontFace:"Calibri", valign:"middle" });
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 19 — THANK YOU
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color:BLUE}, line:{color:BLUE,width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:3.1, w:10, h:0.1, fill:{color:"42A5F5"}, line:{color:"42A5F5",width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:3.2, w:10, h:2.425, fill:{color:LBLUE}, line:{color:LBLUE,width:0} });
sl.addText("THANK YOU", {
x:0.5, y:0.55, w:9, h:1.5,
fontSize:56, bold:true, color:WHITE, fontFace:"Calibri", align:"center"
});
sl.addText("Ricin Poisoning | Forensic Medicine & Toxicology", {
x:0.5, y:2.05, w:9, h:0.6,
fontSize:19, color:"BBDEFB", fontFace:"Calibri", italic:true, align:"center"
});
sl.addText("MBBS Third Year • FMT Seminar", {
x:0.5, y:3.35, w:9, h:0.5,
fontSize:16, color:"37474F", fontFace:"Calibri", align:"center"
});
sl.addText("References: Reddy's Essentials of Forensic Medicine & Toxicology | Narayan Reddy | Modi's Medical Jurisprudence & Toxicology", {
x:0.5, y:5.1, w:9, h:0.35,
fontSize:10, color:"757575", fontFace:"Calibri", align:"center"
});
}
// ── WRITE FILE ────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/ricin-ppt/Ricin_Poisoning_v3.pptx" })
.then(() => console.log("SUCCESS"))
.catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/ricin-ppt && node build3.js
libreoffice --headless --convert-to pdf /home/daytona/workspace/ricin-ppt/Ricin_…
mkdir -p /home/daytona/workspace/ricin-ppt/out && libreoffice --headless --conve…
chmod 777 /home/daytona/workspace/ricin-ppt/out && libreoffice --headless --conv…
ls -la /home/daytona/workspace/ricin-ppt/ && cp /home/daytona/workspace/ricin-pp…
cp /tmp/ricin.pdf /home/daytona/workspace/ricin-ppt/Ricin_Poisoning_v3.pdf && ls…
Ricin Poisoning v3
Presentation · PPTX
Ricin Poisoning v3
PDF Document · PDF
| Slide | Content |
|---|---|
| 1 | Title slide |
| 2 | Introduction — full text with correct English |
| 3 | Features — Plant, Leaves & Fruit |
| 4 | Features — Seeds (large & small) |
| 5 | Toxic Principle — Ricin forms & properties |
| 6 | Toxic Principle — Toxalbumin in detail |
| 7 | Mechanism — Structure of Ricin |
| 8 | Mechanism — All 5 steps fully written |
| 9 | Clinical Features — Routes & Dust |
| 10 | Clinical Features — Inhalation |
| 11 | Clinical Features — Oral Ingestion (full list) |
| 12 | Clinical Features — Injection & Fatal Dose |
| 13 | Management (with no-antidote warning) |
| 14 | Autopsy Findings |
| 15 | Medicolegal Importance |
| 16 | Bioweapon + Georgi Markov case |
| 17 | Laboratory Diagnosis |
| 18 | Key Points Summary |
| 19 | Thank You + References |
Will it show on ipad connected to Smart TV in class room then on Projector
| App | Quality | Free? |
|---|---|---|
| Microsoft PowerPoint (iPad app) | Best — shows exactly as made | Free to view |
| Apple Keynote | Good — may shift fonts slightly | Free |
| WPS Office | Good alternative | Free |
Ok Can So first' slide edit Castor poisoning large font below it right side presented by Komal Rathore below it roll no 106. Left side with level of side words Guided by resp Dr Rk singh sir Below it head of department ,,,, last slide edit before thankyou Wirte Large letters Reference Of book Gautam biswas , Reddy , Bardale
~/ricin-ppt/build3.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build3.js'
~/ricin-ppt/build3.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build3.js'
~/ricin-ppt/build3.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build3.js'
~/ricin-ppt/build3.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build3.js'
cd /home/daytona/workspace/ricin-ppt && node build3.js
cp /home/daytona/workspace/ricin-ppt/Castor_Poisoning_v4.pptx /tmp/castor_v4.ppt…
Castor Poisoning v4
Presentation · PPTX
Castor Poisoning v4
PDF Document · PDF
Ok send edited file , and listen Add picture of Castor leaves fruites and Large and small seeds With their heading are written and increase font size no issue with Slide number u can increase but ppt should Be Good not congested
Ricinus communis castor plant leaves fruit seeds high quality image site:wikimedia.org OR site:commons.wikimedia.org
node /home/daytona/skills/shared/scripts/fetch_images.js \ "https://c8.alamy.c…
# Convert all images to base64 strings for use in pptxgenjs node -e " const fs =…
~/ricin-ppt/build3.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build3.js'
~/ricin-ppt/build3.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build3.js'
~/ricin-ppt/build3.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build3.js'
cd /home/daytona/workspace/ricin-ppt && node build3.js 2>&1
cp /home/daytona/workspace/ricin-ppt/Castor_Poisoning_v5.pptx /tmp/castor_v5.ppt…
Castor Poisoning v5
Presentation · PPTX
Castor Poisoning v5
PDF Document · PDF
Send edited file
Castor Poisoning v5
Presentation · PPTX
Castor Poisoning v5
PDF Document · PDF
Ok remove key points slide , Removes boxes from book reference and remove fmt seminar And third year MBBS from everywhere and Some Texts are Not showing so correct it send again And don't write features Again With every Wirte only once same with clinical Features Means use main heading only once not repeat with sub headings
~/ricin-ppt/build_final.js
const pptxgen = require("pptxgenjs");
const IMGS = JSON.parse(require("fs").readFileSync("/tmp/castor_images.json","utf8"));
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Castor Poisoning";
// ── PALETTE ──────────────────────────────────────────────────────────────────
const BLUE = "1565C0";
const LBLUE = "E3F2FD";
const WHITE = "FFFFFF";
const BLACK = "1A1A1A";
const GRAY = "F5F5F5";
const RED = "B71C1C";
const LRED = "FFEBEE";
const GREEN = "1B5E20";
const TEAL = "004D40";
const ORANGE = "E65100";
const PURPLE = "4A148C";
// ── HELPERS ──────────────────────────────────────────────────────────────────
function bg(sl, color) {
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color}, line:{color, width:0} });
}
function hbar(sl, title, barColor) {
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:1.1, fill:{color: barColor||BLUE}, line:{color: barColor||BLUE, width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:1.1, w:10, h:0.06, fill:{color:"90CAF9"}, line:{color:"90CAF9", width:0} });
sl.addText(title, { x:0.4, y:0, w:9.2, h:1.1, fontSize:28, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle" });
}
function makeBullets(items, fontSize, defaultColor) {
const fs = fontSize || 18;
const dc = defaultColor || BLACK;
return items.map((item, i) => {
const last = i === items.length - 1;
if (item === "") return { text:" ", options:{ bullet:false, breakLine:true, fontSize:fs-5, color:WHITE } };
if (typeof item === "string") return { text:item, options:{ bullet:{indent:18}, breakLine:!last, fontSize:fs, color:dc } };
return {
text: item.text,
options: {
bullet: { indent: item.sub ? 36 : 18 },
bold: !!item.bold,
color: item.color || dc,
breakLine: !last,
fontSize: item.sub ? fs : fs,
italic: !!item.italic,
}
};
});
}
function bullets(sl, items, x, y, w, h, fontSize, defaultColor) {
sl.addText(makeBullets(items, fontSize, defaultColor), {
x, y, w, h, fontFace:"Calibri", valign:"top", paraSpaceAfter:7, color: defaultColor||BLACK
});
}
function imgSlide(sl, imgKey, caption, captionColor) {
sl.addImage({ data: IMGS[imgKey], x:5.55, y:1.22, w:4.1, h:3.55, sizing:{type:"contain",w:4.1,h:3.55} });
sl.addShape(pres.ShapeType.rect, { x:5.55, y:4.78, w:4.1, h:0.5, fill:{color: captionColor||TEAL}, line:{color: captionColor||TEAL, width:0} });
sl.addText(caption, { x:5.55, y:4.78, w:4.1, h:0.5, fontSize:13, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle" });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, LBLUE);
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:3.05, fill:{color:BLUE}, line:{color:BLUE, width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:3.05, w:10, h:0.08, fill:{color:"42A5F5"}, line:{color:"42A5F5", width:0} });
sl.addText("CASTOR POISONING", {
x:0.5, y:0.18, w:9, h:1.55,
fontSize:54, bold:true, color:WHITE, fontFace:"Calibri", align:"center"
});
sl.addText("Ricinus communis — Ricin Toxicology", {
x:0.5, y:1.75, w:9, h:0.58,
fontSize:20, color:"BBDEFB", fontFace:"Calibri", italic:true, align:"center"
});
sl.addText("Forensic Medicine & Toxicology", {
x:0.5, y:2.45, w:9, h:0.4,
fontSize:14, color:"BBDEFB", fontFace:"Calibri", align:"center"
});
// Divider line
sl.addShape(pres.ShapeType.rect, { x:0.5, y:3.22, w:9, h:0.04, fill:{color:"90CAF9"}, line:{color:"90CAF9", width:0} });
// LEFT — Guided by
sl.addText("Guided by:", {
x:0.5, y:3.35, w:4.5, h:0.42,
fontSize:17, bold:true, color:BLUE, fontFace:"Calibri"
});
sl.addText("Resp. Dr. R.K. Singh Sir", {
x:0.5, y:3.75, w:4.5, h:0.45,
fontSize:20, bold:true, color:BLACK, fontFace:"Calibri"
});
sl.addText("Head of Department\nForensic Medicine & Toxicology", {
x:0.5, y:4.2, w:4.5, h:0.65,
fontSize:16, color:"37474F", fontFace:"Calibri"
});
// RIGHT — Presented by
sl.addText("Presented by:", {
x:5.4, y:3.35, w:4.2, h:0.42,
fontSize:17, bold:true, color:BLUE, fontFace:"Calibri"
});
sl.addText("Komal Rathore", {
x:5.4, y:3.75, w:4.2, h:0.45,
fontSize:24, bold:true, color:BLACK, fontFace:"Calibri"
});
sl.addText("Roll No. 106", {
x:5.4, y:4.2, w:4.2, h:0.4,
fontSize:17, color:"37474F", fontFace:"Calibri"
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 2 — INTRODUCTION
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Introduction", BLUE);
bullets(sl, [
{ text:"Ricin is derived from an organic poisonous plant known as Ricinus communis.", bold:false },
{ text:"It belongs to the category of Gastrointestinal Irritants.", bold:false },
"",
{ text:"Botanical Name:", bold:true, color:BLUE },
{ text:"Ricinus communis", sub:true, italic:true },
"",
{ text:"Common Names:", bold:true, color:BLUE },
{ text:"Castor, Arandi, Arand", sub:true },
"",
{ text:"The plant is widely distributed across India and found in tropical regions worldwide.", bold:false },
{ text:"It is commonly found growing in wastelands, roadsides, and uncultivated lands.", bold:false },
], 0.4, 1.25, 9.2, 4.2, 19, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 3 — FEATURES: PLANT (image)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Features of the Plant", TEAL);
bullets(sl, [
{ text:"General Appearance:", bold:true, color:TEAL },
{ text:"Tall plant that grows all over India.", sub:true },
{ text:"Especially found in wastelands and uncultivated areas.", sub:true },
{ text:"Also commonly seen along roadsides and open fields.", sub:true },
], 0.4, 1.25, 5.0, 4.2, 19, BLACK);
imgSlide(sl, "plant", "Ricinus communis — Castor Plant", TEAL);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 4 — LEAVES (image)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Leaves", TEAL);
bullets(sl, [
{ text:"Shape:", bold:true, color:TEAL },
{ text:"Lobate (palm-shaped) with toothed (serrated) margins.", sub:true },
{ text:"Large, alternate leaves with long petioles.", sub:true },
{ text:"Green to reddish-purple in colour depending on variety.", sub:true },
], 0.4, 1.25, 5.0, 4.2, 19, BLACK);
imgSlide(sl, "leaf", "Castor Leaf — Lobate with Serrated Margins", TEAL);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 5 — FRUIT & SEEDS (image)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Fruit & Seeds", TEAL);
bullets(sl, [
{ text:"Fruit:", bold:true, color:TEAL },
{ text:"1.2 to 2.5 cm long, globular, three-lobed, softly spiny.", sub:true },
{ text:"Blue-green or rose-red when immature.", sub:true },
{ text:"Brown and bristly when ripe and dry.", sub:true },
"",
{ text:"Seeds — Two Sizes:", bold:true, color:BLUE },
{ text:"Large seeds: Mottled, dark-brown, with shiny hard pericarp.", sub:true },
{ text:"Small seeds: 1 to 2 cm long, 0.8 cm broad, resemble croton seeds.", sub:true },
{ text:"Both are smooth and flattened-oval in shape.", sub:true },
], 0.4, 1.25, 5.0, 4.2, 19, BLACK);
imgSlide(sl, "fruits_seeds_leaf", "Castor Fruit, Seeds & Leaf", BLUE);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 6 — SEEDS CLOSE-UP (image)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Large & Small Seeds", TEAL);
bullets(sl, [
{ text:"Large Seeds:", bold:true, color:BLUE },
{ text:"Mottled, dark-brown in colour.", sub:true },
{ text:"Covered with a shiny hard seed coat — called Pericarp.", sub:true },
{ text:"Variable, smooth, flattened-oval in shape.", sub:true },
"",
{ text:"Small Seeds:", bold:true, color:GREEN },
{ text:"1 to 2 cm long and 0.8 cm broad in size.", sub:true },
{ text:"Variable, smooth, flattened-oval in shape.", sub:true },
{ text:"Closely resemble Croton seeds in appearance.", sub:true },
], 0.4, 1.25, 5.0, 4.2, 19, BLACK);
imgSlide(sl, "seeds", "Castor Seeds — Large & Small Varieties", BLUE);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 7 — TOXIC PRINCIPLE (Part 1)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Toxic Principle", GREEN);
// warning box
sl.addShape(pres.ShapeType.rect, { x:0.35, y:1.18, w:9.3, h:0.55, fill:{color:LRED}, line:{color:RED, width:1.5} });
sl.addText("Entire plant is toxic — Seeds are the most toxic part (contain Ricin, a water-soluble glycoprotein)", {
x:0.45, y:1.18, w:9.1, h:0.55, fontSize:15, bold:true, color:RED, fontFace:"Calibri", valign:"middle"
});
bullets(sl, [
{ text:"Seeds are rich in a purgative oil — pale-yellow with a faint odour and acrid taste.", bold:false },
{ text:"The oil extract of seeds contains an acid called Ricinoleic Acid.", sub:true },
{ text:"The leftover seed cake after oil extraction contains the toxalbumin Ricin.", sub:true },
"",
{ text:"Important — Which forms are poisonous?", bold:true, color:GREEN },
{ text:"Unbroken seeds — Non-poisonous when swallowed or cooked.", sub:true },
{ text:"Castor oil — Non-poisonous.", sub:true },
{ text:"Crushed seeds — Poisonous.", sub:true },
{ text:"Ricin can exist in the form of powder, mist, or pellet.", sub:true },
], 0.4, 1.85, 9.2, 3.6, 18, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 8 — TOXIC PRINCIPLE (Part 2 — Toxalbumin)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Toxalbumin (Ricin) — Properties", GREEN);
bullets(sl, [
{ text:"Toxalbumin (Phytotoxin) is a toxic protein found in plants such as Castor, Croton, and Rati (Abrus precatorius).", bold:false },
"",
{ text:"Properties:", bold:true, color:GREEN },
{ text:"Disables ribosomes and thereby inhibits protein synthesis.", sub:true },
{ text:"Antigenic in nature — capable of stimulating immune response.", sub:true },
{ text:"Agglutinates (clumps) red blood cells (RBCs).", sub:true },
{ text:"Causes haemolysis (destruction of RBCs) and cell destruction.", sub:true },
"",
{ text:"Comparison with Other Toxins:", bold:true, color:GREEN },
{ text:"Similar in structure to toxins of Cholera, Tetanus, Diphtheria, Pseudomonas, and Botulinum.", sub:true },
{ text:"Physiological and toxic properties are also similar to those of Viperine snake venom.", sub:true },
], 0.4, 1.25, 9.2, 4.2, 18, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 9 — MECHANISM: STRUCTURE
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Mechanism of Action — Structure of Ricin", PURPLE);
sl.addShape(pres.ShapeType.rect, { x:0.35, y:1.18, w:9.3, h:0.6, fill:{color:"EDE7F6"}, line:{color:PURPLE, width:1.5} });
sl.addText("Ricin = Chain A (Toxic/Active) + Chain B (Binding) — connected by a Disulfide Bond", {
x:0.45, y:1.18, w:9.1, h:0.6, fontSize:17, bold:true, color:PURPLE, fontFace:"Calibri", align:"center", valign:"middle"
});
bullets(sl, [
{ text:"In the Gastrointestinal Tract:", bold:true, color:PURPLE },
{ text:"Chain B binds to the surface of the cell (galactose-containing receptors on glycoproteins and glycolipids).", sub:true },
{ text:"Chain A enters into the cytoplasm of the cell.", sub:true },
"",
{ text:"Effect of Chain A:", bold:true, color:PURPLE },
{ text:"Chain A acts on the 60S ribosomal subunit (specifically 28S rRNA) and disrupts protein synthesis.", sub:true },
{ text:"Ricin is antigenic in nature, agglutinates red blood cells, and causes haemolysis and cell destruction.", sub:true },
], 0.4, 1.9, 9.2, 3.6, 18, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 10 — MECHANISM: STEP BY STEP
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Mechanism of Action — Step by Step", PURPLE);
const steps = [
{ num:"1", title:"Binding", color:"4527A0", desc:"Chain B binds to galactose receptors on cell membrane (glycoproteins & glycolipids)." },
{ num:"2", title:"Cell Entry", color:"283593", desc:"Ricin enters via Endocytosis → Endosomes → Golgi Apparatus → Endoplasmic Reticulum." },
{ num:"3", title:"Translocation", color:"0277BD", desc:"Inside the ER, Chain A separates and moves into the cytosol." },
{ num:"4", title:"Ribosome Damage", color:RED, desc:"Chain A inactivates 28S rRNA of the 60S ribosomal subunit → irreversible inhibition of protein synthesis." },
{ num:"5", title:"Cell Death", color:RED, desc:"Failure of protein synthesis → cell cannot survive → cytotoxic cell death." },
];
const rowBgs = ["EDE7F6","E8EAF6","E3F2FD","FFEBEE","FFEBEE"];
steps.forEach((step, i) => {
const y = 1.25 + i * 0.82;
sl.addShape(pres.ShapeType.rect, { x:0.35, y, w:9.3, h:0.72, fill:{color:rowBgs[i]}, line:{color:rowBgs[i], width:0} });
sl.addShape(pres.ShapeType.rect, { x:0.35, y, w:0.55, h:0.72, fill:{color:step.color}, line:{color:step.color, width:0} });
sl.addText(step.num, { x:0.35, y, w:0.55, h:0.72, fontSize:16, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle" });
sl.addText(step.title + ":", { x:0.98, y:y+0.1, w:2.2, h:0.52, fontSize:15, bold:true, color:step.color, fontFace:"Calibri", valign:"middle" });
sl.addText(step.desc, { x:3.25, y:y+0.08, w:6.22, h:0.56, fontSize:14.5, color:BLACK, fontFace:"Calibri", valign:"middle", wrap:true });
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 11 — CLINICAL FEATURES: Routes & Dust
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Clinical Features", ORANGE);
bullets(sl, [
{ text:"Routes of Absorption:", bold:true, color:ORANGE },
{ text:"Ricin can be absorbed through Inhalation, Ingestion, Injection, and Skin Contact.", sub:true },
"",
{ text:"Dust of Seeds:", bold:true, color:ORANGE },
{ text:"Watering of the eyes (Lacrimation)", sub:true },
{ text:"Conjunctivitis", sub:true },
{ text:"Sneezing, Acute nasal inflammation (Rhinitis)", sub:true },
{ text:"Headache", sub:true },
{ text:"Pharyngitis (throat inflammation)", sub:true },
{ text:"Asthmatic bronchitis", sub:true },
{ text:"Dermatitis (skin inflammation)", sub:true },
{ text:"Gastric upset", sub:true },
], 0.4, 1.25, 9.2, 4.2, 18, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 12 — INHALATION
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Inhalation Exposure", ORANGE);
bullets(sl, [
{ text:"When ricin is inhaled, it produces the following clinical features:", bold:false },
"",
"Redness and pain in the eyes and throat",
"Dyspnoea (difficulty in breathing)",
"Wheezing",
"Respiratory distress",
"Fever",
"Cough",
"Tightness in the chest",
"Sweating",
"Pulmonary Oedema (fluid accumulation in the lungs)",
], 0.4, 1.25, 9.2, 4.2, 19, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 13 — ORAL INGESTION
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Oral Ingestion (Crushed Seeds)", RED);
bullets(sl, [
{ text:"When crushed seeds are ingested, the following clinical features are produced:", bold:false },
"",
"Abdominal pain",
"Vomiting and diarrhoea with or without blood (Haematemesis and Melaena)",
"Dehydration",
"Circulatory collapse",
"Muscular pain and cramps in the limbs",
"Convulsions",
"Drowsiness and Delirium",
"Jaundice",
"Haemolysis (destruction of red blood cells)",
"Hepatic failure (liver failure)",
"Oliguria (reduced urine output)",
"Uraemia (accumulation of waste products in blood)",
{ text:"Death may occur due to Multiorgan Failure or Cardiovascular Collapse.", bold:true, color:RED },
], 0.4, 1.25, 9.2, 4.22, 17, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 14 — INJECTION + FATAL DOSE
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Injection Exposure & Fatal Dose", RED);
bullets(sl, [
{ text:"Injection Manifestations:", bold:true, color:RED },
{ text:"Pain at the injection site, erythema (redness), induration, or localised necrosis.", sub:true },
{ text:"Muscular pain.", sub:true },
{ text:"Capillary leak syndrome.", sub:true },
{ text:"Circulatory collapse.", sub:true },
{ text:"Convulsions.", sub:true },
{ text:"Multiorgan failure.", sub:true },
{ text:"Respiratory failure.", sub:true },
"",
{ text:"Fatal Dose:", bold:true, color:RED },
{ text:"5 to 10 seeds.", sub:true },
{ text:"1 mg/kg body weight for Ricin.", sub:true },
{ text:"Fatal Period: 2 days to a few days.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 18, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 15 — MANAGEMENT
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Management", BLUE);
sl.addShape(pres.ShapeType.rect, { x:0.35, y:1.18, w:9.3, h:0.52, fill:{color:LRED}, line:{color:RED, width:1.5} });
sl.addText("NO SPECIFIC ANTIDOTE AVAILABLE — Treatment is purely supportive", {
x:0.45, y:1.18, w:9.1, h:0.52, fontSize:15, bold:true, color:RED, fontFace:"Calibri", align:"center", valign:"middle"
});
bullets(sl, [
{ text:"In Case of Ingestion:", bold:true, color:BLUE },
{ text:"Gastric lavage (stomach wash).", sub:true },
{ text:"Administration of Emetics and Demulcents.", sub:true },
{ text:"Administration of Glucose and Saline intravenously.", sub:true },
{ text:"2 to 5 g of Sodium Bicarbonate given 8 hourly by mouth.", sub:true },
{ text:"Blood transfusion may be needed in some patients.", sub:true },
{ text:"Gastric lavage followed by administration of Activated Charcoal.", sub:true },
"",
{ text:"Supportive Treatment:", bold:true, color:BLUE },
{ text:"Management of shock.", sub:true },
{ text:"Correction of electrolyte abnormalities.", sub:true },
{ text:"Treatment of convulsions.", sub:true },
], 0.4, 1.82, 9.2, 3.65, 18, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 16 — AUTOPSY FINDINGS
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Autopsy Findings", "37474F");
bullets(sl, [
{ text:"Gastrointestinal Tract:", bold:true, color:"37474F" },
{ text:"The mucosa is congested, softened, and inflamed.", sub:true },
{ text:"Occasional erosions and submucous haemorrhages are present.", sub:true },
{ text:"Fragments of seeds may be found in the stomach and intestines.", sub:true },
"",
{ text:"Heart:", bold:true, color:"37474F" },
{ text:"Dilation of the heart chambers is observed.", sub:true },
{ text:"Haemorrhages are present in the pleura.", sub:true },
"",
{ text:"Liver, Kidneys, Spleen, and Lungs:", bold:true, color:"37474F" },
{ text:"Oedema (swelling) and congestion of all these organs.", sub:true },
{ text:"Reflects multiorgan involvement as a result of systemic ricin toxicity.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 18, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 17 — MEDICOLEGAL IMPORTANCE
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Medicolegal Importance", "880E4F");
bullets(sl, [
{ text:"Accidental Poisoning:", bold:true, color:"880E4F" },
{ text:"Common in children while playing or exploring the plant and its seeds.", sub:true },
"",
{ text:"Homicidal Use:", bold:true, color:RED },
{ text:"Ricin has been used for homicidal purposes due to its extreme potency.", sub:true },
"",
{ text:"Criminal Abortion:", bold:true, color:RED },
{ text:"Seed pulp has been used to procure criminal abortion.", sub:true },
"",
{ text:"Anaphylactic Hypersensitivity:", bold:true, color:"880E4F" },
{ text:"Can cause anaphylactic type of hypersensitivity reactions in humans.", sub:true },
{ text:"Allergenic glycoprotein causes Dermatitis, Rhinitis, Asthma, and Conjunctivitis.", sub:true },
"",
{ text:"Bioweapon — CDC Category B:", bold:true, color:RED },
{ text:"Classified as a Category B Biological Weapon due to easy availability and high toxicity.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 17, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 18 — GEORGI MARKOV CASE
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Notable Case — Georgi Markov (1978)", "880E4F");
sl.addShape(pres.ShapeType.rect, { x:0.35, y:1.2, w:9.3, h:4.1, fill:{color:"FCE4EC"}, line:{color:"E91E63", width:1.5} });
sl.addText([
{ text:"Georgi Markov", options:{ bold:true, color:RED } },
{ text:" was a Bulgarian dissident and journalist.\n\n", options:{ color:BLACK, breakLine:true } },
{ text:"In 1978 in London, he was attacked by a man with a specially rigged ", options:{ color:BLACK } },
{ text:"umbrella", options:{ bold:true, color:RED } },
{ text:" that injected a tiny ", options:{ color:BLACK } },
{ text:"ricin-laced pellet", options:{ bold:true, color:RED } },
{ text:" under the skin of his thigh.\n\n", options:{ color:BLACK, breakLine:true } },
{ text:"He died 3 days after the attack.\n\n", options:{ bold:true, color:RED, breakLine:true } },
{ text:"This case remains one of the most documented examples of ricin being used as a covert assassination weapon.\n\n", options:{ color:BLACK, breakLine:true } },
{ text:"Forensic significance: ", options:{ bold:true, color:"880E4F" } },
{ text:"Demonstrates ricin's potential as a covert assassination tool — highly relevant for medicolegal practice.", options:{ color:"37474F", italic:true } },
], { x:0.6, y:1.3, w:8.9, h:3.9, fontSize:16, fontFace:"Calibri", valign:"top", paraSpaceAfter:4 });
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 19 — LABORATORY DIAGNOSIS
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Laboratory Diagnosis", TEAL);
bullets(sl, [
{ text:"Liquid Chromatography-Mass Spectrometry (LC-MS):", bold:true, color:TEAL },
{ text:"Gold-standard confirmatory test for detection of Ricin.", sub:true },
"",
{ text:"Immunoassays:", bold:true, color:TEAL },
{ text:"ELISA and similar immunological tests are used.", sub:true },
"",
{ text:"Ricinine Detection:", bold:true, color:TEAL },
{ text:"Ricinine is an alkaloid present in the castor plant.", sub:true },
{ text:"Can be detected in both serum and urine samples.", sub:true },
{ text:"Comprehensive untargeted urine drug screening is highly valuable for diagnosis.", sub:true },
"",
{ text:"Ricin-Antibody Conjugates:", bold:true, color:TEAL },
{ text:"Detectable in surviving patients approximately 2 weeks after exposure.", sub:true },
], 0.4, 1.25, 9.2, 4.22, 18, BLACK);
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 20 — REFERENCES (no boxes, clean list)
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, LBLUE);
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:1.3, fill:{color:BLUE}, line:{color:BLUE, width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:1.3, w:10, h:0.07, fill:{color:"42A5F5"}, line:{color:"42A5F5", width:0} });
sl.addText("REFERENCES", {
x:0.5, y:0, w:9, h:1.3,
fontSize:38, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle"
});
const refs = [
{ num:"1.", author:"Gautam Biswas", title:"Textbook of Forensic Medicine & Toxicology", pub:"Jaypee Brothers Medical Publishers" },
{ num:"2.", author:"K. S. Narayan Reddy", title:"The Essentials of Forensic Medicine & Toxicology", pub:"Jaypee Brothers Medical Publishers" },
{ num:"3.", author:"Rajesh Bardale", title:"Textbook of Forensic Medicine & Toxicology", pub:"Oxford University Press" },
];
refs.forEach((ref, i) => {
const y = 1.55 + i * 1.28;
// Divider line
sl.addShape(pres.ShapeType.rect, { x:0.4, y, w:9.2, h:0.04, fill:{color:BLUE}, line:{color:BLUE, width:0} });
sl.addText(ref.num + " " + ref.author, {
x:0.4, y: y + 0.1, w:9.2, h:0.52,
fontSize:22, bold:true, color:BLUE, fontFace:"Calibri", valign:"middle"
});
sl.addText(ref.title + " — " + ref.pub, {
x:0.4, y: y + 0.6, w:9.2, h:0.42,
fontSize:17, color:"37474F", fontFace:"Calibri", italic:true, valign:"middle"
});
});
}
// ═══════════════════════════════════════════════════════════════════════════
// SLIDE 21 — THANK YOU
// ═══════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, LBLUE);
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:3.1, fill:{color:BLUE}, line:{color:BLUE, width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:3.1, w:10, h:0.08, fill:{color:"42A5F5"}, line:{color:"42A5F5", width:0} });
sl.addText("THANK YOU", {
x:0.5, y:0.55, w:9, h:1.6,
fontSize:58, bold:true, color:WHITE, fontFace:"Calibri", align:"center"
});
sl.addText("Castor Poisoning | Forensic Medicine & Toxicology", {
x:0.5, y:2.1, w:9, h:0.58,
fontSize:19, color:"BBDEFB", fontFace:"Calibri", italic:true, align:"center"
});
sl.addText("Presented by: Komal Rathore | Roll No. 106", {
x:0.5, y:3.35, w:9, h:0.48,
fontSize:17, color:"37474F", fontFace:"Calibri", align:"center", bold:true
});
sl.addText("Guided by: Resp. Dr. R.K. Singh Sir | Head of Department", {
x:0.5, y:3.88, w:9, h:0.42,
fontSize:15, color:"37474F", fontFace:"Calibri", align:"center"
});
}
// ── WRITE FILE ────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/ricin-ppt/Castor_Poisoning_Final.pptx" })
.then(() => console.log("SUCCESS"))
.catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/ricin-ppt && node build_final.js 2>&1
cp /home/daytona/workspace/ricin-ppt/Castor_Poisoning_Final.pptx /tmp/final.pptx…
Castor Poisoning Final
Presentation · PPTX
Castor Poisoning Final
PDF Document · PDF
Ok do it
Castor Poisoning Final
Presentation · PPTX
Castor Poisoning Final
PDF Document · PDF
Send Edited file
Castor Poisoning Final
Presentation · PPTX
Castor Poisoning Final
PDF Document · PDF
Again Want some corrections
U pasted wrong images , Add three images 1 for general features 1 for leaves and 1 for only seeds strictly and Last slide only Wirte thankyou nothing else
Ricinus communis castor plant full plant photo wikimedia commons free use
castor plant leaf close up wikimedia commons
castor bean seeds only ricinus communis seeds wikimedia commons
node /home/daytona/skills/shared/scripts/fetch_images.js \ "https://upload.wik…
# Download each image separately with curl curl -L -s --max-time 20 "https://upl…
# Seeds image too small (1966 bytes = failed/blocked). Try alternate seeds URL c…
node -e " const fs = require('fs'); const out = { plant: 'image/jpeg;base64,' …
~/ricin-ppt/build_final.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build_final.js'
~/ricin-ppt/build_final.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build_final.js'
~/ricin-ppt/build_final.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build_final.js'
~/ricin-ppt/build_final.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/ricin-ppt/build_final.js'
cd /home/daytona/workspace/ricin-ppt && node build_final.js 2>&1
cp /home/daytona/workspace/ricin-ppt/Castor_Poisoning_v6.pptx /tmp/v6.pptx && li…
Castor Poisoning v6
Presentation · PPTX
Castor Poisoning v6
PDF Document · PDF
| Slide | Change |
|---|---|
| Slide 3 | Correct full Castor Plant photo (Wikimedia Commons) |
| Slide 4 | Correct Castor Leaf close-up photo |
| Slide 5 | Fruit — text only, no wrong image |
| Slide 6 | Correct Castor Seeds only photo (Ricinus communis semen) |
| Last slide | THANK YOU in large bold letters — nothing else |
U still making mistake some text still not showing plsss Increase slide number but write properly and don't write size of seed with image
~/ricin-ppt/build_v7.js
const pptxgen = require("pptxgenjs");
const IMGS = JSON.parse(require("fs").readFileSync("/tmp/castor_images_v2.json","utf8"));
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Castor Poisoning";
const BLUE = "1565C0";
const LBLUE = "E3F2FD";
const WHITE = "FFFFFF";
const BLACK = "1A1A1A";
const GRAY = "F5F5F5";
const RED = "B71C1C";
const LRED = "FFEBEE";
const GREEN = "1B5E20";
const TEAL = "004D40";
const ORANGE = "E65100";
const PURPLE = "4A148C";
function bg(sl, color) {
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color}, line:{color, width:0} });
}
function hbar(sl, title, barColor) {
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:1.0, fill:{color: barColor||BLUE}, line:{color: barColor||BLUE, width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:1.0, w:10, h:0.06, fill:{color:"90CAF9"}, line:{color:"90CAF9", width:0} });
sl.addText(title, { x:0.4, y:0, w:9.2, h:1.0, fontSize:26, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle" });
}
// Each item in array = {text, bold, color, sub, italic} OR ""
// Renders as plain addText lines — NO bullet nesting issues
function addLines(sl, items, x, y, w, h, fs, gap) {
const lineH = (h / items.length);
let curY = y;
items.forEach(item => {
if (item === "") { curY += (fs * 0.018); return; }
const isBold = !!item.bold;
const isSub = !!item.sub;
const color = item.color || BLACK;
const size = isSub ? fs : fs;
const prefix = isSub ? " • " : "• ";
sl.addText(prefix + item.text, {
x: x, y: curY, w: w, h: size * 0.022 + 0.15,
fontSize: size, bold: isBold, color: color,
fontFace:"Calibri", valign:"top", wrap:true,
italic: !!item.italic,
});
curY += size * 0.022 + 0.15 + (gap || 0.06);
});
}
function imgRight(sl, imgKey, caption, captionColor) {
sl.addImage({ data: IMGS[imgKey], x:5.55, y:1.1, w:4.1, h:3.9, sizing:{type:"contain",w:4.1,h:3.9} });
sl.addShape(pres.ShapeType.rect, { x:5.55, y:5.0, w:4.1, h:0.42, fill:{color: captionColor||TEAL}, line:{color: captionColor||TEAL, width:0} });
sl.addText(caption, { x:5.55, y:5.0, w:4.1, h:0.42, fontSize:13, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle" });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, LBLUE);
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:3.05, fill:{color:BLUE}, line:{color:BLUE,width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:3.05, w:10, h:0.08, fill:{color:"42A5F5"}, line:{color:"42A5F5",width:0} });
sl.addText("CASTOR POISONING", { x:0.5, y:0.18, w:9, h:1.55, fontSize:54, bold:true, color:WHITE, fontFace:"Calibri", align:"center" });
sl.addText("Ricinus communis — Ricin Toxicology", { x:0.5, y:1.75, w:9, h:0.58, fontSize:20, color:"BBDEFB", fontFace:"Calibri", italic:true, align:"center" });
sl.addText("Forensic Medicine & Toxicology", { x:0.5, y:2.45, w:9, h:0.4, fontSize:14, color:"BBDEFB", fontFace:"Calibri", align:"center" });
sl.addShape(pres.ShapeType.rect, { x:0.5, y:3.22, w:9, h:0.04, fill:{color:"90CAF9"}, line:{color:"90CAF9",width:0} });
sl.addText("Guided by:", { x:0.5, y:3.35, w:4.5, h:0.42, fontSize:17, bold:true, color:BLUE, fontFace:"Calibri" });
sl.addText("Resp. Dr. R.K. Singh Sir", { x:0.5, y:3.75, w:4.5, h:0.45, fontSize:20, bold:true, color:BLACK, fontFace:"Calibri" });
sl.addText("Head of Department\nForensic Medicine & Toxicology", { x:0.5, y:4.2, w:4.5, h:0.65, fontSize:16, color:"37474F", fontFace:"Calibri" });
sl.addText("Presented by:", { x:5.4, y:3.35, w:4.2, h:0.42, fontSize:17, bold:true, color:BLUE, fontFace:"Calibri" });
sl.addText("Komal Rathore", { x:5.4, y:3.75, w:4.2, h:0.45, fontSize:24, bold:true, color:BLACK, fontFace:"Calibri" });
sl.addText("Roll No. 106", { x:5.4, y:4.2, w:4.2, h:0.4, fontSize:17, color:"37474F", fontFace:"Calibri" });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 2 — INTRODUCTION
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Introduction", BLUE);
addLines(sl, [
{ text:"Ricin is derived from an organic poisonous plant known as Ricinus communis." },
{ text:"It belongs to the category of Gastrointestinal Irritants." },
"",
{ text:"Botanical Name:", bold:true, color:BLUE },
{ text:"Ricinus communis", sub:true, italic:true },
"",
{ text:"Common Names:", bold:true, color:BLUE },
{ text:"Castor, Arandi, Arand", sub:true },
"",
{ text:"The plant is widely distributed across India and found in tropical regions worldwide." },
{ text:"It is commonly found growing in wastelands, roadsides, and uncultivated lands." },
], 0.4, 1.12, 9.2, 4.3, 19);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 3 — FEATURES: PLANT (image right)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Features of the Plant", TEAL);
addLines(sl, [
{ text:"General Appearance:", bold:true, color:TEAL },
{ text:"Tall plant that grows all over India.", sub:true },
{ text:"Especially found in wastelands and uncultivated areas.", sub:true },
{ text:"Also seen along roadsides and open fields.", sub:true },
], 0.4, 1.12, 5.0, 4.3, 19);
imgRight(sl, "plant", "Ricinus communis — Castor Plant", TEAL);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 4 — LEAVES (image right)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Leaves", TEAL);
addLines(sl, [
{ text:"Lobate (palm-shaped) with toothed (serrated) margins.", bold:false },
{ text:"Large, alternate leaves with long petioles.", bold:false },
{ text:"Green to reddish-purple in colour depending on variety.", bold:false },
], 0.4, 1.12, 5.0, 4.3, 19);
imgRight(sl, "leaf", "Castor Leaf — Lobate with Serrated Margins", TEAL);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 5 — FRUIT (text only)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Fruit", TEAL);
addLines(sl, [
{ text:"1.2 to 2.5 cm long." },
{ text:"Globular in shape, three-lobed." },
{ text:"Softly spiny on the outer surface." },
{ text:"Blue-green or rose-red in colour when immature." },
{ text:"Turns brown and bristly when ripe and dry." },
], 0.4, 1.12, 9.2, 4.3, 21);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 6 — SEEDS (image right, NO size text with image)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Seeds", TEAL);
addLines(sl, [
{ text:"Large Seeds:", bold:true, color:BLUE },
{ text:"Mottled, dark-brown in colour.", sub:true },
{ text:"Shiny hard seed coat — called Pericarp.", sub:true },
{ text:"Smooth, flattened-oval in shape.", sub:true },
"",
{ text:"Small Seeds:", bold:true, color:GREEN },
{ text:"Smooth, flattened-oval in shape.", sub:true },
{ text:"Closely resemble Croton seeds.", sub:true },
], 0.4, 1.12, 5.0, 4.3, 19);
imgRight(sl, "seeds", "Castor Seeds", BLUE);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 7 — TOXIC PRINCIPLE (Part 1)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Toxic Principle", GREEN);
sl.addShape(pres.ShapeType.rect, { x:0.35, y:1.08, w:9.3, h:0.52, fill:{color:LRED}, line:{color:RED,width:1.5} });
sl.addText("Entire plant is toxic — Seeds are the most toxic part", {
x:0.45, y:1.08, w:9.1, h:0.52, fontSize:15, bold:true, color:RED, fontFace:"Calibri", align:"center", valign:"middle"
});
addLines(sl, [
{ text:"Seeds contain Ricin — a water-soluble glycoprotein (toxalbumin)." },
{ text:"Seeds are rich in a purgative oil — pale-yellow, faint odour, acrid taste." },
{ text:"The oil extract contains Ricinoleic Acid.", sub:true },
{ text:"The leftover seed cake after oil extraction contains the toxalbumin Ricin.", sub:true },
], 0.4, 1.72, 9.2, 3.7, 19);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 8 — TOXIC PRINCIPLE (Part 2 — which forms are poisonous)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Toxic Principle — Poisonous Forms", GREEN);
addLines(sl, [
{ text:"Which forms are poisonous?", bold:true, color:GREEN },
{ text:"Unbroken seeds — Non-poisonous when swallowed or cooked.", sub:true },
{ text:"Castor oil — Non-poisonous.", sub:true },
{ text:"Crushed seeds — Poisonous.", sub:true },
{ text:"Ricin can exist in the form of powder, mist, or pellet.", sub:true },
"",
{ text:"Toxalbumin (Phytotoxin) Properties:", bold:true, color:GREEN },
{ text:"Disables ribosomes and inhibits protein synthesis.", sub:true },
{ text:"Antigenic in nature.", sub:true },
{ text:"Agglutinates (clumps) red blood cells.", sub:true },
{ text:"Causes haemolysis and cell destruction.", sub:true },
{ text:"Similar in structure to toxins of Cholera, Tetanus, Diphtheria, Pseudomonas, and Botulinum.", sub:true },
{ text:"Properties similar to Viperine snake venom.", sub:true },
], 0.4, 1.12, 9.2, 4.3, 18);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 9 — MECHANISM: STRUCTURE
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Mechanism of Action — Structure of Ricin", PURPLE);
sl.addShape(pres.ShapeType.rect, { x:0.35, y:1.08, w:9.3, h:0.58, fill:{color:"EDE7F6"}, line:{color:PURPLE,width:1.5} });
sl.addText("Ricin = Chain A (Toxic / Active) + Chain B (Binding) — connected by a Disulfide Bond", {
x:0.45, y:1.08, w:9.1, h:0.58, fontSize:17, bold:true, color:PURPLE, fontFace:"Calibri", align:"center", valign:"middle"
});
addLines(sl, [
{ text:"In the Gastrointestinal Tract:", bold:true, color:PURPLE },
{ text:"Chain B binds to galactose-containing receptors on cell membrane (glycoproteins and glycolipids).", sub:true },
{ text:"Chain A enters into the cytoplasm of the cell.", sub:true },
"",
{ text:"Effect of Chain A:", bold:true, color:PURPLE },
{ text:"Acts on 60S ribosomal subunit (specifically 28S rRNA) and disrupts protein synthesis.", sub:true },
{ text:"Antigenic, agglutinates red blood cells, causes haemolysis and cell destruction.", sub:true },
], 0.4, 1.78, 9.2, 3.7, 19);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 10 — MECHANISM: STEP BY STEP
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Mechanism of Action — Step by Step", PURPLE);
const steps = [
{ num:"1", title:"Binding", color:"4527A0", desc:"Chain B binds to galactose receptors on cell membrane." },
{ num:"2", title:"Cell Entry", color:"283593", desc:"Endocytosis → Endosomes → Golgi Apparatus → Endoplasmic Reticulum." },
{ num:"3", title:"Translocation", color:"0277BD", desc:"Chain A separates in the ER and moves into the cytosol." },
{ num:"4", title:"Ribosome Damage", color:RED, desc:"Chain A inactivates 28S rRNA of 60S ribosomal subunit → irreversible inhibition of protein synthesis." },
{ num:"5", title:"Cell Death", color:RED, desc:"Failure of protein synthesis → cell cannot survive → cytotoxic cell death." },
];
const rowBgs = ["EDE7F6","E8EAF6","E3F2FD","FFEBEE","FFEBEE"];
steps.forEach((step, i) => {
const y = 1.1 + i * 0.88;
sl.addShape(pres.ShapeType.rect, { x:0.35, y, w:9.3, h:0.78, fill:{color:rowBgs[i]}, line:{color:rowBgs[i],width:0} });
sl.addShape(pres.ShapeType.rect, { x:0.35, y, w:0.55, h:0.78, fill:{color:step.color}, line:{color:step.color,width:0} });
sl.addText(step.num, { x:0.35, y, w:0.55, h:0.78, fontSize:18, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle" });
sl.addText(step.title + ":", { x:0.96, y:y+0.12, w:2.1, h:0.55, fontSize:15, bold:true, color:step.color, fontFace:"Calibri", valign:"middle" });
sl.addText(step.desc, { x:3.12, y:y+0.1, w:6.38, h:0.6, fontSize:14.5, color:BLACK, fontFace:"Calibri", valign:"middle", wrap:true });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 11 — CLINICAL FEATURES: Routes & Dust
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Clinical Features — Routes & Dust", ORANGE);
addLines(sl, [
{ text:"Routes of Absorption:", bold:true, color:ORANGE },
{ text:"Inhalation", sub:true },
{ text:"Ingestion", sub:true },
{ text:"Injection", sub:true },
{ text:"Skin Contact", sub:true },
"",
{ text:"Dust of Seeds:", bold:true, color:ORANGE },
{ text:"Watering of the eyes (Lacrimation)", sub:true },
{ text:"Conjunctivitis", sub:true },
{ text:"Sneezing", sub:true },
{ text:"Acute nasal inflammation (Rhinitis)", sub:true },
{ text:"Headache", sub:true },
], 0.4, 1.12, 9.2, 4.3, 18);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 12 — CLINICAL: DUST (continued)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Clinical Features — Dust (continued)", ORANGE);
addLines(sl, [
{ text:"Dust of Seeds (continued):", bold:true, color:ORANGE },
{ text:"Pharyngitis (throat inflammation)", sub:true },
{ text:"Asthmatic bronchitis", sub:true },
{ text:"Dermatitis (skin inflammation)", sub:true },
{ text:"Gastric upset", sub:true },
], 0.4, 1.12, 9.2, 4.3, 20);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 13 — CLINICAL: INHALATION
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Inhalation Exposure", ORANGE);
addLines(sl, [
{ text:"Redness and pain in the eyes and throat" },
{ text:"Dyspnoea (difficulty in breathing)" },
{ text:"Wheezing" },
{ text:"Respiratory distress" },
{ text:"Fever" },
{ text:"Cough" },
{ text:"Tightness in the chest" },
{ text:"Sweating" },
{ text:"Pulmonary Oedema (fluid accumulation in the lungs)" },
], 0.4, 1.12, 9.2, 4.3, 19);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 14 — CLINICAL: ORAL INGESTION (Part 1)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Oral Ingestion — Crushed Seeds", RED);
sl.addText("When crushed seeds are ingested, the following clinical features are produced:", {
x:0.4, y:1.1, w:9.2, h:0.42, fontSize:17, color:BLACK, fontFace:"Calibri", italic:true
});
addLines(sl, [
{ text:"Abdominal pain" },
{ text:"Vomiting and diarrhoea with or without blood" },
{ text:"Haematemesis (vomiting blood) and Melaena (black stools)" },
{ text:"Dehydration" },
{ text:"Circulatory collapse" },
{ text:"Muscular pain and cramps in the limbs" },
{ text:"Convulsions" },
], 0.4, 1.58, 9.2, 3.9, 18);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 15 — CLINICAL: ORAL INGESTION (Part 2)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Oral Ingestion — continued", RED);
addLines(sl, [
{ text:"Drowsiness and Delirium" },
{ text:"Jaundice" },
{ text:"Haemolysis (destruction of red blood cells)" },
{ text:"Hepatic failure (liver failure)" },
{ text:"Oliguria (reduced urine output)" },
{ text:"Uraemia (accumulation of waste products in blood)" },
"",
{ text:"Death may occur due to Multiorgan Failure or Cardiovascular Collapse.", bold:true, color:RED },
], 0.4, 1.12, 9.2, 4.3, 19);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 16 — CLINICAL: INJECTION
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Injection Exposure", RED);
addLines(sl, [
{ text:"Pain at the injection site" },
{ text:"Erythema (redness) and induration" },
{ text:"Localised necrosis at injection site" },
{ text:"Muscular pain" },
{ text:"Capillary leak syndrome" },
{ text:"Circulatory collapse" },
{ text:"Convulsions" },
{ text:"Multiorgan failure" },
{ text:"Respiratory failure" },
], 0.4, 1.12, 9.2, 4.3, 19);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 17 — FATAL DOSE
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Fatal Dose", RED);
addLines(sl, [
{ text:"5 to 10 seeds.", bold:true, color:RED },
{ text:"1 mg per kg body weight for Ricin.", bold:true, color:RED },
{ text:"Fatal Period: 2 days to a few days.", bold:true, color:RED },
], 0.4, 1.12, 9.2, 4.3, 24);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 18 — MANAGEMENT (Part 1)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Management", BLUE);
sl.addShape(pres.ShapeType.rect, { x:0.35, y:1.08, w:9.3, h:0.5, fill:{color:LRED}, line:{color:RED,width:1.5} });
sl.addText("NO SPECIFIC ANTIDOTE AVAILABLE — Treatment is purely supportive", {
x:0.45, y:1.08, w:9.1, h:0.5, fontSize:15, bold:true, color:RED, fontFace:"Calibri", align:"center", valign:"middle"
});
addLines(sl, [
{ text:"In Case of Ingestion:", bold:true, color:BLUE },
{ text:"Gastric lavage (stomach wash).", sub:true },
{ text:"Administration of Emetics and Demulcents.", sub:true },
{ text:"Administration of Glucose and Saline intravenously.", sub:true },
{ text:"2 to 5 g of Sodium Bicarbonate given 8 hourly by mouth.", sub:true },
{ text:"Blood transfusion may be needed in some patients.", sub:true },
{ text:"Gastric lavage followed by administration of Activated Charcoal.", sub:true },
], 0.4, 1.68, 9.2, 3.8, 18);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 19 — MANAGEMENT (Part 2)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Management — Supportive Treatment", BLUE);
addLines(sl, [
{ text:"Supportive Treatment:", bold:true, color:BLUE },
{ text:"Management of shock.", sub:true },
{ text:"Correction of electrolyte abnormalities.", sub:true },
{ text:"Treatment of convulsions.", sub:true },
], 0.4, 1.12, 9.2, 4.3, 21);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 20 — AUTOPSY FINDINGS (Part 1)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Autopsy Findings", "37474F");
addLines(sl, [
{ text:"Gastrointestinal Tract:", bold:true, color:"37474F" },
{ text:"The mucosa is congested, softened, and inflamed.", sub:true },
{ text:"Occasional erosions and submucous haemorrhages are present.", sub:true },
{ text:"Fragments of seeds may be found in the stomach and intestines.", sub:true },
"",
{ text:"Heart:", bold:true, color:"37474F" },
{ text:"Dilation of the heart chambers is observed.", sub:true },
{ text:"Haemorrhages are present in the pleura.", sub:true },
], 0.4, 1.12, 9.2, 4.3, 19);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 21 — AUTOPSY FINDINGS (Part 2)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Autopsy Findings — continued", "37474F");
addLines(sl, [
{ text:"Liver, Kidneys, Spleen, and Lungs:", bold:true, color:"37474F" },
{ text:"Oedema (swelling) and congestion of all these organs.", sub:true },
{ text:"Reflects multiorgan involvement as a result of systemic ricin toxicity.", sub:true },
], 0.4, 1.12, 9.2, 4.3, 21);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 22 — MEDICOLEGAL IMPORTANCE (Part 1)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Medicolegal Importance", "880E4F");
addLines(sl, [
{ text:"Accidental Poisoning:", bold:true, color:"880E4F" },
{ text:"Common in children while playing or exploring the plant and its seeds.", sub:true },
"",
{ text:"Homicidal Use:", bold:true, color:RED },
{ text:"Ricin has been used for homicidal purposes due to its extreme potency.", sub:true },
"",
{ text:"Criminal Abortion:", bold:true, color:RED },
{ text:"Seed pulp has been used to procure criminal abortion.", sub:true },
"",
{ text:"Anaphylactic Hypersensitivity:", bold:true, color:"880E4F" },
{ text:"Can cause anaphylactic type of hypersensitivity reactions in humans.", sub:true },
{ text:"Allergenic glycoprotein causes Dermatitis, Rhinitis, Asthma, and Conjunctivitis.", sub:true },
], 0.4, 1.12, 9.2, 4.3, 18);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 23 — MEDICOLEGAL: BIOWEAPON + MARKOV
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Medicolegal — Bioweapon & Notable Case", "880E4F");
addLines(sl, [
{ text:"Bioweapon — CDC Category B:", bold:true, color:RED },
{ text:"Classified as a Category B Biological Weapon due to easy availability and high toxicity.", sub:true },
"",
{ text:"Notable Case — Georgi Markov (1978):", bold:true, color:"880E4F" },
{ text:"A Bulgarian dissident and journalist.", sub:true },
{ text:"Attacked in London with a specially rigged umbrella.", sub:true },
{ text:"The umbrella injected a ricin-laced pellet under the skin of his thigh.", sub:true },
{ text:"He died 3 days after the attack.", sub:true },
{ text:"One of the most documented cases of ricin used as an assassination weapon.", sub:true },
], 0.4, 1.12, 9.2, 4.3, 18);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 24 — LABORATORY DIAGNOSIS
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Laboratory Diagnosis", TEAL);
addLines(sl, [
{ text:"Liquid Chromatography-Mass Spectrometry (LC-MS):", bold:true, color:TEAL },
{ text:"Gold-standard confirmatory test for detection of Ricin.", sub:true },
"",
{ text:"Immunoassays:", bold:true, color:TEAL },
{ text:"ELISA and similar immunological tests are used.", sub:true },
"",
{ text:"Ricinine Detection:", bold:true, color:TEAL },
{ text:"Ricinine (an alkaloid) can be detected in serum and urine.", sub:true },
{ text:"Comprehensive untargeted urine drug screening is highly valuable.", sub:true },
"",
{ text:"Ricin-Antibody Conjugates:", bold:true, color:TEAL },
{ text:"Detectable in surviving patients approximately 2 weeks after exposure.", sub:true },
], 0.4, 1.12, 9.2, 4.3, 18);
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 25 — REFERENCES
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, LBLUE);
sl.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:1.2, fill:{color:BLUE}, line:{color:BLUE,width:0} });
sl.addShape(pres.ShapeType.rect, { x:0, y:1.2, w:10, h:0.07, fill:{color:"42A5F5"}, line:{color:"42A5F5",width:0} });
sl.addText("REFERENCES", { x:0.5, y:0, w:9, h:1.2, fontSize:38, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle" });
const refs = [
{ num:"1.", author:"Gautam Biswas", title:"Textbook of Forensic Medicine & Toxicology", pub:"Jaypee Brothers Medical Publishers" },
{ num:"2.", author:"K.S. Narayan Reddy", title:"The Essentials of Forensic Medicine & Toxicology", pub:"Jaypee Brothers Medical Publishers" },
{ num:"3.", author:"Rajesh Bardale", title:"Textbook of Forensic Medicine & Toxicology", pub:"Oxford University Press" },
];
refs.forEach((ref, i) => {
const y = 1.45 + i * 1.35;
sl.addShape(pres.ShapeType.rect, { x:0.4, y, w:9.2, h:0.04, fill:{color:BLUE}, line:{color:BLUE,width:0} });
sl.addText(ref.num + " " + ref.author, { x:0.4, y:y+0.1, w:9.2, h:0.52, fontSize:22, bold:true, color:BLUE, fontFace:"Calibri" });
sl.addText(ref.title + " — " + ref.pub, { x:0.4, y:y+0.62, w:9.2, h:0.42, fontSize:17, color:"37474F", fontFace:"Calibri", italic:true });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 26 — THANK YOU (only)
// ═══════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
bg(sl, BLUE);
sl.addText("THANK YOU", {
x:0, y:1.5, w:10, h:2.6,
fontSize:72, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle"
});
}
// ── WRITE ────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/ricin-ppt/Castor_Poisoning_v7.pptx" })
.then(() => console.log("SUCCESS"))
.catch(err => { console.error(err); process.exit(1); });
cd /home/daytona/workspace/ricin-ppt && node build_v7.js 2>&1
cp /home/daytona/workspace/ricin-ppt/Castor_Poisoning_v7.pptx /tmp/v7.pptx && li…
Castor Poisoning v7
Presentation · PPTX
Castor Poisoning v7
PDF Document · PDF
1. Please review all the uploaded slides carefully. 2. Remove every point, sentence, label, image, or content that has been crossed out with a black pen. 3. Add all the new text, notes, and corrections that have been written by hand in black pen on the slides. 4. Replace or update the images according to the markings and corrections provided. 5. Add a clear, high-quality image of Castor Seeds (Ricinus communis seeds) on the relevant slide. 6. On the Leaves slide, add images of both: * Green castor leaves * Reddish-purple castor leaves 7. Ensure that all text fits properly within the slide boundaries. Some words and sentences are currently extending beyond the bottom of the slides and are not fully visible. Adjust the layout, font size, spacing, or text boxes so that all content is clearly visible. 8. Maintain a clean, professional, and visually balanced presentation design while making these corrections. 9. Do not remove any content unless it has been specifically crossed out with a black pen. 10. Make sure all handwritten additions are incorporated accurately into the final presentation. Important: Treat all black pen markings carefully: * Crossed-out content = Delete from the presentation. * Handwritten additions/notes = Add to the presentation.
Please revise the presentation strictly according to the handwritten corrections. * Remove all text, words, images, labels, and captions that have been crossed out with black pen. * Add all handwritten notes exactly where they are written. * Replace crossed-out images with more relevant, high-quality images. * On the Leaves slide, remove the crossed-out bullet and add two clear images: * Green castor leaves * Reddish-purple castor leaves * On the Fruit & Seeds slide, remove the crossed-out seed classification and add the handwritten correction indicating that the seeds are flattened-oval in shape. * Add a high-quality close-up image of castor seeds wherever indicated. * On the Toxic Principle slide, replace the crossed-out sentence with the handwritten note about ricin being present in the seed’s water-soluble glycoprotein fraction. * On the Clinical Features slide, add the handwritten correction mentioning dermatitis and gastric upset. * On the Oral Ingestion slide, incorporate the handwritten note about hepatic failure, oliguria, uraemia, and death due to multiorgan failure or cardiovascular collapse. * On the Injection Exposure & Fatal Dose slide, clearly show: * Fatal dose: 5–10 seeds * Ricin fatal dose: 1 mg/kg body weight * Fatal period: 2 days to a few days * On the Management slide, add Activated Charcoal where indicated and remove the crossed-out text. * On the Medicolegal Importance slide, replace the crossed-out statement with the handwritten correction regarding homicidal use and criminal abortion. * On the Autopsy Findings slide, add the handwritten note mentioning liver, kidney, spleen, and lung congestion/oedema. * On the Laboratory Diagnosis, References, and Thank You slides, remove all crossed-out text and apply the handwritten corrections. * Ensure no text extends beyond slide boundaries. * Adjust font size, spacing, and layout so every word is fully visible. * Maintain a professional medical presentation style with consistent formatting throughout.
Recently u make a Ppt for me remember ?
Upload the annotated slide photos so I can see exact markings
Please revise the presentation strictly according to the handwritten corrections. * Remove all text, words, images, labels, and captions that have been crossed out with black pen. * Add all handwritten notes exactly where they are written. * Replace crossed-out images with more relevant, high-quality images. * On the Leaves slide, remove the crossed-out bullet and add two clear images: * Green castor leaves * Reddish-purple castor leaves * On the Fruit & Seeds slide, remove the crossed-out seed classification and add the handwritten correction indicating that the seeds are flattened-oval in shape. * Add a high-quality close-up image of castor seeds wherever indicated. * On the Toxic Principle slide, replace the crossed-out sentence with the handwritten note about ricin being present in the seed’s water-soluble glycoprotein fraction. * On the Clinical Features slide, add the handwritten correction mentioning dermatitis and gastric upset. * On the Oral Ingestion slide, incorporate the handwritten note about hepatic failure, oliguria, uraemia, and death due to multiorgan failure or cardiovascular collapse. * On the Injection Exposure & Fatal Dose slide, clearly show: * Fatal dose: 5–10 seeds * Ricin fatal dose: 1 mg/kg body weight * Fatal period: 2 days to a few days * On the Management slide, add Activated Charcoal where indicated and remove the crossed-out text. * On the Medicolegal Importance slide, replace the crossed-out statement with the handwritten correction regarding homicidal use and criminal abortion. * On the Autopsy Findings slide, add the handwritten note mentioning liver, kidney, spleen, and lung congestion/oedema. * On the Laboratory Diagnosis, References, and Thank You slides, remove all crossed-out text and apply the handwritten corrections. * Ensure no text extends beyond slide boundaries. * Adjust font size, spacing, and layout so every word is fully visible. * Maintain a professional medical presentation style with consistent formatting throughout.
# Green castor leaf curl -L -s --max-time 25 "https://upload.wikimedia.org/wikip…
# Seeds PNG too small (blocked), try alternate curl -L -s --max-time 25 "https:/…
node -e " const fs = require('fs'); const out = { plant: 'image/jpeg;base6…
# /tmp gets cleared between sessions - re-download plant image curl -L -s --max-…
~/ricin-ppt/build_v8.js
const pptxgen = require("pptxgenjs");
const IMGS = JSON.parse(require("fs").readFileSync("/tmp/castor_imgs_final.json","utf8"));
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Castor Poisoning";
const BLUE = "1565C0";
const LBLUE = "E3F2FD";
const WHITE = "FFFFFF";
const BLACK = "1A1A1A";
const GRAY = "F5F5F5";
const RED = "B71C1C";
const LRED = "FFEBEE";
const GREEN = "1B5E20";
const TEAL = "004D40";
const ORANGE = "E65100";
const PURPLE = "4A148C";
function bg(sl, color) {
sl.addShape(pres.ShapeType.rect, {x:0,y:0,w:10,h:5.625,fill:{color},line:{color,width:0}});
}
function hbar(sl, title, c) {
sl.addShape(pres.ShapeType.rect, {x:0,y:0,w:10,h:1.0,fill:{color:c||BLUE},line:{color:c||BLUE,width:0}});
sl.addShape(pres.ShapeType.rect, {x:0,y:1.0,w:10,h:0.06,fill:{color:"90CAF9"},line:{color:"90CAF9",width:0}});
sl.addText(title, {x:0.4,y:0,w:9.2,h:1.0,fontSize:26,bold:true,color:WHITE,fontFace:"Calibri",valign:"middle"});
}
// Simple line-by-line renderer — avoids text overflow
function L(sl, items, x, startY, w, fs, gap) {
let y = startY;
const g = gap || 0.07;
items.forEach(item => {
if (item === "") { y += fs * 0.013; return; }
const isHead = !!item.head;
const isSub = !!item.sub;
const color = item.color || BLACK;
const bold = !!item.bold || isHead;
const prefix = isSub ? " • " : " • ";
const lineH = fs * 0.024 + 0.12;
sl.addText(prefix + item.text, {
x, y, w, h: lineH,
fontSize: fs, bold, color,
fontFace:"Calibri", valign:"top", wrap:true, italic:!!item.italic,
});
y += lineH + g;
});
}
// ── SLIDE 1 — TITLE ──────────────────────────────────────────────
{
const sl = pres.addSlide();
bg(sl, LBLUE);
sl.addShape(pres.ShapeType.rect,{x:0,y:0,w:10,h:3.05,fill:{color:BLUE},line:{color:BLUE,width:0}});
sl.addShape(pres.ShapeType.rect,{x:0,y:3.05,w:10,h:0.08,fill:{color:"42A5F5"},line:{color:"42A5F5",width:0}});
sl.addText("CASTOR POISONING",{x:0.5,y:0.18,w:9,h:1.55,fontSize:54,bold:true,color:WHITE,fontFace:"Calibri",align:"center"});
sl.addText("Ricinus communis — Ricin Toxicology",{x:0.5,y:1.75,w:9,h:0.58,fontSize:20,color:"BBDEFB",fontFace:"Calibri",italic:true,align:"center"});
sl.addText("Forensic Medicine & Toxicology",{x:0.5,y:2.45,w:9,h:0.4,fontSize:14,color:"BBDEFB",fontFace:"Calibri",align:"center"});
sl.addShape(pres.ShapeType.rect,{x:0.5,y:3.22,w:9,h:0.04,fill:{color:"90CAF9"},line:{color:"90CAF9",width:0}});
sl.addText("Guided by:",{x:0.5,y:3.35,w:4.5,h:0.42,fontSize:17,bold:true,color:BLUE,fontFace:"Calibri"});
sl.addText("Resp. Dr. R.K. Singh Sir",{x:0.5,y:3.75,w:4.5,h:0.45,fontSize:20,bold:true,color:BLACK,fontFace:"Calibri"});
sl.addText("Head of Department\nForensic Medicine & Toxicology",{x:0.5,y:4.2,w:4.5,h:0.65,fontSize:16,color:"37474F",fontFace:"Calibri"});
sl.addText("Presented by:",{x:5.4,y:3.35,w:4.2,h:0.42,fontSize:17,bold:true,color:BLUE,fontFace:"Calibri"});
sl.addText("Komal Rathore",{x:5.4,y:3.75,w:4.2,h:0.45,fontSize:24,bold:true,color:BLACK,fontFace:"Calibri"});
sl.addText("Roll No. 106",{x:5.4,y:4.2,w:4.2,h:0.4,fontSize:17,color:"37474F",fontFace:"Calibri"});
}
// ── SLIDE 2 — INTRODUCTION (corrected) ───────────────────────────
// REMOVED: "Ricin is derived..." and "It belongs to the category..."
// REMOVED "Arand" from common names
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Introduction", BLUE);
L(sl, [
{text:"Botanical Name:", bold:true, color:BLUE},
{text:"Ricinus communis", sub:true, italic:true},
"",
{text:"Common Names:", bold:true, color:BLUE},
{text:"Castor, Arandi", sub:true},
"",
{text:"The plant is widely distributed across India and found in tropical regions worldwide."},
{text:"It is commonly found growing in wastelands, roadsides, and uncultivated lands."},
{text:"It is an organic poisonous plant and belongs to the category of Gastrointestinal Irritants."},
], 0.4, 1.12, 9.2, 19);
}
// ── SLIDE 3 — FEATURES: PLANT ────────────────────────────────────
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Features of the Plant", TEAL);
L(sl, [
{text:"Tall plant that grows all over India."},
{text:"Especially found in wastelands and uncultivated areas."},
{text:"Also seen along roadsides and open fields."},
], 0.4, 1.12, 5.0, 19);
sl.addImage({data:IMGS.plant, x:5.55,y:1.1,w:4.1,h:3.9,sizing:{type:"contain",w:4.1,h:3.9}});
sl.addShape(pres.ShapeType.rect,{x:5.55,y:5.0,w:4.1,h:0.42,fill:{color:TEAL},line:{color:TEAL,width:0}});
sl.addText("Ricinus communis — Castor Plant",{x:5.55,y:5.0,w:4.1,h:0.42,fontSize:12,bold:true,color:WHITE,fontFace:"Calibri",align:"center",valign:"middle"});
}
// ── SLIDE 4 — LEAVES (two images: green + reddish-purple) ─────────
// REMOVED: "Large, alternate leaves with long petioles."
// Two images side by side
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Leaves", TEAL);
L(sl, [
{text:"Lobate (palm-shaped) with toothed (serrated) margins."},
{text:"Green to reddish-purple in colour depending on variety."},
], 0.4, 1.12, 9.2, 20);
// Two images side by side below the text
sl.addImage({data:IMGS.leaf_green, x:0.4, y:2.3, w:4.4, h:2.85, sizing:{type:"contain",w:4.4,h:2.85}});
sl.addShape(pres.ShapeType.rect,{x:0.4,y:5.15,w:4.4,h:0.38,fill:{color:TEAL},line:{color:TEAL,width:0}});
sl.addText("Green Castor Leaf",{x:0.4,y:5.15,w:4.4,h:0.38,fontSize:12,bold:true,color:WHITE,fontFace:"Calibri",align:"center",valign:"middle"});
sl.addImage({data:IMGS.leaf_red, x:5.2, y:2.3, w:4.4, h:2.85, sizing:{type:"contain",w:4.4,h:2.85}});
sl.addShape(pres.ShapeType.rect,{x:5.2,y:5.15,w:4.4,h:0.38,fill:{color:"880E4F"},line:{color:"880E4F",width:0}});
sl.addText("Reddish-Purple Castor Leaf",{x:5.2,y:5.15,w:4.4,h:0.38,fontSize:12,bold:true,color:WHITE,fontFace:"Calibri",align:"center",valign:"middle"});
}
// ── SLIDE 5 — FRUIT ───────────────────────────────────────────────
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Fruit", TEAL);
L(sl, [
{text:"1.2 to 2.5 cm long."},
{text:"Globular in shape, three-lobed."},
{text:"Softly spiny on the outer surface."},
{text:"Blue-green or rose-red in colour when immature."},
{text:"Turns brown and bristly when ripe and dry."},
], 0.4, 1.12, 9.2, 21);
}
// ── SLIDE 6 — SEEDS (corrected: removed "variable smooth flattened-oval", added close-up image) ──
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Seeds", TEAL);
L(sl, [
{text:"Seeds are flattened-oval in shape and available in 2 sizes."},
"",
{text:"Large Seeds:", bold:true, color:BLUE},
{text:"Mottled, dark-brown in colour.", sub:true},
{text:"Shiny hard seed coat — called Pericarp.", sub:true},
"",
{text:"Small Seeds:", bold:true, color:GREEN},
{text:"1 to 2 cm long and 0.8 cm broad in size.", sub:true},
{text:"Closely resemble Croton seeds.", sub:true},
], 0.4, 1.12, 5.0, 18);
sl.addImage({data:IMGS.seeds, x:5.55,y:1.1,w:4.1,h:3.9,sizing:{type:"contain",w:4.1,h:3.9}});
sl.addShape(pres.ShapeType.rect,{x:5.55,y:5.0,w:4.1,h:0.42,fill:{color:BLUE},line:{color:BLUE,width:0}});
sl.addText("Castor Seeds — Close-up",{x:5.55,y:5.0,w:4.1,h:0.42,fontSize:12,bold:true,color:WHITE,fontFace:"Calibri",align:"center",valign:"middle"});
}
// ── SLIDE 7 — TOXIC PRINCIPLE ─────────────────────────────────────
// Banner updated: added "and a powerful allergen"
// REMOVED: "The oil extract of seeds contains Ricinoleic Acid."
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Toxic Principle", GREEN);
sl.addShape(pres.ShapeType.rect,{x:0.35,y:1.08,w:9.3,h:0.58,fill:{color:LRED},line:{color:RED,width:1.5}});
sl.addText("Entire plant is toxic — Seeds are the most toxic part (contain Ricin, a water-soluble glycoprotein) and a powerful allergen",{
x:0.45,y:1.08,w:9.1,h:0.58,fontSize:13.5,bold:true,color:RED,fontFace:"Calibri",align:"center",valign:"middle"
});
L(sl, [
{text:"Seeds are rich in a purgative oil — pale-yellow with a faint odour and acrid taste."},
{text:"The leftover seed cake after oil extraction contains the toxalbumin Ricin."},
"",
{text:"Important — Which forms are poisonous?", bold:true, color:GREEN},
{text:"Unbroken seeds — Non-poisonous when swallowed or cooked.", sub:true},
{text:"Castor oil — Non-poisonous.", sub:true},
{text:"Crushed seeds — Poisonous.", sub:true},
{text:"Ricin can exist in the form of powder, mist, or pellet.", sub:true},
], 0.4, 1.78, 9.2, 18);
}
// ── SLIDE 8 — TOXALBUMIN PROPERTIES ──────────────────────────────
// REMOVED: "Comparison with Other Toxins" section entirely
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Toxalbumin (Ricin) — Properties", GREEN);
L(sl, [
{text:"Toxalbumin (Phytotoxin) is a toxic protein found in plants such as Castor, Croton, and Rati (Abrus precatorius)."},
"",
{text:"Properties:", bold:true, color:GREEN},
{text:"Disables ribosomes and thereby inhibits protein synthesis.", sub:true},
{text:"Antigenic in nature — capable of stimulating immune response.", sub:true},
{text:"Agglutinates (clumps) red blood cells (RBCs).", sub:true},
{text:"Causes haemolysis (destruction of RBCs) and cell destruction.", sub:true},
], 0.4, 1.12, 9.2, 19);
}
// ── SLIDE 9 — MECHANISM: STRUCTURE ───────────────────────────────
// REMOVED: "Effect of Chain A" heading + both bullets under it
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Mechanism of Action — Structure of Ricin", PURPLE);
sl.addShape(pres.ShapeType.rect,{x:0.35,y:1.08,w:9.3,h:0.58,fill:{color:"EDE7F6"},line:{color:PURPLE,width:1.5}});
sl.addText("Ricin = Chain A (Toxic / Active) + Chain B (Binding) — connected by a Disulfide Bond",{
x:0.45,y:1.08,w:9.1,h:0.58,fontSize:16,bold:true,color:PURPLE,fontFace:"Calibri",align:"center",valign:"middle"
});
L(sl, [
{text:"In the Gastrointestinal Tract:", bold:true, color:PURPLE},
{text:"Chain B binds to galactose-containing receptors on cell membrane (glycoproteins and glycolipids).", sub:true},
{text:"Chain A enters into the cytoplasm of the cell.", sub:true},
], 0.4, 1.78, 9.2, 19);
}
// ── SLIDE 10 — MECHANISM: STEP BY STEP ───────────────────────────
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Mechanism of Action — Step by Step", PURPLE);
const steps = [
{num:"1",title:"Binding", color:"4527A0", desc:"Chain B binds to galactose receptors on cell membrane."},
{num:"2",title:"Cell Entry", color:"283593", desc:"Endocytosis → Endosomes → Golgi Apparatus → Endoplasmic Reticulum."},
{num:"3",title:"Translocation",color:"0277BD", desc:"Chain A separates in the ER and moves into the cytosol."},
{num:"4",title:"Ribosome Damage",color:RED, desc:"Chain A inactivates 28S rRNA of 60S ribosomal subunit → irreversible inhibition of protein synthesis."},
{num:"5",title:"Cell Death", color:RED, desc:"Failure of protein synthesis → cell cannot survive → cytotoxic cell death."},
];
const bgs = ["EDE7F6","E8EAF6","E3F2FD","FFEBEE","FFEBEE"];
steps.forEach((s,i) => {
const y = 1.1 + i*0.88;
sl.addShape(pres.ShapeType.rect,{x:0.35,y,w:9.3,h:0.78,fill:{color:bgs[i]},line:{color:bgs[i],width:0}});
sl.addShape(pres.ShapeType.rect,{x:0.35,y,w:0.55,h:0.78,fill:{color:s.color},line:{color:s.color,width:0}});
sl.addText(s.num,{x:0.35,y,w:0.55,h:0.78,fontSize:18,bold:true,color:WHITE,fontFace:"Calibri",align:"center",valign:"middle"});
sl.addText(s.title+":",{x:0.96,y:y+0.12,w:2.1,h:0.55,fontSize:15,bold:true,color:s.color,fontFace:"Calibri",valign:"middle"});
sl.addText(s.desc,{x:3.12,y:y+0.1,w:6.38,h:0.6,fontSize:14.5,color:BLACK,fontFace:"Calibri",valign:"middle",wrap:true});
});
}
// ── SLIDE 11 — CLINICAL: ROUTES & DUST ───────────────────────────
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Clinical Features — Routes & Dust", ORANGE);
L(sl, [
{text:"Routes of Absorption:", bold:true, color:ORANGE},
{text:"Inhalation", sub:true},
{text:"Ingestion", sub:true},
{text:"Injection", sub:true},
{text:"Skin Contact", sub:true},
"",
{text:"Dust of Seeds:", bold:true, color:ORANGE},
{text:"Watering of the eyes (Lacrimation)", sub:true},
{text:"Conjunctivitis", sub:true},
{text:"Sneezing", sub:true},
{text:"Acute nasal inflammation (Rhinitis)", sub:true},
{text:"Headache", sub:true},
{text:"Pharyngitis (throat inflammation)", sub:true},
{text:"Asthmatic bronchitis", sub:true},
{text:"Dermatitis (skin inflammation)", sub:true},
{text:"Gastric upset", sub:true},
], 0.4, 1.12, 9.2, 17);
}
// ── SLIDE 12 — INHALATION ────────────────────────────────────────
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Inhalation Exposure", ORANGE);
L(sl, [
{text:"Redness and pain in the eyes and throat"},
{text:"Dyspnoea (difficulty in breathing)"},
{text:"Wheezing"},
{text:"Respiratory distress"},
{text:"Fever"},
{text:"Cough"},
{text:"Tightness in the chest"},
{text:"Sweating"},
{text:"Pulmonary Oedema (fluid accumulation in the lungs)"},
], 0.4, 1.12, 9.2, 19);
}
// ── SLIDE 13 — ORAL INGESTION Part 1 ─────────────────────────────
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Oral Ingestion — Crushed Seeds", RED);
sl.addText("When crushed seeds are ingested, the following clinical features are produced:",{
x:0.4,y:1.1,w:9.2,h:0.42,fontSize:16,color:BLACK,fontFace:"Calibri",italic:true
});
L(sl, [
{text:"Abdominal pain"},
{text:"Vomiting and diarrhoea with or without blood"},
{text:"Haematemesis (vomiting blood) and Melaena (black stools)"},
{text:"Dehydration"},
{text:"Circulatory collapse"},
{text:"Muscular pain and cramps in the limbs"},
{text:"Convulsions"},
], 0.4, 1.6, 9.2, 18);
}
// ── SLIDE 14 — ORAL INGESTION Part 2 (with handwritten additions) ─
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Oral Ingestion — continued", RED);
L(sl, [
{text:"Drowsiness and Delirium"},
{text:"Jaundice"},
{text:"Hepatic failure (liver failure)"},
{text:"Oliguria (reduced urine output)"},
{text:"Uraemia (accumulation of waste products in blood)"},
"",
{text:"Death may be due to Multiorgan Failure or Cardiovascular Collapse.", bold:true, color:RED},
], 0.4, 1.12, 9.2, 20);
}
// ── SLIDE 15 — INJECTION ─────────────────────────────────────────
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Injection Exposure", RED);
L(sl, [
{text:"Injection Manifestations:", bold:true, color:RED},
{text:"Pain at the injection site", sub:true},
{text:"Erythema (redness) and induration", sub:true},
{text:"Localised necrosis at injection site", sub:true},
{text:"Muscular pain", sub:true},
{text:"Capillary leak syndrome", sub:true},
{text:"Circulatory collapse", sub:true},
{text:"Convulsions", sub:true},
{text:"Multiorgan failure", sub:true},
{text:"Respiratory failure", sub:true},
], 0.4, 1.12, 9.2, 19);
}
// ── SLIDE 16 — FATAL DOSE (corrected from handwriting) ───────────
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Fatal Dose", RED);
L(sl, [
{text:"5 to 10 seeds", bold:true, color:RED},
{text:"1 mg/kg body weight", bold:true, color:RED},
{text:"Fatal Period: 2 days to a few days", bold:true, color:RED},
], 0.4, 1.12, 9.2, 26);
}
// ── SLIDE 17 — MANAGEMENT (corrected) ────────────────────────────
// REMOVED: "2 to 5g Sodium Bicarbonate", "Blood transfusion", "Gastric lavage followed by..."
// REMOVED: "Supportive Treatment" + "Management of shock"
// ADDED: "and administration of activated charcoal" after gastric lavage line
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Management", BLUE);
sl.addShape(pres.ShapeType.rect,{x:0.35,y:1.08,w:9.3,h:0.5,fill:{color:LRED},line:{color:RED,width:1.5}});
sl.addText("NO SPECIFIC ANTIDOTE AVAILABLE — Treatment is purely supportive",{
x:0.45,y:1.08,w:9.1,h:0.5,fontSize:15,bold:true,color:RED,fontFace:"Calibri",align:"center",valign:"middle"
});
L(sl, [
{text:"In Case of Ingestion:", bold:true, color:BLUE},
{text:"Gastric lavage (stomach wash) and administration of activated charcoal.", sub:true},
{text:"Administration of Emetics and Demulcents.", sub:true},
{text:"Administration of Glucose and Saline intravenously.", sub:true},
"",
{text:"Supportive Treatment:", bold:true, color:BLUE},
{text:"Correction of electrolyte abnormalities.", sub:true},
{text:"Treatment of convulsions.", sub:true},
], 0.4, 1.7, 9.2, 19);
}
// ── SLIDE 18 — AUTOPSY FINDINGS ──────────────────────────────────
// Organ heading corrected to "Lung, Liver, Kidney, Spleen"
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Autopsy Findings", "37474F");
L(sl, [
{text:"Gastrointestinal Tract:", bold:true, color:"37474F"},
{text:"The mucosa is congested, softened, and inflamed.", sub:true},
{text:"Occasional erosions and submucous haemorrhages are present.", sub:true},
{text:"Fragments of seeds may be found in the stomach and intestines.", sub:true},
"",
{text:"Heart:", bold:true, color:"37474F"},
{text:"Dilation of the heart chambers is observed.", sub:true},
{text:"Haemorrhages are present in the pleura.", sub:true},
"",
{text:"Lung, Liver, Kidney, Spleen:", bold:true, color:"37474F"},
{text:"Oedema (swelling) and congestion of all these organs.", sub:true},
{text:"Reflects multiorgan involvement as a result of systemic ricin toxicity.", sub:true},
], 0.4, 1.12, 9.2, 17);
}
// ── SLIDE 19 — MEDICOLEGAL IMPORTANCE ────────────────────────────
// Homicidal Use: replaced old text with "Rarely the powdered seeds are given for homicide."
// Added new bullet: "Ricin can be used as an agent of biological warfare or a weapon of mass destruction."
// Anaphylactic: added "Conjunctivitis" at end
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Medicolegal Importance", "880E4F");
L(sl, [
{text:"Accidental Poisoning:", bold:true, color:"880E4F"},
{text:"Common in children while playing or exploring the plant and its seeds.", sub:true},
"",
{text:"Homicidal Use:", bold:true, color:RED},
{text:"Rarely the powdered seeds are given for homicide.", sub:true},
"",
{text:"Criminal Abortion:", bold:true, color:RED},
{text:"Seed pulp has been used to procure criminal abortion.", sub:true},
"",
{text:"Ricin can be used as an agent of biological warfare or a weapon of mass destruction.", bold:true, color:RED},
"",
{text:"Anaphylactic Hypersensitivity:", bold:true, color:"880E4F"},
{text:"Can cause anaphylactic type of hypersensitivity reactions in humans.", sub:true},
{text:"Allergenic glycoprotein causes Dermatitis, Rhinitis, Asthma, and Conjunctivitis.", sub:true},
], 0.4, 1.12, 9.2, 17);
}
// ── SLIDE 20 — GEORGI MARKOV CASE ────────────────────────────────
// Title word before "Case" crossed out — title is now "Case — Georgi Markov (1978)"
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Case — Georgi Markov (1978)", "880E4F");
sl.addShape(pres.ShapeType.rect,{x:0.35,y:1.15,w:9.3,h:4.2,fill:{color:"FCE4EC"},line:{color:"E91E63",width:1.5}});
sl.addText([
{text:"Georgi Markov",options:{bold:true,color:RED}},
{text:" was a Bulgarian dissident and journalist.\n\n",options:{color:BLACK,breakLine:true}},
{text:"In 1978 in London, he was attacked by a man with a specially rigged ",options:{color:BLACK}},
{text:"umbrella",options:{bold:true,color:RED}},
{text:" that injected a tiny ",options:{color:BLACK}},
{text:"ricin-laced pellet",options:{bold:true,color:RED}},
{text:" under the skin of his thigh.\n\n",options:{color:BLACK,breakLine:true}},
{text:"He died 3 days after the attack.\n\n",options:{bold:true,color:RED,breakLine:true}},
{text:"This case remains one of the most documented examples of ricin being used as a covert assassination weapon.",options:{color:BLACK}},
],{x:0.6,y:1.25,w:8.9,h:4.0,fontSize:16,fontFace:"Calibri",valign:"top",paraSpaceAfter:4});
}
// ── SLIDE 21 — LABORATORY DIAGNOSIS (corrected) ──────────────────
// "Ricinine Detection" — first bullet removed (alkaloid description)
{
const sl = pres.addSlide();
bg(sl, GRAY);
hbar(sl, "Laboratory Diagnosis", TEAL);
L(sl, [
{text:"Liquid Chromatography-Mass Spectrometry (LC-MS):", bold:true, color:TEAL},
{text:"Gold-standard confirmatory test for detection of Ricin.", sub:true},
"",
{text:"Immunoassays:", bold:true, color:TEAL},
{text:"ELISA and similar immunological tests are used.", sub:true},
"",
{text:"Ricinine Detection:", bold:true, color:TEAL},
{text:"Can be detected in both serum and urine samples.", sub:true},
{text:"Comprehensive untargeted urine drug screening is highly valuable for diagnosis.", sub:true},
"",
{text:"Ricin-Antibody Conjugates:", bold:true, color:TEAL},
{text:"Detectable in surviving patients approximately 2 weeks after exposure.", sub:true},
], 0.4, 1.12, 9.2, 18);
}
// ── SLIDE 22 — REFERENCES (publishers removed) ───────────────────
// All publisher names crossed out → removed
// Bardale: "Principles" added (handwritten)
{
const sl = pres.addSlide();
bg(sl, LBLUE);
sl.addShape(pres.ShapeType.rect,{x:0,y:0,w:10,h:1.2,fill:{color:BLUE},line:{color:BLUE,width:0}});
sl.addShape(pres.ShapeType.rect,{x:0,y:1.2,w:10,h:0.07,fill:{color:"42A5F5"},line:{color:"42A5F5",width:0}});
sl.addText("REFERENCES",{x:0.5,y:0,w:9,h:1.2,fontSize:38,bold:true,color:WHITE,fontFace:"Calibri",align:"center",valign:"middle"});
const refs = [
{num:"1.", author:"Gautam Biswas", title:"Textbook of Forensic Medicine & Toxicology"},
{num:"2.", author:"K.S. Narayan Reddy", title:"The Essentials of Forensic Medicine & Toxicology"},
{num:"3.", author:"Rajesh Bardale", title:"Principles of Forensic Medicine & Toxicology"},
];
refs.forEach((ref,i) => {
const y = 1.45 + i*1.35;
sl.addShape(pres.ShapeType.rect,{x:0.4,y,w:9.2,h:0.04,fill:{color:BLUE},line:{color:BLUE,width:0}});
sl.addText(ref.num+" "+ref.author,{x:0.4,y:y+0.1,w:9.2,h:0.52,fontSize:22,bold:true,color:BLUE,fontFace:"Calibri"});
sl.addText(ref.title,{x:0.4,y:y+0.62,w:9.2,h:0.42,fontSize:17,color:"37474F",fontFace:"Calibri",italic:true});
});
}
// ── SLIDE 23 — THANK YOU (only — all crossed-out text removed) ────
{
const sl = pres.addSlide();
bg(sl, BLUE);
sl.addText("THANK YOU",{
x:0,y:1.5,w:10,h:2.6,
fontSize:72,bold:true,color:WHITE,fontFace:"Calibri",align:"center",valign:"middle"
});
}
pres.writeFile({fileName:"/home/daytona/workspace/ricin-ppt/Castor_Poisoning_v8.pptx"})
.then(()=>console.log("SUCCESS"))
.catch(err=>{console.error(err);process.exit(1);});
I baught credits
cd /home/daytona/workspace/ricin-ppt && node build_v8.js 2>&1
curl -L -s --max-time 25 "https://upload.wikimedia.org/wikipedia/commons/9/91/Ri…
# Red leaf and seeds returning 1967 bytes (blocked by Wikimedia). Try alternate …
node -e " const fs = require('fs'); const out = { plant: 'image/jpeg;base…
cd /home/daytona/workspace/ricin-ppt && node build_v8.js 2>&1
cp /home/daytona/workspace/ricin-ppt/Castor_Poisoning_v8.pptx /tmp/v8.pptx && li…
Castor Poisoning v8
Presentation · PPTX
Castor Poisoning v8
PDF Document · PDF
| Slide | What was done |
|---|---|
| Introduction | Removed first two crossed-out lines; removed "Arand" from common names |
| Leaves | Removed "Large, alternate leaves" bullet; added TWO images — green leaf + reddish-purple leaf |
| Fruit | Text only, clean |
| Seeds | Added handwritten correction "Seeds are flattened-oval in shape and available in 2 sizes"; removed crossed-out "variable smooth" bullets; correct close-up seeds image |
| Toxic Principle | Banner updated with "and a powerful allergen"; removed Ricinoleic Acid line |
| Toxalbumin | Removed "Comparison with Other Toxins" section entirely |
| Mechanism — Structure | Removed "Effect of Chain A" heading + both bullets |
| Oral Ingestion | Added Hepatic failure, Oliguria, Uraemia, death due to multiorgan failure/cardiovascular collapse |
| Fatal Dose | 5–10 seeds, 1 mg/kg, fatal period 2 to few days |
| Management | Gastric lavage + activated charcoal merged; removed 3 crossed-out lines; kept corrected supportive treatment |
| Autopsy | Heading changed to "Lung, Liver, Kidney, Spleen" |
| Medicolegal | Homicidal use corrected; biological warfare bullet added; Conjunctivitis added |
| Georgi Markov | Title corrected to "Case — Georgi Markov (1978)" |
| Lab Diagnosis | First Ricinine bullet removed |
| References | Publishers removed; Bardale title updated to "Principles" |
| Thank You | Only "THANK YOU" — nothing else |
1. Do not crowd the text. * Several slides have a lot of empty space, but the text is still placed too close together. * Distribute the content evenly across the slide and use the available space properly. * Improve alignment, spacing, and visual balance. 2. Prevent text overflow. * Some text is still extending beyond the bottom of the slides and is partially hidden. * Ensure that all text remains fully visible within slide boundaries. * Reduce font size slightly or rearrange the layout whenever necessary. 3. Leaves Slide Correction * The current “Reddish-Purple Castor Leaf” image is incorrect because it shows a green leaf. * Replace it with an actual reddish-purple castor leaf image. * Display one green castor leaf image and one genuine reddish-purple castor leaf image side by side. 4. Improve Image Quality * Use high-resolution botanical images. * Ensure images are properly cropped and clearly visible. * Maintain a consistent image style throughout the presentation. 5. Clinical Features Slide * Restore the Clinical Features slide layout similar to the previous version. * Keep the heading style, formatting, and visual structure the same as before. * Do not compress all content into a crowded block. 6. Use Available Empty Space * Many slides have large blank areas while the text is squeezed together. * Spread the content properly across the slide instead of clustering it in one section. 7. Professional Medical Presentation Format * Maintain uniform font size, bullet spacing, margins, and heading styles across all slides. * Ensure every slide looks balanced, clean, and suitable for an MBBS/FMT academic presentation. 8. Final Quality Check * Review every slide before exporting. * Confirm that: * No text is cut off. * No content extends outside slide boundaries. * All images are correct. * All handwritten corrections have been applied. * The presentation looks visually balanced and professional. ⸻ “Please do not simply update the content. Redesign the slide layout wherever required to improve spacing, readability, and visual presentation.”