About This System

This is a hospital management system built for Kenya's healthcare environment. It is used by hospital staff to manage everything that happens from the moment a patient walks in to the moment they are discharged and their bill is settled.

The system is designed around the real workflow of a Kenyan hospital:

📋 Receptionist

Registers a patient when they arrive at the hospital.

🧑‍⚕️ Doctor

Reviews the patient and creates an admission record with a diagnosis and treatment plan.

👩‍⚕️ Nurse

Assigned to the patient, logs daily vitals, and requests medicines or supplies when needed.

💼 Nurse-in-Charge

Oversees all nurses, reviews and approves or rejects requests before they reach the pharmacy.

💊 Pharmacist

Dispenses approved medicines and supplies, manages stock levels, and handles billing.

⚙️ Admin

Manages the entire system — wards, beds, users, inventory, and payments.

External integrations:

🏥 SHA / AfyaLink

Kenya's Social Health Authority insurance system. Patients covered by National Health Insurance can have their bills submitted as claims directly from this system.

📱 HydroLife / M-Pesa

Patients can pay their hospital bills via M-Pesa. The payment request is sent directly to the patient's phone as an M-Pesa prompt.

How to Use This Guide

Pass

What you see matches the "What you should see" description at the end of the test.

Fail

Something unexpected happened. Take a screenshot and note the test number.

👤

Role

Each test shows which account to use. Log in with that role before starting the test.

Test Accounts

Log in using the email and password below. Every account uses the same password.

Role Full Name Email Password
Admin Admin User admin@ictrh.go.ke password
Doctor Dr. John Doe doctor@ictrh.go.ke password
Nurse Nurse Jane Smith nurse@ictrh.go.ke password
Nurse-in-Charge Nurse Mary Johnson nurse-in-charge@ictrh.go.ke password
Pharmacist Pharmacist David Brown pharmacist@ictrh.go.ke password
Receptionist Receptionist Alice Mwangi receptionist@ictrh.go.ke password
Patient Patient John Smith patient@ictrh.go.ke password
1 Logging In
1.1 Logging in works Any Role
  1. Go to the app in your browser.
  2. Enter a valid email and password from the table above.
  3. Click Log in.
What you should see A dashboard page that matches your role (e.g., Admin sees an Admin Dashboard, Doctor sees a Doctor Dashboard).
1.2 Wrong password is rejected Any Role
  1. Go to the login page.
  2. Enter a valid email but type a wrong password.
  3. Click Log in.
What you should see A red error message saying the credentials are wrong. You stay on the login page.
1.3 Other roles' pages are blocked Nurse
  1. Log in as the Nurse.
  2. In the browser address bar, manually type the admin URL (e.g., .../admin/dashboard) and press Enter.
What you should see You are either redirected away or shown an "Access Denied" / "403" page. You should never see the Admin dashboard while logged in as a Nurse.
1.4 Logging out works Any Role
  1. Find the logout button (usually in the top-right menu or sidebar).
  2. Click Log out.
What you should see You are taken back to the login page.
2 Registering a Patient

Role: Receptionist (or Admin)

2.1 Register a new patient Receptionist
  1. Log in as Receptionist.
  2. In the sidebar, click Patients then Register Patient (or click New Patient).
  3. Fill in all the fields:
    • First Name: Jane
    • Last Name: Wanjiku
    • Date of Birth: 01/01/1990
    • Gender: Female
    • Phone: 0712345678
    • Patient Type: Inpatient
  4. Click Save or Register.
What you should see A success message like "Patient registered successfully." The patient appears in the patient list with a number like P000001.
2.2 Patient number increases automatically Receptionist
  1. Register a second patient (any name, fill required fields).
  2. Check the patient list.
What you should see The second patient has the next number, e.g., P000002. Numbers never repeat.
2.3 Required fields cannot be skipped Receptionist
  1. Open the Register Patient form.
  2. Leave First Name empty. Fill everything else.
  3. Click Save.
What you should see A red error message appears next to the First Name field. The form does not submit and no patient is created.
2.4 Edit a patient's details Receptionist
  1. Open any patient from the list.
  2. Click Edit.
  3. Change the phone number to 0799999999.
  4. Click Save.
What you should see Success message. The patient record now shows the new phone number.
3 Admitting a Patient

Role: Doctor

3.1 Create an admission Doctor
  1. Log in as Doctor.
  2. Click AdmissionsNew Admission.
  3. Select patient Jane Wanjiku.
  4. Set today's date as Admission Date.
  5. Fill in: Reason for Admission (e.g., "High fever"), Diagnosis (e.g., "Malaria"), Treatment Plan (e.g., "IV fluids and antimalarials").
  6. Click Save.
What you should see Success message. A new admission appears in the list with a number like A000001 and status "Pending Bed Assignment".
3.2 Doctor only sees their own patients Doctor
  1. Log in as a second doctor account (if available).
  2. Go to My Patients.
