Skip to main content
Not yet available. Prescription pickups 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.
A prescription pickup is one handover at the pharmacy counter: who collected a patient’s dispensed medicine, whether counselling was offered, the clinic’s own yes/no questions and their answers, and whether a signature is on file. Reading is immediate. Submitting a collection is different — exactly like Conditions, Allergies and the other outside-submission resources. A collection 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 records it, the same way the pharmacy counter’s own screen does. Read Reviewing outside submissions first if you have not already. A pickup is created by the clinic when it dispenses a prescription — there is no route to create one from the API. Your key reads and completes pickups the clinic already created; it never invents one. The patient must be one your key is allowed to see. A patient the clinic has restricted, or a pickup that does not exist, returns 404 with code: "not_found". The two are never told apart. See Errors.

What a pickup looks like

Full-edition pickups vs. Pharmacy-edition till pickups

A full-edition clinic’s in-house pharmacy hands out one or more prescriptions: each line in lines carries a prescription_id. A Pharmacy-edition clinic’s till sale can also create a pickup — then pos_sale_id is set on the pickup, and each line carries pos_sale_item_id (the sale’s own line) instead of a prescription_id. Never both on the same line. Treat lines as a list of “things handed over” and read whichever id is present; do not assume every pickup is prescription-shaped.

List pickups

Submit a collection

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 pickup is not collected yet. Read the body, not the status code — if the clinic has chosen to accept pickup collections from your key automatically, the same 202 already shows "review_status": "confirmed" and "accepted_automatically": true. See Automatic acceptance.

After you send one

  • pending: waiting for a person at the clinic. The pickup still reads status: "awaiting".
  • confirmed: a clinician (or the clinic’s automatic acceptance) recorded it, through the same single path the pharmacy counter’s own screen uses. result_record_id is the pickup, which now reads status: "collected".
  • rejected: declined, with the reason — for example, the pickup was already collected by the time it was reviewed.
  • withdrawn: you took it back while it was pending.
A submission’s own payload never carries the signature image, even for your own submission — has_signature is a sibling field on the submission, just as it is on the pickup. 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).

What is never returned

  • The signature image. No route under this API, at any permission, returns the bytes of a signature. has_signature is the only signal you ever get.
  • agent_name, to an organization. A clinic-owned key sees who collected on an agent’s behalf; a connected organization sees only agent_relationship, never the name.

A worked example

  1. A patient’s pharmacy order is dispensed at the clinic. The clinic’s system creates a pickup, status: "awaiting".
  2. Your kiosk captures a signature when the patient collects. You send POST …/prescription-pickups/PICKUP_ID/collection with collected_by: "patient", the signature and an Idempotency-Key. The answer is 202.
  3. A clinician reviews it in Outside submissions and selects Accept — the same acceptance ClinikEHR’s own staff review screen uses for any outside submission.
  4. You read the submission again: confirmed, with result_record_id pointing at the pickup.
  5. GET …/prescription-pickups/PICKUP_ID now shows status: "collected", has_signature: true, and the answers you sent with their exact wording.
A test key reaches only your workspace’s sandbox, which holds invented patients, so you can try the requests above without touching a real pickup.