im a intern in spm posting .i need to do a ppt for review meetng about hiv programme that is done in andakula, phc pudukkottai....under topics like screening test done nd for whom,to where they refer,hiv organogram,incentives given how much and for whom
Tamil Nadu ICTC HIV screening PHC who tested referral pathway NACO 2024
TNACS ICTC counsellor incentives RNTCP HIV programme Tamil Nadu organogram
https://tnsacs.in/ictc
mkdir -p /home/daytona/workspace/hiv-ppt && ls /home/daytona/workspace/hiv-ppt/
~/hiv-ppt/hiv_ppt.js
const pptxgen = require("pptxgenjs");
let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "HIV Programme Review - Andakula PHC, Pudukkottai";
// Color palette
const RED = "C0392B";
const DARK = "1A1A2E";
const LIGHT = "FDFEFE";
const ACCENT = "E74C3C";
const TEAL = "1ABC9C";
const GRAY = "F2F3F4";
const DKGRAY = "555555";
const ORANGE = "E67E22";
const BLUE = "2980B9";
// ──────────────────────────────────────────────
// HELPERS
// ──────────────────────────────────────────────
function addSlideHeader(slide, title, subtitle) {
// red top bar
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: 0.65, fill: { color: RED } });
slide.addText(title, {
x: 0.3, y: 0, w: 9.4, h: 0.65,
fontSize: 20, bold: true, color: LIGHT, valign: "middle", margin: 0
});
if (subtitle) {
slide.addText(subtitle, {
x: 0.3, y: 0.65, w: 9.4, h: 0.35,
fontSize: 11, color: DKGRAY, italic: true, margin: 0
});
}
}
function addFooter(slide) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.35, w: "100%", h: 0.275, fill: { color: DARK } });
slide.addText("HIV Programme Review | Andakula PHC, Pudukkottai | June 2026", {
x: 0.2, y: 5.35, w: 9.6, h: 0.275,
fontSize: 8, color: LIGHT, valign: "middle", margin: 0
});
}
function bullet(text, level) {
return { text, options: { bullet: true, indentLevel: level || 0, breakLine: true, fontSize: 13, color: DARK } };
}
function bulletBold(text) {
return { text, options: { bullet: true, bold: true, breakLine: true, fontSize: 13, color: DARK } };
}
// ──────────────────────────────────────────────
// SLIDE 1 – TITLE
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
// Full dark background
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: DARK } });
// Red accent bar left
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: "100%", fill: { color: RED } });
// Red ribbon across middle
s.addShape(pres.ShapeType.rect, { x: 0.18, y: 2.1, w: 9.82, h: 0.08, fill: { color: RED } });
s.addText("HIV PROGRAMME REVIEW", {
x: 0.4, y: 0.7, w: 9.2, h: 0.7,
fontSize: 32, bold: true, color: LIGHT, align: "left", charSpacing: 4
});
s.addText("Andakula Sub-Centre | PHC Pudukkottai", {
x: 0.4, y: 1.4, w: 9.2, h: 0.55,
fontSize: 17, color: TEAL, align: "left"
});
s.addText([
{ text: "Presented by: ", options: { bold: true, color: LIGHT, fontSize: 13 } },
{ text: "SPM Intern", options: { color: "#AAAAAA", fontSize: 13 } }
], { x: 0.4, y: 2.35, w: 9.2, h: 0.4 });
s.addText([
{ text: "Date: ", options: { bold: true, color: LIGHT, fontSize: 13 } },
{ text: "June 2026", options: { color: "#AAAAAA", fontSize: 13 } }
], { x: 0.4, y: 2.75, w: 9.2, h: 0.4 });
// Red ribbon HIV awareness
s.addText("NACP | TNSACS | NRHM", {
x: 0.4, y: 4.5, w: 9.2, h: 0.5,
fontSize: 11, color: "#888888", align: "left"
});
}
// ──────────────────────────────────────────────
// SLIDE 2 – OVERVIEW / AGENDA
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: GRAY } });
addSlideHeader(s, "Overview", "Topics covered in this review");
const topics = [
{ num: "01", label: "About ICTC & HIV Screening" },
{ num: "02", label: "Who Gets Tested?" },
{ num: "03", label: "Screening Tests Done" },
{ num: "04", label: "Referral Pathway" },
{ num: "05", label: "HIV Programme Organogram" },
{ num: "06", label: "Incentives - Who Gets & How Much" },
];
topics.forEach((t, i) => {
const col = i < 3 ? 0 : 1;
const row = i % 3;
const x = col === 0 ? 0.4 : 5.3;
const y = 1.1 + row * 1.3;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 1.0, fill: { color: col === 0 ? DARK : RED }, line: { color: LIGHT, width: 0 }, shadow: { type: "outer", blur: 5, offset: 2, angle: 45, color: "888888" } });
s.addText(t.num, { x: x + 0.1, y: y + 0.05, w: 0.7, h: 0.9, fontSize: 26, bold: true, color: ACCENT, valign: "middle", margin: 0 });
s.addText(t.label, { x: x + 0.85, y: y + 0.05, w: 3.5, h: 0.9, fontSize: 13, color: LIGHT, valign: "middle", margin: 0 });
});
addFooter(s);
}
// ──────────────────────────────────────────────
// SLIDE 3 – ABOUT ICTC
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: LIGHT } });
addSlideHeader(s, "ICTC – Integrated Counselling & Testing Centre", "Entry point for all HIV-related services");
// Two columns
// Left - what is ICTC
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.05, w: 4.4, h: 3.9, fill: { color: DARK }, roundedCorners: true });
s.addText("What is ICTC?", { x: 0.4, y: 1.1, w: 4.2, h: 0.45, fontSize: 14, bold: true, color: TEAL, margin: 4 });
s.addText([
bullet("Gateway & entry point for HIV/AIDS prevention, care & support services"),
bullet("Located at PHC / CHC / District Hospital levels"),
bullet("Andakula Sub-Centre is a field outreach site under PHC Pudukkottai ICTC"),
bullet("Services are FREE and CONFIDENTIAL"),
bullet("Follows 5C principles: Consent, Confidentiality, Counselling, Correct test, Connection to care"),
], { x: 0.4, y: 1.58, w: 4.2, h: 3.2, fontSize: 12, color: LIGHT, valign: "top", margin: 6 });
// Right - services
s.addShape(pres.ShapeType.rect, { x: 5.1, y: 1.05, w: 4.6, h: 3.9, fill: { color: RED }, roundedCorners: true });
s.addText("Services Offered", { x: 5.2, y: 1.1, w: 4.3, h: 0.45, fontSize: 14, bold: true, color: LIGHT, margin: 4 });
s.addText([
bullet("Pre-test counselling"),
bullet("HIV testing (rapid test)"),
bullet("Post-test counselling"),
bullet("Referral to ART centre if positive"),
bullet("Linkage to PPTCT (for pregnant women)"),
bullet("STI / TB screening and referral"),
bullet("Condom promotion & IEC activities"),
bullet("Partner notification counselling"),
], { x: 5.2, y: 1.58, w: 4.2, h: 3.2, fontSize: 12, color: LIGHT, valign: "top", margin: 6 });
addFooter(s);
}
// ──────────────────────────────────────────────
// SLIDE 4 – WHO GETS TESTED
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: GRAY } });
addSlideHeader(s, "Who Gets Tested? – Target Population", "Voluntary Counselling & Testing / Provider-Initiated Testing");
const groups = [
{ title: "Antenatal Mothers (PPTCT)", color: ORANGE, pts: ["All pregnant women attending ANC at PHC", "PITC – Provider-Initiated Testing & Counselling", "HIV test offered at 1st ANC visit", "Re-tested in 3rd trimester if high risk"] },
{ title: "High Risk Groups (HRG)", color: RED, pts: ["Female Sex Workers (FSW)", "Men who have Sex with Men (MSM)", "Intravenous Drug Users (IDU)", "Truckers & migrant labourers"] },
{ title: "General Population (VCT)", color: BLUE, pts: ["Walk-in clients seeking testing voluntarily", "STI patients at PHC OPD", "Individuals with TB (TB-HIV coordination)", "Partners of known HIV+ persons"] },
];
groups.forEach((g, i) => {
const x = 0.3 + i * 3.3;
s.addShape(pres.ShapeType.rect, { x, y: 1.05, w: 3.0, h: 0.5, fill: { color: g.color } });
s.addText(g.title, { x, y: 1.05, w: 3.0, h: 0.5, fontSize: 11.5, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 0 });
s.addShape(pres.ShapeType.rect, { x, y: 1.55, w: 3.0, h: 3.55, fill: { color: DARK } });
s.addText(g.pts.map(p => ({ text: p, options: { bullet: true, breakLine: true, fontSize: 11.5, color: LIGHT } })),
{ x: x + 0.05, y: 1.6, w: 2.85, h: 3.4, valign: "top", margin: 5 });
});
// Bottom note
s.addText("Note: Consent is MANDATORY before testing. No compulsory testing.", {
x: 0.3, y: 5.1, w: 9.4, h: 0.25, fontSize: 9.5, color: DKGRAY, italic: true
});
addFooter(s);
}
// ──────────────────────────────────────────────
// SLIDE 5 – SCREENING TESTS
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: LIGHT } });
addSlideHeader(s, "Screening Tests Done at ICTC", "NACO Serial Testing Algorithm");
// Algorithm flow
s.addText("NACO Serial Testing Algorithm (3-Kit Strategy)", {
x: 0.3, y: 0.75, w: 9.4, h: 0.35, fontSize: 13, bold: true, color: DARK
});
const steps = [
{ label: "STEP 1\nTest A", desc: "1st Rapid Test (Most Sensitive kit)\neg: Comb-AIDS/Tri-DOT", color: TEAL },
{ label: "NON-REACTIVE\n(Negative)", desc: "Report as HIV Negative\nPost-test counselling\nRepeat if window period", color: BLUE },
{ label: "REACTIVE\n(Positive)", desc: "Proceed to Test B", color: ORANGE },
{ label: "STEP 2\nTest B", desc: "2nd Rapid Test (Most Specific kit)\neg: SD Bioline", color: TEAL },
{ label: "STEP 3\nTest C", desc: "3rd Tie-breaker Test\nif Test A+/Test B-\neg: HIV BLOT", color: RED },
];
// Draw flow boxes
steps.forEach((st, i) => {
const isArrow = [1, 2].includes(i);
const x = 0.25 + i * 1.9;
s.addShape(pres.ShapeType.rect, { x, y: 1.25, w: 1.7, h: 1.4, fill: { color: st.color }, roundedCorners: true });
s.addText(st.label, { x, y: 1.27, w: 1.7, h: 0.5, fontSize: 10, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 2 });
s.addText(st.desc, { x, y: 1.77, w: 1.7, h: 0.85, fontSize: 9.5, color: LIGHT, align: "center", valign: "top", margin: 3 });
if (i < 4) {
s.addText("→", { x: x + 1.7, y: 1.6, w: 0.2, h: 0.5, fontSize: 18, bold: true, color: DKGRAY });
}
});
// Final result boxes
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 3.05, w: 9.4, h: 0.05, fill: { color: DKGRAY } });
s.addText("Final Reporting", { x: 0.3, y: 3.2, w: 9.4, h: 0.35, fontSize: 13, bold: true, color: DARK });
const results = [
{ label: "HIV NEGATIVE", sub: "Test A non-reactive", color: TEAL },
{ label: "HIV POSITIVE", sub: "Test A + Test B both reactive", color: RED },
{ label: "INCONCLUSIVE", sub: "Test A reactive, Test B negative → Test C", color: ORANGE },
];
results.forEach((r, i) => {
const x = 0.3 + i * 3.2;
s.addShape(pres.ShapeType.rect, { x, y: 3.65, w: 3.0, h: 1.0, fill: { color: r.color }, roundedCorners: true });
s.addText(r.label, { x, y: 3.68, w: 3.0, h: 0.45, fontSize: 13, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 0 });
s.addText(r.sub, { x, y: 4.13, w: 3.0, h: 0.45, fontSize: 10, color: LIGHT, align: "center", valign: "middle", margin: 0 });
});
s.addText("Rapid tests used: Comb-AIDS (A) | SD Bioline (B) | HIV BLOT (C) — as per NACO serial algorithm", {
x: 0.3, y: 5.05, w: 9.4, h: 0.25, fontSize: 8.5, color: DKGRAY, italic: true
});
addFooter(s);
}
// ──────────────────────────────────────────────
// SLIDE 6 – REFERRAL PATHWAY
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: DARK } });
addSlideHeader(s, "Referral Pathway – HIV Positive Client", "From Andakula Sub-Centre to ART Centre");
const nodes = [
{ label: "Andakula\nSub-Centre / Village", sub: "ASHA/ANM screens\nRefers with slip", color: TEAL, x: 0.2 },
{ label: "PHC Pudukkottai\nICTC", sub: "Pre-test counselling\nRapid HIV test\nPost-test counselling", color: ORANGE, x: 2.3 },
{ label: "District ICTC\n(DAPCU)", sub: "Confirmatory testing\nCD4 count\nClinical assessment", color: ACCENT, x: 4.4 },
{ label: "ART Centre\nGovt. Hospital", sub: "ART initiation &\nmonitoring\nFree treatment", color: BLUE, x: 6.5 },
];
nodes.forEach((n, i) => {
s.addShape(pres.ShapeType.rect, { x: n.x, y: 1.0, w: 1.9, h: 1.7, fill: { color: n.color }, roundedCorners: true });
s.addText(n.label, { x: n.x, y: 1.02, w: 1.9, h: 0.65, fontSize: 10.5, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 2 });
s.addText(n.sub, { x: n.x, y: 1.67, w: 1.9, h: 0.95, fontSize: 9, color: LIGHT, align: "center", valign: "top", margin: 3 });
if (i < 3) {
s.addText("→", { x: n.x + 1.9, y: 1.55, w: 0.4, h: 0.5, fontSize: 22, bold: true, color: TEAL, align: "center" });
}
});
// Referral slip note
s.addShape(pres.ShapeType.rect, { x: 0.2, y: 2.85, w: 9.6, h: 0.08, fill: { color: RED } });
s.addText("Key Points in Referral", { x: 0.2, y: 3.0, w: 9.6, h: 0.4, fontSize: 13, bold: true, color: LIGHT });
s.addText([
bullet("Referral slip given by ICTC counsellor (NACO Annexure-14 format)"),
bullet("Linkage ensured by outreach worker / ASHA"),
bullet("District ART Centre: Govt. Hospital, Pudukkottai (nearest facility)"),
bullet("PLHIV linked to Community Care Centre (CCC) for support services"),
bullet("OI (Opportunistic Infections) treated at ART centre / District Hospital"),
bullet("Defaulter tracing done by DAPCU field staff"),
], { x: 0.3, y: 3.45, w: 9.4, h: 2.0, fontSize: 12, color: LIGHT, valign: "top", margin: 4 });
addFooter(s);
}
// ──────────────────────────────────────────────
// SLIDE 7 – REFERRAL: TB-HIV
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: GRAY } });
addSlideHeader(s, "TB-HIV Co-ordination & Referral", "Bi-directional screening under NACP-NTEP");
// Two arrows
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.05, w: 4.3, h: 3.8, fill: { color: DARK }, roundedCorners: true });
s.addText("TB patient → HIV test", { x: 0.4, y: 1.1, w: 4.0, h: 0.45, fontSize: 13, bold: true, color: TEAL, margin: 4 });
s.addText([
bullet("All TB patients referred to ICTC for HIV testing"),
bullet("PITC: Provider-Initiated Testing & Counselling"),
bullet("Isoniazid Preventive Therapy (IPT) for HIV+ TB patients"),
bullet("CPT (Cotrimoxazole Prophylaxis) initiated"),
bullet("ART started as per guidelines"),
], { x: 0.4, y: 1.58, w: 4.1, h: 3.0, fontSize: 12, color: LIGHT, valign: "top", margin: 6 });
s.addShape(pres.ShapeType.rect, { x: 5.0, y: 1.05, w: 4.7, h: 3.8, fill: { color: RED }, roundedCorners: true });
s.addText("HIV+ client → TB screening", { x: 5.1, y: 1.1, w: 4.4, h: 0.45, fontSize: 13, bold: true, color: LIGHT, margin: 4 });
s.addText([
bullet("All HIV+ clients screened for TB symptoms at ICTC"),
bullet("4-symptom screen: Cough, Fever, Night sweats, Weight loss"),
bullet("Refer to NTEP / DMC if symptoms present"),
bullet("Intensified Case Finding (ICF) at ART centres"),
bullet("TB-HIV register maintained at PHC ICTC"),
], { x: 5.1, y: 1.58, w: 4.4, h: 3.0, fontSize: 12, color: LIGHT, valign: "top", margin: 6 });
addFooter(s);
}
// ──────────────────────────────────────────────
// SLIDE 8 – ORGANOGRAM
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: LIGHT } });
addSlideHeader(s, "HIV Programme Organogram", "National AIDS Control Programme (NACP) – Tamil Nadu");
// National
s.addShape(pres.ShapeType.rect, { x: 3.5, y: 0.75, w: 3.0, h: 0.55, fill: { color: DARK }, roundedCorners: true });
s.addText("NACO\n(National AIDS Control Organisation)", { x: 3.5, y: 0.75, w: 3.0, h: 0.55, fontSize: 9, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 2 });
// Arrow down
s.addText("↓", { x: 4.8, y: 1.3, w: 0.5, h: 0.3, fontSize: 16, bold: true, color: RED, align: "center" });
// State
s.addShape(pres.ShapeType.rect, { x: 3.3, y: 1.6, w: 3.4, h: 0.55, fill: { color: RED }, roundedCorners: true });
s.addText("TNSACS\n(Tamil Nadu State AIDS Control Society)", { x: 3.3, y: 1.6, w: 3.4, h: 0.55, fontSize: 9, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 2 });
s.addText("↓", { x: 4.8, y: 2.15, w: 0.5, h: 0.3, fontSize: 16, bold: true, color: RED, align: "center" });
// District
s.addShape(pres.ShapeType.rect, { x: 3.1, y: 2.45, w: 3.8, h: 0.55, fill: { color: ORANGE }, roundedCorners: true });
s.addText("DAPCU\n(District AIDS Prevention & Control Unit)", { x: 3.1, y: 2.45, w: 3.8, h: 0.55, fontSize: 9, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 2 });
s.addText("↓", { x: 4.8, y: 3.0, w: 0.5, h: 0.3, fontSize: 16, bold: true, color: RED, align: "center" });
// CHC ICTC
s.addShape(pres.ShapeType.rect, { x: 3.0, y: 3.3, w: 4.0, h: 0.55, fill: { color: BLUE }, roundedCorners: true });
s.addText("CHC / Taluk ICTC\n(Nodal ICTC for PHC cluster)", { x: 3.0, y: 3.3, w: 4.0, h: 0.55, fontSize: 9, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 2 });
s.addText("↓", { x: 4.8, y: 3.85, w: 0.5, h: 0.3, fontSize: 16, bold: true, color: RED, align: "center" });
// PHC ICTC
s.addShape(pres.ShapeType.rect, { x: 2.9, y: 4.15, w: 4.2, h: 0.55, fill: { color: TEAL }, roundedCorners: true });
s.addText("PHC Pudukkottai – ICTC\n(MO, Counsellor, Lab Technician)", { x: 2.9, y: 4.15, w: 4.2, h: 0.55, fontSize: 9, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 2 });
// Sub-centre branch
s.addText("→", { x: 7.12, y: 4.3, w: 0.4, h: 0.3, fontSize: 16, bold: true, color: RED, align: "center" });
s.addShape(pres.ShapeType.rect, { x: 7.52, y: 4.15, w: 2.3, h: 0.55, fill: { color: DARK }, roundedCorners: true });
s.addText("Andakula Sub-Centre\n(ANM + ASHA)", { x: 7.52, y: 4.15, w: 2.3, h: 0.55, fontSize: 9, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 2 });
addFooter(s);
}
// ──────────────────────────────────────────────
// SLIDE 9 – STAFF AT PHC ICTC
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: DARK } });
addSlideHeader(s, "PHC ICTC – Staffing & Roles", "Under NACP / TNSACS");
const staff = [
{ role: "Medical Officer (MO)", duties: ["Overall in-charge of ICTC", "Reviews registers monthly", "Provides clinical management", "Ensures IEC activities"], color: TEAL },
{ role: "ICTC Counsellor\n(Contract, TNSACS)", duties: ["Pre & post-test counselling", "Maintains ICTC registers", "Ensures referral & linkage", "Reports to DAPCU monthly"], color: ORANGE },
{ role: "Lab Technician", duties: ["Performs rapid HIV tests", "Maintains cold chain for kits", "Reports test results", "Maintains lab registers"], color: BLUE },
{ role: "ANM / ASHA\n(Sub-centre level)", duties: ["Community mobilization", "Brings target groups to ICTC", "Partner notification support", "Follows up PLHIV at home"], color: ACCENT },
];
staff.forEach((st, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.2;
const y = 1.05 + row * 2.1;
s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 1.9, fill: { color: st.color }, roundedCorners: true });
s.addText(st.role, { x, y: y + 0.05, w: 4.5, h: 0.5, fontSize: 12, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 2 });
s.addText(st.duties.map(d => ({ text: d, options: { bullet: true, breakLine: true, fontSize: 10.5, color: LIGHT } })),
{ x: x + 0.1, y: y + 0.55, w: 4.3, h: 1.3, valign: "top", margin: 4 });
});
addFooter(s);
}
// ──────────────────────────────────────────────
// SLIDE 10 – INCENTIVES
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: GRAY } });
addSlideHeader(s, "Incentives Under HIV Programme", "For ASHAs, Counsellors & Programme Staff – NACP / NRHM");
// Table headers
const cols = [0.3, 3.5, 6.2, 8.3];
const colW = [3.2, 2.7, 2.1, 1.5];
const headers = ["Recipient", "Activity", "Incentive Amount", "Source"];
headers.forEach((h, i) => {
s.addShape(pres.ShapeType.rect, { x: cols[i], y: 1.05, w: colW[i], h: 0.45, fill: { color: RED } });
s.addText(h, { x: cols[i], y: 1.05, w: colW[i], h: 0.45, fontSize: 11, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 0 });
});
const rows = [
["ASHA", "Referring a client to ICTC for HIV test", "₹ 50 per referral", "NACP"],
["ASHA", "Ensuring PLHIV reaches ART centre (1st visit)", "₹ 150 per linkage", "NACP"],
["ASHA", "Bringing ART defaulter back to care", "₹ 150 per defaulter", "NACP"],
["ASHA", "PPTCT – Ensuring ANC mother is tested", "₹ 50 per ANC tested", "NACP/NRHM"],
["Link Worker (TI)", "Reaching FSW/MSM/IDU for screening", "₹ 1000–1500/month", "NACP TI"],
["ICTC Counsellor", "Monthly salary (contractual, TNSACS)", "₹ 15,000–18,000/mo", "TNSACS"],
["Lab Technician", "Monthly salary (contractual)", "₹ 12,000–15,000/mo", "TNSACS"],
];
rows.forEach((row, ri) => {
const bg = ri % 2 === 0 ? DARK : "#2C3E50";
row.forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, { x: cols[ci], y: 1.5 + ri * 0.48, w: colW[ci], h: 0.46, fill: { color: bg } });
s.addText(cell, { x: cols[ci] + 0.05, y: 1.5 + ri * 0.48, w: colW[ci] - 0.1, h: 0.46, fontSize: 9.5, color: LIGHT, align: ci === 2 ? "center" : "left", valign: "middle", margin: 2 });
});
});
s.addText("* Amounts as per NACP Phase IV norms. Actual disbursement through DAPCU via TNSACS.", {
x: 0.3, y: 5.1, w: 9.4, h: 0.25, fontSize: 8.5, color: DKGRAY, italic: true
});
addFooter(s);
}
// ──────────────────────────────────────────────
// SLIDE 11 – PPTCT PROGRAMME
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: LIGHT } });
addSlideHeader(s, "PPTCT – Prevention of Parent to Child Transmission", "Special Focus: Antenatal HIV Screening");
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.0, w: 9.4, h: 0.08, fill: { color: ORANGE } });
const pptctRows = [
{ step: "Step 1", detail: "All ANC mothers offered HIV test at 1st visit (PITC)", color: TEAL },
{ step: "Step 2", detail: "Informed consent taken, pre-test counselling given", color: BLUE },
{ step: "Step 3", detail: "Rapid HIV test done at PHC ICTC (same day result)", color: ORANGE },
{ step: "Step 4", detail: "HIV negative: Post-test counselling, retested at 28 weeks if high risk", color: TEAL },
{ step: "Step 5", detail: "HIV positive: Referred to ART centre, NVP prophylaxis for mother + baby", color: RED },
{ step: "Step 6", detail: "HIV exposed infant followed up for 18 months, DBS test at 6 weeks", color: DARK },
];
pptctRows.forEach((r, i) => {
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.15 + i * 0.63, w: 1.3, h: 0.55, fill: { color: r.color } });
s.addText(r.step, { x: 0.3, y: 1.15 + i * 0.63, w: 1.3, h: 0.55, fontSize: 11, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 0 });
s.addShape(pres.ShapeType.rect, { x: 1.65, y: 1.15 + i * 0.63, w: 8.05, h: 0.55, fill: { color: i % 2 === 0 ? DARK : "#2C3E50" } });
s.addText(r.detail, { x: 1.75, y: 1.15 + i * 0.63, w: 7.9, h: 0.55, fontSize: 11.5, color: LIGHT, valign: "middle", margin: 4 });
});
addFooter(s);
}
// ──────────────────────────────────────────────
// SLIDE 12 – SUMMARY / CONCLUSION
// ──────────────────────────────────────────────
{
let s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: DARK } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: "100%", fill: { color: RED } });
s.addText("Key Takeaways", {
x: 0.4, y: 0.25, w: 9.2, h: 0.6,
fontSize: 26, bold: true, color: LIGHT, align: "left"
});
s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.85, w: 2.5, h: 0.07, fill: { color: RED } });
const takeaways = [
["ICTC", "Entry point at PHC Pudukkottai; outreach via Andakula sub-centre"],
["Screening", "NACO Serial Algorithm (3-kit: Test A → B → C) for all voluntary & provider-initiated clients"],
["Target groups", "ANC mothers (PPTCT), HRGs (FSW/MSM/IDU), TB patients, walk-in VCT clients"],
["Referral", "HIV+ clients referred → District ICTC → ART Centre (Govt. Hospital, Pudukkottai)"],
["Organogram", "NACO → TNSACS → DAPCU → CHC ICTC → PHC ICTC → Sub-centre (ANM/ASHA)"],
["Incentives", "ASHA: ₹50/referral, ₹150/ART linkage; Counsellor: ₹15–18k/mo (TNSACS contract)"],
];
takeaways.forEach(([key, val], i) => {
const y = 1.05 + i * 0.73;
s.addShape(pres.ShapeType.rect, { x: 0.4, y, w: 1.8, h: 0.58, fill: { color: RED }, roundedCorners: true });
s.addText(key, { x: 0.4, y, w: 1.8, h: 0.58, fontSize: 12, bold: true, color: LIGHT, align: "center", valign: "middle", margin: 0 });
s.addText(val, { x: 2.3, y: y + 0.04, w: 7.4, h: 0.5, fontSize: 11.5, color: LIGHT, valign: "middle", margin: 0 });
});
s.addText("Thank You | Questions Welcome", {
x: 0.4, y: 5.1, w: 9.2, h: 0.35, fontSize: 11, color: TEAL, align: "right", italic: true
});
}
// ──────────────────────────────────────────────
// WRITE FILE
// ──────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/hiv-ppt/HIV_Programme_Review_Andakula_PHC.pptx" })
.then(() => console.log("DONE: PPT written successfully"))
.catch(err => console.error("ERROR:", err));
cd /home/daytona/workspace/hiv-ppt && node hiv_ppt.js
ls -lh /home/daytona/workspace/hiv-ppt/HIV_Programme_Review_Andakula_PHC.pptx
HIV Programme Review Andakula PHC
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide - Andakula Sub-Centre / PHC Pudukkottai |
| 2 | Overview / Agenda |
| 3 | What is ICTC - services offered |
| 4 | Who gets tested - ANC mothers (PPTCT), HRGs (FSW/MSM/IDU), TB patients, walk-in VCT |
| 5 | Screening tests - NACO 3-kit serial algorithm (Test A → B → C), final reporting |
| 6 | Referral pathway - Andakula → PHC ICTC → District ICTC (DAPCU) → ART Centre |
| 7 | TB-HIV bi-directional referral (NACP-NTEP coordination) |
| 8 | HIV Organogram - NACO → TNSACS → DAPCU → CHC ICTC → PHC → Sub-centre |
| 9 | PHC ICTC staffing (MO, Counsellor, Lab Tech, ANM/ASHA) |
| 10 | Incentives table - ASHA ₹50/referral, ₹150/ART linkage, Counsellor ₹15-18k/mo |
| 11 | PPTCT step-by-step (ANC HIV screening) |
| 12 | Key takeaways / thank you |
andakulam phc pudukottai
cd /home/daytona/workspace/hiv-ppt && sed -i \ 's/Andakula PHC, Pudukkottai/Andakulam PHC, Pudukkottai/g; \ s/Andakula Sub-Centre | PHC Pudukkottai/Andakulam PHC | Pudukkottai/g; \ s/Andakula Sub-Centre is a field outreach site under PHC Pudukkottai ICTC/Andakulam PHC has its own ICTC under PHC Pudukkottai block/g; \ s/Andakula Sub-Centre \/\/ Village/Andakulam PHC\nICTC/g; \ s/Andakula Sub-Centre\n(ANM + ASHA)/Andakulam PHC\n(ANM \+ ASHA)/g; \ s/Andakula sub-centre/Andakulam PHC/g; \ s/Andakula \/\/ PHC Pudukkottai/Andakulam PHC, Pudukkottai/g; \ s/"Andakula PHC"/"Andakulam PHC"/g; \ s/HIV Programme Review | Andakula PHC/HIV Programme Review | Andakulam PHC/g' hiv_ppt.js
cd /home/daytona/workspace/hiv-ppt && python3 -c " content = open('hiv_ppt.js').read() replacements = [ ('Andakula PHC, Pudukkottai', 'Andakulam PHC, Pudukkottai'), ('Andakula Sub-Centre | PHC Pudukkottai', 'Andakulam PHC | Pudukkottai'), ('Andakula Sub-Centre is a field outreach site under PHC Pudukkottai ICTC', 'Andakulam PHC has its own ICTC serving the local population'), ('Andakula Sub-Centre / Village', 'Andakulam PHC\\nICTC'), ('Andakula Sub-Centre\\n(ANM + ASHA)', 'Andakulam PHC\\n(ANM + ASHA)'), ('Andakula sub-centre', 'Andakulam PHC'), ('HIV Programme Review | Andakula PHC', 'HIV Programme Review | Andakulam PHC'), ('Andakula', 'Andakulam'), ] for old, new in replacements: content = content.replace(old, new) open('hiv_ppt.js', 'w').write(content) print('Done') "
cd /home/daytona/workspace/hiv-ppt && grep -n "Andakulam\|Pudukkottai\|Sub-Centre\|sub-centre" hiv_ppt.js | head -40
cd /home/daytona/workspace/hiv-ppt && python3 -c " content = open('hiv_ppt.js').read() fixes = [ # fix double-m typo ('Andakulamm', 'Andakulam'), # Fix referral slide header ('From Andakulam Sub-Centre to ART Centre', 'From Andakulam PHC, Pudukkottai to ART Centre'), # Fix referral node 1 ('{ label: \"Andakulam\\\\nSub-Centre / Village\", sub: \"ASHA/ANM screens\\\\nRefers with slip\", color: TEAL, x: 0.2 }', '{ label: \"Andakulam PHC\\\\nICTC\", sub: \"Pre-test counselling\\\\nRapid HIV test done\", color: TEAL, x: 0.2 }'), # Fix referral node 2 ('{ label: \"PHC Pudukkottai\\\\nICTC\", sub: \"Pre-test counselling\\\\nRapid HIV test\\\\nPost-test counselling\", color: ORANGE, x: 2.3 }', '{ label: \"District ICTC\\\\n(DAPCU Pudukkottai)\", sub: \"Confirmatory testing\\\\nClinical assessment\", color: ORANGE, x: 2.3 }'), # Fix organogram PHC line ('\"PHC Pudukkottai – ICTC\\\\n(MO, Counsellor, Lab Technician)\"', '\"Andakulam PHC – ICTC\\\\n(MO, Counsellor, Lab Technician)\"'), # Fix organogram sub-centre branch ('\"Andakulam Sub-Centre\\\\n(ANM + ASHA)\"', '\"Village Sub-Centres\\\\n(ANM + ASHA)\"'), # Fix summary slide ('\"Entry point at PHC Pudukkottai; outreach via Andakulam PHC\"', '\"Entry point at Andakulam PHC ICTC; field outreach via ANM/ASHA\"'), ] for old, new in fixes: content = content.replace(old, new) open('hiv_ppt.js', 'w').write(content) print('All fixed') "
cd /home/daytona/workspace/hiv-ppt && node hiv_ppt.js && echo "OK" && ls -lh HIV_Programme_Review_Andakulam_PHC.pptx
HIV Programme Review Andakulam PHC
Presentation · PPTX