Merge branch 'feat/v144-report' into release/v1.44.0

This commit is contained in:
Marc-André Bombeck committed 2026-10-21 22:18:50 +02:00
commit 4e71cf4dc2
58 files changed
+5703 -91

No files matched your search

+239 -9
View File
@@ -1245,8 +1245,9 @@ paths:
summary: FHIR R4 CapabilityStatement (v1.11.0)
description: "Read-only FHIR R4 capability statement for the REST face. Declares the served resource types (Patient,
Coverage, Observation, MedicationStatement, MedicationAdministration), their `read` and `search-type`
interactions, the `Patient/$everything` operation, and the `application/fhir+json` format. Every advertised
interaction has a route. Auth: `fhir:read` scope (cookie sessions also pass)."
interactions, the search parameters (`_count`, `_offset`; `date` and `code` on Observation), the
`Patient/$everything` operation, and the `application/fhir+json` format. Every advertised interaction has a
route. Auth: `fhir:read` scope (cookie sessions also pass)."
responses:
"200":
description: CapabilityStatement (application/fhir+json).
@@ -1291,7 +1292,16 @@ paths:
- FHIR
summary: FHIR R4 Observation search (v1.11.0)
description: "Read-only `searchset` Bundle of the caller's own Observations (vitals / activity / lab / survey). Auth:
`fhir:read` scope. Offset paging via `_count` (clamped ≤200) / `_offset`."
`fhir:read` scope. Offset paging via `_count` (clamped ≤200) / `_offset`. Without `date` the answer is the
snapshot it has always been: one latest reading per type plus the derived panels, ids `obs-N`. With `date`
(v1.44, repeatable, FHIR prefixes eq/gt/ge/lt/le, a value without an offset read as UTC) the answer is the time
series instead: every reading in the range plus workouts, newest first, paged in the database, ids `m-<id>` /
`w-<id>` that read back through `/api/fhir/Observation/{id}`. The series follows the same saved report selection
as the snapshot, leaves sleep out (stored as stage segments), pairs a systolic and diastolic recorded at the
same instant into the blood-pressure panel, and codes a workout as an `activity` Observation (LOINC 73985-4
Exercise activity, duration 55411-3 and energy 41981-2 as components). `code` (repeatable, `system|code` or a
bare code, comma-separated) narrows either answer; an unknown code matches nothing. A malformed `date` is a 400
OperationOutcome."
parameters:
- in: query
name: _count
@@ -1301,6 +1311,14 @@ paths:
name: _offset
schema:
type: number
- in: query
name: date
schema:
type: string
- in: query
name: code
schema:
type: string
responses:
"200":
description: searchset Bundle (application/fhir+json).
@@ -1463,9 +1481,10 @@ paths:
tags:
- FHIR
summary: FHIR R4 Observation read
description: "Read-only `Observation` by id, out of the caller's own record. An id belonging to someone else is
indistinguishable from one that never existed — both answer a `not-found` OperationOutcome. Auth: `fhir:read`
scope; `userId` is narrowed from auth."
description: "Read-only `Observation` by id, out of the caller's own record: a snapshot id (`obs-N`) or a series id
(`m-<id>` / `w-<id>`, v1.44), the latter read inside the same saved selection the series search applies. An id
belonging to someone else is indistinguishable from one that never existed — both answer a `not-found`
OperationOutcome. Auth: `fhir:read` scope; `userId` is narrowed from auth."
parameters:
- in: path
name: id
@@ -26155,7 +26174,7 @@ components:
type: number
const: 2
leaves:
maxItems: 104
maxItems: 106
type: array
items:
type: string
@@ -26215,7 +26234,7 @@ components:
type: number
const: 2
leaves:
maxItems: 104
maxItems: 106
type: array
items:
type: string
@@ -29248,7 +29267,7 @@ components:
type: number
const: 2
leaves:
maxItems: 104
maxItems: 106
type: array
items:
type: string
@@ -52711,6 +52730,216 @@ components:
- present
additionalProperties: false
- type: "null"
segmented:
anyOf:
- type: object
properties:
present:
type: boolean
reason:
type: string
enum:
- no_start
- insufficient_before
- insufficient_after
- fit_failed
level:
type: number
window:
anyOf:
- type: object
properties:
from:
type: string
to:
type: string
endReason:
type: string
enum:
- today
- window
- dose_change
required:
- from
- to
- endReason
additionalProperties: false
- type: "null"
days:
type: object
properties:
before:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
after:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
excludedLowAdherence:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
excludedNotTaking:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
required:
- before
- after
- excludedLowAdherence
- excludedNotTaking
additionalProperties: false
adherence:
type: object
properties:
status:
type: string
enum:
- tracked
- not_tracked
floorPct:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
lookbackDays:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
required:
- status
- floorPct
- lookbackDays
additionalProperties: false
levelChange:
anyOf:
- type: object
properties:
estimate:
type: number
ciLow:
type: number
ciHigh:
type: number
standardError:
type: number
includesZero:
type: boolean
required:
- estimate
- ciLow
- ciHigh
- standardError
- includesZero
additionalProperties: false
- type: "null"
slopeChangePerWeek:
anyOf:
- type: object
properties:
estimate:
type: number
ciLow:
type: number
ciHigh:
type: number
standardError:
type: number
includesZero:
type: boolean
required:
- estimate
- ciLow
- ciHigh
- standardError
- includesZero
additionalProperties: false
- type: "null"
preSlopePerWeek:
anyOf:
- type: object
properties:
estimate:
type: number
ciLow:
type: number
ciHigh:
type: number
standardError:
type: number
includesZero:
type: boolean
required:
- estimate
- ciLow
- ciHigh
- standardError
- includesZero
additionalProperties: false
- type: "null"
fit:
anyOf:
- type: object
properties:
n:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
df:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
rSquared:
type: number
residualAutocorrelation:
type: number
hacLag:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
required:
- n
- df
- rSquared
- residualAutocorrelation
- hacLag
additionalProperties: false
- type: "null"
confounders:
type: array
items:
type: object
properties:
medicationName:
type: string
event:
type: string
enum:
- started
- stopped
- dose_change
- paused
- resumed
date:
type: string
required:
- medicationName
- event
- date
additionalProperties: false
required:
- present
- level
- window
- days
- adherence
- levelChange
- slopeChangePerWeek
- preSlopePerWeek
- fit
- confounders
additionalProperties: false
- type: "null"
required:
- kind
- key
@@ -52721,6 +52950,7 @@ components:
- series
- beforeAfter
- levelShift
- segmented
additionalProperties: false
adherence:
type: array