What you should see Only the patients admitted by this doctor appear. Jane Wanjiku (admitted by the first doctor) should NOT be visible here.
3.3 Create a prescription Doctor
  1. Log in as Doctor.
  2. Go to PrescriptionsNew Prescription.
  3. Select the patient and her admission.
  4. Add a medicine item:
    • Select a medication (e.g., "Paracetamol")
    • Quantity: 10
    • Dosage: 500mg
    • Frequency: Twice daily
    • Duration: 5 days
  5. Click Submit.
What you should see Prescription created with number like RX000001 and status "Pending".
4 Assigning a Bed

Role: Nurse

4.1 Assign a bed to an admitted patient Nurse
  1. Log in as Nurse.
  2. Go to Bed AssignmentsAssign Bed.
  3. Select the admission for Jane Wanjiku.
  4. Select a Ward (e.g., "General Ward").
  5. Select an available bed (e.g., "B001").
  6. Click Save.
What you should see Success message. The admission status changes to "Admitted". Bed B001 is now marked as Occupied.
4.2 Occupied beds do not appear in the list Nurse
  1. Try assigning another patient to the same ward.
  2. Open the bed dropdown.
What you should see Bed B001 is not listed as an option because it is occupied. Only available beds appear.
5 Logging Patient Vitals

Role: Nurse

5.1 Record daily observations Nurse
  1. Log in as Nurse.
  2. Go to My Patients and open Jane Wanjiku's record.
  3. Click Add Observation.
  4. Fill in: Temperature: 37.0, Blood Pressure: 120/80, Pulse: 72, Oxygen Saturation: 98.
  5. Click Save.
What you should see The observation is saved and appears in the patient's observation history with today's date and time.
6 Medicine & Inventory Requests

Workflow: Nurse → Nurse-in-Charge → Pharmacist

6.1 Nurse creates a medicine request Nurse
  1. Log in as Nurse.
  2. Go to Medicine RequestsNew Request.
  3. Select Jane Wanjiku's admission.
  4. Select medication: Paracetamol, Quantity: 5, Reason: Patient has headache.
  5. Click Submit.
What you should see Request created with status "Pending".
6.2 Nurse-in-Charge approves the request Nurse-in-Charge
  1. Log in as Nurse-in-Charge.
  2. Go to Medicine Requests.
  3. Find the pending request for Jane Wanjiku.
  4. Click View, then click Approve.
  5. Optionally add a note, then confirm.
What you should see Request status changes to "Approved". The nurse's request list also shows it as approved.
6.3 Nurse-in-Charge rejects a request Nurse-in-Charge
  1. Create another medicine request as Nurse.
  2. Log in as Nurse-in-Charge, find the new pending request.
  3. Click Reject, enter reason: Already dispensed today.
  4. Confirm.
What you should see Status changes to "Rejected". The rejection reason is visible when the nurse opens the request.
6.4 Pharmacist dispenses an approved request Pharmacist
  1. Log in as Pharmacist.
  2. Go to Medicine Requests.
  3. Find the Approved request for Paracetamol.
  4. Click View, then click Dispense.
  5. Confirm.
What you should see
  • Request status → "Dispensed"
  • A billing record is created for Jane Wanjiku
  • The stock quantity of Paracetamol decreases by 5
6.5 Rejected requests are not shown to pharmacist Pharmacist
  1. Log in as Pharmacist.
  2. Go to Medicine Requests.
What you should see The rejected request from Test 6.3 does not appear in the pharmacist's list.
7 Prescription Approval & Dispensing

Workflow: Nurse-in-Charge → Pharmacist

7.1 Approve a prescription Nurse-in-Charge
  1. Log in as Nurse-in-Charge.
  2. Go to Prescriptions.
  3. Find the prescription RX000001 (status: Pending).
  4. Click Approve.
What you should see Status changes to "Approved".
7.2 Pharmacist dispenses a prescription Pharmacist
  1. Log in as Pharmacist.
  2. Go to Prescriptions.
  3. Find the approved prescription.
  4. Click Dispense.
What you should see
  • Prescription status → "Dispensed"
  • Medicine stock reduced
  • Billing entry created for the patient
8 Patient Billing & Payment

Role: Admin or Pharmacist

8.1 View patient billing Admin
  1. Log in as Admin.
  2. Go to Patient Billing.
What you should see A list of billing records. Jane Wanjiku's entries (from dispensed medicines) should appear here with status "Pending".
8.2 Initiate M-Pesa payment Admin
  1. Open a pending billing for Jane Wanjiku.
  2. Click Initiate Payment.
  3. Enter a test phone number (e.g., 254712345678).
  4. Confirm.
What you should see A message confirming the payment request was sent. The billing record shows a reference/tracking number from the payment provider.
8.3 Check payment status Admin
  1. On the same billing record, click Check Payment Status.
What you should see The status updates based on the payment provider's response — either "Paid" or a pending/failure message.
9 Inventory Management

Workflow: Pharmacist reports → Admin approves

