Uses of screening in psm

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
I now have all the essential content from Park's textbook. Let me compile the comprehensive answer.

Uses of Screening in PSM

(Source: Park's Textbook of Preventive and Social Medicine)

Definition

Screening is the presumptive identification of unrecognized disease or defect by applying tests, examinations, or other procedures to apparently healthy individuals who are not seeking health care. The screening test itself does not establish a definitive diagnosis - it sorts out apparently well persons who probably have a disease from those who probably do not.

Four Main Uses of Screening

Park describes four main uses of screening:

1. Case Detection (Prescriptive Screening)

  • Also called "prescriptive screening"
  • Defined as the presumptive identification of unrecognized disease not arising from a patient's own request
  • People are screened primarily for their own benefit
  • Examples of diseases detected:
    • Bacteriuria in pregnancy
    • Breast cancer, cervical cancer
    • Deafness in children
    • Diabetes mellitus
    • Iron deficiency anaemia
    • Phenylketonuria (PKU)
    • Pulmonary tuberculosis
    • Haemolytic disease of the newborn
    • Neonatal screening programmes
  • Since disease detection is initiated by medical/public health personnel, they carry a special obligation to ensure early treatment is started

2. Control of Disease (Prospective Screening)

  • Also known as "prospective screening"
  • People are examined for the benefit of others, not just themselves
  • Examples:
    • Screening of immigrants for tuberculosis and syphilis to protect the home population
    • Screening for streptococcal infection to prevent rheumatic fever
  • The programme leads to early diagnosis, permitting more effective treatment, and reducing spread of infectious disease and/or mortality

3. Research Purposes

  • Used when the natural history of a disease is not fully known (e.g., cancer, hypertension)
  • Initial screening provides a prevalence estimate; subsequent screening provides an incidence figure
  • Aids in obtaining more basic knowledge about the natural history of chronic diseases
  • Important ethical point: where screening is done for research purposes, the investigator must inform study participants that no follow-up therapy will be available

4. Qualification Screening

  • Carried out to assess suitability of individuals for a particular role or task
  • Examples: pre-employment medical examinations, fitness-for-service screening in armed forces, screening for blood donation

Types of Screening

Three types are described:
TypeDescriptionExample
Mass ScreeningScreening of the whole population without selectionPopulation-wide BP screening
High-risk (Selective) ScreeningTargeted at high-risk groups to increase yieldDiabetes screening in >40 years age group
Multiphasic ScreeningApplication of two or more screening tests in combination at one timeHealth questionnaire + clinical exam + blood/urine tests + audiometry + lung function tests
Note on Multiphasic Screening: Evidence from randomized controlled studies in the UK and USA suggested it has not shown measurable benefit in terms of mortality/morbidity reduction, while increasing health service costs. Most tests used have also not been validated, casting doubts on its utility.

Distinction: Screening vs. Case-finding vs. Diagnostic Tests

TermDefinitionExample
ScreeningTesting in populations NOT seeking health careSerological testing for HIV in blood donors; neonatal screening
Case-findingUsing tests to detect disease in individuals seeking care for OTHER reasonsVDRL for syphilis in pregnant women; detecting hypertension in routine OPD
Diagnostic testsConfirming/refuting disease in patients WITH signs and symptomsVDRL in a patient with lesions suggestive of secondary syphilis
The same test (e.g., VDRL) can serve different purposes depending on context.

Criteria for a Good Screening Programme

Disease criteria:
  1. Important health problem (high prevalence)
  2. Recognizable latent or early asymptomatic stage
  3. Natural history adequately understood
  4. Effective treatment available
  5. Facilities available for confirmation of diagnosis
  6. Agreed-on policy on whom to treat
  7. Good evidence that early detection reduces morbidity and mortality
  8. Expected benefits exceed risks and costs
Test criteria (screening test must satisfy):
  • Acceptability - acceptable to the target population (painful/embarrassing tests reduce compliance)
  • Repeatability - consistent results on repeated application
  • Validity - high sensitivity and specificity
  • Yield - adequate amount of previously unrecognized disease identified
  • Simplicity, safety, rapidity, ease of administration, low cost

Yield of Screening

"Yield" is the amount of previously unrecognized disease that is diagnosed as a result of the screening effort. It depends on:
  • Sensitivity and specificity of the test
  • Prevalence of the disease in the population
  • Participation/cooperation of individuals
High-risk populations are usually selected for screening to increase yield. For example, limiting a diabetes screening programme to persons over 40 years increases the yield.

- Park's Textbook of Preventive and Social Medicine, Chapter on Epidemiology

Make a presentation summarizing screening types, uses, and criteria

Reading File
Reading File
Reading File
Running Command

ls /home/daytona/workspace/ 2>/dev/null && echo "---" && ls /home/daytona/skills…

Running Command

mkdir -p /home/daytona/workspace/screening-psm

Writing File

~/screening-psm/build.js

const pptxgen = require("pptxgenjs");

const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Screening in PSM";
pres.author = "Orris";

// ── COLOUR PALETTE ──────────────────────────────────────────────────────────
const C = {
  navy:    "0D2B55",   // dominant dark
  teal:    "1A7A9E",   // supporting mid
  aqua:    "2BBFCF",   // accent/highlight
  white:   "FFFFFF",
  offWhite:"F4F8FB",
  slate:   "E0EEF5",
  text:    "0D2B55",
  subtext: "4A6278",
  light:   "B8D8E8",
};

// ── HELPERS ─────────────────────────────────────────────────────────────────
function darkSlide(slide) {
  slide.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.navy }, line: { color: C.navy } });
}
function lightSlide(slide) {
  slide.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offWhite }, line: { color: C.offWhite } });
}
function sectionHeader(slide, label) {
  slide.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 0.25, h: 5.625, fill: { color: C.aqua }, line: { color: C.aqua } });
  slide.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: C.teal }, line: { color: C.teal } });
  slide.addText(label, { x: 0.35, y: 0, w: 9.3, h: 0.7, fontSize: 18, bold: true, color: C.white, valign: "middle", margin: 0 });
}
function card(slide, x, y, w, h, title, titleColor, bgColor, items, iconChar) {
  slide.addShape(pres.shapes.RECTANGLE, {
    x, y, w, h,
    fill: { color: bgColor },
    shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.12 },
    line: { color: C.light, pt: 1 }
  });
  // accent bar top of card
  slide.addShape(pres.shapes.RECTANGLE, { x, y, w, h: 0.06, fill: { color: titleColor }, line: { color: titleColor } });
  let ty = y + 0.1;
  if (iconChar) {
    slide.addText(iconChar, { x, y: ty, w, h: 0.35, fontSize: 16, align: "center", color: titleColor, bold: true, margin: 0 });
    ty += 0.35;
  }
  slide.addText(title, { x: x + 0.1, y: ty, w: w - 0.2, h: 0.38, fontSize: 11.5, bold: true, color: titleColor, align: "center", margin: 0 });
  ty += 0.38;
  const bullets = items.map((t, i) => ({ text: t, options: { bullet: { type: "bullet" }, breakLine: i < items.length - 1, fontSize: 9.5, color: C.text } }));
  slide.addText(bullets, { x: x + 0.12, y: ty, w: w - 0.24, h: h - (ty - y) - 0.1, fontSize: 9.5, color: C.text, valign: "top" });
}

