healthcare: optional surrogate-access intake question (expedited path)
- NpiIntakeStep: add positively-framed 'can you grant electronic I&A Surrogate access?' question for all filing slugs (reval/reactivation/nppes-update/ enrollment/bundle). Optional, never required, never mentions paper; captured as intake_data.surrogate_access (yes/no/blank). Astro build green (58 pages). - npi_provider.py: surface the surrogate answer in the admin todo so fulfillment knows EXPEDITED (online via surrogate) vs STANDARD (e-sign + daily mail batch).
This commit is contained in:
parent
138fec17e9
commit
7ea18dd3d8
2 changed files with 39 additions and 6 deletions
|
|
@ -159,6 +159,7 @@ class _BaseNPIHandler:
|
||||||
specialty = intake.get("specialty", "")
|
specialty = intake.get("specialty", "")
|
||||||
practice_state = intake.get("practice_state", "")
|
practice_state = intake.get("practice_state", "")
|
||||||
pecos_id = intake.get("pecos_enrollment_id", "")
|
pecos_id = intake.get("pecos_enrollment_id", "")
|
||||||
|
surrogate = (intake.get("surrogate_access") or "").lower()
|
||||||
customer_email = (
|
customer_email = (
|
||||||
intake.get("email")
|
intake.get("email")
|
||||||
or order_data.get("customer_email")
|
or order_data.get("customer_email")
|
||||||
|
|
@ -178,6 +179,11 @@ class _BaseNPIHandler:
|
||||||
LOG.error("[%s] CMS-855 generation failed: %s", order_number, exc)
|
LOG.error("[%s] CMS-855 generation failed: %s", order_number, exc)
|
||||||
filing_note = f"CMS-855 auto-generation FAILED ({exc}); prepare the form manually."
|
filing_note = f"CMS-855 auto-generation FAILED ({exc}); prepare the form manually."
|
||||||
|
|
||||||
|
surrogate_label = {
|
||||||
|
"yes": "YES — client can grant I&A Surrogate access -> file the EXPEDITED way (online via surrogate).",
|
||||||
|
"no": "NO — client declined surrogate -> use the STANDARD path (prepare form, e-sign, daily mail batch).",
|
||||||
|
}.get(surrogate, "UNDECIDED — confirm with client; default to STANDARD path if not granted.")
|
||||||
|
|
||||||
description = (
|
description = (
|
||||||
f"{meta['action']}\n\n"
|
f"{meta['action']}\n\n"
|
||||||
f"Provider: {provider}\n"
|
f"Provider: {provider}\n"
|
||||||
|
|
@ -185,12 +191,14 @@ class _BaseNPIHandler:
|
||||||
f"PECOS Enrollment ID: {pecos_id or 'not provided'}\n"
|
f"PECOS Enrollment ID: {pecos_id or 'not provided'}\n"
|
||||||
f"Specialty: {specialty or 'not provided'}\n"
|
f"Specialty: {specialty or 'not provided'}\n"
|
||||||
f"Practice state: {practice_state or 'not provided'}\n"
|
f"Practice state: {practice_state or 'not provided'}\n"
|
||||||
|
f"Surrogate access (expedited): {surrogate_label}\n"
|
||||||
f"Portal: {meta['portal']}\n"
|
f"Portal: {meta['portal']}\n"
|
||||||
f"Access model: {meta['access']}\n"
|
f"Access model: {meta['access']}\n"
|
||||||
+ (f"\n{filing_note}\n" if filing_note else "")
|
+ (f"\n{filing_note}\n" if filing_note else "")
|
||||||
+ "\nReview-staged: complete/verify the form, get it signed, then "
|
+ "\nReview-staged: complete/verify the form, get it signed, then "
|
||||||
"submit it to the provider's MAC (standard), or file in "
|
"submit it (STANDARD: signed form joins the daily mail batch to the "
|
||||||
"PECOS if surrogate access was granted). Mark this order complete."
|
"provider's MAC; EXPEDITED: file in PECOS/NPPES via the granted "
|
||||||
|
"surrogate access). Mark this order complete."
|
||||||
)
|
)
|
||||||
|
|
||||||
self._create_todo(
|
self._create_todo(
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,27 @@
|
||||||
<input type="number" id="npi-staff-count" min="0" placeholder="e.g. 5" /></label>
|
<input type="number" id="npi-staff-count" min="0" placeholder="e.g. 5" /></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Optional: speed it up via electronic surrogate access. Shown for filing
|
||||||
|
services (not pure screening). Framed positively; never required, never
|
||||||
|
mentions any alternative. -->
|
||||||
|
<div id="npi-sec-surrogate" hidden>
|
||||||
|
<h3>Optional: speed up your filing</h3>
|
||||||
|
<p class="pw-help" style="margin:0 0 0.5rem;">
|
||||||
|
If you can electronically grant us <strong>CMS Identity & Access
|
||||||
|
(I&A) Surrogate</strong> access for your NPI, we can file faster —
|
||||||
|
it cuts steps on our end. You never share your password, and it's never
|
||||||
|
required; we'll handle your filing either way.
|
||||||
|
</p>
|
||||||
|
<div class="pw-row">
|
||||||
|
<label class="pw-field"><span>Can you grant electronic Surrogate access?</span>
|
||||||
|
<select id="npi-surrogate-access">
|
||||||
|
<option value="">Not sure / decide later</option>
|
||||||
|
<option value="yes">Yes — I can grant Surrogate access (faster)</option>
|
||||||
|
<option value="no">No — please just handle it for me</option>
|
||||||
|
</select></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="pw-npi-errors" class="pw-err" hidden></div>
|
<div id="pw-npi-errors" class="pw-err" hidden></div>
|
||||||
|
|
@ -90,12 +111,14 @@
|
||||||
|
|
||||||
// Which extra sections to show per slug.
|
// Which extra sections to show per slug.
|
||||||
const NPI_SECTIONS = {
|
const NPI_SECTIONS = {
|
||||||
"npi-reactivation": ["npi-sec-reactivation"],
|
"npi-revalidation": ["npi-sec-surrogate"],
|
||||||
"nppes-update": ["npi-sec-nppes"],
|
"npi-reactivation": ["npi-sec-reactivation", "npi-sec-surrogate"],
|
||||||
|
"nppes-update": ["npi-sec-nppes", "npi-sec-surrogate"],
|
||||||
|
"medicare-enrollment": ["npi-sec-surrogate"],
|
||||||
"oig-sam-screening": ["npi-sec-screening"],
|
"oig-sam-screening": ["npi-sec-screening"],
|
||||||
"provider-compliance-bundle": ["npi-sec-screening"],
|
"provider-compliance-bundle": ["npi-sec-screening", "npi-sec-surrogate"],
|
||||||
};
|
};
|
||||||
const ALL_NPI_SECTIONS = ["npi-sec-reactivation","npi-sec-nppes","npi-sec-screening"];
|
const ALL_NPI_SECTIONS = ["npi-sec-reactivation","npi-sec-nppes","npi-sec-screening","npi-sec-surrogate"];
|
||||||
|
|
||||||
function showNpiSections() {
|
function showNpiSections() {
|
||||||
const PW = window.PWIntake;
|
const PW = window.PWIntake;
|
||||||
|
|
@ -134,6 +157,7 @@
|
||||||
"npi-fields-to-update": d.fields_to_update || "",
|
"npi-fields-to-update": d.fields_to_update || "",
|
||||||
"npi-org-name": d.organization_name || "",
|
"npi-org-name": d.organization_name || "",
|
||||||
"npi-staff-count": d.staff_count || "",
|
"npi-staff-count": d.staff_count || "",
|
||||||
|
"npi-surrogate-access": d.surrogate_access || "",
|
||||||
};
|
};
|
||||||
for (const [id, val] of Object.entries(map)) {
|
for (const [id, val] of Object.entries(map)) {
|
||||||
const el = document.getElementById(id);
|
const el = document.getElementById(id);
|
||||||
|
|
@ -186,6 +210,7 @@
|
||||||
fields_to_update: val("npi-fields-to-update"),
|
fields_to_update: val("npi-fields-to-update"),
|
||||||
organization_name: val("npi-org-name"),
|
organization_name: val("npi-org-name"),
|
||||||
staff_count: val("npi-staff-count"),
|
staff_count: val("npi-staff-count"),
|
||||||
|
surrogate_access: val("npi-surrogate-access"),
|
||||||
}});
|
}});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue