Skip to content

Last EHR v0.2.2: the adoption release

Choose a tag to compare

@cbetz cbetz released this 13 Jul 02:06
· 173 commits to main since this release
5a42374

Make it runnable, measurable, and honest

v0.2.2 adds no clinical tools on purpose. It makes Last EHR consumable: a pull-and-run image, browser-level proof of the approval flow, a privacy posture that matches the code, and a demo that ends with somewhere to go.

Pull and run the zero-key synthetic lab

git clone https://github.com/cbetz/last-ehr.git && cd last-ehr
npm install
docker compose -f docker-compose.yml -f docker-compose.ghcr.yml up -d
FHIR_BACKEND=hapi FHIR_BASE_URL=http://localhost:8080/fhir npm run fhir:wait
FHIR_BACKEND=hapi FHIR_BASE_URL=http://localhost:8080/fhir npm run seed

Then open http://localhost:3000/demo. ghcr.io/cbetz/last-ehr is multi-arch (amd64 + arm64) and bakes the quickstart and scripted-demo UI on, with analytics, Medplum auth, and model keys off. No model API key, no account, synthetic patients only.

Proof, not promises

  • Browser e2e for the approval flow (Playwright, scripted model only): the proposal card renders, a rejected write leaves HAPI untouched, an approved write persists exactly one session-tagged Observation, asserted over FHIR REST in CI.
  • FHIR Agent Safety Eval (npm run eval): a disposable synthetic workflow runner covering search, chart reads, proposal gating, approved and denied writes, chart association, and cleanup, with a scrubbed JSON report. It proves workflow mechanics, not clinical correctness.
  • MCP Local Lab (npm run mcp:demo): checkout-only, loopback HAPI, fixture-restricted read tools for Claude Code or Cursor with zero FHIR credentials.

A more honest surface

  • PostHog is now explicit-event-only: no autocapture, no automatic pageviews, no session recording, memory persistence with no cookies. There is a /privacy page that describes what the hosted site actually collects.
  • Server-side chat error logs record error type, message, and status only; raw provider errors are never logged because they can carry the full request body, including chart context.
  • Positioning now leads with the point: add human-approved AI writeback to your FHIR app. Backend claims are tightened to match reality: Medplum is supported today, the local HAPI stack is synthetic evaluation only, other backends go through the adapter contract.

Get involved

The repo is now a GitHub template. Six good first issues are open, and three Discussions are waiting for your input: which FHIR backend next, what was unclear in the demo, and what the reusable piece should be.

Full details in the changelog.