Setup Guide

Install the app on an iPad, set up the device, and save your first patient visit. Around fifteen minutes, once.

You can do this alone

If you are using the app on one device, with no cloud, you need nothing from anyone: install it, answer three short screens, and start seeing patients. If your team syncs to a shared cloud, there is one extra screen and you need two lines of text from whoever set that up. Both paths are below.

1. What this is, and what it is not

DH Field EMR is a free patient record for outreach and field clinics. It runs in the browser, but it stores every visit on the device itself, so it works with no internet at all. A device can stay offline for a whole trip and lose nothing.

If your team wants records shared between devices, the app can sync to a Supabase database your organization creates and owns. Clinic volumes normally sit inside Supabase's free tier, but check their current pricing yourself. Sync is optional. Offline only is a normal way to run the app, not a fallback.

2. What you need

3. Install it on the iPad

First open the app in the browser:

Launch the App

Then add it to the home screen. This is what makes it open like a normal app and work with no signal.

iPad and iPhone (Safari)

  1. Open the link above in Safari. On iOS only Safari can install a web app, so Chrome will not work for this step.
  2. Tap the Share button, the square with an arrow pointing up.
  3. Choose Add to Home Screen, then Add.
  4. From now on, open the app only from the new home screen icon. Records saved in a Safari tab and records saved in the installed app are not always the same storage.

Android (Chrome)

  1. Open the link in Chrome.
  2. Tap the menu, the three dots, and choose Install app. If an Install banner appears, tapping that does the same thing.
  3. Open it from the new icon in the app drawer.

Laptop (Chrome or Edge)

  1. Open the link in Chrome or Edge.
  2. Click the Install icon in the address bar, a small screen with a downward arrow, or use the menu and choose Install.
One copy open at a time

If the app is open in more than one tab or window on the same device, a red bar appears at the top reading Close the other tabs. Do it straight away. Two open copies can overwrite each other's work, and you can lose a visit you already typed.

Updates

When a new version is available a bar appears at the bottom reading A new version is ready. with Update now and Later. The app never reloads itself, so it cannot interrupt a visit you are typing. Tap Update now between patients, or at the end of the day.

4. Set up this device

The first time you open the app you land on Set up this device. It happens once. There are four short screens on the cloud path, and three on the offline one, which skips the cloud screen.

Most of what you choose here can be changed later under Admin: the device name, the site and clinician lists, and connecting an offline device to a cloud. One choice cannot be changed: what the device is allowed to do, on Screen 3. Read that screen before you tap past it.

Screen 1: how this device works

Two large buttons:

Choosing Use this device on its own skips straight to naming the device. Nothing is lost by starting here: a device can be connected to a cloud later from Admin, and the visits already on it go up with the first sync.

Screen 2: Connect to your cloud

Only on the cloud path. Paste the Project URL and the Project key, then tap Check and continue. The app contacts the project and checks the tables before it accepts the key, so a typo is caught here instead of surfacing days later as records that never synced. See section 5 for what to do if it refuses.

Screen 3: Name this device

Two things.

That second list is the whole permissions system. Choose Enter and view records for every device that only sees patients. Choose the second option for the one device that will build the encounter form and set the clinic lists: that device gets an extra Form setup tab, which nobody else sees.

This choice is permanent

The setup screen says you can change everything later under Admin. That is true of the device name, the site and clinician lists, and cloud sync. It is not true of this one. Admin shows Role as Admin or Standard, but only as a line of text, and the card's one button is Rename this device. There is no way to change the role afterwards. If you pick wrong on the device that was meant to build the form, the only fix is to clear the browser's storage for the app and run setup again, which also wipes the records on that device. Decide which single device is the admin one before you set up any of them.

There is no admin password

Older versions asked for one. This version does not have one anywhere. A device is either a normal device or an admin device, and that is decided here, on this screen, when the device is set up.

Screen 4: Where is this device working?

Two boxes, one entry per line:

These fill the Site and Provider lists on the encounter form. Fill them in now. If you leave them empty, every visit is filed under the placeholder Site A, which is useless when you later count patients per site for a report. On a cloud device, if your organization has already set these up, its lists replace what you type here on the first sync.

Tap Start using the app. Setup is done.

5. If your team syncs to a cloud

One person does this once for the whole team, not every clinician on every device. If someone has already done it, skip to the last part of this section.

  1. Create a free account at supabase.com and click New project. Give it a name, set a database password and keep it somewhere safe, and pick a region near where you work.
  2. Open the SQL Editor in the left sidebar and click New query.
  3. Copy the whole of setup.sql from the project repository, paste it in, and click Run. It creates the tables the app needs and the security rules that go with them. It is safe to run again later.
  4. Open Settings, then API Keys. Copy the Project URL and the Publishable key, or the legacy anon key on an older project.
  5. Give those two lines to each device that needs them. They are what a device pastes on the Connect to your cloud screen.
Never the Secret or service_role key

