The HL7 to JSON FHIR Converter Healthcare Engineers Trust

Built for critical infrastructure. Handles encoding nightmares, line ending chaos, and ACK processing that actually works. 100% offline. GDPR & HIPAA compliant. Zero compromises.

Automatic encoding detection (Windows-1250, ISO-8859-2, UTF-8, Cyrillic)
Smart line ending normalization (CRLF, LF, CR)
ACK → FHIR Operation Outcome mapping
Three deployment modes (UI, CLI, REST API)
10+
Message Types Supported
100%
Offline Operation
Unlimited Conversions
One-Time Purchase
THE REAL PROBLEMS

Why "Just Use Mirth" Isn't an Answer

We analyzed hundreds of forum posts from frustrated integration engineers. Here's what breaks every other converter—and how we fixed it.

01

"Isn't there an easy way to convert my whole HL7 to JSON?"

The Problem: Mirth Connect requires manual field-by-field transformation. Engineers spend hours mapping PID-3-1, PID-5-1, PID-7... for every single field.
Our Solution: Automatic full-message conversion to FHIR Bundles using clean, readable JSON. Zero manual mapping. One click, complete structured output.
02

"Special characters like & cause parsing failures"

The Problem: Home-grown HL7 implementations don't escape ampersands. "Parker & Sons" splits into two fields. Converters crash or return garbage.
Our Solution: NHapi automatically handles escape sequences (\T\, \F\, \S\, \R\, \E\). Properly processes & | ^ ~ \ in text fields without crashes.
03

"Azure Data Factory needs 6 services just to convert HL7"

The Problem: Cloud solutions require: ADF instance, ADLS Gen2, FHIR service, Container Registry, RBAC configuration, managed identities. Monthly costs: $500+.
Our Solution: Single executable. No Azure. No AWS. No cloud services. No monthly fees. Lifetime license. Runs on air-gapped workstations.
04

"Automated converters are completely lost with Z-segments"

The Problem: Custom Z-segments contain unstructured data. Most converters either crash, skip them silently, or return errors.
Our Solution: Graceful handling of unsupported segments. Never crashes. Provides clear validation feedback on what was converted and what wasn't.
05

"Characters like \\ and CRLF must be escaped"

The Problem: RawContent returns truncated messages. InterSystems users report: "I got errors" when converting to JSON due to unescaped backslashes and newlines.
Our Solution: Proper JSON serialization via FHIR.NET. All special characters escaped correctly. No truncation. No mangled output.
06

"Steep learning curve and expensive software"

The Problem: HL7 Soup, Mirth, Rhapsody require weeks of training. Enterprise licenses cost $5,000-$50,000/year. Technical expertise mandatory.
Our Solution: Monaco Editor with syntax highlighting. Instant visual feedback. Convert your first message in 30 seconds. No training required.
TECHNICAL EXCELLENCE

Built to Handle Real-World Complexity

Most HL7 converters fail on edge cases. We handle the encoding nightmares, malformed messages, and vendor-specific quirks that break other tools.

🔤

Intelligent Encoding Detection

Automatically detects and converts from Windows-1250, Windows-1252, ISO-8859-1, ISO-8859-2, Windows-1251, and UTF-8. No more replacement characters (�) in Polish, Czech, or Cyrillic patient names.

Tries encodings in order of HL7 likelihood
Detects replacement characters (U+FFFD)
Validates segment identifiers after decoding
Graceful UTF-8 fallback for modern systems

Line Ending Normalization

HL7 v2 standard specifies CR (\r) as segment separator. But real-world files come with CRLF (Windows), LF (Unix), or mixed. We automatically normalize everything to CR before parsing.

Converts Windows CRLF → CR
Converts Unix LF → CR
Handles mixed line endings in single file
Prevents NHapi parsing failures from delimiter issues

ACK → FHIR Operation Outcome

Most tools ignore ACK messages or dump them as JSON. We parse MSA and ERR segments, map acknowledgment codes (AA, AE, AR, CA, CE, CR) to FHIR OperationOutcome severity levels, and extract detailed error information.

Parses MSA segment (acknowledgment code, message ID, text)
Extracts ERR segment (error code, severity, diagnostics)
Maps AA/CA → Success, AE/AR → Error/Fatal
Creates structured FHIR OperationOutcome for errors
🔧

