Skip to main content

The Patient List — Fast On Fifty Thousand Records

The patient list is fast on 50,000 records, the typeahead picker lets you find someone in two keystrokes, and editing a chart no longer throws the row to a different page. We rewrote the list because once clinics passed 5,000 patients the page froze, and once they passed 20,000 the typeahead became unusable. Both issues are gone.

What’s new

  • A smart typeahead picker everywhere. Every patient dropdown in the app — appointments, dental chart, invoices, prescriptions, treatment plans, lab cases, insurance claims — is a typeahead. Type a name, phone or patient number; up to 20 matches stream in from the server.
  • Recent picks show when the box is empty. No need to type a name you just used.
  • Search stays instant on 50,000 records. Backed by a trigram index, so the speed does not change as the chart grows.
  • Persistent Sort and Status filter per role. Sort options — Date added, Name, MRN — and Status — Active, Inactive, All — persist across sessions. The list remembers where you left off.
  • Stable pagination. Editing a patient no longer throws them to a different page. The list now has a deterministic order so paging is stable across edits.
  • Page sizes of 25, 50 or 100 with a total count. The total patient count shows next to the pagination controls so you always know how many records you have.
  • N/A for missing dates of birth. No more incorrect 01/01/1970 placeholders.
  • Date of Birth is now optional at intake. Useful when a walk-in only provides their name and phone. Patients signing up via an invite link are still asked for DOB on the portal medical-history form.
  • Two-tab intake form. New patient creation now has Patient Info and Medical History tabs. The medical history fields are all optional at registration but available to capture when you have the time.
  • Oral habits as colour tags. Nail biting, bruxism, mouth breathing and others appear as colour-coded tags in the patient profile and in the Medical Issues panel of every appointment.
  • Editable MRN with a “Next: MRN-…” hint. When the MRN module is on, the create form shows a clickable hint like “Next: MRN-0201” above the input — one click fills it in. No sequence consumption, pure preview. Uniqueness is enforced; duplicate attempts return a clean 409 with the conflicting number.
  • Phone fixed to +92 with a 10-digit cap. Every phone field shows a fixed +92 prefix with a 10-digit numeric entry. Non-numeric characters and over-length entries are rejected. CSV-imported phones are normalised the same way.
  • Gender Male / Female only. The “Other” and “Prefer not to say” options have been removed from all patient forms.

How to use it

  1. Open Patients from the sidebar.
  2. Use the typeahead in any patient picker by typing the name, phone or MRN. Recent picks fill the box when it is empty.
  3. Sort with the Sort menu (Date / Name / MRN). Filter with the Status menu (Active / Inactive / All). Both stick across sessions.
  4. To add a patient, click Add patient. Fill in name and phone (DOB is optional). Switch to the Medical History tab if you want to capture history at registration; leave it blank otherwise.
  5. To replace an auto-generated MRN, edit the MRN field. Click the “Next: MRN-…” hint to fill in the next sequence value.
  6. Edit a patient and click Save. The list keeps the patient on the same page — no more lost rows.

What changed since the last revision

  • The typeahead picker is in every module now.
  • The list is fast on 50,000 records via single-query aggregation.
  • Editing no longer breaks pagination.
  • Page size selector with total count.
  • DOB optional; N/A for missing values.
  • Medical history captured at intake on a second tab.
  • Oral habits render as colour tags.
  • MRN is editable per-clinic with a one-click “Next” hint.
  • Phone fields normalise to +92 / 10 digits.
  • Gender is Male / Female only.

Need help?

If anything is unclear, write to [email protected] or open a ticket from Settings → Support.