Patient portal overview
Understand patient OTP login, dashboard summaries, released results, loyalty points, and home visit requests.
What the portal gives patients
The patient portal is the public, lab-branded area where patients can sign in, view released results, review family loyalty information, and request home visits. Its responsive navigation keeps Home, Results, Loyalty, and Home Visit available on desktop and mobile while using the laboratory logo, name, and configured colors. Each portal page is tied to one lab website and one lab company.
Patients do not use staff passwords. They sign in with phone OTP, which is safer and easier for occasional portal access.
OTP login
The portal login asks for a phone number. Kashef normalizes the phone number, checks that an active patient exists in the lab company, and sends or returns an OTP response. The OTP is six digits and expires after five minutes. In local development, a debug code may be returned; production users should receive the code through the configured delivery path.
OTP requests are rate-limited by patient phone and IP address. Verification attempts are also rate-limited. If a patient enters the wrong code too many times, they must wait before trying again. After successful verification, the patient is logged into the patient_web guard and their last_login_at is updated.
Dashboard
The dashboard shows patient identity, published-result count, latest published results, loyalty point balance, and loyalty tier. It only loads data for the authenticated patient and the current lab company.
Use the dashboard as a patient support reference. If the patient says they cannot see a result, staff should check whether the sample has released or published results, whether the patient phone matches the profile, and whether the order belongs to the same lab company.
Invoices and payment receipts also include a Scan to track test results QR code when the order belongs to a laboratory with a published website. The QR opens a separate secure order-status page; it does not sign the patient into the full portal.
Security boundaries
Every portal controller verifies that the logged-in user is a patient. Results queries require the order's patient and branch lab company to match the current portal lab. Home visit requests are created for the logged-in patient and selected lab company. Loyalty snapshots are also scoped to the lab company and patient.
This prevents a patient from viewing another lab's results or another patient's records through the portal.
The invoice and receipt QR link is temporary, signed, rate-limited, tied to the order UUID, patient, and laboratory, and shows only a masked patient name plus test progress. It never shows payment details, phone, date of birth, address, or unrelated orders. A released test receives its own signed PDF link. An unreleased test shows status only and cannot open a report PDF.
Staff support workflow
When helping a patient, confirm the lab website they are using, the phone number on their patient profile, active account status, and whether they are linked to the lab company. Then check whether the result has been released or published. For home visit issues, check the submitted request status and review notes.
Do not ask patients for staff credentials. Do not share another patient's results. If an OTP is not received, follow the lab's communication troubleshooting process rather than bypassing authentication.
Checklist
- Patient phone in the profile is correct and active.
- Patient belongs to the lab company behind the portal.
- OTP has not expired and attempts are not throttled.
- Only released or published results appear.
- A QR status page can show ordered-test progress, but only fully released tests have a PDF button.
- Loyalty and home visit data are scoped to the same patient.
- Support staff use staff-side tools to investigate, not patient credentials.