// ════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  darkSlide(s);

  // teal diagonal accent shape
  s.addShape(pres.shapes.RECTANGLE, { x: 7, y: 0, w: 3, h: 5.625, fill: { color: C.teal }, line: { color: C.teal } });
  s.addShape(pres.shapes.RECTANGLE, { x: 6.6, y: 0, w: 0.5, h: 5.625, fill: { color: C.aqua }, line: { color: C.aqua } });

  s.addText("SCREENING", {
    x: 0.5, y: 1.0, w: 6, h: 0.9,
    fontSize: 42, bold: true, color: C.white, charSpacing: 8, margin: 0
  });
  s.addText("in Preventive & Social Medicine", {
    x: 0.5, y: 1.95, w: 6, h: 0.55,
    fontSize: 20, color: C.aqua, italic: true, margin: 0
  });
  s.addShape(pres.shapes.RECTANGLE, { x: 0.5, y: 2.6, w: 3.5, h: 0.05, fill: { color: C.aqua }, line: { color: C.aqua } });
  s.addText([
    { text: "Types  |  Uses  |  Criteria", options: { bold: false } }
  ], { x: 0.5, y: 2.75, w: 5.8, h: 0.4, fontSize: 14, color: C.light, margin: 0 });

  s.addText("Source: Park's Textbook of Preventive and Social Medicine", {
    x: 0.5, y: 5.1, w: 6, h: 0.35, fontSize: 9, color: C.light, italic: true, margin: 0
  });

  // right-panel content
  s.addText([
    { text: "DEFINITION", options: { bold: true, breakLine: true, fontSize: 11, color: C.white } },
    { text: " ", options: { breakLine: true, fontSize: 6 } },
    { text: "Presumptive identification of unrecognized disease in apparently healthy individuals who are NOT seeking health care.", options: { fontSize: 10, color: C.light } }
  ], { x: 7.1, y: 1.5, w: 2.7, h: 2.5, margin: 0.1 });
}

