healthcare: two-tier (standard paper / expedited surrogate) filing model

- Verified Standard(no-login)/Expedited(surrogate) matrix from official CMS-855
  PDFs (docs/healthcare-filing-tiers-verified.md): reactivation+revalidation are
  855I paper-to-MAC reasons, original-signature, routed by state; sig may not be
  delegated; 855B needs PECOS app fee.
- Add scripts/workers/mac_routing.py: state->MAC routing (all 56 jurisdictions,
  12 destinations) for envelope addressing + daily batch grouping. Addresses
  marked VERIFY before live mail.
- npi_provider.py: fix access strings to two-tier framing; NPPES update/reactivation
  no longer 'online-only'; note 855B fee.
- checkout.ts + service pages: strip client-facing mechanics & the paper-vs-tier
  choice; surrogate is the only optional, positively-framed ask (faster, never
  required, never share password).
This commit is contained in:
justin 2026-06-07 00:24:56 -05:00
parent 74c1259c9a
commit 258d23bdc6
7 changed files with 417 additions and 289 deletions

View file

@ -2152,49 +2152,35 @@ export async function sendComplianceIntakeEmail(
</p>
</div>` : "";
// CMS filing-method section for PECOS / NPPES orders. We offer two service
// tiers and let the provider pick the one that's easiest for them:
// (1) Standard filing — they review + sign one certification, we submit to
// their MAC. Zero account setup. Default for reval/enrollment.
// (2) Expedited filing — faster/same-day-trackable via CMS I&A surrogate access.
// NPPES-only services (reactivation, update) are web-only, so surrogate access
// is the only path for those. We never ask for the provider's password.
// CMS filing for PECOS / NPPES orders. We file everything for the provider;
// the ONLY client-facing choice is the optional surrogate question, framed
// positively. We NEVER expose the mechanics (paper, CMS-855/10114, MAC, Fargo)
// and we NEVER tell them "the alternative is paper". If they grant I&A
// Surrogate access we file online same-day; if not, we file it for them via our
// Standard path silently. Same price either way — surrogate is just faster for
// us (fewer steps, lets us bulk-file). We never ask for their password.
const npiConfirmUrl = `${SITE_DOMAIN}/order/success?action=ia_surrogacy&order_id=${orderId}`;
// Which ordered services support the standard (no-account) filing path
// vs. are NPPES-web-only (surrogate access required).
const STANDARD_FILING_SLUGS = new Set<string>(["npi-revalidation", "medicare-enrollment", "provider-compliance-bundle"]);
const NPPES_ONLY_SLUGS = new Set<string>(["npi-reactivation", "nppes-update"]);
const hasStandardFiling = npiAccessOrders.some(o => STANDARD_FILING_SLUGS.has(o.service_slug as string));
const hasNppesOnly = npiAccessOrders.some(o => NPPES_ONLY_SLUGS.has(o.service_slug as string));
const standardFilingBlock = hasStandardFiling ? `
<p style="margin:0 0 6px;font-size:13px;font-weight:700;color:#115e59;">Standard filing &mdash; no account needed</p>
<p style="margin:0 0 12px;font-size:13px;color:#134e4a;line-height:1.5;">
We complete the correct CMS-855 for you. You review and sign the certification
from a secure link we send (takes about a minute), and we submit it to your
Medicare Administrative Contractor (MAC) and track it to confirmation. Nothing
for you to set up.
</p>` : "";
const surrogacyHeading = hasStandardFiling
? `Expedited filing &mdash; CMS I&amp;A surrogate access`
: `Grant CMS I&amp;A surrogate access`;
const npiSection = hasNpiAccess ? `
<div style="background:#ccfbf1;border:1px solid #5eead4;border-radius:8px;padding:16px 20px;margin:20px 0;">
<p style="margin:0 0 10px;font-size:14px;font-weight:700;color:#115e59;">Action Required: Choose How We File</p>
${standardFilingBlock}
<p style="margin:0 0 6px;font-size:13px;font-weight:700;color:#115e59;">${surrogacyHeading}</p>
<p style="margin:0 0 10px;font-size:14px;font-weight:700;color:#115e59;">We're handling your filing</p>
<p style="margin:0 0 12px;font-size:13px;color:#134e4a;line-height:1.5;">
${hasNppesOnly ? "NPPES updates and reactivations are online-only, so this is required for those. " : ""}You add us as a
<strong>Surrogate</strong> in CMS Identity &amp; Access (I&amp;A) &mdash; you never share your password.
We then file in PECOS / NPPES under our own credentials and capture the tracking ID the same day.
You're all set &mdash; we prepare and submit your filing and track it to
confirmation. The only thing we may need from you is a quick signature on
a secure link we'll send. Nothing to set up.
</p>
<p style="margin:0 0 6px;font-size:13px;font-weight:700;color:#115e59;">Optional: speed it up</p>
<p style="margin:0 0 12px;font-size:13px;color:#134e4a;line-height:1.5;">
If you can <strong>electronically grant us CMS I&amp;A Surrogate access</strong>,
we can file faster &mdash; it cuts steps on our end and lets us process your
filing right away. You never share your password; you simply authorize us
as a Surrogate for your NPI.
</p>
<ol style="margin:0 0 12px;padding-left:20px;font-size:13px;color:#134e4a;line-height:1.7;">
<li>Log in to <a href="https://nppes.cms.hhs.gov/IAWeb/login.do" style="color:#0f766e;">CMS I&amp;A (I&amp;A System)</a></li>
<li>Log in to <a href="https://nppes.cms.hhs.gov/IAWeb/login.do" style="color:#0f766e;">CMS Identity &amp; Access (I&amp;A)</a></li>
<li>Go to <strong>My Connections &rarr; Add Surrogate</strong></li>
<li>Add surrogate organization: <strong>Performance West Inc.</strong> (email <strong>filings@performancewest.net</strong>)</li>
<li>Grant access to <strong>PECOS</strong> and <strong>NPPES</strong> for your NPI, then approve our request</li>
<li>Grant access for your NPI, then approve our request</li>
</ol>
<p style="margin:12px 0;text-align:center;">
<a href="${npiConfirmUrl}" style="display:inline-block;background:#0f766e;color:#ffffff;font-weight:700;padding:12px 28px;border-radius:8px;text-decoration:none;font-size:14px;">
@ -2202,7 +2188,8 @@ export async function sendComplianceIntakeEmail(
</a>
</p>
<p style="margin:8px 0 0;font-size:12px;color:#115e59;text-align:center;">
${hasStandardFiling ? "Prefer standard filing? Just reply to this email and we'll send your CMS-855 to sign &mdash; no further action needed from you here." : "Clicking this notifies our team so we can begin your filing."}
Can't do this step? No problem &mdash; we'll handle your filing without it.
There's nothing else you need to do.
</p>
</div>` : "";