Interbox

Healthcare integration engine

Interbox

Own your integrations like the rest of your stack — reviewed in PRs, tested in CI, versioned in your own repo.

Every message is traceable end to end, and when one fails the AI assistant drafts the mapping, so the fix ships as a diff you review.

01 · Observe

Be confident in your pipelines

One screen for ingestion, mapping and delivery — live throughput, queue depth at every stage, and the health of Postgres, Aidbox and the engine. Nothing is dropped; every message is accounted for.

  • Real-time throughput and error rate
  • Queue depth for received, processed, sent, error and deferred
  • Postgres, Aidbox and engine health at a glance
Interbox ops Interbox / Dashboard live · 3 workers TV
Ingestion
24msg/s
+6%
Mapper
23msg/s
+5%
Sender → Aidbox
23msg/s
+4%
Error rate
0.4%
-0.1%
Throughput · 60s
403020100
-59s-44s-29s-14s-0s
inboundmappedsenterrors
Queue depths
received412
processed96
sent84.6k
error23
deferred11
active partition542 rows
Top error kinds · 24hView all
unmapped_code127
validation_error48
mapping_error31
prerequisite_missing19
aidbox_5xx6
System health
Postgres12/100 conns · 4.2 GB3ms
Aidboxyour-org.aidbox.app8ms
Enginethreads 3 (1·1·1) · up 6d 4h18% cpu
Mapping coverage137 unresolved94%
Workspaceyour-org/integrationsremote
02 · Search

Find any message in seconds

Facet by status, source and format, then drill into any failure to see where it stopped and why. A message flagged error keeps its cause attached; one that's deferred is parked to revisit — you retry on your own schedule.

  • Faceted search across status, source, format and error kind
  • Query bar for ad-hoc filters
  • Open the raw payload and inspect its FHIR output
Interbox ops Interbox / Messages live · 3 workers TV
status:error source:ed-system⌘K
Facetsclear
status
received412
processed96
error23
deferred11
source
Hospital EHR600
Clinic EHR320
ED system180
Reference lab100
format
HL7v2560
X12360
C-CDA180
FHIR100
error_kind
unmapped_code127
validation_error48
mapping_error31
23 results
messagestatusreceivedformatsourcepatient
0038error9sADT^A08ED systemWalker, Tom
0033error22sClaim 837Clinic EHRNakamura, Yui
0026error44sORU^R01Reference labBrown, Sara
0021error1mC-CDAHospital EHRMüller, Hans
0018error1mADT^A03ED systemPatel, Aisha
0012error2mBundleRegistryLee, Chen
0007error3mADT^A08Hospital EHROkafor, Noah
03 · Resolve

Build and expand your local code dictionary

Unmapped local codes are caught and queued instead of dropped. Pick a target — LOINC, SNOMED, a FHIR value set — approve it, and reprocess the parked messages. The built-in AI assistant reads the failing message and proposes the fix for you.

  • Concept maps translate local codes to standard terminologies
  • Approve a target and reprocess deferred messages in place
  • AI assistant diagnoses failures and suggests the mapping
Interbox ops Interbox / Code mappings live · 3 workers TV
Local Dx → SNOMED CTHL7v2
91 open
Lab codes → LOINCX12
28 open
Race → OMB CDCC-CDA
12 open
Facility → LocationFHIR
6 open
Local Dx → SNOMED CTHL7v2
ConceptMap/local-dx-snomed
Export Edit metadata
Sending application
HOSPITAL-EHR
Sending facility
MAIN
Mapped
1389 (94%)
Open
91
Unmapped 91Mapped 1389FHIR resource
91 unmapped codesPick a target, then Approve.
Local codeDisplayTargetMessages
DM-T2-UCType 2 DM, uncontrolledPick target… 18 Pick target
ANEMIA-CXAnemia, unspecified271737000 Anaemia 12 Approve
CP-ATYPAtypical chest painPick target… 9 Pick target
HTN-2Essential hypertension59621000 Hypertensive disorder 7 Approve
UTI-ACAcute cystitis68566005 UTI 5 Approve
COPD-EXCOPD exacerbationPick target… 4 Pick target
Assistant claude-opus-4
6 messages in context
Why are inbound ADT^A08 messages failing?
23 failed with mapping_error — the facility code "CLINIC-77" isn't in facility-location. Map it to a Location and the parked rows can be retried.
Resolve it.
All 23 carry it in PV1-3.4. Closest match in Aidbox is Riverside Family Clinic — NPI 1487654321, same sending application. Proposed entry:
source  CLINIC-77
target  Location/riverside-fc
equiv   equivalent
Approve it and reprocess.
Entry written to ConceptMap/facility-location. 23 deferred messages requeued — 23 sent, 0 errors.
Message the assistant… / commands
04 · Own

