Portal Docs v4

Staff

Intake

How the front desk knows who has arrived and what is still missing before a visit starts.

Access

How a member of staff reaches the screen, and what has to be true for it to open.

Element What it decides Permissions
Navigation Side menu → Intake, under Admin. Client:new_dashboard.onMe:dashboard.access
Standalone The staff app, at /intake. Client:new_dashboard.onMe:dashboard.access

Header

What the band states before anything below it is actionable.

Element What it decides Permissions
Title “Intake”. —
Clock The subtitle keeps the current date, time and time zone, updated every second, so the day the desk is working is never in doubt. —

Main actions

What belongs to the day's list as a whole rather than to one visit.

Element What it decides Permissions
Export Asks to confirm — “Download CSV” — then sends the visits that match the current filters as a report, attached to a message. Confirming stays disabled until the first results have loaded, so an export never runs against filters that have not been applied yet. —

Summary card actions

Where the day stands, and the quickest way to narrow the list to one part of it.

Element What it decides Permissions
Status cards All status · Pre-registered · In progress · Checked in · Needs attention, each with its count for the day and one line on what it holds: Complete view · Waiting to start · Registering now · Provider ready · Flagged for review. Needs attention holds the visits where staff has to act before the patient can go on. —
Selecting a card Reloads the table with that status only, across every page, and keeps the other filters as they are. —
Counts Follow the list each time it refreshes; nobody has to reload to see them move. —

Filters

Which visits the list holds.

Element What it decides Permissions
Preset Today – All, Today – Hide Past, Tomorrow – All, then the presets saved in this browser. Hide Past sets the start time to now. —
Date Required: the day the list is for. Changing it reloads the choices in departments, locations and providers, because who works that day changes with it. —
Start time Optional. Hides the visits scheduled before it. —
Departments Narrows the list to the departments chosen. Client:departments.on
Locations Narrows the list to the locations chosen. Client:appointments.locations
Providers Narrows the list to the providers chosen. —
Save Appears only while the filters match no preset, and keeps them as one of its own. —
Reset Appears whenever the list is not Today – All, and returns every filter to it. —
Settling A change waits 300 ms before the list reloads, so adjusting several filters in a row asks for one list, not several. —
Saved presets Kept in this browser only. Deleting the preset in use returns the list to Today – All. —

Form · Save preset

What a saved preset needs before it is kept.

Field Validations Permissions
Preset name Optional. Up to 60 characters; a name left empty or only spaces is saved as “My Filter”. Enter saves. —

Table

What one visit shows in a row.

Element What it decides Permissions
Search Finds rows by patient, provider, visit type or insurance, within what the filters already hold. —
Time When the visit is booked. Marked once the patient has arrived, or once the time has passed. —
Patient Name and date of birth. —
Provider Who the visit is with. —
Type What the visit is for. —
Insurance The carrier on file. Client:dashboard.show_insurance
Elig Whether coverage checked out for this visit: Eligible · Eligibility failed. Client:dashboard.show_eligibility
Financial What the patient still owes (Bal), over what is due for the visit (Copay). Client:dashboard.show_balanceClient:dashboard.show_copay
Forms Where the visit's forms stand as a whole: Complete · Pending · Not Started · Missing. —
Status Pre-Reg · In Progress · Checked In · Attention. —
Pages Fifty visits a page, with the controls shown only when there is more than one. Any change to the filters or the status cards returns to the first page. —
Sort By any column; by time, earliest first, until someone chooses another. —
Opening a row Opens the patient's workspace for that visit. —
Refresh The list reloads every five minutes with the filters in use, and after every action taken on a visit. —

Workspace · Patient

Everything the desk needs about one visit, without leaving the list.

Element What it decides Permissions
Patient Name and date of birth, always shown. —
Email Below the name. Client:dashboard.show_email
Status Pre-Reg · In Progress · Checked In · Attention. —
Insurance The carrier on file, when the visit has one. Client:dashboard.show_insurance
Eligibility Run · Pending · Not run. Client:dashboard.show_eligibility
Review A switch between Pending and Reviewed. —
Actions The visit's actions menu, so it can be moved on without closing the workspace. —
Kept current Reloads after every action taken on the visit. —

Patient · Appointment

When and where the visit happens.

