Setup Guide
Install the app on an iPad, set up the device, and save your first patient visit. Around fifteen minutes, once.
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.
- It is not a certified EHR, and it is not HIPAA-compliant. It is built for global health work outside the United States. Do not use it where a certified system is required, and check what your own country and your organization require before you enter real patients.
- There is no app store and no account with us. Nothing to buy, nothing to sign up for, no licence.
- Records live on the device. If the iPad is lost, wiped, or the browser clears its storage, anything that existed only on that iPad is gone. Cloud sync and a daily backup are what prevent that. Section 8 covers both.
2. What you need
- An iPad or iPhone with Safari. An Android tablet with Chrome, or a laptop with Chrome or Edge, works the same way.
- Internet once, to load the app the first time. After that it opens offline.
- Only if your team syncs to a cloud: the Project URL and Project key for your organization's Supabase project. Whoever set the project up has them. You do not need a Supabase account of your own, and you do not need to understand Supabase to use the app.
3. Install it on the iPad
First open the app in the browser:
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)
- Open the link above in Safari. On iOS only Safari can install a web app, so Chrome will not work for this step.
- Tap the Share button, the square with an arrow pointing up.
- Choose Add to Home Screen, then Add.
- 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)
- Open the link in Chrome.
- Tap the menu, the three dots, and choose Install app. If an Install banner appears, tapping that does the same thing.
- Open it from the new icon in the app drawer.
Laptop (Chrome or Edge)
- Open the link in Chrome or Edge.
- Click the Install icon in the address bar, a small screen with a downward arrow, or use the menu and choose Install.
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.
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:
- Connect to our clinic cloud. Records sync between every device on the team. You need the project address and key from your admin. Go to section 5 first if you do not have them.
- Use this device on its own. Records stay on this iPad and are never sent anywhere. Take a backup at the end of each clinic day.
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.
- Device name. The name shows in your device list and on the records this device files, so use something you can recognise on sight: iPad 2 - triage, Grace's tablet. This is required.
- What is this device allowed to do? A list with two choices: Enter and view records (most devices), or Also change the form and clinic settings for everyone.
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.
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.
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:
- Clinic or site names, for example Kabale Community Clinic on one line and Mobile Unit A on the next.
- Clinicians working on this device, for example Dr. A. Mensah, Grace N., clinical officer.
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.
- 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.
- Open the SQL Editor in the left sidebar and click New query.
- 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.
- Open Settings, then API Keys. Copy the Project URL and the Publishable key, or the legacy anon key on an older project.
- Give those two lines to each device that needs them. They are what a device pastes on the Connect to your cloud screen.
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
- That does not look like a Supabase project URL: the address must be the plain project address, like
https://yourproject.supabase.co, with nothing after it. - Connected, but the records table was not found: the project exists but the setup SQL in step 3 has not been run on it yet.
- Could not reach the project tables: usually the device has no internet, or the key was copied incompletely. Keys are long. Copy the whole thing.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Sections that start closed. Procedures, Referral, Imaging, Surgical Encounter and Notes are collapsed to keep the form short. Tap the heading to open one.
- 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 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.
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:
- Read every visit, newest first, with only the fields that were actually filled in.
- See a Vitals trend table once the patient has two or more visits. Temperature and blood pressure are coloured when they cross a fixed threshold. That marks a number worth a second look; it is not a judgement about this patient, and a value with no colour is not a normal result.
- Tap + New visit to start today's visit for this patient. Name, sex, date of birth, phone, patient number, allergies, past history and current medications carry across. Everything clinical starts blank.
- Tap Edit on one visit to correct it, or Delete to remove a visit filed on the wrong patient. Delete asks first, and it is final: the visit goes from this device and from every device that syncs with it, and only a backup taken beforehand can bring it back.
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.
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
- Daily clinic work: seeing patients, returning patients, prescriptions, referrals and searching records. See the User Guide.
- Setting up the form, the site and clinician lists, cloud sync, backups and moving devices. See the Admin Guide.
- What changed in the last release: see the Release Notes.
- Stuck on something this page does not cover? Email md@damicohealth.org.