mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-12 14:16:12 +00:00
Carry medication dose changes through backup and restore
The titration history was classified as backed up and travelled with nothing. An account restored from a backup showed the current dose and no record of how it got there: the ramp, the reductions, the note the prescriber gave for each step. For a long-running drug that history is often the more clinically interesting half. Export writes the rows nested inside their drug, ordered by effectiveFrom, so a portable restore that mints fresh ids needs no remap. The note follows the contract the side effects already use: a portable export decrypts it for a human reader, a disaster-recovery export carries the ciphertext verbatim, and a restore never writes it into the legacy plaintext column. Order is the content here, not decoration. Two rows on the same drug in the same unit, 5 mg then 10 mg, describe a ramp; the same two rows returned in the other order describe a taper. Counting them back cannot tell those apart, so the round-trip test asserts the sequence and the values, not the count. MedicationDoseChange moves from the coverage-pending register into the two-ended list, which makes the round-trip registry incomplete until a row is seeded and counted. That is a compile error, not a review note.
This commit is contained in:
1 parent
aca5b2d30b
commit
5e0994aab9
6 files changed
+152
-2
No files matched your search
@@ -644,6 +644,26 @@ const handler = apiHandler(
|
||||
: {}),
|
||||
})),
|
||||
},
|
||||
// The titration steps, nested for the same reason. The note
|
||||
// takes the measurement contract next to it: ciphertext when
|
||||
// the file has it, legacy plaintext encrypted on the way in,
|
||||
// and the plaintext column left null either way.
|
||||
doseChanges: {
|
||||
create: m.doseChanges.map((d) => ({
|
||||
...(d.id ? { id: d.id } : {}),
|
||||
effectiveFrom: new Date(d.effectiveFrom),
|
||||
doseValue: d.doseValue,
|
||||
doseUnit: d.doseUnit,
|
||||
note: null,
|
||||
noteEncrypted:
|
||||
d.noteEncrypted == null
|
||||
? encryptNote(d.note ?? null)
|
||||
: decodeEncryptedBytes(d.noteEncrypted),
|
||||
...(d.createdAt
|
||||
? { createdAt: new Date(d.createdAt) }
|
||||
: {}),
|
||||
})),
|
||||
},
|
||||
},
|
||||
});
|
||||
restoredMedicationIds.add(created.id);
|
||||
|
||||
Reference in new issue
Block a user