PRODUCT · PM + EMR · 135 TABLES

Every stage of a claim, in one coherent system.

Intake to AR, with nothing stitched in between. Scroll through the real screens — the ones your front desk, your provider, and your biller will live in every day.

01 · INTAKE

The patient record starts right, or nothing downstream works.

Eligibility-ready demographics, guarantor and responsible-party relationships, insurance cards with subscriber logic, and the referral / authorization fields the 837 loops actually need.

  • Full guarantor model. Self, spouse, parent, employer — with the subscriber ID and relationship codes the claim form demands.
  • Multi-insurance. Primary, secondary, tertiary with COB. Order changes and re-sequencing write to the audit log.
  • Eligibility check on save. Real-time 270/271 against the clearinghouse, stored with the patient.
  • Scanned card attached. Front and back images, OCR'd into the policy fields when possible.
exmedic.local / patients / 10482 / edit
Patient
Hernandez, Maria L.
MRN 10482 · DOB 1978-04-12 · F
Status
Eligible Active
Insurance · Order
P1
Aetna PPO · Group 44281
ID W283748201 · Rel Self
270 ✓
P2
BCBS Texas · Group 10923
ID XTA9982451 · Rel Spouse
COB
02 · SCHEDULING

Day, week, month. Providers, rooms, resources. All the same calendar.

No separate "resource scheduler." Rooms, providers, and equipment are all first-class on the grid. Conflicts get flagged, no-shows roll into billable charges when you configure them to.

  • Multi-provider views. Stack up to 8 columns — providers, rooms, or a mix.
  • Visit type templates. Duration, room, billing code, prep time. Drop an appointment and the intake form is pre-wired.
  • Recurring series. Weekly PT, monthly follow-ups. Edit one or edit all.
  • Waitlist & fill. One-click fill a cancellation from the waitlist. Text confirmations go out on save.
exmedic.local / schedule / week
Apr 27 — May 01 · 2026
Mon 27
Tue 28
Wed 29
Thu 30
Fri 01
09:00
09:00 · 20m
Chen, D.
09:00 · 45m
Patel, A.
09:15 · 30m
Rossi, A.
10:00
10:00 · 60m
Johnson, M.
10:15 · 30m
Hernandez, M.
10:00 · 20m
Kim, J.
10:30 · 45m
Nguyen, T.
11:00
11:00 · 20m
Olsen, P.
11:30 · 30m
Harris, L.
11:15 · 15m
Park, S.
12:00
03 · ENCOUNTER

Notes, problem lists, cases — tied to the bill from the start.

Encounters are the bridge from clinical to financial. Start with a SOAP note, attach charges, and the CPT/ICD codes you used flow straight to the claim without re-entry.

  • Structured notes with free text. Templates you can edit; no vendor lock-in on your note library.
  • Problem list & medication reconciliation. ICD-10 coded problems that attach automatically to the encounter's diagnoses.
  • Cases group visits. Injuries, pregnancies, procedures — group encounters, keep the claim story together.
  • E/M code guidance. Time-based or MDM-based, with 2021 guidelines built in. Suggests a level; you choose.
exmedic.local / encounter / 30218 · Hernandez, M. · 2026-04-22
Follow-up · Hypertension
ENC-30218 · Dr. Okafor · 25 min
E/M 99213 suggested
S — Subjective
Pt reports headaches 2x weekly, decreased since lisinopril increase. Sleep 6–7 hrs. No chest pain. Medication adherence good.
O — Objective
BP 134/82 L · 132/80 R · HR 72 · BMI 27.4. Cardiac RRR, no murmurs. Lungs clear.
Problems
I10 · Essential hypertension E66.9 · Obesity unspecified R51.9 · Headache
04 · CHARGE

CPT and ICD-10 entry that doesn't punish the biller.

Fee schedules per contract, modifier validation, NCCI edits, and a "what will this pay?" estimate against your contract table before the claim even leaves.

  • Contract-aware allowed amounts. By carrier, by plan, by year. No more surprises at 835 post.
  • Modifier validation. 25, 59, 51, X-series — rules, not just a dropdown.
  • NCCI edit warnings inline. Unbundled pairs, mutually exclusive codes.
  • Fee-schedule diff. See what this charge would pay on every carrier side-by-side.
exmedic.local / charges / ENC-30218
Charge entry · ENC-30218
Hernandez, M. · Aetna PPO
4 lines
CPT
DESCRIPTION
MOD
FEE
ICD
99213
Office visit, est. pt. · 15 min
$ 135.00
I10
93000
ECG, complete
25
$ 58.00
R51.9
36415
Venipuncture
$ 12.00
I10
80053
Comp. metabolic panel
$ 48.00
E66.9
Billed · Est. allowed (Aetna PPO)
$ 253.00 / $ 186.40
05 · CLAIMS & SCRUBBER

A scrubber that blocks 15+ categories of rejection before submission.

