Inspiration
A 44-year-old man presents to an Edmonton emergency department with chest pain. He is triaged. He waits. He dies in the waiting room eight hours later. That was Prashant Sreekumar, December 2025. A fatality inquiry is open.
In January 2026, Alberta emergency physicians sent the minister a list of six patients who died while waiting, in two weeks. They called the waiting room a death zone.
The province responded with a pilot. Triage liaison physicians now work alongside triage nurses in Calgary and Edmonton. Their job is to find the waiting patients who cannot afford to wait. They have no tool for it. Recheck is that tool.
Prompt 1, Focus Area 3: Healthcare Accessibility and Literacy. Remote patient monitoring that connects patients and providers.
What it does
A triage nurse enrols a visit. The patient gets a QR code. No account. No name. No health number.
The patient or a companion scans the code. Short check-ins open when they are due. Two wellness questions. A short list of warning signs for their complaint. A circle-counting attention check. At any time they can report a new symptom, say they are worried, or say they are leaving.
The server runs fixed, versioned rules on every report. A rule can open or raise the one review task on that visit. It cannot lower it. A reassuring answer never closes an open task.
The triage liaison physician sees a ranked list: red, amber, silent, leave risk, overdue, then longest wait. Each task shows the rule that fired and the evidence. The physician acknowledges, then records an assessment with a disposition. Both are timestamped separately.
Timers run on their own. A missed check-in opens a task. A patient reply never resets the staff reassessment clock. An urgent task nobody acknowledges goes to the charge nurse.
A companion can report what they see. New drowsiness. Slurred speech. The patient does not have to be able to use the phone.
The patient screen works in 15 languages. It shows the live AHS wait estimate and the time waited. It tells the patient that answers do not change their place in line.
Patients with no usable phone get a three-button Arduino pager. It mirrors the phone check-in on a small OLED. Its reports go through the same rules and the same list.
Recheck does not diagnose. It does not change CTAS. It does not store personal health information. Clinicians decide. Recheck makes a change visible sooner.
How we built it
- Patient and staff screens: React, Vite, TypeScript, Tailwind. 15 languages via i18next.
- API and rules: Python 3.12, FastAPI, Pydantic. Every write carries a client submission ID. A retry replays; it never duplicates.
- Database: PostgreSQL with TimescaleDB on Tiger Cloud. Reports, vitals and audit rows are append-only hypertables. The app role has no DELETE.
- Live updates: Server-Sent Events to the staff dashboards. Web Push reminders to the patient's phone.
- Staff sign-in: Auth0. Patients sign in by QR token exchanged for an HttpOnly cookie, revoked when the visit closes.
- Question bank: FHIR Questionnaire with a CEDIS presenting-complaint map.
- Pager: Arduino UNO Q, OLED, three buttons, Wi-Fi to the same API.
- Deployment: Terraform on AWS, Docker Compose, Caddy, GitHub Actions.
- Tests: pytest and Hypothesis on rules and contracts, vitest on the web, SQL checks on the schema.
Challenges
The hardest part was deciding what Recheck must not do. The rules are deterministic so a hospital can review them. The patient clock and the staff clock are separate columns, so one can never reset the other. The task level can only go up. These constraints are enforced in the database, not only in the code.
The second hardest part was accessibility without a phone. The pager exists because a dead battery is common at hour four.
Accomplishments
- The full loop works end to end: QR, report, rule, task, acknowledge, assess, escalation.
- Companion reporting on a visit enrolled for a different complaint.
- A circle-counting attention check that asks for an in-person look when it is missed. It is not a clinical test, and we say so.
- Same rules, same list, from a phone or a pager.
What we learned
The Canadian Medical Protective Association published guidance on physicians in triage in April 2026. It names four risks: leaving without being seen, leaving before results, worsening after returning to the waiting room, and a missed condition at triage. Recheck's task levels map onto the first three. We built the product before we read the guidance. It confirmed the shape.
What's next
A one-site shadow evaluation with routine care intact. A printed QR at triage and one tablet. Measures: time from signal to acknowledgement and to assessment, reassessments completed on schedule, tasks per 100 waiting patient-hours, missed-check outcomes, and completion by language and channel. Connect Care integration only after the site approves rules and deadlines.
Data and safety
All visits are synthetic. Questions, rules and deadlines are demo values without clinical approval. Recheck runs beside Connect Care and Epic Rover. Connect Care stays the clinical record.
AI usage disclosure
We used AI coding tools (Claude Code, Codex, Github Copilot) throughout. They generated much of the application code, tests, translations and documentation from our specifications. The problem framing, clinical scoping, data model, rule design, role model, escalation policy and all product decisions are the team's. Every team member can explain the design and the code in their area.