Skip to main content
SMART Health Check-in is an open protocol that lets a clinic’s check-in page ask a health app the patient chooses for records and forms before a visit. The haau3 caregiver app is a web wallet for it. The website asks for exactly what it needs, the person chooses item by item, and record by record, what to send, and the answers go back to that website alone.
Check-in is an early version. haau3 is building toward a minimum viable product in November 2026 and general availability in early 2027. What it answers today is listed below, and the list will grow.
Both let a patient or caregiver skip the clipboard. They differ in who decides what is asked for.

SMART Health Link

The person makes a link or QR code from their record and shows it at the appointment. They decide what it holds, and the receiving system reads whatever it carries.

Check-in

The clinic’s check-in page asks for the records and forms it wants, before the visit. The person says yes or no to each one, answers the forms, and the page gets the answers back.

Add haau3 to your check-in page

haau3 answers over the web-wallet transport of the SMART Health Check-in client library: your page opens the wallet in a new tab from a click, the wallet says it is ready, receives your request, and posts back a sealed response. Opened on its own, without a request, the page explains that it starts from a website’s check-in and shows nothing about anyone.

What the person does

1

Sign in on the page

The tab stays on haau3 while the person signs in, with Google or an emailed code, so your request is kept. Check-in signs in to an existing haau3 account that has finished setting up; it does not create one.
2

Pick whose records

A caregiver who manages more than one person picks whose records your page gets. Nothing is picked for them.
3

Choose item by item, and record by record

Your page appears by its web address, and your request’s own words are shown as what the website says. Each item shows how many records would go and their names. An item with records starts on Share with every record chosen. The person can turn any item off, even one your request marks as required, and can leave out single records or a whole kind of record, such as every document. A record left out of one item is left out of every item.
4

Answer your forms

A form sits in its item’s card, shown as you sent it. A shared form needs at least one answer, and an answer to every question it marks as required, before the person can send.
5

Send

haau3 sends one response with a status for every item, then closes its tab. Closing the tab without sending sends nothing, and your page reads that as a decline.

What haau3 answers today

Records are matched to an item by meta.profile, and sent with their profiles exactly as stored. An item can name exact profiles, a whole implementation guide (profilesFrom, such as US Core), or a guide narrowed by resourceTypes, such as US Core’s Observations. Each shared item’s records come back as a FHIR R4 (4.0.1) collection Bundle. Forms are shown as you send them inline. A form named only by its canonical URL is found for LOINC forms, for the forms the SMART Health Check-in connectathon publishes, and for forms published at their own address under other places haau3 is set up to reach. To have forms you publish found this way, email hello@haau3.com with the address they are published under. haau3 shows questions of type choice, open-choice, decimal, string, text, integer, boolean and display.
  • A choice or open-choice question that repeats is shown as checkboxes, and its answers are sent in the order the form lists its options.
  • An open-choice question also takes the person’s own words, sent as one valueString answer.
  • A question or display text with enableWhen is shown only while its conditions hold, with the operators read as FHIR R5 defines them (so != holds while the question is unanswered). An item that is not shown is left out of the response.
A form that uses any other question type, groups, a typed question that repeats, minOccurs, maxOccurs or optionExclusive, an answer value set, or a condition haau3 can’t evaluate, is not shown, and answers unsupported. The response is a QuestionnaireResponse whose subject is the patient. When the patient answers, author and source name the patient too. When a caregiver answers, the response contains a US Core RelatedPerson for them, with id caregiver:
  • their name;
  • their relationship to the patient, coded in v3-RoleCode, when it is parent, grandparent, spouse, child, grandchild or sibling;
  • an identifier whose value is the record’s address at haau3 (system urn:ietf:rfc:3986).
author is #caregiver. The caregiver says, form by form, whose answers these are: the patient’s own, which the caregiver entered (source is the patient), or the caregiver’s answers about the patient (source is #caregiver).

Statuses

haau3 answers unsupported for an item naming only kinds of records or a guide haau3 holds none of, a request that excludes FHIR 4.0.1 or an item that does not accept application/fhir+json, a form it can’t find or show, and an inline form over 256 KB. When an item reaches beyond what haau3 looks for and nothing matched, the answer is unsupported, never unavailable, so your page is never told the person has none of something haau3 did not look for.

Limits

  • The person needs a haau3 account. Without one, the page tells them to make one at haau3.com and start again from your page.
  • Your page’s time limit. The client library’s page waits five minutes by default. haau3 can’t extend it. The person sees the time left near the end, and when a request has a form, they are told about the limit before they start.
  • Size. One response carries at most 4 MB. When what the person leaves on Share adds up to more, haau3 tells them before they send, shows the size of any record over 1 MB, and asks them to leave out some records or turn off some items.
  • Where it has been tested: desktop Chrome, and Safari on iPhone.

Privacy

  • Nothing is sent until the person chooses, item by item and record by record.
  • The response is sealed to the key in your request and bound to your page’s origin, so only your page can open it.
  • When a caregiver answers a form, their name and relationship to the patient go with the answers, and the screen tells them so before they send.
  • haau3 keeps no copy of what is sent, and no copy of the answers to your forms.

Test it

1

Add haau3 to the SMART Testing EHR

Open the SMART Testing EHR, add haau3 by its wallet URL, https://haau3.com/check-in, choose a scenario and send it.
2

Use the sample account

On haau3’s sign-in step, choose Use the sample account, then Continue. Nobody signs in, and nothing is typed. The sample account is Yuk Sample, who has a small record and cares for two people:
  • Rosalynn Sample, with an everyday record holding every kind of record haau3 sends, documents with their files included.
  • Chris Sample, with ten years of results and notes, for responses over 1 MB.
Pick whose records to send, as a caregiver would. A form answered for Rosalynn or Chris carries Yuk as their caregiver.
3

Read what arrives

The people and records are made up. Every record the sample sends carries HL7’s security label for test data, HTEST from http://terminology.hl7.org/CodeSystem/v3-ActReason, in meta.security. So does each form’s response, and the caregiver inside it.
The sample account runs the same check-in as a real account, from matching your request to sealing the response. Three things it does not show: signing in, how haau3 searches a real person’s records, and the quirks of real records. To test those, make a haau3 account by following Account setup. An account with no records connected answers the Patient item and any forms, and its other record items answer unavailable.

Kill the Clipboard

The use case, and the two ways the haau3 app serves it.

Generate a SMART Health Link

Share at the appointment with a link or QR code.

Account setup

Create an account and onboard a patient.