Quick Start Guide

Get up and running with InteropSuite in minutes.

1

Install the Package

dotnet add package InteropSuite
2

Add Using Statement

using InteropSuite.Fhir.Engine;
3

Activate Your License

Interop.ActivateLicense(licenseKey);
4

Transform Your Data

var result = await Interop.HL7ToFhirAsync(hl7Message);

Data Paths

InteropSuite stores all data relative to your application directory.

Default Root Path

{workingDir}/interopsuite/ Where {workingDir} is the directory from which you run your application

output/fhir/

FHIR R4 bundle output organized by validation status:

  • validated/ — Bundles that passed FHIR validation
  • errors/ — Bundles with validation issues
{workingDir}/interopsuite/output/fhir/{validated|errors}/{yyyy}/{MM}/{dd}/*.json

dashboard/ Optional

TraceServer session data. Created when Interop.DashboardEnabled = true.

{workingDir}/interopsuite/dashboard/sessions/*.json

audit/ Manage Storage

HIPAA audit logs. Every transaction is recorded for compliance.

{workingDir}/interopsuite/audit/{yyyy}/{MM}/engine-{yyyyMMdd}.jsonl

quarantine/

Failed messages stored with metadata for review.

{workingDir}/interopsuite/quarantine/{yyyy}/{MM}/{dd}/{id}/

Environment Variable Overrides

INTEROPSUITE_ROOTOverride base directory (default: {workingDir}/interopsuite)
INTEROPSUITE_DASHBOARD_DIROverride dashboard directory
INTEROPSUITE_AUDIT_DIROverride audit logs directory
INTEROPSUITE_QUARANTINE_DIROverride quarantine directory
INTEROPSUITE_OUTPUT_DIROverride FHIR output directory

TraceServer Dashboard (Optional)

Real-time monitoring dashboard for batch processing. Download and run the executable.

2. Enable in Your App
Interop.DashboardEnabled = true;
Data written to {workingDir}/interopsuite/dashboard/
3. Extract and Run TraceServer ZIP contains single executable. macOS/Linux: chmod +x first.
./InteropSuite.TraceServer -d /path/to/app/interopsuite/dashboard
Opens at http://localhost:8765/report.html
macOS users: If blocked by Gatekeeper, run once:
xattr -d com.apple.quarantine ./InteropSuite.TraceServer 2>/dev/null
Dashboard Settings
  • Sidebar: Shows last 10 files per pipeline (HL7, X12, CDA, CMS-0057-F)
  • Grid pagination: 5, 10, 15, or 20 items per page
  • Session-based: Data resets when server restarts (fresh view each session)

Batch Processing

Process multiple files from one or more directories. Results appear in the TraceServer dashboard if running.

Process one directory at a time. Each batch completes before the next starts.

// Process all files in a directory with ProcessBatchAsync
var options = new BatchOptions
{
    Domain = "HL7",  // HL7, X12, CDA, or CMS-0057-F
    OutputFormat = OutputFormat.UsCore
};

var result = await Interop.ProcessBatchAsync("path/to/messages", options);

Console.WriteLine($"Processed: {result.TotalFiles} files");
Console.WriteLine($"Succeeded: {result.Succeeded}");
Console.WriteLine($"Failed: {result.Failed}");
Console.WriteLine($"FHIR Resources: {result.TotalResources}");

Process multiple directories in a single call with RoundRobin interleaving. No domain blocks another.

// Process multiple directories with RoundRobin interleaving
var options = new BatchOptions
{
    Sources = new[]
    {
        new BatchSource("input/hl7", "HL7", OutputFormat.UsCore),
        new BatchSource("input/x12", "X12", OutputFormat.UsCore),
        new BatchSource("input/cda", "CDA", OutputFormat.UsCore),
        new BatchSource("input/cms", "CMS-0057-F", OutputFormat.Cms0057F),
    }
};

// Files interleaved: HL7[0], X12[0], CDA[0], CMS[0], HL7[1]...
var result = await Interop.ProcessBatchAsync(options);

Console.WriteLine($"Processed: {result.TotalFiles} files");
Console.WriteLine($"Succeeded: {result.Succeeded}");
Each source can have its own OutputFormat. Single TraceServer session shows all domains.

User Guides

In-depth guides for every aspect of InteropSuite.

HL7 v2.x Transformation

Transform ADT, ORU, ORM, SIU, MDM, VXU, and more to FHIR R4 with US Core profiles.

  • 30 supported message types
  • ADT A01-A40 (Admit/Discharge/Transfer)
  • ORU R01 (Lab Results)
  • VXU V04 (Immunizations)
View Guide

X12 5010 Claims

Process healthcare claims, eligibility, remittance, and prior authorization transactions.

  • 837P/I/D Professional & Institutional Claims
  • 835 Remittance Advice
  • 270/271 Eligibility
  • 278 Prior Authorization
View Guide

CMS-0057-F Compliance

Transform X12 5010 to FHIR R4 bundles with Da Vinci PAS, CARIN Blue Button, and PDex profiles.

  • 7 transaction types supported
  • PDex Provenance tracking
  • CARIN Blue Button for EOB
  • Da Vinci PAS for Prior Auth
View Guide

C-CDA R2.1 Documents

Transform clinical documents including CCD, Discharge Summaries, and Progress Notes.

  • 33 section mappers
  • Problems, Allergies, Medications
  • Lab Results & Vital Signs
  • Procedures & Immunizations
View Guide

API Reference

Complete API documentation for all public classes, methods, and configuration options.

  • Interop static class
  • String API methods
  • Batch API methods
  • Error handling
View Reference

Validation & Profiles

100% offline FHIR validation with US Core 6.1.0 and implementation guide profiles.

  • Offline validation (no network)
  • US Core 6.1.0 profiles
  • Custom validation rules
  • Error handling patterns
View Guide

Sample Outputs

See real FHIR bundle outputs from HL7 v2.x, X12 5010, and C-CDA transformations.

  • HL7 ADT, ORU examples
  • X12 835, 837P examples
  • C-CDA CCD examples
  • US Core compliant bundles
View Samples

Regulatory Compliance

Federal healthcare regulations and CFR citations supported by InteropSuite.

  • CMS-0057-F (42 CFR 438)
  • ONC Cures Act (45 CFR 170)
  • HIPAA Security Rule (45 CFR 164)
  • HL7 Standards & IGs
View Citations

Common Use Cases

Copy-paste examples to get started quickly.

HL7 v2.x

Transform HL7 to FHIR

// Transform any HL7 v2.x message to FHIR R4
var result = await Interop.HL7ToFhirAsync(hl7Message);

if (result.Success)
{
    string fhirJson = result.FhirBundle;
    string messageType = result.DetectedFormat; // "ADT^A01"
}
X12 5010

Process X12 Transactions

// Transform X12 837P claim to FHIR
var result = await Interop.X12ToFhirAsync(x12Claim);

// Supports all X12 transaction types:
// 837P/I/D (Claims), 835 (Remittance)
// 270/271 (Eligibility), 278 (Prior Auth)
// 834 (Enrollment), 820 (Payment)
C-CDA

Convert Clinical Documents

// Transform C-CDA document to FHIR Bundle
var result = await Interop.CDAToFhirAsync(cdaDocument);

// All 33 sections automatically mapped
// Problems, Allergies, Medications, Results...
CMS-0057-F

X12 with CMS Profiles

// Same X12 file, different output profiles
// US Core (default)
var usCore = await Interop.X12ToFhirAsync(x12Message);

// CMS-0057-F (Da Vinci PAS, CARIN Blue Button)
var cms = await Interop.X12ToFhirAsync(
    x12Message,
    OutputFormat.Cms0057F
);

Email Support

Get help from our team for technical questions and implementation guidance.

support@codefhir.com

Consulting

Need hands-on help? Our consulting team can accelerate your implementation.

View Services

Start Free Trial

Try InteropSuite free for 14 days with full access to all features.

Get Started