Patients bounce between health systems. KeepBP is the patient-owned blood pressure log that can speak FHIR and produce a chart-ready report — without ever seeing a MyChart password.
What KeepBP is
- A patient-controlled blood pressure log (free for individuals)
- A thin PGHD connector: import → normalize → doctor PDF / FHIR export
- Not a hospital EHR, diagnostic device, or medical advice
Status legend
Live Sandbox Planned
Badges below distinguish general availability, sandbox-verified integrations, and planned work.
Epic / MyChart (SMART on FHIR)
Live Sandbox verified — Import includes a searchable health-system picker covering Epic’s published FHIR R4 production endpoints (~770 unique fhirBase values from open.epic Brands). Default empty search shows the Epic public sandbox plus a short featured list; type ≥2 characters to search the full catalog. Listing ≠ every org enabled for Connect. Parkview Health production read is Live / E2E verified (Connect → fetch → import via the KeepBP Connect production client). Other production orgs still need EPIC_PROD_CLIENT_ID plus org enablement / auto-download; the picker alone does not unlock every MyChart. Production Connect is read-only (BP fetch) — write-back is not claimed in production. If Connect is rejected at another org, CSV import remains the fallback.
Live Render → Epic-hosted egress. KeepBP’s Render host cannot open outbound TCP to some Epic-hosted FHIR proxies (*.epichosted.com). When EPIC_FHIR_EGRESS_* is set in production, server-side SMART discovery, token exchange, and Observation read/write for those hosts route through a Cloudflare Worker egress proxy. Browser MyChart authorize redirects do not need the Worker.
Live Connect → MyChart login verified via that egress path (2026-09-17) for: Johns Hopkins, Cedars-Sinai, Advocate Aurora, Atrium, Intermountain, Mount Sinai, NewYork-Presbyterian, and BJC/WashU. That is not full E2E (no patient logins for fetch → import). Only Parkview is production e2e_verified for Connect → fetch → import.
- Launch: Standalone SMART App Launch (patient) with PKCE
- Scopes requested: Sandbox —
openid,fhirUser,offline_access,launch/patient,patient/Observation.read,patient/Observation.write,patient/Patient.read. Production (Parkview etc.) — read-only by default:openid,fhirUser,launch/patient,patient/Observation.read,patient/Patient.read(no refresh token / write unlessEPIC_PROD_SCOPESoverrides). Write-back stays sandbox until an org enables PEF. - We pull: Blood pressure Observations (and pulse when present)
- We write (patient-controlled): Home BP as US Core vital-signs Observations (panel
85354-9, with automatic retry as separate8480-6/8462-4+ pulse), explicit confirm, KeepBP provenance note. Status: Sandbox / Planned for production filing. The Epic PEF write-back playbook documents the live sandbox code path: retested 2026-09-17, it still returns Epic59189(PEF), so the public sandbox cannot file. Production orgs must enable flowsheet mapping — write scope alone is not enough. - We never pull: Medications, problems, clinical notes, a full chart dump, or your MyChart password
- Tokens: Access tokens stay server-side in the session store (not exposed to browser JavaScript). Disconnect clears them.
- Passwords: Epic hosts login. KeepBP never asks for or stores MyChart credentials.
Export formats
| Format | Status | Use |
|---|---|---|
| Doctor PDF | Live | One-page visit artifact; optional patient/clinician fields |
| CSV / paste import | Live | Works with portal exports you download yourself |
| FHIR Bundle (Observations) | Live | US Core–shaped vital signs from Your account → Download FHIR Bundle |
Other systems
- Live CSV / paste from any patient portal export
- Live Sandbox verified Oracle Health / Cerner SMART R4 read — E2E verified: Connect → fetch → import. Deployment still requires
ORACLE_CLIENT_ID/CERNER_CLIENT_IDafter code Console registration. Production Fetch retest after the 2026-09-17 timeout/parallel-query fixes is parked pending CernerCare login; no new production E2E verification is claimed. - Sandbox Planned Epic Observation write-back — Sandbox / Planned for production filing. See the Epic PEF write-back playbook. Code is live; sandbox write retested 2026-09-17 still returns Epic
59189(PEF), so the public sandbox cannot file. KeepBP surfaces EpicfhirDetail/ OperationOutcome text in the UI when filing fails. - Planned athena and additional SMART endpoints
Buyer proof — FHIR docs & smoke
- Live FHIR Bundle export —
GET /api/export/fhir-bundle(US Core–shaped vital-signs Observations) - Live US Core / Inferno-style smoke — PASS on 2026-09-16 (
scripts/smoke-fhir-bundle.js; 133 checks). Details: docs/inferno-smoke-results.md - FHIR implementation note (scopes, resources, tokens, honest limits): docs/fhir-implementation-note.md
- SMART App Gallery listing draft: docs/smart-app-gallery-draft.md
- Epic org verification (durable SMART / authorize probe vs E2E): docs/epic-org-verification.md — authorize probe ≠ full E2E; only Parkview is
e2e_verified - Epic FHIR egress (Render →
*.epichosted.comvia Cloudflare Worker): docs/epic-fhir-egress.md
For clinics & partners
Interested in a pilot, design partnership, or FHIR write-back discussion? Contact support@bloodpressuretracker.app.