Get patient current vitals
- Sandbox: available
- Staging: available
- Production: unknown
Returns the latest live telemetry for a resident: one entry per device assigned to them, with the device, resident and zone.
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 search and read on Patient, Device, Location, Observation and Organization (an admin or super admin who holds no access policy skips this check).
Scope: The caller's project (from the token). A resident outside that project returns total: 0 and no entries.
Behaviour
- Read-only.
- Returns one entry per device assigned to the resident, up to 100. A resident with no device returns
total: 0. - The response is cached for up to 60 seconds, so
telemetrycan lag the latest reading by up to a minute.
Example
curl -X GET 'https://api.sandbox.ovok.com/v1/slim/patient/c3499c27-2973-0a7f-807e-fb8676a92dcb/current-vitals' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk'bearerAuthorizationBearer <JWT>id*stringuuidPatient current vitals retrieved successfully.
application/json- response
total*number0 <= valueresources*array<>curl -X GET 'https://api.sandbox.ovok.com/v1/slim/patient/497f6eca-6276-4993-bfeb-53cbbbba6f08/current-vitals'{ "total": 0, "resources": [ { "device": { "id": "string", "name": "string" }, "patient": { "id": "string", "name": "string", "nickname": "string" }, "organization": { "id": "string", "name": "string" }, "telemetry": { "active": { "value": "string", "ts": 0 }, "effectiveHeartRate": { "value": "string", "ts": 0 }, "effectiveRespiratoryRate": { "value": "string", "ts": 0 }, "effectiveSleepStatus": { "value": "string", "ts": 0 }, "lastMeasurementTime": { "value": "string", "ts": 0 }, "lastActivityTime": { "value": "string", "ts": 0 }, "name": { "value": "string", "ts": 0 }, "effectiveOxygenSaturation": { "value": "string", "ts": 0 }, "effectivePulseRate": { "value": "string", "ts": 0 }, "effectiveSystolicBloodPressure": { "value": "string", "ts": 0 }, "effectiveDiastolicBloodPressure": { "value": "string", "ts": 0 }, "effectiveHeartRateVariability": { "value": "string", "ts": 0 }, "effectivePerfusionIndex": { "value": "string", "ts": 0 }, "effectiveBodyTemperature": { "value": "string", "ts": 0 }, "roomTemperature": { "value": "string", "ts": 0 }, "humidity": { "value": "string", "ts": 0 }, "soundLevel": { "value": "string", "ts": 0 }, "infrared": { "value": "string", "ts": 0 }, "illuminance": { "value": "string", "ts": 0 }, "airQualityIndex": { "value": "string", "ts": 0 }, "tvoc": { "value": "string", "ts": 0 }, "eco2": { "value": "string", "ts": 0 } } } ]}Create patient POST
Creates a resident (patient), optionally placed on devices, in a room and in a zone, and registers them with Signals. **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:create`, plus `Device:update` when `deviceId` is set (an admin or super admin who holds no access policy skips this check). **Scope:** The resident is created in the caller's project (from the token). A super-admin caller can pass `?projectId=<uuid>` to create it in that project instead. Any other caller who passes `projectId` gets a 403. Devices, rooms and zones you reference must be in your project, its parent project, or one of its sub-projects. ## Behaviour - `name` must contain an entry with `use: "nickname"` and a non-blank first `given` value. This is the Resident ID. - The Resident ID must be unique in the project, compared as in `POST /v1/slim/patient/check-name-exists`. - `admissionDate` defaults to now. It cannot be later than the start of the current day. - The resident is created as `active`, and an `EpisodeOfCare` is opened for the admission. - Placement: - `deviceId` (one id or a list): the resident is assigned to those devices. A device that already has a resident is reassigned to the new one, and the resident who had it loses it, with its room, as on `PUT /v1/slim/patient/{id}`. - `locationId` with `deviceId`: those devices are also moved to the room. - `locationId` without `deviceId`: the resident is assigned to the room's device. The room must have exactly one device. - `organizationId` without `locationId` or `deviceId` is refused with 422: a resident's zone is read from their device, so a zone alone would not show. - `organizationId`: the resident is placed in the zone. When `deviceId` is set, those devices and their rooms move to the zone too. - Without `organizationId`, the resident's zone is their device's: the room's zone, else the device's own. Devices in more than one zone are refused with 422. - The resident is registered with Signals in the same request. If that fails, everything this request wrote is rolled back and you get a 503 with `error: "signals_mint_failed"`. You can retry. - The write is atomic and locks the Resident ID and the devices, so two concurrent creates of the same Resident ID leave one resident. - Change-history entries are added for each assignment, including the zone the resident gets from their device, and for a resident who lost a device to the new one. - The response is the created resident, in the same shape as `GET /v1/slim/patient/{id}`. - If the resident cannot be registered with Signals, the create is rolled back and the request fails with 503. Retry it. ## Example ```bash curl -X POST 'https://api.sandbox.ovok.com/v1/slim/patient' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' \ -H 'Content-Type: application/json' \ -d '{ "name": [ { "use": "nickname", "given": ["Maxi"] }, { "use": "official", "given": ["Max"], "family": "Mustermann" } ], "gender": "male", "birthDate": "1940-05-01", "deviceId": "c3499c27-2973-0a7f-807e-fb8676a92dcb", "locationId": "c3499c27-2973-0a7f-807e-fb8676a92dcb", "organizationId": "87ea5dfc-8b8e-384d-8489-79496e706390" }' ```
Get patient $everything GET
Returns a FHIR `Bundle` with the resident and every resource that references them, using the FHIR `Patient/$everything` operation. Use it to export or inspect a resident's full record. **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` (an admin or super admin who holds no access policy skips this check). **Scope:** The resident must belong to the caller's project (from the token) or one of its sub-projects. A resident in the parent project is refused. ## Behaviour - Read-only. - The bundle is produced by Medplum and read with the caller's own token, so it contains only resources that token can read. - The response is a raw FHIR `Bundle`, not a Slim DTO. ## Example ```bash curl -X GET 'https://api.sandbox.ovok.com/v1/slim/patient/c3499c27-2973-0a7f-807e-fb8676a92dcb/$everything' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' ```