Your mappings are code you own

Every converter is versioned TypeScript in your own Git repo — reviewed in PRs, tested in CI, hot-reloaded the moment you push. No proprietary DSL, no black-box visual mapper, and you can always write your own source or sender.

  • Push to your branch, pull from the console, hot-reload
  • Unit tests next to your mappers, run in CI
  • AI assistance and format specs embedded in the console
Interbox ops Interbox / Repository live · 3 workers TV
main a3f1c92 · Tanya Volkov · 8m ago hot-reload active Pull now Open on GitHub
Code Commits 7 Diff 2
integrations18 files
src/
├── index.ts
├── pipelines/
│   ├── index.ts
│   └── intake-to-aidbox.ts
└── mappers/to-fhir/
    ├── index.ts
    ├── patient.ts
    ├── encounter.ts
    ├── observation.ts
    ├── coverage.ts
    ├── condition.ts
    ├── datatypes/
    │   ├── humanname.ts
    │   ├── identifier.ts
    │   └── address.ts
    └── support/
        └── datetime.ts
test/
└── mappers.test.ts
package.json
mappers/to-fhir/patient.tsa3f1c92 VS Code
// PID → FHIR Patient
import { PID } from "@healthsamurai/interbox/hl7v2";
import { toIdentifier } from "../datatypes/cx-identifier";
import { toHumanName } from "../datatypes/xpn-humanname";

export function toPatient(pid: PID): Patient {
  const patient: Patient = { resourceType: "Patient" };

  patient.identifier = pid.$3_identifierList
    ?.map(toIdentifier).filter(Boolean);

  patient.name = pid.$5_patientName
    ?.map(toHumanName).filter(Boolean);

  if (pid.$7_dateOfBirth)
    patient.birthDate = toDate(pid.$7_dateOfBirth);

  if (pid.$8_administrativeSex)
    patient.gender = GENDER[pid.$8_administrativeSex];

  return patient;
}
05 · Connect

Connect any source

MLLP, HTTP and SFTP connectors bring in HL7v2, X12, C-CDA and FHIR — each written to a durable queue and handled the same way. Simulate a raw message to test a connector before it goes live.

  • MLLP, HTTP and SFTP connectors
  • HL7v2, X12, C-CDA and FHIR out of the box
  • Per-facility throughput and connection status
Interbox ops Interbox / Sources live · 3 workers TV
MLLPhospital-mllp
10.42.1.18:66612 fac
Hospital EHR · Main38/m
Hospital EHR · Lab6/m
MLLPclinic-mllp
10.42.3.7:66611 fac
Clinic EHR · Ambulatory32/m
MLLPed-mllp
10.42.4.21:66621 fac
ED system9/m
HTTPlab-fhir-http
planned connector
SFTPregistry-x12-sftp
planned connector
MLLP
hospital-mllponline
10.42.1.18:6661 · TLS
View messages Test
Protocol
MLLP · TLS
Host
10.42.1.18
Port
6661
Facilities
2
Simulate message
Paste a raw message here — HL7v2, X12, C-CDA or FHIR… MSH|^~\&|SENDER|FACILITY|…
Send
Throughput
Facilities2
Total messages1,820,442
Last minute44/m
Last hour2,110/h
06 · Reference

