# Minovis HMS — Product Requirements & Build Log

## Original problem statement
Build a polished, interactive first version of **Minovis HMS**, a hospital management application for an Indian demo hospital (Minovis Demo Hospital, Bengaluru, Asia/Kolkata). Evaluate design + connected OPD/IPD/bed workflows before expanding. Modern dashboard, patient management, outpatient visits, inpatient admissions, visual bed management. Synthetic demo data, no real auth/billing/pharmacy/lab. Planned modules shown disabled.

## Architecture
- **Backend**: FastAPI + MongoDB (motor), single `server.py`. All routes under `/api`. Idempotent seeding on startup. Atomic bed operations via `find_one_and_update` with status filter. Timezone handling centralized in Asia/Kolkata; timestamps stored as UTC ISO.
- **Frontend**: React 19 + react-router + @tanstack/react-query + Tailwind + shadcn/ui + recharts + sonner. Design tokens: teal #0F766E primary, clinical blue #2563EB, canvas #F5F8FA, Inter font. Reusable components (StatusBadge, SummaryCard, EmptyState, ConfirmDialog, PatientPicker, drawers, bed cards).
- **Collections**: organizations, counters, patients, doctors, wards, beds, opd, admissions, bed_history, activity.

## User personas
Receptionists (register patients, OPD check-in), doctors (OPD queue, admissions), nurses (bed readiness), administrators (overview, discharge).

## Core requirements (static)
Overview dashboard (6 KPIs, OPD queue, bed availability by ward, active admissions, recent activity, 7-day chart), Patients (directory, register/edit, profile), OPD (queue + appointments, lifecycle, slot conflict prevention), IPD (admit/transfer/discharge, admission detail), Beds & Wards (visual grid/list, status workflows). Server-enforced workflow rules.

## Implemented (2026-10-19) — MVP complete
- All 5 modules fully functional and connected to one MongoDB source of truth.
- Seeded: ~35 patients, 5 doctors / 3 departments, 22 beds (9 Available/9 Occupied/2 Cleaning/2 Maintenance), 9 active admissions, 6 discharged, OPD across 7 days + today + 3 upcoming.
- Patient registration with validation (future DOB, Indian mobile, duplicate-phone confirm), edit, unsaved-changes guard, unique IDs MNV-000XXX.
- OPD: walk-in + appointment, 20-min slots, conflict/past-time rejection, full status transitions, cancel, detail drawer, Admit-to-IPD.
- IPD: admit into visual available bed, atomic bed claim, prevent double-admit / double-bed / cleaning-maintenance / future time, transfer (old→Cleaning, new→Occupied), discharge (bed→Cleaning), admission detail with bed-assignment history.
- Beds & Wards: summary cards, filters, grid/list views, floor/ward grouping, contextual status actions, occupied beds cannot be directly freed.
- Dashboard KPIs incl. occupancy (occupied ÷ operational, excludes Maintenance).
- Planned modules (Billing/Pharmacy/Laboratory/Reports) shown disabled with lock icons.
- Verified: 12/12 backend tests passed; all frontend flows passed (testing agent iteration_1).

## Prototype limitations
No authentication/multi-tenant security, no billing/pharmacy/lab/prescriptions, no real communications, administrative discharge only.

## Backlog / next tasks
- P1: shadcn Calendar for DOB field (currently native date input).
- P2: consider splitting server.py by module; silence brief Recharts dimension warning.
- P2: CSV export of directory/admissions; printable admission summary.
