a58f613bcd
Sub-project 7 adds serialize_837.py so a parsed ClaimOutput can be regenerated as a complete X12 837P file (the shape of docs/prodfiles/claims/). Unblocks the SP6 resubmit lane end-to-end and adds a 'Download 837' affordance on the claim drawer. Approach: hybrid (fresh envelope + selective body rebuild). Stable segments (provider/subscriber/payer hierarchies) pass through from claim.raw_segments; editable segments (CLM, REF*G1, HI, SV1, DTP*472) are rebuilt from canonical ClaimOutput fields so post-parse edits propagate to the output. Out of scope: 997 ACK, claim <-> TA1/999 linking, in-app claim editing UI, multi-CLM envelope batching, Inbox/drawer redesign.