// ════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW / AGENDA
// ════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  lightSlide(s);
  sectionHeader(s, "What We Will Cover");

  const topics = [
    ["01", "Screening vs. Case-finding vs. Diagnosis", "Key distinctions between three related concepts"],
    ["02", "Types of Screening", "Mass, Selective, and Multiphasic"],
    ["03", "Uses of Screening", "Four main purposes described by Park"],
    ["04", "Disease Criteria", "9 criteria for a disease to be suitable for screening"],
    ["05", "Test Criteria", "Properties a good screening test must have"],
    ["06", "Yield of Screening", "What determines how much unrecognized disease is detected"],
  ];

  topics.forEach(([num, title, sub], i) => {
    const col = i % 3;
    const row = Math.floor(i / 3);
    const x = 0.35 + col * 3.2;
    const y = 0.85 + row * 2.15;
    s.addShape(pres.shapes.RECTANGLE, {
      x, y, w: 3.0, h: 1.85,
      fill: { color: C.white },
      shadow: { type: "outer", color: "000000", blur: 4, offset: 2, angle: 135, opacity: 0.10 },
      line: { color: C.slate, pt: 1 }
    });
    s.addShape(pres.shapes.RECTANGLE, { x, y, w: 0.5, h: 1.85, fill: { color: C.teal }, line: { color: C.teal } });
    s.addText(num, { x, y: y + 0.55, w: 0.5, h: 0.6, fontSize: 16, bold: true, color: C.white, align: "center", margin: 0 });
    s.addText(title, { x: x + 0.6, y: y + 0.15, w: 2.3, h: 0.8, fontSize: 11, bold: true, color: C.navy, margin: 0 });
    s.addText(sub, { x: x + 0.6, y: y + 0.95, w: 2.3, h: 0.75, fontSize: 9, color: C.subtext, margin: 0 });
  });
}

