Smart Queue Management and Accessible Navigation for Government Hospi…
Help patients at a government hospital register in their own language, get an OPD slip, find the right ward and know when their turn is coming.
- Track: Reimagining Government.
Problem Statement 2: Smart Queue Management and Accessible Navigation for Government Hospitals
The Challenge
Patients visiting government hospitals often spend hours waiting to register, obtain an OPD slip, and consult a doctor. Even after receiving their slip, many struggle to find the correct ward or department—for example, knowing they need to visit Ward 4 but having no idea where it is located.
The registration process itself can be difficult for people unfamiliar with digital services, those who speak regional languages, elderly patients, and people with disabilities. Combined with long queues, unclear signage, overcrowded corridors, and limited information about waiting times, this creates unnecessary stress and delays. Patients requiring urgent medical attention may also face delays if emergencies are not identified promptly.
Your challenge is to build a smart hospital queue management and navigation solution that makes registration easy for everyone, helps patients find their destinations, and reduces unnecessary waiting and confusion throughout their hospital visit.
Possible Areas to Explore
Simple Registration: Make patient registration and OPD slip generation easy to understand, with minimal steps and clear instructions.
Native Language Support: Support local and regional languages so patients can register and navigate the system in a language they understand.
Accessibility and Inclusion: Design for elderly patients, people with disabilities, users with low digital literacy, and people unfamiliar with smartphones. Consider voice guidance, text-to-speech, readable interfaces, and assisted registration.
Smart Queue Management: Provide token numbers, estimated waiting times, live queue status, and notifications when a patient's turn approaches.
Hospital Navigation: Help patients locate wards, departments, laboratories, pharmacies, and consultation rooms through maps, floor plans, landmarks, or step-by-step directions.
Slip-to-Destination Guidance: Allow patients to enter or scan their OPD slip details and receive clear directions to the assigned ward or department.
Emergency Prioritization: Enable urgent cases to be flagged for immediate assessment by qualified medical staff.
Real-Time Updates: Inform patients about doctor availability, delays, queue changes, and their next steps.
Hospital Staff Dashboard: Help staff manage patient flow, monitor overcrowding, and coordinate between registration counters and departments.
Expected Outcome
Build a working prototype that demonstrates how a patient can easily register in a preferred language, obtain an OPD slip, find the correct department, track their turn, and reach the appropriate doctor with minimal confusion.
Important
You do not need to build a complete hospital management system. You may focus on one high-impact problem or combine multiple features. You can use a sample hospital layout and simulated patient data; integration with an actual hospital system is not mandatory.
Emergency cases must be assessed by qualified medical staff. Digital queues must never delay emergency care, and accessibility should be considered a core requirement rather than an optional add-on.
Evaluation Focus
Ease of registration, language accessibility, inclusive design, queue-management efficiency, navigation accuracy, emergency handling, technical execution, and real-world usefulness.
Build it with AI
- Build 1 · The whole prototype: Build a working web app prototype for a hackathon. Build the whole thing, not a plan: every screen below should work when I open it. OUR CHOICES (change these, or leave them as they are) - App name: OPD Saathi - Hospital: City District Hospital, a sample government hospital with three floors - Main user: Kamla, 62, visiting alone, reads a little Hindi, has a basic Android phone, walks slowly and avoids stairs - Part of the visit we go deepest on: getting from the OPD slip to the right room THE PROBLEM Patients at government hospitals wait hours to register, get an OPD slip and see a doctor, and then can't find the room or ward written on the slip. Registering is hard for elderly patients, people with disabilities, people who don't read English and people who rarely use smartphones. The app lets a patient register in their own language, get an OPD slip with a token, see their place in the queue, find their way, and know when to go in. Staff get a dashboard to run the queues. It does not connect to any real hospital system: the hospital and every patient are made up. EMERGENCIES COME FIRST (this is not optional) - An "Emergency" button is on every scre…
- Build 2 · Finish what's missing: Go through the app you built and check it against this list. For each item, say whether it is done, partly done or missing. Then build everything that is partly done or missing, one item at a time, and keep everything that already works exactly as it is. - Emergency button on every screen, with the way to Emergency, 112 and 108; the emergency signs list on the first registration screen; urgent flags pinned to the top of the staff dashboard with a sound until marked as seen; nothing ever makes an urgent case wait - Home with four big buttons and a first-visit language choice - Register: one question per screen, progress bar, picture cards for the department, "Not sure?" to the help desk, microphone input where supported, assisted mode, Back keeps answers - OPD slip with token, room, floor, doctor, people ahead, estimated wait and a QR code; it can be saved, printed, read aloud and shown in large type - My turn: place in the queue, now serving, doctor's status, an alert at 3 ahead (vibration, sound, banner, notification, simulated SMS), and the called screen with directions - I have my slip: token entry, plus QR scanning where the browser supports it…
- Add-on · Live across phones: Make the queue live across different phones and laptops, not just across tabs in one browser. - Add a small backend: Node + Express + Socket.io (or [Firebase / Supabase], if we'd rather). Move the shared state (queues, tokens, doctor status, urgent flags) to the server, and keep the hospital map and departments as they are. - Every change (a new registration, call next, a doctor's break, an urgent flag) reaches every open screen within a second. - If a phone loses its connection, keep showing the last known position with "Last updated 2 minutes ago", reconnect automatically, and catch up when the connection is back. - Patients can see only their own token and the public queue. Only the staff screens can call, move or remove patients. Add a simple staff PIN for the prototype, and say that a real hospital needs a proper staff login. - Tell me how to run the server and the app together, and how to put both online so the judges can open the patient screen on their own phones.
- Add-on · Works on a weak connection: Make the patient screens work on a weak or patchy hospital connection. - Turn the app into a PWA (with Vite, use vite-plugin-pwa), with an "Install app" button in Settings that appears only when the browser offers it. - Cache the app, the floor plans, the directions and the patient's own slip, so all of them open with no connection. - While offline, show one line saying the queue position may be out of date, with the time it last updated, and refresh as soon as the connection is back. - If the app has a server, keep any registration made offline on the phone and send it when the connection returns, and mark the slip as waiting to be confirmed until then. - Then tell me how to test it in Chrome (DevTools, Network, Offline) and with a Lighthouse report.
- Add-on · Another language: Add [Tamil] to the app as a third language. - Translate every string in src/i18n, the department cards, every place name and landmark, the directions, the emergency signs list and the board's announcements. Use simple everyday words, and keep terms people see on hospital signs (OPD, Casualty, X-ray) as they are, in brackets. - Show each language's name in its own script in the language picker. - Make sure no screen still shows English when the new language is picked, and that longer words don't break any layout at 360px wide or on the board. - Make Listen and the board's announcements use a voice for that language if the browser has one. If it doesn't, hide Listen for that language and keep the announcements in Hindi and English.
- Submit · README, link and demo: Get this ready to submit to the hackathon. 1. Write a README.md: the problem in two lines, who the app is for, what it does (one line per screen), how emergencies are handled and why the app never decides who is urgent, the design decisions we made and why (assisted mode, picture cards, avoid stairs, languages, read aloud), how waiting time is worked out, how it improves on a hospital visit today, how to run it, what is simulated, and what we'd build next. 2. Tell me step by step how to put it online on Vercel or Netlify from a GitHub repo, so the judges can open a link. Include the setting that stops a page refresh from showing a 404. 3. Write a 3-minute demo script for judges who score ease of registration, language accessibility, inclusive design, queue-management efficiency, navigation accuracy, emergency handling, technical execution and real-world usefulness. Show the patient screen, the staff dashboard and the board side by side; register in Hindi in assisted mode; follow the avoid-stairs route to the room; get the "3 ahead" alert; and raise an urgent flag. Include one sentence for each part on the problem it solves. 4. List anything that cou…
- Debug · An error message: I'm getting this error: [paste the full error message from the terminal or the browser console] It happens when: [what you did, e.g. pressed Call next, ran npm run dev] The file it points to: [paste the file, or the part the error names] Explain in two lines what is causing it. Then fix only that: give me the corrected code for each file that changes, with its file name, and don't change anything unrelated. Tell me how to check it's fixed.
- Debug · Blank white screen: The app shows a blank white screen. The browser console (right-click the page, Inspect, Console) shows: [paste any red text, or write "nothing"] The terminal shows: [paste it] What I changed last: [describe it] Find the cause step by step: the console error first, then the entry files (main.jsx and App.jsx), the routes, any import that might be wrong, and saved data in localStorage that no longer matches what the code expects. Fix the cause, not the symptom. Also add a simple error screen, so a crash in one screen shows a message instead of a blank page.
- Debug · A feature isn't working right: [The screen or feature, e.g. the waiting time] isn't working properly. What I expected: [e.g. the wait goes up by 15 minutes when the doctor goes on a 15-minute break] What happens instead: [e.g. it stays the same] Steps to make it happen: [1, 2, 3] Read the code for this feature and work out why it behaves this way before changing anything. Explain the cause in plain words, then fix it with the smallest change that works, and tell me exactly how to test it.
- Debug · The queue doesn't update on the other screen: The queue doesn't update on [the other tab / the board / another phone]. What happens: [e.g. I press Call next on the staff dashboard and the patient's screen still shows 6 ahead] Check these one by one: every change is saved and a BroadcastChannel message is sent; every screen listens for it and re-reads the state; each screen reads fresh state when it opens; two tabs aren't overwriting each other's changes (only change the part that changed, or have one writer); and, if we have a server, that the socket connects, the event names match on both sides, and the client reconnects. While we debug, add a small "updated at" time on each screen. Fix the cause and tell me how to test it with three tabs open.
- Debug · The directions are wrong: The directions from [place] to [place] are wrong. The app says: [what it says]. The right way is: [what it should be]. Check the graph in src/data/hospital.js: missing paths, paths that only work in one direction, a place on the wrong floor, wrong distances, a lift that doesn't connect every floor, and whether "Avoid stairs" removes stair paths before the route is worked out. Print the route as a list of places to find where it goes wrong, then fix the data or the code. Afterwards, test 10 pairs of places, including floor changes with "Avoid stairs" on and off, and show me the results as a table.
- Debug · It broke after my last change: Everything worked until my last change. Now [what's broken]. The change I made, or asked you to make: [describe it or paste it] Compare the code before and after that change and find what broke. Fix it so the new change and everything that worked before both work. If the change can't work without breaking something, tell me and suggest another way to do it.
- Debug · The AI keeps going in circles: Stop. We've tried to fix this several times and it still isn't fixed. Don't write any more code yet. The problem: [describe it] 1. List what we've already tried, and why each attempt didn't work. 2. List three possible root causes, most likely first, and what would confirm each one. 3. Tell me exactly what to check or log (one console.log, or one thing to look at) to find out which it is. Once I tell you the result, make one focused fix.
- Debug · Broken on a phone: The app looks broken on a phone: [describe it, e.g. the floor plan goes off the side of the screen]. Fix the layout so every screen works at 360px wide and at the largest text size in Settings: nothing scrolls sideways, no text is cut off, buttons are at least 56px tall and don't overlap, long Hindi words wrap, and the floor plan scales to fit the screen. Check every screen, not only the one I named, and tell me which ones you changed.
- Debug · Broken after deploying: The app works on my laptop but not after deploying to [Vercel / Netlify / GitHub Pages]. What happens: [e.g. a blank page, a 404 when I refresh /staff, the queue doesn't sync] The build log or browser console shows: [paste it] Check the usual causes one by one: the build command and output folder; the base path; a rewrite so every route serves index.html; file names whose capital letters differ from their imports (my laptop may ignore case, but the server doesn't); environment variables that exist on my laptop but were never added to the host; and, if we have a server, whether the app points at the server's live address instead of localhost. Tell me exactly which settings to change and where.