Auto-Fix Malformed Messages

Real HL7 files have stray spaces, missing MSH-2 encoding characters, and inconsistent formatting. Our validator auto-fixes common issues before parsing, reducing validation errors by 80%.

Trims whitespace around field separators
Adds missing MSH-2 encoding characters (^~\&)
Normalizes line endings before validation
Validates segment identifiers are 3-char uppercase
SECURITY & COMPLIANCE

Why Healthcare Demands Offline

In healthcare IT, "cloud-based" is often a liability. Here's why offline processing isn't just convenient—it's mandatory for secure, compliant environments worldwide.

🛡️
Fully Offline
All HL7 & FHIR processing happens locally.
No internet. No cloud. No AI.

HIPAA Compliance

PHI never leaves your network. No uploads, no APIs, no third-party servers. Ideal for BAAs and audits.

Offline & Restricted Environments

Runs in air-gapped facilities. Single self-contained executable with zero external dependencies.

Audit & Validation

Built on NHapi and official FHIR.NET libraries. Transparent parsing, no black boxes.

Zero Trust & NIS2 Ready

Your HL7 data is your IP. Nothing is logged, transmitted, or observed—ever. Supports NIS2 cybersecurity requirements for EU healthcare essential entities.

DEPLOYMENT FLEXIBILITY

One Tool in Three Modes

Choose the interface that fits your workflow. Same conversion engine, same validation logic, different entry points.

One Engine • Three Interfaces
⌨️

CLI Mode

Scriptable command-line interface for batch processing and automation. Integrates into build pipelines, cron jobs, or PowerShell scripts.

Batch process entire directories
Custom output paths
Exit codes for CI/CD integration
Clear console output
Shell integration (PATH support)
🖥️

UI Mode

Beautiful WinUI 3 desktop app with embedded React interface and Monaco Editor. Perfect for testing, debugging, and one-off conversions.

VS Code-quality syntax highlighting
Custom HL7 language tokenizer
Dark/light themes
Real-time validation feedback
File load/export support
🌐

API Mode

Local REST API with OpenAPI/Swagger documentation. Embed into your applications or build custom workflows. No external network calls.

RESTful POST /convert endpoint
Swagger UI at /swagger
Simple JSON response format
Localhost only (127.0.0.1)
Use with .NET/PHP/Python/Node apps
SEE IT IN ACTION

From HL7 Chaos to FHIR Clarity

Watch how the converter handles encoding detection, malformed messages, and ACK processing in real-world scenarios.

COMPREHENSIVE SUPPORT

Built on Industry Standards

Powered by NHapi and FHIR.NET—the same libraries used by Epic, Cerner, and Allscripts integrations.

Supported Message Types
ADT (Patient Admin) ORU (Lab Results) ORM (Orders) SIU (Scheduling) VXU (Vaccinations) MDM (Documents) DFT (Financial) QBP/RSP (Queries) RDE (Pharmacy) ACK (Acknowledgments)
Technical Stack
NHapi v3.2 FHIR R4 (Hl7.Fhir.R4 v6.0) HL7 v2.5 / v2.5.1 .NET 8 (LTS) WinUI 3 ASP.NET Core OpenAPI 3.0 Monaco Editor
FAQ

Getting Started & Common Questions

Practical answers for healthcare engineers running the HL7 Converter in real environments.

How do I run the HL7 Converter?

The converter supports three execution modes, all powered by the same conversion engine:

  • UI Mode — desktop usage with file selection
  • CLI Mode — terminal-based automation
  • API Mode — local REST API with Swagger UI

The mode is selected automatically based on how the application is launched.

How do I convert HL7 using the UI?

Simply launch the application normally (double-click or run without arguments).

The UI allows you to select HL7 files and convert them interactively. All conversions use the same engine as CLI and API modes.

How do I run the converter from the command line?

In CLI mode, the first argument determines what is converted. You can pass either:

  • a single HL7 file, or
  • a directory containing multiple HL7 files

Examples:

hl7converter.exe "C:\HL7\msg.hl7"
hl7converter.exe "C:\HL7Messages"

When a directory is provided, all files in that directory are processed sequentially.

