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) -> strReturn the storage key of the offline measurement queue for one tenant and API.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
tenant_code | str | The tenant code. | |
base_url | str | The 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
| Name | Type | Default | Description |
|---|---|---|---|
params | Resource | measurement (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) -> ResourceBuild and save a reading.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
params | Resource | The reading, as for build. | |
options | Resource | None | None | As for save_observations. |
Returns
Resource: As forsave_observations.
save_observations()
save_observations(
observations: list[Resource],
options: Resource | None = None,
) -> ResourceSave 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
| Name | Type | Default | Description |
|---|---|---|---|
observations | list[Resource] | Observations to save, main one first. | |
options | Resource | None | None | replace 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) -> BundleRead the latest Observation per code with FHIR $lastn.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
params | Resource | me=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 norpatient_idis available.
last_for_patient()
last_for_patient(patient_id: str, query: QueryParams) -> BundleRead a patient's last Observations through Ovok's patient route.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
patient_id | str | The Patient's ID. | |
query | QueryParams | Query parameters for the route. |
Returns
Bundle: The route's Bundle.
codes_for()
codes_for(
types: list[MeasurementTypeKey | str] | tuple[MeasurementTypeKey | str, ...],
) -> strReturn the LOINC codes for measurement types, for a code search.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
types | list[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
| Name | Type | Default | Description |
|---|---|---|---|
queue | OfflineMeasurementQueue | The queue it exposes. |
flush()
flush(*, include_exhausted: bool = False, reset_exhausted: bool = False) -> ResourceRetry the current owner's queued saves that are due.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
include_exhausted | bool | False | Also retry saves that used up their retries. |
reset_exhausted | bool | False | Reset exhausted saves to a fresh retry budget first. |
Returns
Resource: Counts (attempted,saved,queued,exhausted) and per-saveResource:responsesandfailures.
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
| Name | Type | Default | Description |
|---|---|---|---|
storage | OvokStorage | Where the queue is kept. | |
storage_key | str | Key of the queue in storage. | |
get_owner_key | Any | Returns the current owner's key; only that owner's saves are sent. | |
send | Any | Sends one transaction Bundle for an owner key. |
enqueue_and_flush()
enqueue_and_flush(entries: list[BundleEntry], owner_key: str) -> ResourceQueue a save once, then flush the queue.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
entries | list[BundleEntry] | The save's Bundle entries. | |
owner_key | str | Key of the owner the save belongs to. |
Returns
Resource: The save's queueidand theflushresult.
Raises
OvokError: This flush hit a non-retryable error; that save is dropped.
flush()
flush(*, include_exhausted: bool = False, reset_exhausted: bool = False) -> ResourceRetry the current owner's queued saves that are due.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
include_exhausted | bool | False | Also retry saves that used up their retries. |
reset_exhausted | bool | False | Reset exhausted saves to a fresh retry budget first. |
Returns
Resource: The flush counts,responsesandfailures.
BundleError
BundleError(bundle: Bundle)Bases: Exception
A Bundle response had an entry with a 4xx or 5xx status.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
bundle | Bundle | The response Bundle. |
Last updated on