Index: backend/src/main/resources/db.migration/V1.1__Create_Daily_Billing_View.sql
===================================================================
--- backend/src/main/resources/db.migration/V1.1__Create_Daily_Billing_View.sql	(revision ccb5a6b951950c8dc8a7fd91a1588f3051aea026)
+++ backend/src/main/resources/db.migration/V1.1__Create_Daily_Billing_View.sql	(revision ccb5a6b951950c8dc8a7fd91a1588f3051aea026)
@@ -0,0 +1,28 @@
+-- Create materialized view for daily patient billing totals
+CREATE MATERIALIZED VIEW IF NOT EXISTS daily_patient_billing_totals AS
+SELECT
+    p.patient_id,
+    CAST(pp.procedure_date AS DATE) as service_date,
+    COALESCE(SUM(pr.cost), 0) as procedure_cost,
+    0::decimal as lab_test_cost,
+    COALESCE(SUM(pr.cost), 0) as total_cost
+FROM patients p
+LEFT JOIN performed_procedures pp ON p.patient_id = pp.patient_id
+LEFT JOIN procedures pr ON pp.procedure_id = pr.procedure_id
+GROUP BY p.patient_id, CAST(pp.procedure_date AS DATE)
+
+UNION ALL
+
+SELECT
+    p.patient_id,
+    CAST(plt.test_date AS DATE) as service_date,
+    0::decimal as procedure_cost,
+    COALESCE(SUM(lt.cost), 0) as lab_test_cost,
+    COALESCE(SUM(lt.cost), 0) as total_cost
+FROM patients p
+LEFT JOIN performed_lab_tests plt ON p.patient_id = plt.patient_id
+LEFT JOIN lab_tests lt ON plt.test_id = lt.test_id
+GROUP BY p.patient_id, CAST(plt.test_date AS DATE);
+
+-- Create index for better query performance
+CREATE INDEX IF NOT EXISTS idx_daily_billing_patient_date ON daily_patient_billing_totals(patient_id, service_date);
Index: backend/src/main/resources/db.migration/V1.2__Create_Users_Table.sql
===================================================================
--- backend/src/main/resources/db.migration/V1.2__Create_Users_Table.sql	(revision ccb5a6b951950c8dc8a7fd91a1588f3051aea026)
+++ backend/src/main/resources/db.migration/V1.2__Create_Users_Table.sql	(revision ccb5a6b951950c8dc8a7fd91a1588f3051aea026)
@@ -0,0 +1,32 @@
+-- Create users table
+CREATE TABLE IF NOT EXISTS users (
+    user_id SERIAL PRIMARY KEY,
+    username VARCHAR(255) NOT NULL UNIQUE,
+    password VARCHAR(255) NOT NULL,
+    role VARCHAR(50) NOT NULL,
+    first_name VARCHAR(100),
+    last_name VARCHAR(100),
+    patient_id BIGINT,
+    doctor_id BIGINT,
+    is_active BOOLEAN DEFAULT true,
+    FOREIGN KEY (patient_id) REFERENCES patients(patient_id),
+    FOREIGN KEY (doctor_id) REFERENCES doctors(doctor_id)
+);
+
+-- Create index for username lookup
+CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);
+
+-- Insert admin user (password: admin123)
+INSERT INTO users (username, password, role, first_name, last_name, is_active)
+VALUES ('admin', 'admin123', 'ADMIN', 'System', 'Administrator', true)
+ON CONFLICT (username) DO NOTHING;
+
+-- Insert sample patient users (password: password123 for all)
+-- These will be linked to existing patients by EMBG
+INSERT INTO users (username, password, role, first_name, last_name, patient_id, is_active)
+SELECT p.embg, 'password123', 'PATIENT', p.first_name, p.last_name, p.patient_id, true
+FROM patients p
+WHERE NOT EXISTS (
+    SELECT 1 FROM users u WHERE u.username = p.embg
+)
+LIMIT 39;
Index: backend/src/main/resources/db.migration/V2__Add_appointment_fields_to_referrals.sql
===================================================================
--- backend/src/main/resources/db.migration/V2__Add_appointment_fields_to_referrals.sql	(revision ccb5a6b951950c8dc8a7fd91a1588f3051aea026)
+++ backend/src/main/resources/db.migration/V2__Add_appointment_fields_to_referrals.sql	(revision ccb5a6b951950c8dc8a7fd91a1588f3051aea026)
@@ -0,0 +1,7 @@
+-- Add appointment_date and appointment_time columns to referrals table
+ALTER TABLE referrals ADD COLUMN IF NOT EXISTS appointment_date DATE;
+ALTER TABLE referrals ADD COLUMN IF NOT EXISTS appointment_time TIME;
+
+-- Set default values for existing rows
+UPDATE referrals SET appointment_date = referral_date + INTERVAL '1 day', appointment_time = '10:00:00'
+WHERE appointment_date IS NULL;