A Secret or service_role key ignores every security rule on the database and must never go on a device that leaves the office. The app refuses one if you paste it. Use the Publishable key, or the legacy anon key.

If Check and continue refuses

The full cloud walkthrough, including adding more devices later, is in the Admin Guide.

6. Your first patient

You land on Records. Tap + New visit at the top right of the list.

  1. Encounter. Pick a Site. It is required and the visit will not save without it. Provider is optional, but set it anyway: it is how anyone reading the record later knows who saw the patient. Date is already today's date, so change it only when you are entering a visit from a previous day.
  2. Patient. Given name, Family name, and Sex, which is two buttons, M and F. Then Date of birth, typed as digits in the order DD/MM/YYYY. If the patient does not know it, tick Date of birth unknown and put years in Estimated age instead. Phone is optional.
  3. Patient number (MRN) fills itself in as you type and cannot be edited. It is built from two letters of each name plus the date of birth, so the same patient gets the same number on any device on the team. Two different patients with the same initials and the same birth date get a letter added, B, C, D.
  4. Vitals. Temperature in °C, Blood pressure as 120/80, Weight in kg. Pregnant and Breastfeeding are on screen for every patient except a male one. They disappear the moment you tap M, and come back if you tap F.
  5. Chief Concern. Type freely, or tap the complaint buttons under the box. A button adds its text to what you have already written, it does not wipe it. Tap it again to take it back out.
  6. Labs, Diagnosis and Medications. Labs are POS or NEG toggles and typed numbers. Diagnosis is free text. For a drug, tap + Add medication, choose it, then set dose, Frequency and Duration. The quantity to dispense is worked out and shown beside the row, for example 21 tabs.
  7. Sections that start closed. Procedures, Referral, Imaging, Surgical Encounter and Notes are collapsed to keep the form short. Tap the heading to open one.
  8. Tap Save.

Six things are required: given name, family name, site, visit date, sex, and either a date of birth or an estimated age. If one is missing, saving shows a red box headed Check 2 fields, or Check 1 field when only one is missing. It lists what is wrong and jumps to it. Nothing you typed is lost.

On a busy clinic day, use Save & next patient

On a new visit there is a second button, Save & next patient. It saves, then opens a clean form that keeps the Site, Date and Provider you already chose and clears everything clinical. A green line confirms who was saved: Saved Grace Achieng (GRAC12031991). Ready for the next patient. This is the fastest way through a queue.

If the app closes mid-visit

What you had typed is written down as you type. Reopen the app and it offers it back with a note reading Recovered from where you left off. Check every field before you save it, because the last few keystrokes may not have made it.

7. Find the patient again

Every saved visit shows up on Records as a card, grouped by patient, most recently seen first. The card shows the site, the visit date, sex and age, the patient number, and the latest diagnosis. Coloured badges flag a positive lab, a referral, a pregnancy, and how many visits the patient has had. The Lab+ badge comes only from a POS or NEG test you ordered and marked POS; the User Guide explains what it does and does not cover.

To find someone, type into the search box, Search name, patient number, concern, diagnosis..., or tap Filters to narrow by site, provider, referral or a date range. Only the first 150 patients are listed at once; the app tells you when there are more.

Tap a card to open the patient's chart. From there you can:

8. Keep the records safe

If this device syncs to a cloud

The button at the top right is the honest one to watch. It reads Connected when the app has just opened and has not synced yet, Syncing while it works, Synced when everything is up in the cloud, Pending or Offline with a count such as 12 pending when work is still waiting, and Sync error when something is wrong. Tap it to sync now. The User Guide explains each one.

You do not have to tap it during clinic. The app syncs on its own every two minutes, the moment signal comes back, and whenever you return to the app. But before you wipe a device, hand it to someone else, or leave a site for good, tap it and wait for the count to reach zero. If it fails it says Not backed up. and names how many records are still waiting. Treat that as real. Those records exist on that one iPad and nowhere else.

If this device is offline only

The button reads Offline only and does nothing, because nothing leaves the device. Your safety net is a daily backup. At the end of each clinic day, open Admin, tap Download backup, and keep the file that downloads, named like dh-emr-backup-2026-08-11.json. Copy it to a laptop or email it to yourself. It holds every record plus your form and preset settings. It never holds the cloud key or the device identity, so a backup file cannot be used to impersonate a device.

The same file is how you move to a new iPad: Download backup on the old one, Restore from a backup on the new one, check the record count matches, then wipe the old device.

Two banners that mean stop

Back this device up today. means the second copy the device keeps of its records is out of date, or was never written, so the records now exist in one place only. It is not about free space. Tap Download backup in Admin now, not at the end of the day, and tell your admin.

This device cannot read its records. Do not enter more patients here. means exactly that. Use another device for the rest of the day and go to Admin to restore a backup. Do not keep entering patients into a device showing this.

One last thing worth being plain about: this app is not HIPAA-compliant and is not a certified EHR. Where the records live is up to you, and so is the responsibility for them. Do not put patient information anywhere your organization has not agreed to.

9. Next steps