List medical notifications
| Method | Path |
|---|---|
GET | /v1/slim/notifications/medical |
Authentication · Access policies
Lists your project's medical notifications (heart rate, respiratory rate and other vital-sign alerts), newest first, one page at a time. Medical episodes are decided by Signals; Ovok reads them from Signals, adds the resident context, and never re-derives a clinical value.
Auth: Bearer token. The caller must be a practitioner, an admin, a super admin, or hold the "System Owner" access policy. The access policy must grant Patient:read, Device:read and Location:read (admins and super admins skip this check).
Scope: The caller's project (from the token), applied on both sides: Signals filters on the resident's project stamp, and Ovok checks each resolved resident against your project.
Behaviour
- One row per episode, not per reading: a run of readings outside the band is one episode, which closes on recovery or acknowledgement.
- Each row has three blocks.
episodeis the Signals episode with its aggregates.carehubis the resident context Signals does not hold: resident, room and bed, device, zone. Its fields arenullwhen the resident has no device assigned.acknowledgementisnulluntil someone acknowledges the episode. - Use
episode.idwithGET /v1/slim/notifications/medical/{episodeId}to get the full value history. episode.firedBandis the band the episode was judged under: the band Signals recorded when it fired, or else the band rebuilt from Signals' configuration history at the episode's trigger version. It is not the resident's current band, so editing a threshold does not change past rows.minandmaxare each nullable (a band can be one-sided).firedBandisnullwhen the band cannot be established; that never fails the read.- Filters:
status(OPENorCLOSED, both when omitted),since(episodes opened at or after this ISO 8601 instant),acknowledged(true,1oryesfor acknowledged only; any other value for unacknowledged only; both when omitted). patientnarrows the feed to one resident, by MedplumPatient.id(thecarehub.patientIda row returns). It does not change the project scope. A resident who cannot be resolved, or who is in another project, answers 404 rather than an unfiltered page.codesnarrows the feed to these LOINC codes, comma separated, at most 32 (for example8867-4,9279-1). Perfusion index isPI. Signals applies the filter. Out-of-bed is never in this feed.- Paging:
limitis 1 to 200 (default 50). Pass the previous page'snextCursorascursor. Page untilnextCursorisnull, not until a short page arrives: rows whose resident cannot be resolved into your project are dropped after Signals counted them. - A resident with no Signals project stamp matches no project and does not appear.
- When the project's Signals tenant has episodic alerts switched off, the page is empty.
- Out-of-bed is served by
GET /v1/slim/notifications/oob. - A 503 with
signals_unavailablemeans Signals could not be reached; retry afterretryAfterSec.
Example
curl -X GET 'https://api.sandbox.ovok.com/v1/slim/notifications/medical?status=OPEN&codes=8867-4,9279-1&limit=50' \
-H "Authorization: Bearer ${OVOK_TOKEN}"
Successful response
200 — A page of medical notifications.
Errors
| Status | Meaning |
|---|---|
401 | Bearer token is missing, invalid or expired. |
403 | You are not a practitioner, admin or System Owner, you lack Patient:read, Device:read or Location:read, your session has no project, or you cannot access the project. |
404 | The patient filter names a resident who cannot be resolved or is not in your project. |
422 | A query parameter fails validation. |