// ════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — DISTINCTIONS
// ════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  lightSlide(s);
  sectionHeader(s, "Screening  vs.  Case-finding  vs.  Diagnostic Tests");

  const cols = [
    {
      title: "SCREENING", color: C.navy, icon: "🔍",
      def: "Testing in populations NOT seeking health care",
      ex: ["Serological testing for HIV in blood donors", "Neonatal screening programmes", "Premarital syphilis screening"]
    },
    {
      title: "CASE-FINDING", color: C.teal, icon: "📋",
      def: "Detecting disease in individuals seeking care for OTHER reasons",
      ex: ["VDRL in pregnant women attending ANC", "BP check in routine OPD", "Cervical cancer in gynaecology patients"]
    },
    {
      title: "DIAGNOSTIC TEST", color: C.aqua, icon: "🧪",
      def: "Confirming/refuting disease in patients WITH signs & symptoms",
      ex: ["VDRL in patient with secondary syphilis lesions", "Endocervical culture for N. gonorrhoeae", "FBS in symptomatic patient"]
    },
  ];

  cols.forEach(({ title, color, icon, def, ex }, i) => {
    const x = 0.3 + i * 3.15;
    // header
    s.addShape(pres.shapes.RECTANGLE, { x, y: 0.8, w: 3.0, h: 0.65, fill: { color }, line: { color } });
    s.addText(icon + "  " + title, { x, y: 0.8, w: 3.0, h: 0.65, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
    // body
    s.addShape(pres.shapes.RECTANGLE, {
      x, y: 1.45, w: 3.0, h: 3.9,
      fill: { color: C.white },
      shadow: { type: "outer", color: "000000", blur: 4, offset: 2, angle: 135, opacity: 0.10 },
      line: { color: C.light, pt: 1 }
    });
    s.addShape(pres.shapes.RECTANGLE, { x, y: 1.45, w: 3.0, h: 0.05, fill: { color }, line: { color } });
    s.addText("Definition", { x: x + 0.1, y: 1.55, w: 2.8, h: 0.3, fontSize: 9.5, bold: true, color, margin: 0 });
    s.addText(def, { x: x + 0.1, y: 1.85, w: 2.8, h: 0.8, fontSize: 9.5, color: C.text, margin: 0 });
    s.addShape(pres.shapes.RECTANGLE, { x: x + 0.1, y: 2.7, w: 2.8, h: 0.02, fill: { color: C.light }, line: { color: C.light } });
    s.addText("Examples", { x: x + 0.1, y: 2.78, w: 2.8, h: 0.3, fontSize: 9.5, bold: true, color, margin: 0 });
    const bullets = ex.map((t, j) => ({ text: t, options: { bullet: true, breakLine: j < ex.length - 1, fontSize: 9, color: C.text } }));
    s.addText(bullets, { x: x + 0.1, y: 3.08, w: 2.8, h: 2.1, valign: "top", margin: 0 });
  });

  s.addText("Note: The same test (e.g., VDRL) can serve different purposes depending on context.", {
    x: 0.3, y: 5.28, w: 9.4, h: 0.28, fontSize: 8.5, italic: true, color: C.subtext, margin: 0
  });
}

// ════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — TYPES OF SCREENING
// ════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  lightSlide(s);
  sectionHeader(s, "Types of Screening");

  const types = [
    {
      num: "01", title: "MASS SCREENING", color: C.navy,
      desc: "Screening of the entire population without any selection criteria.",
      points: ["Applied to all members of a community", "High coverage but lower efficiency", "Example: Universal BP measurement in adults"],
      pros: "Maximum reach",
      cons: "High cost, lower yield"
    },
    {
      num: "02", title: "SELECTIVE (High-risk) SCREENING", color: C.teal,
      desc: "Targeted at specific high-risk groups to increase diagnostic yield.",
      points: ["Applied to sub-populations at elevated risk", "More cost-effective than mass screening", "Example: Diabetes screening in persons >40 yrs"],
      pros: "Higher yield, lower cost",
      cons: "Risk groups may be misidentified"
    },
    {
      num: "03", title: "MULTIPHASIC SCREENING", color: C.aqua,
      desc: "Two or more screening tests applied in combination to a large population at one time.",
      points: ["May include questionnaire, clinical exam, bloods, lung function, audiometry", "Historically popular in UK & USA", "RCTs showed NO benefit in mortality/morbidity"],
      pros: "Broad detection scope",
      cons: "Unvalidated tests; increased costs; no proven mortality benefit"
    },
  ];

  types.forEach(({ num, title, color, desc, points, pros, cons }, i) => {
    const x = 0.3 + i * 3.15;
    s.addShape(pres.shapes.RECTANGLE, {
      x, y: 0.82, w: 3.0, h: 4.5,
      fill: { color: C.white },
      shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.12 },
      line: { color: C.light, pt: 1 }
    });
    s.addShape(pres.shapes.RECTANGLE, { x, y: 0.82, w: 3.0, h: 0.06, fill: { color }, line: { color } });
    // number badge
    s.addShape(pres.shapes.RECTANGLE, { x: x + 0.1, y: 0.95, w: 0.42, h: 0.42, fill: { color }, line: { color } });
    s.addText(num, { x: x + 0.1, y: 0.95, w: 0.42, h: 0.42, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
    s.addText(title, { x: x + 0.62, y: 0.95, w: 2.28, h: 0.42, fontSize: 10.5, bold: true, color, valign: "middle", margin: 0 });
    s.addText(desc, { x: x + 0.12, y: 1.48, w: 2.76, h: 0.65, fontSize: 9, color: C.subtext, italic: true, margin: 0 });
    // divider
    s.addShape(pres.shapes.RECTANGLE, { x: x + 0.12, y: 2.15, w: 2.76, h: 0.02, fill: { color: C.slate }, line: { color: C.slate } });
    const bp = points.map((t, j) => ({ text: t, options: { bullet: true, breakLine: j < points.length - 1, fontSize: 9, color: C.text } }));
    s.addText(bp, { x: x + 0.12, y: 2.22, w: 2.76, h: 1.3, valign: "top", margin: 0 });
    // pros/cons
    s.addShape(pres.shapes.RECTANGLE, { x: x + 0.12, y: 3.55, w: 2.76, h: 0.02, fill: { color: C.slate }, line: { color: C.slate } });
    s.addText([
      { text: "✓ ", options: { bold: true, color: "2E7D32" } },
      { text: pros, options: { fontSize: 8.5, color: C.text } },
      { text: "\n✗ ", options: { bold: true, color: "C62828" } },
      { text: cons, options: { fontSize: 8.5, color: C.text } },
    ], { x: x + 0.12, y: 3.62, w: 2.76, h: 1.5, margin: 0, fontSize: 8.5 });
  });
}

// ════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — USES OF SCREENING
// ════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  lightSlide(s);
  sectionHeader(s, "Uses of Screening  —  Four Main Uses (Park)");

  // Left side: 4 use cards stacked
  const uses = [
    {
      num: "1", color: C.navy, title: "Case Detection (Prescriptive Screening)",
      body: "Presumptive identification of unrecognized disease not arising from a patient's request. People screened primarily for their own benefit.",
      ex: "Neonatal screening, PKU, bacteriuria in pregnancy, breast/cervical cancer"
    },
    {
      num: "2", color: C.teal, title: "Control of Disease (Prospective Screening)",
      body: "People are examined for the benefit of others — reduces spread of infectious disease.",
      ex: "Screening immigrants for TB/syphilis; streptococcal infection to prevent rheumatic fever"
    },
    {
      num: "3", color: "7B5EA7", title: "Research Purposes",
      body: "Used when natural history of a disease is not fully known. Initial screening = prevalence estimate; repeat screening = incidence figure.",
      ex: "Chronic disease research (cancer, hypertension). Note: participants must be informed if no follow-up therapy is planned."
    },
    {
      num: "4", color: C.aqua, title: "Qualification Screening",
      body: "Assessment of suitability for a particular role or task.",
      ex: "Pre-employment medicals, armed forces fitness screening, blood donor screening"
    },
  ];

  uses.forEach(({ num, color, title, body, ex }, i) => {
    const y = 0.82 + i * 1.15;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 0.3, y, w: 9.4, h: 1.05,
      fill: { color: C.white },
      shadow: { type: "outer", color: "000000", blur: 3, offset: 1, angle: 135, opacity: 0.10 },
      line: { color: C.slate, pt: 1 }
    });
    s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y, w: 0.55, h: 1.05, fill: { color }, line: { color } });
    s.addText(num, { x: 0.3, y, w: 0.55, h: 1.05, fontSize: 20, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
    s.addText(title, { x: 0.95, y: y + 0.08, w: 4.5, h: 0.35, fontSize: 10.5, bold: true, color, margin: 0 });
    s.addText(body, { x: 0.95, y: y + 0.42, w: 4.5, h: 0.55, fontSize: 8.8, color: C.text, margin: 0 });
    // example tag
    s.addShape(pres.shapes.RECTANGLE, { x: 5.55, y: y + 0.1, w: 4.05, h: 0.85, fill: { color: C.slate }, line: { color: C.light, pt: 1 } });
    s.addText([
      { text: "Eg: ", options: { bold: true, fontSize: 8.5, color } },
      { text: ex, options: { fontSize: 8.5, color: C.text } }
    ], { x: 5.65, y: y + 0.1, w: 3.85, h: 0.85, valign: "middle", margin: 0.06 });
  });
}