The specs, built in

Browse HL7v2 segments, fields and tables right inside the console — the same reference your mappers lean on and the AI assistant reads when it writes a converter.

  • Segments, data types and tables
  • Field cardinality, length and usage
  • The spec the AI assistant reads, one tool-call away
Interbox ops Interbox / Spec reference live · 3 workers TV
HL7v2 · v2.5.1 Copy link
Filter spec…
Messages8
Segments130
MSH
EVN
PID
PV1
OBX
NK1
OBR
IN1
DG1
Data types84
Tables412
PIDPatient IdentificationSegment
Fields10
PosFieldTypeCardLenUsage
PID-1Set ID - PIDSI0..14O
PID-3Patient Identifier ListCX1..*R
PID-5Patient NameXPN1..*R
PID-6Mother's Maiden NameXPN0..*O
PID-7Date/Time of BirthDTM0..1O
PID-8Administrative SexCWE0..1O
PID-10RaceCWE0..*O
PID-11Patient AddressXAD0..*O
PID-13Phone Number - HomeXTN0..*B
PID-14Phone Number - BusinessXTN0..*B
Components

Where Interbox sits

Interbox sits between the systems that send data and your FHIR server. A built-in source and sender bracket the mapper you own — and any message that can't proceed drops to the dead-letter queue below instead of being lost.

Upstream source systems
Hospital EHR
HL7v2 · MLLP
Clinics & ED
HL7v2 · MLLP
Reference lab
X12 · SFTP
Partner API
C-CDA / FHIR · HTTP
Interbox integration engine
Source
built-in · parses onto the queue
Queue
Postgres · one row + status per message
Mapper
your code · typed segments, concept maps
Sender
built-in · one FHIR Bundle, content-hashed
Downstream FHIR destination
Aidbox
native · content-hashed
Any FHIR server
transaction Bundle

Your apps, analytics and exchange then read standard FHIR.

Dead-letter queue

Every error and deferred message collects here, off the main flow — searchable, with its cause attached.

fix & reprocess → back to the queue
Message lifecycle

A status on every message

The happy path is three steps. A message that can't proceed is flagged error — and you can defer any error to decide on it later. Nothing is dropped.

received

Accepted and written to the durable queue.

processed

Converted to FHIR, ready to deliver.

sent

Delivered to the FHIR server.

error

Bad data the message can't recover from. Tagged with a kind — unmapped_code, validation_error, mapping_error — plus its cause, so you can classify and triage it.

→ fix and reprocess, or defer it

deferred

You move an error aside by hand, without resolving it — postponing the decision when the fix isn't obvious, like an upstream problem.

→ revisit whenever you're ready

Pricing

Simple, predictable licensing

Build for free in development. Go to production standalone, or at a lower rate alongside an Aidbox license.

Developer
Free for development
 

The full engine and SDK for building and testing — no PHI.

  • All built-in stages and your own mappers
  • Operations UI, AI assistant, hot-reload
  • Synthetic / non-PHI data only
With Aidbox
Best value
$1,200 / mo
or $12,000 / year

The same Interbox at a lower price when you buy it together with an Aidbox license.

  • Production use with PHI
  • Any FHIR server, native to Aidbox
  • Lower rate with an Aidbox license
Standalone
$1,900 / mo
or $19,000 / year

Run Interbox in production against any FHIR server.

  • Everything in Developer
  • Production use with PHI
  • Any FHIR transaction-bundle server
Engagement & Team
Want us to build it with you?

Our engineers work alongside yours — converters for your message types, EHR wiring, operations handoff. You ship faster; your team owns it after.

Custom scope — pricing on request.
FAQ

Questions, answered

Talk to us about your integrations
Tell us about your sources and your FHIR destination — we'll come back with a concrete shape for the work.
AddressAddress
Health Samurai Inc. 1891 N Gaffey St Ste O, San Pedro, CA 90731

By submitting the form you agree to Privacy Policy and Cookie Policy.