API referenceresources

ovok_sdk.resources.measurements

Measurement building, saving with an offline retry queue, and latest-value reads.

  • Stable unknown
  • Release candidate since 0.1.0-rc.4
  • Development since 0.1.0-dev.25+2ba84b0

Measurement building, saving with an offline retry queue, and latest-value reads.

offline_measurement_storage_key()

offline_measurement_storage_key(tenant_code: str, base_url: str) -> str

Return the storage key of the offline measurement queue for one tenant and API.

Parameters

NameTypeDefaultDescription
tenant_codestrThe tenant code.
base_urlstrThe API base URL; its origin and path are part of the key.

Returns

  • str: The storage key.

MeasurementsResource

MeasurementsResource(
    http: HttpClient,
    fhir: FhirResource,
    session: UserSession | None,
    settings: OvokSettings,
)

Builds, saves and reads measurements as FHIR Observations.

Created by Ovok; access it as ovok.measurements. Signed-in saves go through an offline queue in the client's storage, so a reading that fails to send is retried later.

Examples

result = ovok.measurements.save({
    "measurement": {
        "measurement_type_key": "blood-pressure",
        "systolic": 120,
        "diastolic": 80,
    },
})

build()

build(params: Resource) -> list[Resource]

Build the Observations for a reading without saving them.

Parameters

NameTypeDefaultDescription
paramsResourcemeasurement (with measurement_type_key and its values) and optional patient_id, device, effective_date_time and source_id. Without patient_id the subject is the signed-in user.

Returns

  • list[Resource]: The Observations, main one first.

Raises

  • OvokValidationError: No patient is named and no user is signed in, or the reading is invalid.

save()

save(params: Resource, options: Resource | None = None) -> Resource

Build and save a reading.

Parameters

NameTypeDefaultDescription
paramsResourceThe reading, as for build.
optionsResource | NoneNoneAs for save_observations.

Returns

  • Resource: As for save_observations.

save_observations()

save_observations(
    observations: list[Resource],
    options: Resource | None = None,
) -> Resource

Save Observations in a transaction, idempotently.

Later Observations are linked to the first with hasMember. When a user or machine client owns the save, it goes through the offline queue: a retryable failure keeps it queued for offline_queue.flush().

Parameters

NameTypeDefaultDescription
observationslist[Resource]Observations to save, main one first.
optionsResource | NoneNonereplace overwrites earlier readings with the same device-reading identifier; identifier_systems adds identifier systems that mark a reading.

Returns

  • Resource: {"status": "saved", "response": bundle} or {"status": "queued", "queue_id": id}.

Raises

  • OvokError: The server refused the save with a non-retryable error.

latest()

latest(params: Resource) -> Bundle

Read the latest Observation per code with FHIR $lastn.

Parameters

NameTypeDefaultDescription
paramsResourceme=True for the signed-in user or patient_id; optional codes (comma-separated, see codes_for) and date (lower bound).

Returns

  • Bundle: A searchset Bundle.

Raises

  • OvokValidationError: Neither a signed-in user nor patient_id is available.

last_for_patient()

last_for_patient(patient_id: str, query: QueryParams) -> Bundle

Read a patient's last Observations through Ovok's patient route.

Parameters

NameTypeDefaultDescription
patient_idstrThe Patient's ID.
queryQueryParamsQuery parameters for the route.

Returns

  • Bundle: The route's Bundle.

codes_for()

codes_for(
    types: list[MeasurementTypeKey | str] | tuple[MeasurementTypeKey | str, ...],
) -> str

Return the LOINC codes for measurement types, for a code search.

Parameters

NameTypeDefaultDescription
typeslist[MeasurementTypeKey | str] | tuple[MeasurementTypeKey | str, ...]Measurement types; unknown ones are skipped.

Returns

  • str: Comma-separated, de-duplicated codes.

OfflineMeasurementQueueApi

OfflineMeasurementQueueApi(queue: OfflineMeasurementQueue)

The offline measurement queue; access it as ovok.measurements.offline_queue.

Parameters

NameTypeDefaultDescription
queueOfflineMeasurementQueueThe queue it exposes.

flush()

flush(*, include_exhausted: bool = False, reset_exhausted: bool = False) -> Resource

Retry the current owner's queued saves that are due.

Parameters

NameTypeDefaultDescription
include_exhaustedboolFalseAlso retry saves that used up their retries.
reset_exhaustedboolFalseReset exhausted saves to a fresh retry budget first.

Returns

  • Resource: Counts (attempted, saved, queued, exhausted) and per-save
  • Resource: responses and failures.

OfflineMeasurementQueue

OfflineMeasurementQueue(
    storage: OvokStorage,
    storage_key: str,
    get_owner_key: Any,
    send: Any,
)

Persists pending measurement saves in storage and retries them with backoff.

Parameters

NameTypeDefaultDescription
storageOvokStorageWhere the queue is kept.
storage_keystrKey of the queue in storage.
get_owner_keyAnyReturns the current owner's key; only that owner's saves are sent.
sendAnySends one transaction Bundle for an owner key.

enqueue_and_flush()

enqueue_and_flush(entries: list[BundleEntry], owner_key: str) -> Resource

Queue a save once, then flush the queue.

Parameters

NameTypeDefaultDescription
entrieslist[BundleEntry]The save's Bundle entries.
owner_keystrKey of the owner the save belongs to.

Returns

  • Resource: The save's queue id and the flush result.

Raises

  • OvokError: This flush hit a non-retryable error; that save is dropped.

flush()

flush(*, include_exhausted: bool = False, reset_exhausted: bool = False) -> Resource

Retry the current owner's queued saves that are due.

Parameters

NameTypeDefaultDescription
include_exhaustedboolFalseAlso retry saves that used up their retries.
reset_exhaustedboolFalseReset exhausted saves to a fresh retry budget first.

Returns

  • Resource: The flush counts, responses and failures.

BundleError

BundleError(bundle: Bundle)

Bases: Exception

A Bundle response had an entry with a 4xx or 5xx status.

Parameters

NameTypeDefaultDescription
bundleBundleThe response Bundle.

Last updated on

On this page