// ════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — DISEASE CRITERIA
// ════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  lightSlide(s);
  sectionHeader(s, "Criteria for Screening — The Disease");

  s.addText("Before initiating a screening programme, the disease must satisfy ALL of the following:", {
    x: 0.35, y: 0.82, w: 9.3, h: 0.3, fontSize: 9.5, italic: true, color: C.subtext, margin: 0
  });

  const criteria = [
    ["1", "Important Health Problem", "Condition must be prevalent and significant in the community"],
    ["2", "Latent / Asymptomatic Stage", "A recognizable pre-symptomatic phase must exist"],
    ["3", "Natural History Understood", "Disease progression from latent to declared disease must be adequately known"],
    ["4", "Detectable by a Test", "A test must be able to detect disease before signs/symptoms appear"],
    ["5", "Diagnostic Facilities", "Facilities must be available to confirm the diagnosis"],
    ["6", "Effective Treatment", "An accepted and effective treatment must be available"],
    ["7", "Agreed Treatment Policy", "Clear consensus on who should be treated (e.g., borderline hypertension, diabetes)"],
    ["8", "Early Detection Reduces Mortality", "Good evidence that early detection + treatment reduces morbidity/mortality"],
    ["9", "Benefits > Risks + Costs", "Expected benefits (lives saved) must exceed the risks and financial costs"],
  ];

  const col1 = criteria.slice(0, 5);
  const col2 = criteria.slice(5);

  [col1, col2].forEach((col, ci) => {
    col.forEach(([num, title, desc], ri) => {
      const x = 0.3 + ci * 4.8;
      const y = 1.2 + ri * 0.83;
      s.addShape(pres.shapes.RECTANGLE, {
        x, y, w: 4.6, h: 0.74,
        fill: { color: C.white },
        line: { color: C.slate, pt: 1 },
        shadow: { type: "outer", color: "000000", blur: 3, offset: 1, angle: 135, opacity: 0.08 }
      });
      // left accent
      s.addShape(pres.shapes.RECTANGLE, { x, y, w: 0.38, h: 0.74, fill: { color: C.teal }, line: { color: C.teal } });
      s.addText(num, { x, y, w: 0.38, h: 0.74, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
      s.addText(title, { x: x + 0.45, y: y + 0.06, w: 4.05, h: 0.28, fontSize: 9.5, bold: true, color: C.navy, margin: 0 });
      s.addText(desc, { x: x + 0.45, y: y + 0.36, w: 4.05, h: 0.32, fontSize: 8.5, color: C.subtext, margin: 0 });
    });
  });
}

// ════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — TEST CRITERIA
// ════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  lightSlide(s);
  sectionHeader(s, "Criteria for Screening — The Test");

  s.addText("A screening test must satisfy the following properties:", {
    x: 0.35, y: 0.82, w: 9.3, h: 0.3, fontSize: 9.5, italic: true, color: C.subtext, margin: 0
  });

  const testCriteria = [
    { icon: "✓", title: "Validity", color: C.navy, body: "High Sensitivity (few false negatives) + High Specificity (few false positives). Tests with greater accuracy are often more expensive." },
    { icon: "↻", title: "Repeatability", color: C.teal, body: "Consistent, reproducible results on repeated application under the same conditions." },
    { icon: "👥", title: "Acceptability", color: "7B5EA7", body: "Must be acceptable to the target population. Painful, embarrassing or discomforting tests (e.g., rectal/vaginal exams) reduce participation." },
    { icon: "⚡", title: "Simplicity & Rapidity", color: C.aqua, body: "Should be easy to administer and yield results quickly so large populations can be screened efficiently." },
    { icon: "🎯", title: "Yield", color: "2E7D32", body: "Amount of previously unrecognized disease detected. Depends on: sensitivity, specificity, disease prevalence, and participation rate." },
    { icon: "$", title: "Cost-effectiveness", color: "C62828", body: "Must be financially justifiable. Balance between test accuracy and economic cost." },
  ];

  const cols = 3;
  testCriteria.forEach(({ icon, title, color, body }, i) => {
    const col = i % cols;
    const row = Math.floor(i / cols);
    const x = 0.3 + col * 3.15;
    const y = 1.2 + row * 2.0;
    s.addShape(pres.shapes.RECTANGLE, {
      x, y, w: 3.0, h: 1.8,
      fill: { color: C.white },
      shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.12 },
      line: { color: C.light, pt: 1 }
    });
    s.addShape(pres.shapes.RECTANGLE, { x, y, w: 3.0, h: 0.06, fill: { color }, line: { color } });
    s.addText(icon, { x, y: y + 0.1, w: 3.0, h: 0.42, fontSize: 18, align: "center", color, margin: 0 });
    s.addText(title, { x: x + 0.1, y: y + 0.52, w: 2.8, h: 0.32, fontSize: 11, bold: true, color, align: "center", margin: 0 });
    s.addShape(pres.shapes.RECTANGLE, { x: x + 0.6, y: y + 0.84, w: 1.8, h: 0.02, fill: { color: C.slate }, line: { color: C.slate } });
    s.addText(body, { x: x + 0.1, y: y + 0.9, w: 2.8, h: 0.8, fontSize: 8.5, color: C.text, margin: 0 });
  });
}

