feat(mental-health): make the screener score rows server-owned COMPUTED measurements

Each completed PHQ-9 / GAD-7 administration already projects its total
onto a PHQ9_SCORE / GAD7_SCORE measurement row (unit score, linked via
externalId assessment:<id>). Those rows were attributed MANUAL — a
client-writable source. The projection is a server-derived value, so it
now writes source COMPUTED, the same server-owned source RECOVERY_SCORE
uses: no client write surface can attribute COMPUTED, so a forged score
trend point cannot enter through the measurement POST. Migration 0225
re-attributes the existing assessment-linked projection rows; a score a
user typed into the generic measurement form keeps MANUAL. OpenAPI
description updated and the spec regenerated.
This commit is contained in:
Marc-André Bombeck committed 2026-07-05 14:54:17 +02:00
1 parent f7920d81a6
commit b6aedfeb61
7 files changed
+64 -10

No files matched your search

+3 -2
View File
@@ -8131,8 +8131,9 @@ paths:
tags:
- Mental health
summary: Record a completed PHQ-9 / GAD-7 screener
description: Stores one administration (item answers encrypted) and writes the derived total as a PHQ9_SCORE /
GAD7_SCORE measurement. On a positive PHQ-9 item-9 the response carries the locale-aware crisis-resource set.
description: Stores one administration (item answers encrypted) and writes the derived total as a server-owned
PHQ9_SCORE / GAD7_SCORE measurement (source COMPUTED — never client-writable). On a positive PHQ-9 item-9 the
response carries the locale-aware crisis-resource set.
requestBody:
content:
application/json: