Home / Widgets / PurpleIPD Calculator Script
Duplicate Snippet

Embed Snippet on Your Site

PurpleIPD Calculator Script

var WA_NUM = "919909903539";
var SCRIPT_URL = "YOUR_GOOGLE_APPS_SCRIPT_URL_HERE";
var R = {};

function fINR(n) {
if (n >= 10000000) return "u20B9" + (n/10000000).toFixed(2) + " Cr";
if (n >= 100000) return "u20B9" + (n/100000).toFixed(1) + " lakhs";
return "u20B9" + Math.round(n).toLocaleString("en-IN");
}
function gv(id) { return parseFloat(document.getElementById(id).value) || 0; }
function sv(id, v) { var e = document.getElementById(id); if(e) e.textContent = v; }

function hcc2Calculate() {
var beds = gv("c-beds");
var adm = gv("c-adm");
var sal = gv("c-sal");
var ins = gv("c-ins");

// ── Assumptions (hidden from visitor) ────────────────────────────
// File size: NABH hospital = 120 pages actual (visitor typically guesses 40-50)
var actualPages = 120;
var cpp = 0.85; // ₹0.85/page — paper + toner + maintenance (verified from quotation)
var hrSal = sal / (26 * 8); // hourly rate from monthly salary

// MRD: 6-year retention, 0.015 sqft per file
var filesStored = adm * 6;
var mrdSqft = Math.min(Math.max(filesStored * 0.015, 150), 600);
var mrdRent = mrdSqft * 700; // ₹700/sqft blended national average
var pestCost = 15000 + mrdSqft * 18;

// Direct costs
var paperCost = adm * actualPages * cpp;
var directTotal = paperCost + mrdRent + pestCost;

// Indirect costs — validated against quotation benchmarks (₹90/hr)
// File handling: 30 min/patient (creation, retrieval, archiving)
var fileHandle = adm * (30/60) * 90;
// EMRD prep: 40 min/discharge
var emrdCost = adm * (40/60) * 90;
// TPA/insurance: 30 min per insurance patient
var insPatients = adm * (ins/100);
var insCost = insPatients * (30/60) * 90;
var indirectTotal = fileHandle + emrdCost + insCost;

// Revenue opportunity: 4 hrs faster discharge
// Beds freed = adm × 4hrs / (avg LOS 5 days × 24hrs)
var extraPatients = Math.round(adm * (4/120));
var revOpportunity = extraPatients * 40000; // ₹40,000 avg billing per patient

var annualTotal = directTotal + indirectTotal;
var grandTotal = annualTotal + revOpportunity;

// Savings over years (direct + indirect recovered at 80%, revenue at 100%)
var annualRecovery = (directTotal * 0.80) + (indirectTotal * 0.80) + revOpportunity;
var y1 = annualRecovery;
var y3 = annualRecovery * 3;
var y5 = annualRecovery * 5;

R = { beds:beds, adm:adm, sal:sal, ins:ins,
actualPages:actualPages, mrdSqft:Math.round(mrdSqft),
filesStored:Math.round(filesStored),
paperCost:paperCost, mrdRent:mrdRent, pestCost:pestCost, directTotal:directTotal,
fileHandle:fileHandle, emrdCost:emrdCost, insCost:insCost, indirectTotal:indirectTotal,
insPatients:Math.round(insPatients), extraPatients:extraPatients,
revOpportunity:revOpportunity, annualTotal:annualTotal, grandTotal:grandTotal,
y1:y1, y3:y3, y5:y5, hrSal:Math.round(hrSal) };

// ── Render ────────────────────────────────────────────────────────
sv("r-total", fINR(annualTotal));
sv("r-shock-sub", "Direct costs + staff time consumed by paper — for a " + beds + "-bed hospital doing " + adm.toLocaleString("en-IN") + " admissions a year.");

document.getElementById("r-assumptions").innerHTML =
"uD83DuDCCB How we calculated this: File size set at " + actualPages + " pages — NABH hospitals average 100–150 pages per file once all nursing charts, consent forms, investigation reports, and records are counted. Printing at u20B90.85/page. MRD storage estimated at " + R.mrdSqft + " sqft for " + R.filesStored.toLocaleString("en-IN") + " files (6-year retention). Staff time valued at u20B990/hr. Insurance documentation at 30 min per insurance patient.";

// Direct
sv("b-paper", fINR(paperCost));
document.getElementById("b-paper-hint").textContent = adm.toLocaleString("en-IN") + " admissions u00D7 " + actualPages + " pages u00D7 u20B90.85/page";
sv("b-mrd", fINR(mrdRent));
document.getElementById("b-mrd-hint").textContent = R.mrdSqft + " sqft u00D7 u20B9700/sqft — space storing " + R.filesStored.toLocaleString("en-IN") + " patient files (6 years)";
sv("b-pest", fINR(pestCost));
sv("b-direct-total", fINR(directTotal));

// Indirect
sv("b-file", fINR(fileHandle));
document.getElementById("b-file-hint").textContent = adm.toLocaleString("en-IN") + " patients u00D7 30 min file creation, retrieval & movement u00D7 u20B990/hr";
sv("b-emrd", fINR(emrdCost));
document.getElementById("b-emrd-hint").textContent = adm.toLocaleString("en-IN") + " discharges u00D7 40 min EMRD sequencing + checklist u00D7 u20B990/hr";
sv("b-ins", fINR(insCost));
document.getElementById("b-ins-hint").textContent = R.insPatients.toLocaleString("en-IN") + " insurance patients u00D7 30 min scanning + TPA documentation u00D7 u20B990/hr";
sv("b-indirect-total", fINR(indirectTotal));

// Revenue
sv("b-rev", fINR(revOpportunity));
document.getElementById("b-rev-hint").textContent = "4-hour faster discharge u2192 " + R.extraPatients + " additional patients/year u00D7 u20B940,000 avg billing";
sv("b-rev-total", fINR(revOpportunity) + "/year");
sv("r-grand", fINR(grandTotal));

// Savings
sv("s-y1", fINR(y1));
sv("s-y3", fINR(y3));
sv("s-y5", fINR(y5));
document.getElementById("s-footer").textContent = "Includes 80% recovery of direct and indirect costs + full revenue from additional patient capacity unlocked by faster discharge. Does not include ABHA incentives or scheme revenue recovery.";
document.getElementById("lead-title").textContent = "Want to recover " + fINR(y3) + " over the next 3 years?";

document.getElementById("hcc2-results").style.display = "block";
document.getElementById("hcc2-post").style.display = "none";
document.getElementById("hr-lead-form").style.display = "block";
document.getElementById("hr-success").style.display = "none";

setTimeout(function() {
document.getElementById("hcc2-results").scrollIntoView({ behavior:"smooth", block:"start" });
}, 120);

if (typeof gtag !== "undefined") {
gtag("event","calculator_results",{beds:beds,hidden_cost:Math.round(annualTotal),grand_total:Math.round(grandTotal)});
}
sendSheet({type:"anonymous",beds:beds,admissions:adm,ins_pct:ins,
direct_cost:Math.round(directTotal),indirect_cost:Math.round(indirectTotal),
revenue_opp:Math.round(revOpportunity),grand_total:Math.round(grandTotal),
timestamp:new Date().toISOString()});
}

function hcc2Submit(el) {
var channel = (typeof el === "string") ? el : el.getAttribute("data-channel");
var name = document.getElementById("f-name").value.trim();
var hosp = document.getElementById("f-hosp").value.trim();
var phone = document.getElementById("f-phone").value.trim();
var email = document.getElementById("f-email").value.trim();
var cons = document.getElementById("f-consent").checked;

if (!name || !phone) { document.getElementById("f-err").style.display="block"; return; }
document.getElementById("f-err").style.display = "none";

sendSheet({type:"lead",name:name,hospital:hosp,phone:phone,email:email,consent:cons,
channel:channel,beds:R.beds,admissions:R.adm,ins_pct:R.ins,
direct_cost:Math.round(R.directTotal),indirect_cost:Math.round(R.indirectTotal),
revenue_opp:Math.round(R.revOpportunity),grand_total:Math.round(R.grandTotal),
saving_3yr:Math.round(R.y3),saving_5yr:Math.round(R.y5),
timestamp:new Date().toISOString()});

if (typeof gtag !== "undefined") {
gtag("event","calculator_lead",{channel:channel,grand_total:Math.round(R.grandTotal)});
}

if (channel === "whatsapp") {
var msg = encodeURIComponent(
"Hi, I used the PurpleIPD hidden cost calculator.nn" +
"Name: " + name + "nHospital: " + (hosp||"Not specified") +
"nBeds: " + R.beds + " | Admissions/yr: " + R.adm.toLocaleString("en-IN") +
"nnDirect paper cost: " + fINR(R.directTotal) + "/yr" +
"nStaff time on paper: " + fINR(R.indirectTotal) + "/yr" +
"nRevenue I'm losing to slow discharge: " + fINR(R.revOpportunity) + "/yr" +
"nTotal annual impact: " + fINR(R.grandTotal) +
"n3-year recovery: " + fINR(R.y3) +
"nnI'd like a 20-minute walkthrough."
);
window.open("https://wa.me/" + WA_NUM + "?text=" + msg, "_blank");
} else {
var sub = encodeURIComponent("Hospital Hidden Cost Report u2014 " + (hosp||name));
var body = encodeURIComponent(
"Hi PurpleIPD,nnTotal annual impact: " + fINR(R.grandTotal) +
"n3-year recovery: " + fINR(R.y3) +
"nBeds: " + R.beds + " | Admissions: " + R.adm +
"nnPlease share more details.nnu2014 " + name + (hosp ? ", " + hosp : "")
);
window.open("mailto:[email protected]?subject=" + sub + "&body=" + body, "_blank");
}

document.getElementById("hr-lead-form").style.display = "none";
document.getElementById("hr-success").style.display = "block";
sv("suc-title", channel === "whatsapp" ? "Results sent on WhatsApp!" : "Email drafted!");
sv("suc-sub", "Our team will reach " + name + " within 1 business day to walk through exactly how these savings work for " + (hosp||"your hospital") + " u2014 in 20 minutes.");
}

function sendSheet(data) {
if (SCRIPT_URL === "YOUR_GOOGLE_APPS_SCRIPT_URL_HERE") return;
fetch(SCRIPT_URL,{method:"POST",mode:"no-cors",
headers:{"Content-Type":"application/json"},body:JSON.stringify(data)}).catch(function(){});
}

Code Preview
js

Comments

Add a Comment