Skip to main content
Not yet available. Outreach events are not yet live on api.clinikehr.com. This page describes the routes exactly as they will work once they ship — check the changelog before building against them.
An outreach event is a clinic’s off-site, one-day (or multi-day) screening event: a health fair, a community screening, a mobile clinic day. The clinic sets up stations (intake, vitals, lab, consultation, and so on) and checks patients in as they arrive. Reading an event, its stations and who is checked in is immediate. Checking a patient in is different — exactly like Conditions and the other outside-submission resources. A check-in you send is held for a clinician to review, and only a clinician’s decision (or the clinic’s own choice to accept automatically) actually checks the patient in, the same way the event’s own check-in screen does. Read Reviewing outside submissions first if you have not already. An event is created by the clinic in ClinikEHR — there is no route to create one from the API. Your key reads events the clinic already set up and checks existing patients in to them. The patient must already exist — create one first with POST /v1/clinics/{clinic_id}/patients (see Patients) before checking them in. A patient the clinic has restricted, or an event that does not exist, returns 404 with code: "not_found". The two are never told apart. See Errors.

What an event looks like

Events and stations carry no patient information — reading the event list needs outreach:read but no additional patient-data approval beyond the outreach kind itself.

List events

List who is checked in

progress shows each station’s status for this attendee: done, skipped, or pending (not yet visited). This is read-only here — recording a station visit is a clinic staff action in ClinikEHR, not a route this API exposes. Each row is excluded, rather than refusing the whole list, when the patient is one your key or connection is not allowed to see — a restricted patient, or, for an organization key, a patient your connection is not linked to.

Check a patient in

Idempotency-Key is required. Sending the same key again returns the first answer and does not create a second submission. See Retries and duplicates.

The answer is 202, not 200

The body is the submission, showing "review_status": "pending". The patient is not checked in yet. Read the body, not the status code — if the clinic has chosen to accept outreach check-ins from your key automatically, the same 202 already shows "review_status": "confirmed" and "accepted_automatically": true. See Automatic acceptance. A check-in can only ever be confirmed while the event is open; one sent against a planned or closed event is refused before it is ever created as a submission.

After you send one

  • pending: waiting for a person at the clinic.
  • confirmed: a clinician (or the clinic’s automatic acceptance) checked the patient in, through the same single path the event’s own check-in screen uses. result_record_id is the attendee record.
  • rejected: declined, with the reason — for example, the patient was already checked in to this event by the time it was reviewed (checking the same patient in twice is harmless, not an error, at the attendee record itself, but a submission can still be rejected if the event closed in the meantime).
  • withdrawn: you took it back while it was pending.
Only the key or organization that sent a submission can read it. A submission that has been decided cannot be changed (409 submission_not_pending).

Clinical records tagged to an event

A patient’s triage, vitals, consultation, notes, lab tests, radiology, prescriptions and documents made while checked in and while a clinic staff member has the event open on their own screen carry the event’s id inside ClinikEHR. Those records’ own routes (for example Encounters) do not return or filter on the event id yet; use List who is checked in to know who attended. This API never lets you set that tag yourself — it is the clinic’s own session that stamps it.

A worked example

  1. The clinic sets up “Riverside community health day” in ClinikEHR with Intake and Vitals stations, and opens it.
  2. A patient arrives. Your system has already registered them (POST /v1/clinics/{clinic_id}/patients), so you send POST …/outreach-events/EVENT_ID/attendees with their patient_id and an Idempotency-Key. The answer is 202.
  3. A clinician at the check-in desk reviews it in Outside submissions and selects Accept.
  4. You read the submission again: confirmed, with result_record_id pointing at the attendee record.
  5. GET …/outreach-events/EVENT_ID/attendees now lists the patient, with progress showing each station as pending.
A test key reaches only your workspace’s sandbox, which holds invented patients, so you can try the requests above without touching a real event.