// ════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — YIELD
// ════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  lightSlide(s);
  sectionHeader(s, "Yield of Screening");

  // Definition box
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.3, y: 0.85, w: 9.4, h: 0.9,
    fill: { color: C.navy }, line: { color: C.navy }
  });
  s.addText([
    { text: "YIELD  ", options: { bold: true, fontSize: 13, color: C.aqua } },
    { text: "= Amount of previously unrecognized disease that is diagnosed as a result of the screening effort.", options: { fontSize: 12, color: C.white } }
  ], { x: 0.45, y: 0.85, w: 9.1, h: 0.9, valign: "middle", margin: 0.1 });

  // Determinants
  s.addText("Determinants of Yield", { x: 0.3, y: 1.9, w: 4.5, h: 0.35, fontSize: 12, bold: true, color: C.navy, margin: 0 });

  const factors = [
    ["Sensitivity of the Test", "Higher sensitivity → fewer missed cases → higher yield"],
    ["Specificity of the Test", "Higher specificity → fewer false positives → better targeting"],
    ["Prevalence of Disease", "Higher prevalence in screened group → more cases detected"],
    ["Participation Rate", "Greater public cooperation → more disease detected overall"],
  ];

  factors.forEach(([title, desc], i) => {
    const y = 2.32 + i * 0.72;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 0.3, y, w: 4.6, h: 0.62,
      fill: { color: C.white },
      shadow: { type: "outer", color: "000000", blur: 3, offset: 1, angle: 135, opacity: 0.08 },
      line: { color: C.slate, pt: 1 }
    });
    s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y, w: 0.12, h: 0.62, fill: { color: C.teal }, line: { color: C.teal } });
    s.addText(title, { x: 0.52, y: y + 0.04, w: 4.2, h: 0.26, fontSize: 9.5, bold: true, color: C.navy, margin: 0 });
    s.addText(desc, { x: 0.52, y: y + 0.3, w: 4.2, h: 0.26, fontSize: 8.5, color: C.subtext, margin: 0 });
  });

  // Right side: key insight
  s.addShape(pres.shapes.RECTANGLE, {
    x: 5.3, y: 1.9, w: 4.4, h: 3.5,
    fill: { color: C.slate }, line: { color: C.light, pt: 1 }
  });
  s.addText("Practical Application", { x: 5.45, y: 2.0, w: 4.1, h: 0.32, fontSize: 11, bold: true, color: C.navy, margin: 0 });
  s.addShape(pres.shapes.RECTANGLE, { x: 5.45, y: 2.35, w: 4.1, h: 0.02, fill: { color: C.light }, line: { color: C.light } });

  const insights = [
    "High-risk populations are usually selected for screening to increase yield.",
    "Example: Limiting a diabetes screening programme to persons OVER 40 years significantly increases yield.",
    "Restricting to high-prevalence sub-groups saves resources while maximizing detection.",
    "The goal is always to maximize previously unrecognized cases found per unit cost."
  ];
  const insightBullets = insights.map((t, i) => ({
    text: t,
    options: { bullet: true, breakLine: i < insights.length - 1, fontSize: 9, color: C.text }
  }));
  s.addText(insightBullets, { x: 5.45, y: 2.42, w: 4.1, h: 2.8, valign: "top", margin: 0 });
}