Where are converted FHIR files saved?

The output directory is determined as follows:

  1. If an output directory is provided as the second CLI argument, files are saved there.
  2. Otherwise, files are saved in the same directory as the input HL7 file.
hl7converter.exe "C:\HL7\msg.hl7" "D:\FHIR\Output"
How are output FHIR files named?

Output files are named using the original input filename plus a high-resolution timestamp to prevent overwriting.

Format:

<original_filename>_yyyyMMdd_HHmmss_fff.json

Example:

ADT_A01_20251214_132206_143.json

This guarantees unique filenames even when converting many files rapidly.

How do I start API mode?

Start the application with the api flag:

hl7converter.exe api

This launches a local REST API and exposes Swagger UI at: http://localhost:5000/swagger

To use a custom URL:

hl7converter.exe api --urls http://127.0.0.1:8080

Swagger will then be available at: http://localhost:8080/swagger

Is an internet connection required?

No. The converter is 100% offline.

No cloud calls, no telemetry, and no external dependencies. All HL7 data remains on your machine.

What HL7 versions are supported?

HL7 v2.3, v2.4, v2.5, and v2.5.1 are supported.

Older versions are automatically normalized to v2.5 to prevent compatibility failures.

Does the converter support ACK messages?

Yes. HL7 ACK messages are fully parsed.

MSA and ERR segments are mapped to structured FHIR OperationOutcome resources with correct severity levels.

How are custom Z-segments handled?

Z-segments are non-standard, locally defined HL7 extensions.

Because their meaning varies by organization, the converter does not guess. Instead:

  • Core clinical data is converted normally
  • Z-segments are safely ignored
  • A FHIR OperationOutcome (warning) is added
Why is HL7 so hard to convert reliably?

HL7 v2 is a decades-old, highly flexible standard with massive real-world variation. Optional fields, malformed delimiters, and vendor-specific quirks are common.

Most converters assume perfect HL7. This tool is built for what actually exists in production.

How does this handle malformed or incomplete HL7 messages?

The converter automatically fixes common issues where safe, and emits explicit warnings when interpretation is uncertain.

It never crashes mid-conversion and never silently drops data.

Why do special characters like & or \\ break other converters?

Many HL7 feeds fail to escape reserved characters correctly, causing naive parsers to break.

This converter correctly processes HL7 escape sequences and safely serializes output using official FHIR JSON libraries.

Is this suitable for HL7 → FHIR migration projects?

Yes. The converter produces clean FHIR R4 transaction bundles suitable for ingestion, testing, and validation.

Who is this tool designed for?

Healthcare integration engineers, platform teams, and vendors who need reliable HL7 processing without heavy infrastructure.

Is this compliant with EU regulations (GDPR, NIS2, MDR)?

Yes. The converter is designed to support EU regulatory compliance:

GDPR: Because all processing happens locally with zero data transmission, there are no GDPR data processing obligations. PHI never leaves your infrastructure, ensuring full compliance with data minimization and data residency requirements.

NIS2 Directive: Hospitals and healthcare providers are classified as "essential entities" under NIS2. The offline-first architecture eliminates external network dependencies, supporting your cybersecurity risk management obligations.

Medical Device Regulation (MDR): This tool is a data conversion utility for IT infrastructure, not a medical device. It does not provide clinical decision support, diagnostics, or treatment recommendations, and therefore falls outside MDR scope.

Does this support Central/Eastern European character encodings?

Yes. The converter automatically detects and handles Windows-1250 (Polish, Czech, Slovak, Hungarian), Windows-1251 (Cyrillic), ISO-8859-1, ISO-8859-2, and UTF-8 encodings.

Patient names with diacritics (ą, ć, ę, ł, ń, ó, ś, ź, ż, č, ř, ů, etc.) are correctly converted without replacement characters (�).

Can this be used in air-gapped or restricted EU healthcare networks?

Absolutely. The converter is a single self-contained executable with zero external dependencies.

It runs entirely offline in isolated networks, secure facilities, and environments with strict network segmentation requirements common in EU healthcare infrastructure.

Ready to Fix Your HL7 Workflow?

Join healthcare integration engineers who've eliminated encoding headaches, cloud dependencies, and vendor lock-in.

Download from Windows Store