Queue & tokens
Use Queue to issue daily tokens, call the next waiting patient, operate a TV display that shows token numbers only, and let patients check in from a QR code or kiosk.
Who can do this: Receptionists and Branch Managers with queue.manage run the queue. Super Admins with settings.manage create TV displays and self check-in QR codes. Patients can use public self check-in without staff login.
Where: Queue (/app/queue), Admin → Queue Displays & Check-in (/app/queue/settings), public TV display /display/:displayToken, public self check-in /checkin/:branchPublicCode.

Before you start
- Enable the Queue & Tokens module for the workspace.
- Add branches and, if needed, departments. Tokens are separate per branch and department lane.
- Decide whether public QR codes should allow only appointment check-in or also Allow walk-in tokens (kiosk).
- Keep a room or counter name ready, for example
Room 1.
Issue a walk-in token at reception
- Open Queue. Result: The board shows Queue, Tokens, calls and today's arrivals.
- In Room / counter, type your room or counter name. Result: The value is remembered on this computer.
- In New token, enter Patient name or search in Registered patient.
- Choose Priority: Normal, Senior citizen or Emergency.
- Choose the department lane if your clinic uses departments.
- Click Issue token.
Result: A message says Token
T-001issued or the department prefix token, and the row appears under Today's tokens.
Press N on the keyboard to jump to the new-token box. Shortcuts do not fire while you are typing in an input.
Issue a token for today's appointment
- Open Queue.
- Find the patient under Today's appointments.
- Click Issue token on that row. Result: The appointment is checked in and one token is created. Clicking twice does not create two active appointment tokens.
- Give the displayed token number to the patient.
Call and move tokens
- Check Room / counter is filled.
- Select Department if you are calling only one lane.
- Click Call next or press C. Result: The next Waiting token is marked Called for your room. Emergency tokens are called before senior-citizen tokens, then normal tokens by token number.
- Use row buttons as needed: Call, Recall, Start, Complete, Skip, Re-queue, No-show, Cancel. Result: Only actions valid for the token's current status are shown.
- If the list says This token was just changed. The list has been refreshed., retry the action on the refreshed row.
Two receptionists can press Call next at the same time. The backend compare-and-set allows only one caller to claim a token; the other caller moves to the next eligible token or sees a busy message.
Filter the queue board
- Use Department to show one lane or General.
- Use Status to show Waiting, Called, In consultation, Completed, Skipped, No-show or Cancelled.
- Watch Updated time to know the last refresh. Result: The board refreshes tokens about every 5 seconds and appointments about every 30 seconds.
Set up a TV display
- Open Queue Displays & Check-in.
- Under TV displays, enter Label, for example
OPD waiting hall. - Choose Department or Whole branch.
- Set Upcoming tokens shown from 1 to 10.
- Click Create. Result: A display link appears.
- Click Open and open the page on the TV browser.
- Click Full screen on the TV page.
- Click Sound off once if you want the display to play the new-call chime.

The TV feed contains token numbers and room names only. It never shows patient names or phone numbers.
Revoke a TV display or QR link
- Open Queue Displays & Check-in.
- Find the link under TV displays or Self check-in QR codes.
- Click Revoke.
- Confirm Revoke this link? Screens or posters using it will stop working. Result: The old public link stops working and the row shows Revoked.
Create a QR self check-in code
- Open Queue Displays & Check-in.
- Under Self check-in QR codes, enter Label.
- Tick Allow walk-in tokens (kiosk) only if patients without appointments may take a token themselves.
- Click Create. Result: A QR code and public link appear.
- Click Print or print the browser page and place the QR near reception.
- For a shared tablet, open the link and add
?kiosk=1. Result: The kiosk resets after each check-in, after one minute of inactivity on sensitive steps, and when the page becomes visible again.

Patient self check-in
- The patient opens the QR link. Result: The public page shows Self check-in.
- The patient enters Mobile number and taps Send OTP. Result: The page says We have sent an OTP to your mobile number.
- The patient enters OTP and taps Verify & check in.
- If several appointments are found, the patient chooses Which appointment are you here for?.
- If no appointment is found and kiosk walk-ins are allowed, the patient enters Your name and taps Get a walk-in token. Result: The page says You are checked in! and shows Your token number and position.

Refresh, data use and WhatsApp check-in
- The board and TV screens refresh automatically but only download data when something changed; a TV in standby (screen off / tab hidden) stops refreshing until it is visible again. A quiet board slows to one check every 10 seconds and speeds up again as soon as something happens.
- Patients who receive the appointment-day WhatsApp reminder get a check in from your phone link when the branch has a check-in QR code. They still confirm their phone with an OTP; the link only skips the "which appointment?" question. See Reminders & feedback.
Troubleshooting
| Problem / message | What it means | What to do |
|---|---|---|
| Enter your room or counter first. | Call next needs a room name. | Type Room / counter and click Call next again. |
| No one is waiting in this lane. | There are no Waiting tokens in the selected branch and department. | Check the department filter or issue a new token. |
| Could not refresh the queue. Retrying… | The board polling request failed. | Keep the page open; it retries. Check connection if it persists. |
| Could not issue the token or Enter a name or pick a patient. | The token form is incomplete or API failed. | Enter Patient name or select a registered patient, then retry. |
VALIDATION_FAILED Validation failed | Backend rejected invalid token, display, check-in or transition input. | Correct the highlighted field or shorten labels. |
FORBIDDEN Forbidden | User lacks queue.manage or branch access. | Ask the owner to update role and branch access. |
MODULE_DISABLED The queue module is not enabled for this workspace | Queue capability is off. | Enable the Queue & Tokens module in clinical configuration. |
INVALID_TRANSITION Cannot action a token that is status | The token moved to another status before your click. | Reload or use the action now shown on the row. |
VERSION_CONFLICT This token was changed by someone else. Refresh and try again. | Another desk changed the token first. | Use the refreshed row. |
QUEUE_CONTENTION The queue is busy. Please try again. | Many desks tried to call at once. | Click Call next again. |
| This display link is not valid. Please contact the reception desk. | Public display token is bad, revoked or not allowed. | Create a new TV display link and open it on the TV. |
| Self check-in is not available here. Please visit the reception desk. | QR code is bad, revoked, or tenant/module is unavailable. | Reprint the active QR code from Queue Displays & Check-in. |
| Enter a valid 10-digit mobile number. | Patient entered an invalid phone. | Enter the 10-digit Indian mobile number. |
That OTP is not correct or has expired. or INVALID_OTP | OTP failed or expired. | Tap Change number or send a fresh OTP. |
Too many attempts. Please wait a few minutes and try again. or TOO_MANY_ATTEMPTS | Rate limit protected OTP or check-in. | Wait, then retry. Use reception for urgent cases. |
APPOINTMENT_NOT_ELIGIBLE This appointment cannot be checked in today | The appointment is not open for today's branch. | Check the appointment date, branch and status. |
OTP_VERIFICATION_REQUIRED Please verify your phone number with the OTP first | The check-in proof is missing or used already. | Start over and verify OTP again. |