Verified firsthand against the live CMS-10114 (Rev. 02/25, OMB 0938-0931): - Section 1A confirms paper is valid for Change of Information (#2) AND Reactivation (#4), not just initial enumeration. Resolves the UNCERTAIN flag. - Current mailing address is CMS NPI Enumerator Services, Mail Stop DO-01-51, 7500 Security Blvd, Baltimore MD 21244. The old Fargo PO Box 6059 is retired; corrected in mac_routing.NPI_ENUMERATOR + all docs. - No electronic no-login equivalent exists for CMS (NPI Registry API is read-only; PECOS/NPPES-IA require login), unlike FMCSA's ask.fmcsa ticket form. So tiers stay: Standard=paper CMS-10114 (no login), Expedited=NPPES surrogate. New: cms10114_pdf_filler.py fills the flat official form via text overlay (reason checkbox + NPI + Section 2A identity + Section 4A cert name + signature anchor); wired into npi_provider._generate_10114_for_signing for nppes-update. Signed forms route to the NPI Enumerator via the existing daily batch. Tests: test_cms10114.py 27/27, test_paper_batch.py 15/15, Astro build 58 pages.
164 lines
11 KiB
Markdown
164 lines
11 KiB
Markdown
# Plan
|
||
|
||
Offer healthcare regulatory filings as a **two-tier model** (internal mechanics;
|
||
the "paper" alternative is NEVER surfaced to the client):
|
||
|
||
- **Standard service (default):** we handle the filing end-to-end. Client signs
|
||
ONE certification and we submit + track to confirmation. (Internally this is the
|
||
paper path — 855 to the MAC, CMS-10114 to the NPI Enumerator (Baltimore MD) — but we
|
||
never say "paper" to the client; it's just "we file it for you.")
|
||
- **Expedited (faster, framed positively at intake):** we ask if they can
|
||
**electronically grant us CMS I&A Surrogate access**. We position this as
|
||
*reducing the number of steps on our end so we can bulk-file faster* — never as
|
||
"the alternative is paper." If yes, we file online same-day. If no, we silently
|
||
fall back to Standard. Same price either way; surrogacy is a delegation, not
|
||
password sharing.
|
||
|
||
This pass verifies the no-login paper path per service, reconciles the doc/code
|
||
contradiction, and makes "standard = paper / expedited = surrogate" consistent
|
||
everywhere it's surfaced.
|
||
|
||
## Goal
|
||
Every healthcare service (federal sold + state/adjacent to add) has a verified
|
||
**Standard (paper, no-login)** path and, where a CMS/portal exists, an
|
||
**Expedited (surrogate/delegated)** upsell. No surface should ever present
|
||
surrogate as *required* when a paper path exists; paper is always the default.
|
||
|
||
## Scope / affected areas
|
||
- `api/src/routes/checkout.ts` (~L2155-2207) — already has the two-tier copy, BUT
|
||
treats NPPES update/reactivation as **"online-only, surrogate required"** with
|
||
NO standard fallback (`NPPES_ONLY_SLUGS`, `hasNppesOnly`). The directive says:
|
||
give those a Standard paper path too (CMS-10114 to NPI Enumerator (Baltimore MD)) and make surrogate the
|
||
*expedited* option, not the only option.
|
||
- `scripts/workers/services/npi_provider.py` — `access` strings call NPPES
|
||
update/reactivation "NPPES via CMS I&A surrogate access (online-only)". Must
|
||
become "Standard: CMS-10114 paper to NPI Enumerator (Baltimore MD), client signs;
|
||
Expedited: NPPES via I&A surrogate." Also `_STANDARD_FILING_SLUGS` currently
|
||
excludes `nppes-update` (it has no 855) — needs a CMS-10114 paper path instead.
|
||
- `scripts/document_gen/templates/cms855_pdf_filler.py` — working 855 paper path
|
||
(fills 855I/B/O/A + cert-page signature anchor). **Gap:** no CMS-10114 filler
|
||
for the NPPES standard path → likely a small new `cms10114_pdf_filler.py`.
|
||
- `docs/healthcare-no-login-value-add.md` — already documents the CMS-10114 paper
|
||
path; promote it to the canonical "Standard vs Expedited" matrix.
|
||
- `site/src/pages/services/healthcare/{npi-revalidation,medicare-enrollment}.astro`
|
||
— already describe expedited/surrogate; npi-reactivation/nppes-update order
|
||
pages need the same two-tier framing.
|
||
- `site/src/components/intake/steps/NpiIntakeStep.astro` + intake manifest — add
|
||
the surrogate-access question framed positively: "Can you electronically grant
|
||
us CMS I&A Surrogate access? It lets us bulk-file faster and cuts steps on our
|
||
end." Optional; declining is fine and never mentions paper. The captured answer
|
||
routes fulfillment internally (surrogate vs our Standard path).
|
||
- `docs/state-healthcare-compliance-opportunities.md` + `new-sector-compliance-
|
||
targets.md` — extend the two-tier classification to state/adjacent services.
|
||
|
||
Out of scope this pass: building the actual surrogate Playwright automation
|
||
(expedited fulfillment can stay human-in-PECOS for now), email-stream machinery,
|
||
pricing changes.
|
||
|
||
## Approach (concrete ordered steps)
|
||
1. **Confirm the CMS-10114 paper path** for NPPES data updates AND NPI
|
||
reactivation (not just initial enumeration): paper CMS-10114 mailed to NPI
|
||
Enumerator (Baltimore MD), client signature only, no I&A login.
|
||
Cite the official source. This is what makes NPPES services "Standard, no
|
||
login" instead of surrogate-required. (We currently have no CMS-10114 PDF.)
|
||
2. **Lock the two-tier matrix for the 6 federal services.** For each slug record:
|
||
Standard path (form, mail destination, client's only action = sign / nothing),
|
||
Expedited path (surrogate scope: PECOS and/or NPPES; what client grants),
|
||
and whether expedited is even applicable (screening = public, no portal, so
|
||
no expedited tier). Confirm the 855 wet-signature-cannot-be-delegated caveat
|
||
applies to Standard; surrogate covers Expedited.
|
||
3. **Reconcile checkout.ts.** Plan the edit so:
|
||
- NPPES update/reactivation no longer present surrogate as *required* — remove
|
||
the "online-only / required for those" language.
|
||
- The surrogate ask is framed as the **faster, fewer-steps** option, never
|
||
against a "paper" alternative. Audit/strip the existing copy that leaks
|
||
mechanics to the client (e.g. "we'll send your CMS-855 to sign", "submit it
|
||
to your MAC") — replace with neutral "we file it and track it for you."
|
||
- Declining surrogate silently routes to our Standard path; no client-facing
|
||
mention of paper/MAC/Fargo/form numbers.
|
||
4. **Reconcile npi_provider.py.** Update `access` strings + `_STANDARD_FILING_SLUGS`
|
||
so nppes-update/reactivation generate the CMS-10114 (or 855 reactivation)
|
||
paper + e-sign, and the admin todo reflects Standard-default / Expedited-if-
|
||
surrogate-granted. Mirror the existing 855 generate→upload→esign flow.
|
||
5. **MAC + Fargo routing rule.** Document which Standard filings go where
|
||
(855 → provider's MAC by state/jurisdiction; CMS-10114 → NPI Enumerator (Baltimore MD)). Confirm
|
||
`practice_state` intake field drives MAC envelope addressing.
|
||
7. **Daily batched-mail fulfillment (Standard path).** Design the operational
|
||
flow for paper filings that are signed + pending submission:
|
||
- On each **postal working day morning** (skip weekends + federal/USPS
|
||
holidays), gather ALL signed-and-pending paper filings, **group by
|
||
destination agency/address** (each MAC, the NPI Enumerator (Baltimore MD), each
|
||
state Medicaid/CLIA agency).
|
||
- For each destination, **merge all that day's documents into one print job**
|
||
plus a **cover sheet** (Performance West sender, destination agency, date,
|
||
enclosed-count, per-item list of order# / provider / NPI / form). One
|
||
**Priority Mail envelope per agency** → saves postage + handling.
|
||
- Mark each included order as "mailed" with the batch date + tracking #.
|
||
- Build this as a worker (a `daily_paper_batch` job + a cover-sheet generator
|
||
in document_gen), mirroring existing worker/cron patterns
|
||
(`infra/cron/*`, `business_days.py` for the working-day calendar). Decide:
|
||
fully-automated print-to-PDF batch that a human prints + drops, vs.
|
||
print-API (Lob/Click2Mail) auto-mail. **Recommend phase 1 = generate the
|
||
per-agency batched PDF + cover sheet + manifest for a human to print & mail;
|
||
phase 2 = wire a print-mail API.**
|
||
8. **Extend two-tier to state/adjacent services.** For each (State Medicaid
|
||
enroll/reval, CAQH re-attest, payer credentialing, DEA renewal, state CSR,
|
||
PDMP, CLIA, license renewal+CME) classify:
|
||
- **Standard (no-login):** paper/mail-in form + one client signature?
|
||
(e.g. CLIA = CMS-116 paper to state; Medicaid varies — some paper.) These
|
||
feed the same daily batched-mail flow, grouped by their state agency.
|
||
- **Expedited (delegated):** the lightest legitimate delegation that avoids a
|
||
client *login* — e.g. CAQH "authorized administrator/org" grant, Medicaid
|
||
"delegated official" on the app, payer EDI/CAQH attestation rights, an LOA.
|
||
Distinguish "client signs one authorization once" (acceptable, still
|
||
no-login) from "client must log in / share credentials" (never).
|
||
- Flag services that are genuinely portal-only with NO paper standard so
|
||
marketing never claims "no logins" for them.
|
||
9. **Sequence the rollout** by (Standard-feasibility first) × revenue, and write
|
||
the two doc updates + the small code edits (checkout.ts, npi_provider.py,
|
||
optional cms10114_pdf_filler.py, and the daily batch worker + cover sheet).
|
||
All gated on approval.
|
||
|
||
## Validation (how each part is verified)
|
||
- **Source-grounded:** every Standard (paper) and Expedited (delegation) claim
|
||
cites the official instruction (CMS-855 instr, CMS-10114 instr, CMS-116 for
|
||
CLIA, state Medicaid enrollment page, CAQH/payer docs). No unsourced claim.
|
||
- **Consistency sweep:** after edits, `grep` for "online-only" / "required" /
|
||
"surrogate" / "no login" across checkout.ts, npi_provider.py, and the service
|
||
pages — confirm none present surrogate as *required* where a paper path exists,
|
||
and Standard is the default on every surface.
|
||
- **Standard path mechanism check:** `cms855_pdf_filler.fill_cms855("855i",...)`
|
||
still yields filled PDF + cert anchor (read-only smoke render). If CMS-10114
|
||
filler is built, same smoke render proves a signable Baltimore-bound PDF.
|
||
- **Expedited path check:** confirm the surrogate-grant CTA + `ia_surrogacy`
|
||
success action + admin todo together let a human file in PECOS/NPPES same-day;
|
||
surrogate scope wording matches what CMS I&A actually grants (PECOS vs NPPES).
|
||
- **Matrix completeness:** every service (federal + state) has Standard + (where
|
||
applicable) Expedited rows with a definite client-action column and source;
|
||
no "unknown" and no service that's portal-only-but-marketed-as-no-login.
|
||
|
||
## Open questions / decisions
|
||
1. **NPPES update/reactivation Standard path:** ✅ RESOLVED — CMS-10114 paper IS
|
||
accepted for *changes AND reactivation* (verified against CMS-10114 Rev. 02/25,
|
||
Section 1A boxes #2 Change / #4 Reactivation). Mailing address is the NPI
|
||
Enumerator in **Baltimore MD** (the old Fargo PO Box 6059 is retired). Both
|
||
nppes-update and npi-reactivation are Standard-default + surrogate-expedited.
|
||
2. **Build `cms10114_pdf_filler.py` this pass?** Needed for a real NPPES Standard
|
||
path. Recommend: yes if step 1 confirms paper, mirroring the 855 filler;
|
||
otherwise defer.
|
||
3. **State Medicaid scope:** classify the mechanism generically + verify top ~5
|
||
states by our lead density now; template the rest. (50-state research is a
|
||
separate effort.)
|
||
4. **CAQH / payer credentialing tier:** almost certainly Expedited = "client
|
||
signs one authorization, no login" (category C). Confirm we market that as
|
||
"no logins for you" with precise wording.
|
||
5. **Expedited pricing/positioning:** RESOLVED — expedited is **not** a paid
|
||
tier and we never expose "paper" as the alternative. It's an intake question
|
||
framed positively ("electronically granting surrogate access lets us bulk-file
|
||
faster / fewer steps on our end"). If yes → online; if no → silent Standard
|
||
fallback. Same price. No price delta, no separate product, no mention of paper.
|
||
6. **Client-facing messaging rule:** never surface mechanics to the client —
|
||
no "paper", "CMS-855", "CMS-10114", "MAC", or "Fargo" in any client copy
|
||
(cold email, order page, checkout, intake). The only client-visible choice is
|
||
the positive surrogate question; everything else is "we file it for you." This
|
||
applies to the checkout copy audit in step 3.
|