Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## [1.37.9] — 2026-08-10

### Added

- You can record the data that matters in an emergency: blood type, an organ-donor and an advance-directive status, plus emergency contacts, implants or devices, and a free note. Enter it under Anamnese, the same place the allergies and family history live. The contacts, implants and note are encrypted at rest like the rest of your sensitive record, and every field carries through backup and restore.
- The doctor report can open with a one-page emergency summary a clinician can read at a glance: blood type, severe allergies, current medications, chronic conditions, implants, the advance-directive and organ-donor lines, contacts and the note. The page only appears when you have recorded something for it, and it is part of the report you choose to share, so it travels with the report to the practice rather than sitting somewhere separate.

## [1.37.8] — 2026-08-10

### Added
Expand Down
249 changes: 245 additions & 4 deletions docs/api/openapi.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
openapi: 3.1.0
info:
title: HealthLog API
version: 1.37.8
version: 1.37.9
description: >-
Self-hosted personal-health-tracking PWA — public API surface for the iOS native client and external ingest.

Expand Down Expand Up @@ -932,7 +932,7 @@ paths:
type: number
const: 2
leaves:
maxItems: 93
maxItems: 94
type: array
items:
type: string
Expand Down Expand Up @@ -1037,7 +1037,7 @@ paths:
type: number
const: 2
leaves:
maxItems: 93
maxItems: 94
type: array
items:
type: string
Expand Down Expand Up @@ -6842,6 +6842,93 @@ paths:
$ref: "#/components/schemas/ErrorEnvelope"
"422": *a3
"429": *a4
/api/anamnesis/emergency:
get:
tags:
- Insights
summary: Read the emergency profile
description: "Returns the caller's emergency (Notfalldaten) profile: blood type, organ-donor and advance-directive
declarations, and the decrypted emergency contacts, implants/devices and ICE note. Free text decrypts
fail-soft."
responses:
"200":
description: The emergency profile (fields null when unset).
content:
application/json:
schema:
$ref: "#/components/schemas/GetEmergencyProfileResponse"
"401": *a1
"422": *a3
"429": *a4
patch:
tags:
- Insights
summary: Update the emergency profile
description: Partial edit of the emergency profile on the caller's own record. Free-text fields are AES-256-GCM
encrypted before persistence. Audits as `anamnesis.emergency.update`.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
bloodType:
anyOf:
- type: string
enum:
- A_POS
- A_NEG
- B_POS
- B_NEG
- AB_POS
- AB_NEG
- O_POS
- O_NEG
- UNKNOWN
- type: "null"
organDonor:
anyOf:
- type: string
enum:
- YES
- NO
- UNKNOWN
- type: "null"
advanceDirective:
anyOf:
- type: string
enum:
- EXISTS
- NONE
- UNKNOWN
- type: "null"
contacts:
anyOf:
- type: string
maxLength: 2000
- type: "null"
implants:
anyOf:
- type: string
maxLength: 1000
- type: "null"
note:
anyOf:
- type: string
maxLength: 2000
- type: "null"
additionalProperties: false
responses:
"200":
description: The updated emergency profile.
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateEmergencyProfileResponse"
"401": *a1
"422": *a3
"429": *a4
/api/coach/about-me/questions:
get:
tags:
Expand Down Expand Up @@ -16157,7 +16244,7 @@ components:
type: number
const: 2
leaves:
maxItems: 93
maxItems: 94
type: array
items:
type: string
Expand Down Expand Up @@ -29624,6 +29711,160 @@ components:
- data
- error
additionalProperties: false
GetEmergencyProfileResponse:
type: object
properties:
data:
type: object
properties:
bloodType:
anyOf:
- type: string
enum:
- A_POS
- A_NEG
- B_POS
- B_NEG
- AB_POS
- AB_NEG
- O_POS
- O_NEG
- UNKNOWN
- type: "null"
organDonor:
anyOf:
- type: string
enum:
- YES
- NO
- UNKNOWN
- type: "null"
advanceDirective:
anyOf:
- type: string
enum:
- EXISTS
- NONE
- UNKNOWN
- type: "null"
contacts:
anyOf:
- type: string
- type: "null"
contactsUnreadable:
type: boolean
implants:
anyOf:
- type: string
- type: "null"
implantsUnreadable:
type: boolean
note:
anyOf:
- type: string
- type: "null"
noteUnreadable:
type: boolean
required:
- bloodType
- organDonor
- advanceDirective
- contacts
- contactsUnreadable
- implants
- implantsUnreadable
- note
- noteUnreadable
additionalProperties: false
error:
type: "null"
meta:
type: object
properties:
requestId:
type: string
additionalProperties: false
required:
- data
- error
additionalProperties: false
UpdateEmergencyProfileResponse:
type: object
properties:
data:
type: object
properties:
bloodType:
anyOf:
- type: string
enum:
- A_POS
- A_NEG
- B_POS
- B_NEG
- AB_POS
- AB_NEG
- O_POS
- O_NEG
- UNKNOWN
- type: "null"
organDonor:
anyOf:
- type: string
enum:
- YES
- NO
- UNKNOWN
- type: "null"
advanceDirective:
anyOf:
- type: string
enum:
- EXISTS
- NONE
- UNKNOWN
- type: "null"
contacts:
anyOf:
- type: string
- type: "null"
contactsUnreadable:
type: boolean
implants:
anyOf:
- type: string
- type: "null"
implantsUnreadable:
type: boolean
note:
anyOf:
- type: string
- type: "null"
noteUnreadable:
type: boolean
required:
- bloodType
- organDonor
- advanceDirective
- contacts
- contactsUnreadable
- implants
- implantsUnreadable
- note
- noteUnreadable
additionalProperties: false
error:
type: "null"
meta:
type: object
properties:
requestId:
type: string
additionalProperties: false
required:
- data
- error
additionalProperties: false
GetCoachAboutMeQuestionsResponse:
type: object
properties:
Expand Down
Loading
Loading