Integrations Roadmap — Seven Tracks¶
Living checklist for Onset integration work. Staging smoke tests reference ENVIRONMENTS.md.
Status overview¶
| Track | Phase | Status |
|---|---|---|
| Onset Clinic sync | A | Shipped (v1 loop + check-ins) |
| Apple Health + cycle | B | Shipped (menstrual read + import UX) |
| Watch / Widgets / Shortcuts | D | Shipped; performance Shortcut fix |
| Calendar export | C | Shipped (time blocks export) |
| Lab PDF polish | C | Shipped (cloud re-parse, biomarkers, portal badge, tests) |
| Affiliate / reorder | D | Shipped (inventory search + UTM; handout affiliate existing) |
| LastVet outbound | E | Scaffold (tables + Settings UI; API pending) |
Track 1 — Onset Clinic sync¶
Shipped¶
- [x] A1 Clinic share closed loop:
claimClinicShare→completePostConnectSync→ practitioner refresh + data push - [x] A2 Unified Care team hub (
CareTeamView) in More - [x] A3
protocolEngineV2 = true - [x] A4
fitnessProtocolsenabled in production builds - [x] A5
shared_checkinsmigration + iOS upload + portal daily journal panel
Staging smoke test¶
- Install Onset TestFlight or Debug build (see ENVIRONMENTS.md)
- Claim a clinic org code via Care team → Share with clinic
- Confirm patient appears on clinic.theonset.app
- Log daily journal → verify Daily journal card on patient detail
Remaining (A+)¶
- [ ] Multi-practitioner connection list on iOS
- [ ] Implement or remove "Full" share level Apple Health copy
Track 2 — Apple Health + menstrual cycle¶
Shipped¶
- [x] B1
menstrualFlowin HealthKit authorization - [x] B2 User-initiated import in
CycleTrackingEditorSheet - [x] B4 Updated Health privacy strings (Info.plist)
- [x] B5 Authorization probe checks menstrual or step samples
Smoke test¶
- Connect Apple Health on device
- Cycle settings → Import period dates from Apple Health
- Confirm cycle day/phase updates from imported start date
Track 3 — Watch / Widgets / Shortcuts¶
Shipped¶
- Watch app, widgets, Live Activities, four App Intents (existing)
- [x] D1 Start performance timer intent sets default
performanceEventTime - [x] D2 Complete item
RoutineItemEntitydisambiguation in Shortcuts - [x] D3 Interactive widget — Complete next in current block (medium)
- [x] D6 Widget snapshot refresh after clinic protocol v2 apply
Pending¶
- (none for v1 companions polish)
Track 4 — Calendar export¶
Shipped¶
- [x] C1
CalendarExportService+NSCalendarsUsageDescription - [x] C2 Settings → Export daily time blocks (Wake/Morning/Midday/Evening/Night)
- [x] C3 Performance prep one-shot export from prep sheet
- [x] C4 Per-block toggles + delete exported events
Track 5 — Lab PDF import¶
Shipped¶
- [x] C5 Share lab to practitioner immediately on save (when consent on)
- [x] C6 Warning when PDF exceeds 3 cloud-parse pages
- [x] C7 Re-analyze with cloud on empty OCR imports (+ stored page images for repair)
- [x] C8 Expanded biomarker patterns (ApoB, insulin, ferritin)
- [x] C9 Portal parse-source badge on shared lab sets
- [x] C10 OCR fixture tests (
LabResultParserTests)
Pending¶
- (none for v1 lab polish)
Track 6 — Affiliate / reorder¶
Shipped¶
- [x] D7/D9 Inventory row Find opens neutral product search (Amazon)
- [x] D8 UTM attribution on inventory product search URLs
- Clinic invite handout affiliate (existing via
affiliate_shortcodeon handouts)
Track 7 — LastVet outbound share¶
Shipped¶
- [x] E2 Supabase migrations:
patient_aggregator_connections,data_share_events - [x] E3/E4
LastVetSyncServicescaffold + Settings → Connected health records
Pending (requires LastVet team)¶
- [ ] E1 LastVet OAuth server +
/me/syncadmitssource=onset - [ ] Token exchange on
onset.theonset.app/lastvet/callback - [ ] Full payload sync + background refresh
- [ ] E6 7-day pilot soak
Template for future aggregators: same tables + patient-initiated OAuth + append-only audit.
Recommended merge order¶
- Clinic loop + lab share-on-save
- Protocol v2 + fitness prod (requires TestFlight migration validation)
- Health cycle + Calendar + LastVet scaffold
- Lab polish + companion polish + commerce
Compliance guardrails¶
- Wellness organizer framing only — no advice, scores, or warning language
- Calendar events use neutral block titles
- Product search is user-initiated outbound links, not endorsements
- Clinic channel and aggregator channel stay separate (ADR-001)