- Shipped
- August 27, 2026 at 6:14 AM UTC
- Author
- Kamo
- Commit
- 5a801ad
The three clinical write controllers each grew their own string/uuid/integer/ date helpers within a week of each other — identical except for which ones each file happened to need. That is the shape this codebase has already been bitten by twice: the market picker went wrong in two copies the same way, and the permission section list in two more. Two behaviours are now stated once and tested. Absent, blank and the literal string "null" all mean "not supplied" — a form submitting an untouched field sends "", a client stringifying an absent value sends "null", and treating either as a value is how a birth date becomes the epoch. A malformed value throws rather than becoming null: silently dropping "3o" from a quantity produces a prescription with no days supply and no complaint. Zero is a value and not an absence, which matters most on a claim line — a payer paying nothing is an adjudication, and reading it as "not supplied" leaves the claim open forever. Money stays a decimal string and int64 ids survive past 2^53, both with a test that fails if that stops being true. The claim-line and posting builders stay in the billing controller. They read lists of objects rather than one value, and a list-of-maps reader in the shared class would be a shared helper with exactly one caller. A guard fails the build if any clinical controller defines a parser of the same name again. Two copies of a value reader are two answers to "what does a blank field mean".