The drug register
Every product given at the clinic, with batch, dose, site, both clinicians and the authority it was given under. Hear it by webhook, reconcile with GET /administrations.
Every product given at a clinic is one administration (adm_…) on its drug register. It records what was given, never what was approved: an approval can be a plan for up to 12 months, and a dose may be less than it.
Hear it#
| Event | When |
|---|---|
administration.recorded | One per product, when the note locks; a product added to a signed note, when it is recorded (after_signing: true). |
administration.voided | An administration you were sent is removed. |
administration.prescriber_recorded | A prescriber is named afterwards for administrations you were sent (they arrived with prescriber source not_recorded). |
Each carries dose_public_id (dose_…): the legs of one dose split across vials or batches share it. With clinical content, each carries the same administration object as GET /administrations/{id}.
The administration object#
product,generic_name,strength,schedule,artg_id,quantity,units,route.sites: each area (slug), its quantity and route.batch_number,batch_expiry, and thevialwith its reconstitution.administered_at,administered_byandprescriber, each with registrations.prescriber.sourceisauthority,clinic_prescriber,outside_claroornot_recorded.authority: the treatment authority it was given under, with your own ID for it (external_ids), itsreferences, thelinesit was counted against andwithin_authority.
Who the patient is needs patients:read. What was given needs clinical content.
Reconcile#
GET /administrations (administrations:read) lists the register oldest change first. A void and a prescriber named later are changes. Voided rows appear only with include_voided=true, as status: voided. Filter by patient or authority.
GET /api/public/v1/administrations?updated_since=2026-11-01T00:00:00Z&include_voided=true
Authorization: Bearer claro_sk_test_au_…
After an outage, take the deltas from GET /events and the state from this list. Skip repeats by webhook-id and by adm_….