// ════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — SUMMARY / CONCLUSION
// ════════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  darkSlide(s);

  s.addShape(pres.shapes.RECTANGLE, { x: 7.5, y: 0, w: 2.5, h: 5.625, fill: { color: C.teal }, line: { color: C.teal } });
  s.addShape(pres.shapes.RECTANGLE, { x: 7.15, y: 0, w: 0.4, h: 5.625, fill: { color: C.aqua }, line: { color: C.aqua } });

  s.addText("KEY TAKEAWAYS", { x: 0.4, y: 0.25, w: 6.6, h: 0.5, fontSize: 22, bold: true, color: C.aqua, charSpacing: 4, margin: 0 });
  s.addShape(pres.shapes.RECTANGLE, { x: 0.4, y: 0.8, w: 6.6, h: 0.04, fill: { color: C.teal }, line: { color: C.teal } });

  const takeaways = [
    ["3 TYPES", "Mass  |  Selective (High-risk)  |  Multiphasic"],
    ["4 USES", "Case Detection  |  Disease Control  |  Research  |  Qualification"],
    ["9 DISEASE CRITERIA", "Prevalence, latent stage, natural history, test available, facilities, treatment, policy, evidence of benefit, benefits > costs"],
    ["KEY TEST PROPERTIES", "Validity (sensitivity + specificity), Repeatability, Acceptability, Simplicity, Yield, Cost-effectiveness"],
    ["YIELD PRINCIPLE", "Select high-risk groups to maximize unrecognized disease detected per unit cost"],
  ];

  takeaways.forEach(([label, value], i) => {
    const y = 0.95 + i * 0.88;
    s.addShape(pres.shapes.RECTANGLE, { x: 0.4, y, w: 1.5, h: 0.72, fill: { color: C.teal }, line: { color: C.teal } });
    s.addText(label, { x: 0.4, y, w: 1.5, h: 0.72, fontSize: 8.5, bold: true, color: C.white, align: "center", valign: "middle", margin: 0.05 });
    s.addShape(pres.shapes.RECTANGLE, { x: 1.9, y, w: 5.1, h: 0.72, fill: { color: "163C66" }, line: { color: "163C66" } });
    s.addText(value, { x: 2.0, y, w: 4.9, h: 0.72, fontSize: 9.5, color: C.light, valign: "middle", margin: 0 });
  });

  s.addText("Park's Textbook of Preventive & Social Medicine", {
    x: 7.55, y: 4.8, w: 2.3, h: 0.3, fontSize: 7.5, italic: true, color: C.light, align: "center", margin: 0
  });
}

// ── WRITE FILE ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/screening-psm/Screening_in_PSM.pptx" })
  .then(() => console.log("Done: /home/daytona/workspace/screening-psm/Screening_in_PSM.pptx"))
  .catch(e => { console.error(e); process.exit(1); });
Running Command

cd /home/daytona/workspace/screening-psm && node build.js 2>&1

Your presentation is ready!

Screening in PSM

Presentation · PPTX


What's included across 9 slides:
SlideContent
1Title slide with definition of screening
2Overview / agenda with 6 topic cards
3Screening vs. Case-finding vs. Diagnostic Tests (3-column layout)
4Three types of screening - Mass, Selective, Multiphasic (with pros/cons)
5Four uses of screening with examples (horizontal card layout)
69 Disease criteria for screening (two-column grid)
76 Test criteria (icon cards)
8Yield - definition, determinants, and practical application
9Key Takeaways summary slide
Design: Navy/teal/aqua medical palette with dark title and summary slides, light content slides, shadow cards, and accent bars. All content is sourced from Park's Textbook of Preventive and Social Medicine.
This is a shared conversation. Sign in to Orris to start your own chat.