Anonymous incident reporting · Web app

PediaSafe.

An anonymous incident reporting system built for the pediatric ward of Caraga Regional Hospital in Surigao City, Philippines. Staff scan the ward’s QR code and report an incident in three steps, with no login and no name, and the ward’s admin follows each one on a dashboard.

MY ROLEFull-stack development · Web app, API & database
PROJECT TYPEHealthcare · Hospital pediatric ward
YEAR2026
THE STARTING POINT

A problem worth exploring.

On a hospital ward, a near-miss is easy to leave unreported. A form takes time in the middle of a shift, and signing one can feel like owning up to a mistake. PediaSafe gives the pediatric ward a way to report a medication error, an equipment problem, or a safety concern in a few taps, with no name attached, so it reaches the people who can act on it.

THE APPROACH

Less friction. More intention.

Make reporting as easy as scanning a code. Each ward has its own QR code, and scanning it opens a three-step form on the reporter’s own phone: what kind of incident it was, how severe, and what happened. There is no account to create and no name to give, and every report comes back with a reference number for checking its status later. On the other side, the ward’s admin signs in to a dashboard that checks for new reports every half minute and announces each one aloud. From there the admin takes a report from new, through review and action taken, to resolved.

  • Anonymous reports from a ward QR code, in three steps and with no login.
  • A reference number for every report, to check its status later without an account.
  • An admin dashboard with spoken alerts for new reports, search and filters, and PDF export.
  • A monthly duty schedule that staff open with their ward’s PIN, for their own shifts or the full roster.
THE WORKFLOW

What the system enables.

Before
Staff had no anonymous way to report an incident, and no way to see what became of a report afterwards.
With PediaSafe
Staff can report an incident from their phone without giving a name, and check its status with a reference number. The admin sees every report on one dashboard and follows it through to resolved.
A LITTLE REFLECTION

What this project taught me.

Anonymity had to be built in, not promised. The form has no name field and the database has no column for one, so there is nothing to protect later. That left the question of how someone follows up on a report they never signed. The reference number answers it: the status page shows a report’s type, severity, and progress, and never what was written in it.

BUILT WITH

Web app
Vue, JavaScript, Vite, Vue Router
Charts & QR codes
Chart.js, qrcode.vue
In the browser
Web Speech API, Notifications API, Canvas
Documents
jsPDF
API
Node.js, Express, REST APIs, Axios
Sign-in & security
JWT, bcrypt, Helmet
Database
PostgreSQL, Prisma, Supabase
Hosting
Vercel
UP NEXT

SNSU iReserve

Lab equipment, reserved online and checked out by QR code.