9.1 Report damaged inventory Pharmacist
  1. Log in as Pharmacist.
  2. Go to InventoryReport Damage.
  3. Select item: Gauze, Quantity: 3, Reason: Torn packaging.
  4. Click Submit.
What you should see Damage report created with status "Pending". Visible in "My Reports".
9.2 Admin approves damage report Admin
  1. Log in as Admin.
  2. Go to InventoryDamage Reports.
  3. Find the Gauze damage report.
  4. Click Approve, add optional notes, confirm.
What you should see Report status → "Approved". Gauze stock quantity reduced by 3.
9.3 Add stock to an inventory item Pharmacist
  1. Log in as Pharmacist (or Admin).
  2. Go to Inventory Items, open Paracetamol.
  3. Click Add Stock, enter quantity: 100, confirm.
What you should see Paracetamol's stock increases by 100.
9.4 View expired items Pharmacist
  1. Log in as Pharmacist.
  2. Go to InventoryExpired Items.
What you should see Any items whose expiry date has passed are listed here.
10 SHA Insurance (Kenya Health Authority)

Role: Admin

10.1 Link a patient to SHA Admin
  1. Log in as Admin.
  2. Open Jane Wanjiku's patient record.
  3. Find the SHA section, enter:
    • CR ID: CR123456
    • SHA Number: SHA001
    • Scheme: SHIF
  4. Save.
What you should see Patient record updated with SHA details.
10.2 Check patient SHA eligibility Admin
  1. On Jane Wanjiku's patient page, click Check SHA Eligibility.
What you should see A response from the SHA system showing whether the patient is eligible. The date of the check is recorded.
10.3 Submit a SHA claim Admin
  1. Go to SHA Claims.
  2. Find a billing record for Jane Wanjiku that has a SHA service code.
  3. Click Submit Claim.
What you should see Claim submitted. Status changes to "Submitted". A claim reference number appears.
10.4 Check claim status Admin
  1. Open a submitted claim.
  2. Click Check Status.
What you should see Status updates based on the SHA response (e.g., Approved, In Review, Rejected).
11 Notifications
11.1 Nurse gets notified when request is approved Nurse & Nurse-in-Charge
  1. While logged in as Nurse, keep the browser open.
  2. In a second browser tab (or another browser), log in as Nurse-in-Charge and approve a pending request.
  3. Switch back to the Nurse's tab.
What you should see A notification badge (number) appears on the bell icon in the top bar. Clicking it shows the approval message.
11.2 Mark a notification as read Nurse
  1. Log in as Nurse.
  2. Click the notification bell.
  3. Click on an unread notification.
What you should see The notification is marked as read. The unread count on the bell decreases.
11.3 Mark all notifications as read Any Role
  1. With several unread notifications, click the bell.
  2. Click Mark all as read.
What you should see All notifications are cleared. The badge on the bell disappears or shows 0.
12 Admin: Roles & Users
12.1 View all user-role assignments Admin
  1. Log in as Admin.
  2. Go to User Roles.
What you should see A list of all users and their assigned roles.
12.2 Assign a role to a user Admin
  1. Go to User RolesAssign Role.
  2. Select a user.
  3. Select role: Doctor.
  4. Save.
What you should see The user now appears in the list with the Doctor role.
12.3 Edit a user's role Admin
  1. Find any user in the user-role list.
  2. Click Edit.
  3. Change their role.
  4. Save.
What you should see Role updated successfully. That user's access changes immediately on next login.
13 What Can Go Wrong — Things to Look For

Watch for these situations throughout all tests.

Situation What should happen
You submit a form with blank required fields A red error message appears next to the empty field. The form does not save.
You try to access another role's page by typing the URL You are blocked — either redirected or shown an error.
You try to assign a bed that is already taken The occupied bed does not appear in the dropdown at all.
A pharmacist tries to dispense a request that was rejected The rejected request is not visible in their list.
You dispense more medicine than is in stock An error message stops the dispensing — it does not go negative.
A patient is deleted They no longer appear in new forms, but old billing history still shows their name.
14 Profile Settings

Role: Any

14.1 Update your name Any Role
  1. Click your name or profile icon (top-right corner).
  2. Go to Profile.
  3. Change the name, click Save.
What you should see Name updated. Success message shown.
14.2 Change your password Any Role
  1. Go to Profile.
  2. Enter current password, new password, and confirm new password.
  3. Click Save.
What you should see Password updated. Success message shown. You can log in with the new password.
14.3 Old password cannot be reused to log in Any Role
  1. After changing your password, log out.
  2. Try logging in with the old password.
What you should see Login fails with an error message.
Quick Reference — Who Can Do What
Action Admin Doctor Nurse Nurse-in-Charge Pharmacist Receptionist
Register patientsYesYes
Create admissionsYesYes
Assign bedsYesYesYes
Log vitalsYes
Create medicine requestsYes
Approve / reject requestsYes
Dispense medicinesYes
Create prescriptionsYes
Approve prescriptionsYes
Manage inventoryYesYes
Billing & paymentsYesYesYes
SHA claimsYesYes
Manage users & rolesYes