StandaloneAPI referencePatients

Create patients

Create patients, through Ovok's Signals gateway.

Create patients

MethodPath
POST/v1/signals/api/patient
  • Sandbox: available
  • Staging: available
  • Production: unknown

Upserts on refId: posting a patient that already exists updates it rather than duplicating it, so a replayed provisioning run is safe. Each entry's config — flags and triggers — is applied in the same call, and metadata is merged.

Through ovok

  • Who can call it: Manager apps, and users whose access policy grants the capabilities.
  • Capabilities, all required: signals_patients:update. Project admins have every capability; client applications get no admin bypass.
  • ovok adds your project's submitter to each new patient and stamps metadata.project with your project. Sending config also needs signals_config:update and signals_silence:update. New patients count toward your plan's monitored-patient cap.
  • If your access covers only some patients (anyone but project admins, manager or submitter apps, and anyone whose Patient access has no criteria), every patient the body names must be one you can update. A patient is named by its Signals id, or by its Medplum Patient id where Signals takes a refId; ovok asks Signals which patient a Signals id is.

Request

Body

Required. Schema V1CreatePatientsDto.

FieldTypeRequiredDescription
patientsarray of objectYes—
patients[].configobjectNoInitial config, applied in the same call: alertIfEmpty, alertIfNote, alertInactiveDays, and triggers in the same shape as V1ConfigTriggerSchema, including its metadata stamp.
patients[].idstringNo—
patients[].namestringNo—
patients[].refIdstringYes—
patients[].submittersarray of stringNo—
patients[].subscribersarray of stringNo—
patients[].metadataobjectNo—
patients[].emailstringNo—
patients[].bsnstringNo—
patients[].umoIdstringNo—
patients[].dateOfBirthstringNo—
patients[].tagsobjectNo—

Responses

StatusMeaning
200The patients as stored, in request order.
400The query carries a raw #, or more than 200 parameters.
401Your ovok access token, or your client id and secret, are missing or invalid.
402The new patients would go past your plan's monitored-patient cap.
403ovok refused the call: you lack a capability this route needs, or your session has no project, or a patient is stamped with another project, or your access covers only some patients and the call names none, or you can read a patient the call names but not update it. From Signals: Authenticated, but the client's role does not permit this, or it is not attached to the patient.
404A patient the call names is not one you can read.
409Your project has no Signals tenant of its own (SIGNALS_TENANT_NOT_OWN), or it is moving to another one.
415The body is not JSON.
422A number in the body is out of range. A patient id is not 1 to 64 letters, digits, ., _, ~ or -. More than 100 patients are named. A patient is named by something other than a string. From Signals: The payload failed validation.
429Too many requests. Retry after the seconds in Retry-After.
500ovok hit an unexpected fault, such as your project having no Signals submitter.
502Signals answered with something ovok couldn't use, or refused ovok's own credential.
503Signals is unavailable. Retry after the seconds in Retry-After.
504Signals did not answer in time.

Example

curl --request POST 'https://api.sandbox.ovok.com/v1/signals/api/patient' \
  --user "${OVOK_CLIENT_ID}:${OVOK_CLIENT_SECRET}" \
  --header 'Content-Type: application/json' \
  --data @body.json

Last updated on

On this page