EpicGym is a local recreation of the Epic EHR interface. Agents open charts, review allergies, sign orders and write notes for synthetic patients. A grader scores the workflow completed; those scores are the reward signal for RL and evaluation.
$npm ci && npm run dev
Charts are JSON fixtures, validated on load and versioned in the repository. Layouts follow reference charts observed read-only under authorisation. Identities, contact details and clinical content are independently synthetic.
Patient Lookup, Patient Lists, Chart Review, Problem List, Allergies, Orders, Notes, History, Immunisations, Demographics. Seven chart-review tabs, a resizeable split, one chart tab per patient, facet filters, and order signing that blocks until the allergy list is reviewed.
Observations are the chart as JSON. Actions are the semantic operations a clinician performs. env.browser_url opens the exact session the agent is driving.
Undone progress returns its reward. A repeated action earns nothing. A malformed action costs 0.05 and consumes a step. Goals check workflow mechanics, not clinical judgement.
The clinic-cohort fixture holds two patients with the same name; its identify-patient task requires finding the correct one, reading its note, reviewing its allergies and returning to the original tab. Checks are scoped to patient IDs, so work in the wrong chart does not count.
Review a section, sign an order, save a note. Actions are typed and registered with unique ownership. /step is the strict interface; /attempt records a rejected action, charges 0.05 and consumes a step.
A separate Chromium instance. Observations are a (768, 1345, 3) uint8 array plus the task prompt. Five action kinds; every pointer action is charged.
npm ci && npm run dev, then open 127.0.0.1:5173. F8 opens the training console. Every mutation stays in the local simulation; no Epic credentials and no external EHR services.