Everything a clearinghouse would bounce back to you — missing NPI qualifiers, taxonomy mismatches, POS/CPT incompatibilities, zero-amount service lines — caught at the source with a clickable fix.

  • Loop-level error reporting. Tells you which 837 loop is wrong, not just "bad data."
  • Carrier-specific rules. Medicare rules differ from commercial. The scrubber knows.
  • Resubmission tracking. Versioning per claim. Who changed what, when, why.
  • HCFA-1500 02-12 PDF. For carriers that still demand paper. Pixel-correct, printable.
exmedic.local / claims / CLM-20260422-0528 / scrub
SCRUBBER · CLM-20260422-0528 2 errors · 1 warning
Subscriber demographics
Name, DOB, gender, relationship code present and consistent.
2010BA
Rendering provider NPI & taxonomy
NPI 1245987321 · Taxonomy 207R00000X · NUCC valid.
2310B
Missing referring provider qualifier
99213 with referral requires DN + qualifier XX. Click to populate from encounter.
2310A
Modifier 25 justification
E/M + procedure on same day with mod 25 — Aetna requires separate diagnosis. Line 2 shares I10.
2400
!
Fee above contracted allowed
99213 billed $135, Aetna allowed $102.40. Will post as write-off.
2400
06 · 837 / 835 · X12 5010

X12 is native, not a plugin.

The 837 builder is part of the core — not a vendor integration. That means you can read the file it produces, diff two versions, and understand why a claim rejected without opening a support ticket with a third party.

  • 837P, 837I. Professional and institutional. Generated from the same claim table.
  • 835 auto-post. ERA parsed, matched, reconciled. Exceptions queued.
  • Readable output. Indented preview of every loop, segment, and element.
  • Clearinghouse-agnostic. SFTP or API to Availity, Change, Office Ally — or anywhere that takes X12.
exmedic.local / claims / CLM-20260422-0528 / 837 — preview
# ISA · Interchange control header
ISA*00* *00* *ZZ*EXMEDIC
*ZZ*AETNA *260422*0930*^*00501
# 2010AA · Billing provider
NM1*85*2*RIVERSIDE FAMILY MED*****XX*1245987321~
N3*1820 Elm Street~
N4*Austin*TX*78704~
# 2010BA · Subscriber
NM1*IL*1*HERNANDEZ*MARIA*L***MI*W283748201~
DMG*D8*19780412*F~
# 2300 · Claim
CLM*CLM-20260422-0528*253.00***11:B:1*Y*A*Y*Y~
HI*ABK:I10*ABF:R51.9*ABF:E66.9~
# 2400 · Service line 1
LX*1~
SV1*HC:99213*135.00*UN*1***1~
DTP*472*D8*20260422~
# 2400 · Service line 2
LX*2~
SV1*HC:93000:25*58.00*UN*1***2~
07 · REPORTS & PROJECTIONS

Named, composable Sets. Four clicks, no SQL.

The power-user data primitive. Save a selection — "Medicare patients seen by Dr. Okafor in March with an unpaid claim over 60 days" — name it, share it, pivot off it.

Aging by carrier
SET · 012
AetBCBSMedCigUHCHum
Collections trend
SET · 003
Q1Q2Q3Q4
Denial reasons
SET · 028
CO-16
28
CO-197
14
PR-27
9
CO-45
6
08 · SELF-HOST

Runs on your server, in your closet or your cloud.

Single-tenant by default. A Postgres database, a Node service, a React frontend, a reverse proxy. That's it. No dependency on our infrastructure for your data to be yours.

  • Docker compose or bare metal. One command up. Upgrade by tagged release.
  • Backups are your Postgres dump. No proprietary archive format. Restore anywhere.
  • HIPAA artifacts included. Risk assessment template, BAA sample, audit log spec.
  • Managed hosting available. Same product, we run the server. Migrate off anytime.
stack.yml · your-practice.exmedic.local
React frontend
Static bundle served from the reverse proxy.
Port 443
Caddy / Nginx
TLS termination, static files, /api reverse proxy.
Proxy
Node / TypeScript API
Business logic, X12 builder, scrubber, reports.
Port 4000
Worker · jobs & schedules
ERA posting, reminders, backups, nightly AR aging.
Queue
Postgres 16
135-table schema. Audit log. Encrypted at rest.
Port 5432
09 · UNDER THE HOOD

A schema refined over 25 years.

The part most software hides. We write it on the box.

Core tables
135
Patient, insurance, charge, claim, ERA, AR, audit.
Scrubber rules
15+
Loop-aware. Carrier-specific. Versioned.
Audit log
1
Every mutation. One stream. One query.
X12 spec
5010
837P, 837I, 835, 270/271. Native, not wrapped.
HIPAA

The compliance part, written down.

No hand-waving. Every artifact you'd hand to an auditor, drafted and delivered at install.

Risk assessment
DOC · 01

64-page template covering administrative, physical, and technical safeguards. Pre-filled for a single-tenant deployment — you edit your specifics.

BAA sample
DOC · 02

Business Associate Agreement template for your clearinghouse, your MSP, and us (if you use managed hosting). Lawyer-reviewed.

Audit log spec
DOC · 03

Every table writes actor, action, before/after, and reason to a single stream. Queryable, exportable, immutable.

See all of this running on your own claims.

45-minute walkthrough. Your data in a sandbox. No slides. No AE.