Visit ends. Note signs.
You finish documenting in the SOAP template; ⌘+Enter signs the encounter. Gladiator reads the note and flags ICD-10, CPT, and E/M level with a documentation-gap check, in line, before the chart closes.
The EHR your hospital colleague uses — the same FHIR, the same SMART-on-FHIR, the same X12 EDI suite, the same standards their MyChart speaks — priced for a practice that owns itself. From $449 a clinician, a month. Same-day onboarding.
Epic-grade interoperability, ambient AI documentation, and full revenue-cycle billing — built for the independent practices Epic doesn't sell to. Same standards. Same data. None of the enterprise tax.
A scheduling app. An EHR. A billing service. A FHIR gateway. An audit log. Each on its own invoice. None on the standards the hospital across the street is built on — so the patient who sees you Tuesday and the cardiologist Thursday lives in two charts that never meet.
Scheduling, charting, billing — one app. FHIR R4, SMART-on-FHIR, Bulk Data — the same standards the hospital across the street is built on. Your notes flow into their chart. Their labs flow into yours. Same patient, both practices, finally on the same page.
The schedule grid is the chart's front door. Click a slot, walk in. The slot becomes a snapshot, the snapshot becomes a note, the note becomes a charge — no tab dance, no second app.
Reusable text shortcuts. SOAP sections that auto-section. ⌘+N opens a fresh note inside the chart you were already in. ⌘+Enter signs and locks. Coding Gladiator reads the note before it leaves your screen and pre-stages the codes for the claim.
Problems, medications, allergies, vitals, recent encounters — one screen, no tabs. The allergy chip is the one place in the entire product where status is communicated by color, and even then it earns its single navy pill the same way an Epic banner does.
Results from the lab, messages from patients, refill requests, faxed documents. Folders for each, routing to the clinician on the chart. Status is read or unread, by typographic weight, not by a colored badge.
You finish documenting in the SOAP template; ⌘+Enter signs the encounter. Gladiator reads the note and flags ICD-10, CPT, and E/M level with a documentation-gap check, in line, before the chart closes.
The charge picks up the prior-auth number, the claim builder lays out the X12 envelope, validators run NPI and taxonomy and payer-specific quirks, the batch ships to your clearinghouse on the next cycle.
The ERA lands. The allocator posts to charges; WO PLBs pro-rate when partial. Denials draft appeal letters automatically. Every CARC 197 / 198 trains the rule set so the next claim wins.
ICD-10, CPT, and E/M, picked at sign with maximal-coding rationale persisted to the encounter. Documentation-gap check before the chart closes. When a CARC denial comes back, the Gladiator drafts the appeal letter from the original note — and every denial retrains the rule set so last week's loss is next week's win.
The 278 inquiry goes out the moment a CPT trips a needs-auth rule. The 278 response stamps the auth number onto the 837P automatically — no claim leaves without it. If the payer denies anyway, the appeal drafts itself from the original chart.
The 835 lands. The allocator walks every line item, posts payments and adjustments to the right charges, honors PLB reversals — and pro-rates the WO PLB when partial recoupment is less than the prior payment. Totals come out to the cent, every time.
When the 835 lands and the patient owes a residual balance, heme drafts a statement, emails it from your practice, and embeds a hosted checkout link backed by Stripe. The payment posts back to the same charge automatically — no portal, no second-system reconciliation.
Every dollar lives on a single ledger: charge created at sign, claim built, payments posted (insurance via 835, patient via Stripe), adjustments and reversals applied with audit-grade provenance. AR aging is a query, not a report you wait for.
Your patient sees the cardiologist at the hospital on Thursday. Her workup, labs, imaging, and consult note — already shaped as FHIR. heme reads them on Monday morning, before she walks in. Your visit ships back the same way: a FHIR bundle the hospital's Epic accepts without re-keying.
SMART-on-FHIR backend services. Asymmetric RS256 keys, a JWKS endpoint heme exposes for verification, RFC 7591 dynamic client registration, and per-route scope gates. No shared secrets, no IP allowlists, no calling somebody's ops team to whitelist your machine.
Productivity by clinician. AR aging by bucket. Active panel by clinician. Gladiator ROI — dollars recovered through coding and appeals against the baseline. No batch jobs, no overnight refresh; the numbers come from the same ledger that just posted the last payment.
heme runs on InterSystems IRIS, and every practice gets its own namespace — its own database, its own globals, its own indices. Cross-practice access isn't a permission, it's a physical impossibility. The system namespace holds the practice catalog; the rest never see each other.
The audit log lives at the storage layer, not the route layer. Every persistence call records subject, actor, action, outcome, and IP — and the FHIR Provenance resource carries the same chain into anything heme exports. HIPAA-aligned by construction.
A practice owner fills the signup form, runs Stripe Checkout, and four things happen automatically: an IRIS namespace is provisioned in the database engine, schema migrations run against it, an admin user is created with a temporary password, and the welcome email goes out. No operator SSH, no implementation contract.
The system-admin surface lists every practice with its subscription status, seat usage, and onboarding state. Stripe events flow into an audit-grade event log. Failed onboardings retry from the UI. Seat usage rolls up to a single MRR number — the operator sees the whole business from one screen.
1 clinician
per clinician / month, billed annually
2–10 clinicians
per clinician / month, billed annually
11+ clinicians
Custom — talk to us
Tell us a little about you. We'll provision your own IRIS namespace, create your admin account, and send a welcome email with a sign-in link. The whole onboarding runs in under a minute.