Element What it decides Permissions
Date and time When the visit is booked, with a mark for whether it is still ahead, under way or past. —
Visit type What the visit is for. —
Provider Who the visit is with. —
Location Where the visit takes place. —

Patient · Billing

What is owed for the visit, and the way to ask for it.

Element What it decides Permissions
Copay What is due for this visit. Client:dashboard.show_copay
Balance What the patient still owes, marked when above zero. Client:dashboard.show_balance
Payment request Asks to confirm, then texts the patient a request to pay. Data:sms_thread_payment

Patient · Intake forms

What the patient still has to complete before the visit.

Element What it decides Permissions
Overall status Pending · In Progress · Completed. —
Steps Each form step by name, shown when the visit has steps assigned. —
View PDF Opens the completed intake in a new tab, where its PDFs can be read. Client:custom_forms.forms_completed
Steps on demand Assigns form steps outside the usual flow. Data:update_form_steps_on_demand
Intake reminder Asks to confirm, then reminds the patient to finish. Data:intake_notification

Patient · Activity log

What staff has already done on this visit.

Element What it decides Permissions
Events Newest first, each with what happened, when and who did it; a reminder names the message that was sent. —
Placement Beside the forms when the conversation is shown, in its column when it is not. Client:sms_threads.onMe:sms_threads.access
Collapse Open by default, and can be folded away. —

Patient · Messages

The text conversation with the patient, beside the visit it is about.

Element What it decides Permissions
Thread Every message between the practice and the patient, newest in view. Client:sms_threads.onMe:sms_threads.access
Sending number Which practice number the message goes from; the primary one unless changed. Client:sms_threads.onMe:sms_threads.access
Templates Saved replies that fill the message in. Client:sms_threads.onMe:sms_threads.access
Message Up to 160 characters; the counter warns once the text passes it. Client:sms_threads.onMe:sms_threads.access
Consent Not yet asked · Asked, no answer · Refused. Until the patient agrees, the only thing that can be sent is the request itself; once they refuse, nothing can. Client:sms_threads.onMe:sms_threads.access
Refresh The thread reloads every 60 seconds while the workspace is open. Client:sms_threads.onMe:sms_threads.access

Row actions

What can be done to one visit, and what each needs before it is offered.

Element What it decides Permissions
Patient Arrived Asks to confirm, then marks the patient as physically here. Data:arrived_action
Checked In Asks to confirm, then moves the visit to Checked In. Data:checked_in
Send to Tablet Asks to confirm, then hands the patient's intake to a kiosk tablet. Data:send_to_tablet
Generate QR Code Opens a code the patient scans to start intake on their own phone. Data:generate_intake_qr
Resend Confirmation Asks to confirm, then sends the appointment confirmation again. Data:confirm_notification
Undo Check-In Asks to confirm, then returns the visit to Pre-Registered. Data:unchecked_in
Mark as Reviewed Offered while the visit is Pending review; marks it Reviewed. —
Unmark Review Offered once the visit is Reviewed; returns it to Pending. —
Send Intake Notification Asks to confirm, then reminds the patient to complete intake. Data:intake_notification
Login with DOB Asks to confirm, then sends the patient a link that signs them in with their date of birth. Data:intake_zero_login_notification
Send Payment Notification Asks to confirm, then texts the patient a request to pay. Data:sms_thread_payment
Run Eligibility Report Asks to confirm, then checks the visit's coverage again. Client:eligibility.onClient:dashboard.show_eligibilityData:eligibility_rerun
Steps Form on Demand Assigns form steps outside the usual flow. Data:update_form_steps_on_demand
View Eligibility Report Opens the coverage report, when one exists. Client:billing.enabled_paymentClient:eligibility.onClient:dashboard.show_eligibility
View Appointments Opens the patient's appointments in a new tab. Client:appointments.onMe:appointments.access
View Completed Forms Opens the patient's completed forms in a new tab. Client:custom_forms.forms_completed
View Credit Cards Opens the patient's saved cards in a new tab. Data:manage_payment_profile
View Messages Opens the patient's inbox in a new tab. Client:conversations.onData:view_messages
View Payment Logs Opens the patient's payment history in a new tab. Client:billing.enabled_paymentClient:billing.show_payment_logs
Confirming Every confirmation shows a summary of the visit — patient, time, provider, type — closes itself once the action succeeds, and reloads the list and any open workspace. —

