146 lines
13 KiB
Markdown
146 lines
13 KiB
Markdown
# Phase 9 — Two-form integration specification
|
||
|
||
**Recorded:** 2026-10-28 UTC; revised 2026-10-29 UTC
|
||
|
||
**Scope:** Form A consultation isolated-test integration and future Form C referral initiation
|
||
**Status:** owner-reported Jotform consultation configuration; Astro routes limited to isolated testing; no production activation authorized
|
||
|
||
## Decision revision
|
||
|
||
The owner has replaced the former three-physical-form plan with two physical Jotform forms:
|
||
|
||
- **Form A — General Enquiries, landing enquiries and family service consultations.** The existing Form A ID remains `262946078314059`; its approved `contact` and `landing` contexts and seven current Astro placements are unchanged.
|
||
- **Form C — Professional Referral Initiation.** It remains a separate future blank form with no assigned Jotform ID.
|
||
|
||
**Form B is retired as a physical form.** Historical Form B decisions remain in the versioned contract and plan. The repository may keep `service` as a logical visitor-intent classification, but it will map to Form A's planned `consultation` context after the required Builder configuration and acceptance.
|
||
|
||
This revision does not enable a new route, add an iframe placement, modify Form A, create Form C, add a query parameter, alter a canonical URL, promise an appointment, or change the frozen seven-route Form A production allowlist.
|
||
|
||
## Form A contexts and planned consultation contract
|
||
|
||
| Context | Status | Intended audience | Required route state |
|
||
|---|---|---|---|
|
||
| `contact` | Existing, owner-tested | General contact enquiries | Current two-contact-route gate only |
|
||
| `landing` | Existing, owner-tested | Five named campaign landing journeys | Current five-landing-route gate only |
|
||
| `consultation` | Configured in Jotform; isolated-test Astro placements only | Family service consultations | Owner browser acceptance; no production route authorization |
|
||
|
||
The context value is presentation-only. It is not an authorization, attribution, security, analytics or visitor-controlled value. `formContext` remains the known case-sensitive hidden-field Unique Name; no other Jotform field ID or condition name is inferred here.
|
||
|
||
### Planned consultation fields
|
||
|
||
The consultation context reuses the current Form A adult contact and preferred contact-method behavior, including its existing conditional email/phone validation. It adds one required controlled question:
|
||
|
||
> **Which service would you like to discuss?**
|
||
|
||
| Approved display option | Logical intent only |
|
||
|---|---|
|
||
| ABA Therapy | `aba_therapy` |
|
||
| AIA Preparatory Academy | `aia_preparatory_academy` |
|
||
| Learner Social Club | `learner_social_club` |
|
||
| Autism Diagnostic Evaluation | `autism_diagnostic_evaluation` |
|
||
| I'm Not Sure Yet | `not_sure_yet` |
|
||
|
||
The values in the right column are planning labels, not Jotform option values or IDs. Operations and the Jotform owner must approve the exact Builder labels, translations, requiredness and conditions.
|
||
|
||
Do not add a conditional explanatory note when **Autism Diagnostic Evaluation** is selected. An AIA client advocate will explain available options and coordination with qualified diagnostic providers during the subsequent conversation. The consultation form must not imply that AIA currently provides an in-clinic diagnostic evaluation, offers a diagnosis, or has completed a diagnostic-professional hire.
|
||
|
||
Do not add child name, date of birth, age, diagnosis, medical history, records, insurance member ID, payment, location or booking questions to the initial consultation context. Do not make any additional consultation field required without a separately documented operations, clinical and privacy decision. Whether an existing optional free-text message remains visible requires the existing Form A privacy treatment; it is not an additional required consultation field under this specification.
|
||
|
||
## Form C — Professional Referral Initiation
|
||
|
||
Form C remains a separate future physical Jotform created from a blank form. Its initial, minimum-necessary specification is:
|
||
|
||
| Semantic field | Requirement |
|
||
|---|---|
|
||
| Professional name | Required |
|
||
| Organization | Required |
|
||
| Work email | Required |
|
||
| Work phone | Optional, pending operations confirmation |
|
||
| Service of interest | Required controlled selection |
|
||
|
||
The visible form must instruct referrers not to submit patient names, dates of birth, diagnosis narratives, medical records or other patient-identifying information. Detailed referrals remain in the separately approved protected workflow. No Form C ID, hosted URL, iframe, language route or conditional logic is assigned by this document.
|
||
|
||
## Isolated-test route and component matrix
|
||
|
||
The following nine placements are implemented only for an explicitly authorized, non-indexing isolated-test build. Normal staging, mock, indexing-enabled and production builds retain their existing inactive/off/mock behavior. The seven existing Form A production-eligible placements remain a separate frozen allowlist.
|
||
|
||
| Route or entry point | Locale | Current component / behavior | Future physical form and context | Dependencies |
|
||
|---|---|---|---|---|
|
||
| `/client-consultation` | EN | `FormShell.astro` through `PageLayout.astro`; immediate isolated-test iframe | Form A / `consultation` | Owner Jotform visibility/requiredness/confirmation acceptance |
|
||
| `/es/client-consultation` | ES | Same component; immediate isolated-test iframe | Form A / `consultation` | Spanish Jotform labels, errors and locale acceptance |
|
||
| `/schedule-consultation` | EN | `FormShell.astro` through `PageLayout.astro`; immediate isolated-test iframe | Form A / `consultation` | No-booking copy and owner acceptance |
|
||
| `/aba-therapy` drawer | EN | `ServiceInquiryDrawer.astro`; explicit user-triggered isolated-test drawer | Form A / `consultation` | Owner acceptance and dialog accessibility review |
|
||
| `/autism-evaluations` drawer | EN | Same component; explicit user-triggered isolated-test drawer | Form A / `consultation` | Clinical/operations copy and owner acceptance |
|
||
| `/learner-social-club` drawer | EN | Same component; explicit user-triggered isolated-test drawer | Form A / `consultation` | Program copy and owner acceptance |
|
||
| `/es/aba-therapy` drawer | ES | Same shared drawer; explicit user-triggered isolated-test drawer | Form A / `consultation` | Spanish Jotform and fluent-language acceptance |
|
||
| `/es/autism-evaluations` drawer | ES | Same shared drawer; explicit user-triggered isolated-test drawer | Form A / `consultation` | Spanish Jotform and fluent-language acceptance |
|
||
| `/es/learner-social-club` drawer | ES | Same shared drawer; explicit user-triggered isolated-test drawer | Form A / `consultation` | Spanish Jotform and fluent-language acceptance |
|
||
| `/referrals` | EN | `FormShell.astro`, `logicalForm=referral`; inactive | Form C / future referral initiation | Create and verify Form C; no patient data in initial form |
|
||
|
||
English and Spanish service-page CTAs already route visitors to the client consultation routes. They are navigation dependencies, not independent Form A iframe placements. The same is true of homepage, services, FAQ and library consultation CTAs that resolve to those pages.
|
||
|
||
The current Tour CTA in `src/content/pages/en/tour.mdx` points to `/client-consultation`. The planned consultation service list contains no tour choice. Intake/operations must decide whether Tour keeps that destination, moves to the existing general-contact/tour journey, or receives a separately approved context before any code or CTA change. This specification makes no Tour-route change.
|
||
|
||
## Owner and Jotform actions before consultation activation
|
||
|
||
1. Confirm that the configured Form A `consultation` context has not changed the approved `contact` or `landing` journeys; record the rollback method for the Builder configuration.
|
||
2. Verify the exact hidden context value, service question, five display options, requiredness, EN/ES translations, validation messages and confirmation language in Jotform. Do not invent fields or accept query-controlled context values.
|
||
3. Confirm that no child/clinical/payment/location/booking fields, webhooks, integrations, answer-bearing notifications, PDF attachments, analytics or forwarding are introduced for the consultation context.
|
||
4. Obtain intake/operations, clinical and privacy approval for the field set and approved service options. Obtain fluent English/Spanish review for all added presentation and error text.
|
||
5. Run separately authorized synthetic Jotform and Astro-iframe acceptance tests with no real patient data. Cover both locales, all service choices, validation/error states, no-JavaScript and keyboard behavior, confirmation, notifications, responsive sizes and direct hosted fallback.
|
||
6. Only then authorize a production allowlist and production-gate update. The current seven Form A routes remain the only production-eligible real iframes until that implementation is independently reviewed.
|
||
7. For Form C, separately authorize creation from a blank form, then verify its minimum fields, PHI protections, recipients, retention, hosted/iframe behavior and protected-workflow handoff before mapping `/referrals`.
|
||
|
||
## Retained gates
|
||
|
||
This decision does not close P9-01, P9-03, P9-05, P9-06, P9-07, P9-09 or P9-10. Form A's existing owner-reported direct and sampled embedded acceptance does not prove the new consultation context. Final real screen-reader, all-route responsive, runtime telemetry/privacy, hosting, notification-recipient and release-owner acceptance remain open.
|
||
|
||
## 2026-10-29 supersession and implementation addendum
|
||
|
||
The owner reports that the Form A `consultation` context and its conditional rules have been configured through the connected Jotform app. The repository now permits the nine matrix placements only when every isolated-test gate is present, including `PUBLIC_AIA_FORMS_CONSULTATION_TEST_APPROVED=true`. Three standalone pages load the fixed consultation URL immediately; six English/Spanish service drawers retain no iframe `src` until the visitor explicitly opens them. This does not change the frozen seven-route production allowlist.
|
||
|
||
The earlier version of this specification required a conditional Autism Diagnostic Evaluation explanation. That requirement is superseded: no conditional explanatory note is required in Form A or Astro. The historical decision is preserved by this dated addendum; the current contract is the client-advocate conversation described above.
|
||
|
||
## 2026-10-30 consolidated drawer behavior revision
|
||
|
||
The later owner prompt supersedes explicit-only opening for the six EN/ES
|
||
service drawers. Authorized consultation-test drawers now open after four seconds
|
||
or 50% of positive available page-scroll distance, whichever occurs first.
|
||
Opening consumes both automatic triggers. A different open modal or actively
|
||
edited field cancels that automatic opportunity without polling. Deferred
|
||
Jotform loading begins only when the drawer actually opens.
|
||
|
||
Dismissal stores only `aia:service-inquiry:auto-suppressed-until`, a first-party
|
||
expiry timestamp for 30 days shared across services and locales. Existing
|
||
consultation anchors are explicitly marked as drawer triggers; they bypass
|
||
suppression manually and retain their consultation-page href without JavaScript
|
||
or an authorized drawer. Closing renews the preference. It is not an audience,
|
||
tracking identifier, service-selection record or form-response store.
|
||
|
||
Centralized bilingual headings/introductions use provisional owner-supplied
|
||
service copy. The Academy service key has EN/ES copy for ages 2–6 but no route,
|
||
navigation change, new iframe allowance or publication entry. All original
|
||
seven production and nine isolated consultation placements remain unchanged.
|
||
No diagnostic conditional note or service preselection is introduced. The
|
||
clinical and fluent-language review gates remain open.
|
||
|
||
### 2026-10-30 completion and language correction addendum
|
||
|
||
On a strictly validated Form A `submission-completed` message, an open activated
|
||
consultation drawer records the same shared suppression expiry immediately,
|
||
shows localized acknowledgment for five seconds, then uses the existing
|
||
slide-out/close/focus-restoration flow. The 500ms slide-out follows the full
|
||
five-second acknowledgment; reduced motion closes immediately after that delay.
|
||
Manual close/navigation cancels timers. A duplicate message is inert. A later
|
||
manual CTA starts a fresh iframe after completion; an unfinished iframe is
|
||
retained. This is not analytics, conversion measurement or answer inspection.
|
||
The exact source window and exact origin from the gated URL must match. No new
|
||
production route is approved. Provider behavior still requires owner acceptance.
|
||
|
||
The owner-reported Spanish seven-option dropdown conflicts with the intended
|
||
five choices. Astro emits one fixed consultation iframe per surface; EN/ES differ
|
||
only in language. No option identifiers, duplicate intent field or service
|
||
preselection are emitted by Astro. Owner must compare the hosted Spanish form,
|
||
then review multilingual option translations and Update Options conditions.
|
||
Do not remove options through cross-origin scripts or add another physical form.
|