Record · Intake QR code

A code that starts the patient's intake on their own phone.

Element What it decides Permissions
Code Shown as an image to scan. The first person to open the link uses it up, so it is never shown as a link to click. —
Regenerate Issues a new code at any time. —
Expiry A code is replaced on its own when it expires. —

Form · Steps on demand

Which form steps the patient is asked for outside the usual flow.

Field Validations Permissions
Steps Required. One or more of the steps the practice offers on demand. —
Notify the patient Optional. Off by default; on, the patient is told once the steps are saved. —

Errors

What the screen can fail at, and what the desk sees when it does.

Error When What the reader gets
The list does not load Asking for the day's visits fails, for any reason.
GET /dashboard/all → any failure
An empty table, the same as a day with no visits: no message, and no retry until the next refresh. Not yet told apart.
A filter's choices do not load Asking for departments, locations or providers fails.
GET /options/… → any failure
That filter offers nothing to choose, with no message. Not yet told apart.
The visit is no longer yours to see The workspace reloads after access was withdrawn, or after the visit was removed.
GET /dashboard/:id → 403 or 404
The workspace closes, so the patient's details do not stay on screen. Any other failure keeps what it already shows.
The conversation does not load Asking for the thread fails.
GET /sms-threads → any failure
A notice where the messages would be. The next minute's refresh tries again.
A message is not sent Sending a message or a consent request fails.
POST /sms-threads → any failure
A notice saying it was not sent; what was typed stays, ready to send again.
The QR link is not copied The browser refuses access to the clipboard. A notice that the link could not be copied; the code itself can still be scanned.

API calls

What the screen asks the backend for, and what makes it ask.

Endpoint Params Trigger
GET/dashboard/all/csv datedepartment_ids[]location_ids[]doctor_ids[] On confirming Download CSV.
GET/dashboard/all datedepartment_ids[]location_ids[]doctor_ids[]pageper_pageadmission_statusneed_attention When the screen opens, on choosing a status card, a filter or a page, every five minutes, and after every action on a visit. A status card adds either admission_status or need_attention.
GET/options/settings/departments date When the screen opens and on changing the date, where departments are shown.
GET/options/dashboard/locations date When the screen opens and on changing the date, where locations are shown.
GET/options/dashboard/doctors date When the screen opens and on changing the date.
GET/dashboard/:id — On opening a row, and after every action on the visit.
GET/dashboard/activity-log/:id — On opening a row, and after every action on the visit.
GET/sms-threads patient_id When the conversation opens, and every 60 seconds while it is open.
GET/options/profile/phone-numbers user_id When the conversation opens.
GET/options/sms-threads/templates — When the conversation opens.
PATCH/dashboard/mark-reviewed/:id — On switching the review to Reviewed, or on confirming Mark as Reviewed.
PATCH/dashboard/unmark-reviewed/:id — On switching the review back to Pending, or on confirming Unmark Review.
POST/sms-threads patient_idphone_idmessage On sending a message, or on sending the consent request, which carries no message.
POST/appointments/patient-arrived/:id — On confirming Patient Arrived.
PATCH/appointments/checked-in/:id — On confirming Checked In.
PATCH/appointments/send-to-tablet/:id — On confirming Send to Tablet.
POST/appointments/confirm-notification/:id — On confirming Resend Confirmation.
PATCH/appointments/unchecked-in/:id — On confirming Undo Check-In.
GET/appointments/notify-intake/:id — On confirming Send Intake Notification, or the intake reminder in the workspace.
GET/appointments/notify-intake-zero-login/:id — On confirming Login with DOB.
POST/sms-threads-payments/send — On confirming Send Payment Notification, or the payment request in the workspace.
POST/insurances-eligibility appointment_idinsurance_id On confirming Run Eligibility Report.
GET/insurances-eligibility/:id — On choosing View Eligibility Report.
POST/dashboard/intake_sso/:id — When the QR code opens, on Regenerate, and when a code expires.
GET/options/form-steps/show_on_demand appointment_id When Steps on demand opens.
PATCH/appointments/form-steps-on-demand/:id — On saving Steps on demand.