DEV Community

hello-ediflow
hello-ediflow

Posted on • Edited on

EDIFlow v0.3.0: X12, HIPAA & EANCOM Support for TypeScript — The Way of Water

"Water doesn't fight obstacles. It flows." - Lao Tzu

EDI data should move through systems naturally - adapting to any standard, connecting everything, never fighting complexity. That's the philosophy behind EDIFlow. And v0.3.0 is the biggest step yet.


What is EDIFlow?

EDIFlow is an open-source TypeScript library for parsing, validating and building EDI messages - type-safe, zero-config, built with Clean Architecture.

If you've ever dealt with raw EDI like this:

ISA*00*          *00*          *ZZ*SENDER         *ZZ*RECEIVER       *260101*1200*^*00401*000000001*0*T*:~
GS*PO*SENDER*RECEIVER*20260101*1200*1*X*004010~
ST*850*0001~
BEG*00*SA*ORDER12345**20260101~
Enter fullscreen mode Exit fullscreen mode

...and wished there was a modern, type-safe TypeScript API to work with it - that's exactly what EDIFlow solves.


v0.3.0 - What's new

?? X12 - Two full versions

X12 is the dominant EDI standard in North America - used in retail, logistics, healthcare, finance.

v0.3.0 ships two complete X12 version packages:

Package Version Transaction Sets
@ediflow/x12-004010 X12 004010 293 transaction sets
@ediflow/x12-006040 X12 006040 319 transaction sets

850 (Purchase Order), 810 (Invoice), 856 (Ship Notice), 837 (Healthcare Claim), 835 (Remittance), 997 (Acknowledgment), 214, 204, 210 and hundreds more.

import { X12ServiceBuilder } from '@ediflow/x12';
import { x12_004010Repository } from '@ediflow/x12-004010';

const service = new X12ServiceBuilder()
  .withRepository(x12_004010Repository)
  .build();

const result = await service.parse(rawX12String);
// Fully typed - TypeScript knows the structure
console.log(result.message.segments[0].tag); // 'ISA'
Enter fullscreen mode Exit fullscreen mode

Switch to 006040 by swapping one import - no other code changes needed.


?? HIPAA X12 005010 - Healthcare EDI

14 HIPAA-specific transaction sets out of the box:

  • 837P - Professional Claim
  • 837I - Institutional Claim
  • 835 - Remittance Advice
  • 270/271 - Eligibility Inquiry & Response
  • 276/277 - Claim Status
  • 834 - Benefit Enrollment
  • 820 - Payment Order
npm install @ediflow/core @ediflow/x12 @ediflow/hipaa-x12-005010
Enter fullscreen mode Exit fullscreen mode

?? EDIFACT - Full coverage across 4 versions

EDIFACT is the international standard - dominant in Europe, logistics, supply chain.

All four versions are supported with complete message sets:

Package Version Messages
@ediflow/edifact-d96a D.96A 126 message types
@ediflow/edifact-d01b D.01B full standard
@ediflow/edifact-d12a D.12A full standard
@ediflow/edifact-d20b D.20B 195 message types

Every message type in the standard - ORDERS, INVOIC, DESADV, RECADV, SLSRPT, PRICAT, REMADV, IFTMIN, COPARN, APERAK, CONTRL, and hundreds more - available out of the box. No custom definitions needed.

npm install @ediflow/core @ediflow/edifact @ediflow/edifact-d20b
Enter fullscreen mode Exit fullscreen mode

?? EANCOM 2002 - GS1 Retail Standard

50 GS1 retail message types built on EDIFACT syntax. Covers the complete retail supply chain with full GS1 GLN party identification and EAN-13/GTIN product codes:

ORDERS, ORDRSP, DESADV, RECADV, INVOIC, REMADV, SLSRPT, PRICAT, INVRPT, PRODAT and more.

npm install @ediflow/core @ediflow/edifact @ediflow/eancom-2002
Enter fullscreen mode Exit fullscreen mode

?? Business Object Mapping - Round-Trip

This is the feature I'm most excited about. Instead of manually navigating segment arrays, you map EDI messages directly to/from typed JSON objects:

import { StructureMappingService } from '@ediflow/core';

const mappingService = new StructureMappingService();

// EDI ? Business Object (JSON)
const order = mappingService.map(parsedMessage);
console.log(order['BGM']['1004']); // "ORDER12345" - document number

// Modify the business object
order['BGM']['1004'] = 'ORDER99999';

// Business Object ? EDI (rebuild round-trip)
const rebuilt = mappingService.unmap(order);
Enter fullscreen mode Exit fullscreen mode

Five key strategies for property names: code, name, camelCase, snake_case, kebab-case - choose what fits your codebase.


?? CLI enhancements

The @ediflow/cli package now supports business object output and schema export for both EDIFACT and X12:

# Parse to business object
npx @ediflow/cli parse invoice.edi --output-type business-object

# Export full JSON schema for a message type
npx @ediflow/cli export-schema --standard x12 --version 004010 --message 850

# Build EDI from a JSON business object
npx @ediflow/cli build order.json --standard edifact --version d20b --message ORDERS
Enter fullscreen mode Exit fullscreen mode

?? Ready-to-run examples

Clone the repo and run any example with npx tsx:

git clone https://github.com/ediflow-lib/core.git
npm install

# X12
npx tsx examples/x12/parse-850/index.ts        # Parse Purchase Order
npx tsx examples/x12/build-850/index.ts        # Build 850 + round-trip
npx tsx examples/x12/validate-837/index.ts     # Validate Healthcare Claim
npx tsx examples/x12/multi-message/index.ts    # Parse 850 + 810 + 856 + 997

# EDIFACT
npx tsx examples/edifact/parse-orders/index.ts    # Parse ORDERS
npx tsx examples/edifact/build-invoic/index.ts    # Build INVOIC + round-trip

# HIPAA
npx tsx examples/hipaa/parse-837/index.ts     # Parse 837P Professional Claim

# EANCOM
npx tsx examples/eancom/parse-desadv/index.ts # Parse DESADV (GLN + EAN-13)
Enter fullscreen mode Exit fullscreen mode

All examples include real EDI sample data and commented output - no setup beyond npm install.


By the numbers

  • ?? 13 packages on NPM
  • ?? X12: 293 + 319 transaction sets across 2 versions
  • ?? EDIFACT: 126 + 195 message types across 4 versions
  • ?? EANCOM: 50 GS1 retail messages
  • ?? HIPAA: 14 transaction sets
  • ? 711 tests passing
  • ?? ? 90% code coverage (@ediflow/core)
  • 0 TypeScript errors, 0 warnings
  • ?? MIT License

Install

# X12 004010 (293 transaction sets)
npm install @ediflow/core @ediflow/x12 @ediflow/x12-004010

# X12 006040 (319 transaction sets)
npm install @ediflow/core @ediflow/x12 @ediflow/x12-006040

# EDIFACT D.20B (195 messages)
npm install @ediflow/core @ediflow/edifact @ediflow/edifact-d20b

# HIPAA
npm install @ediflow/core @ediflow/x12 @ediflow/hipaa-x12-005010

# EANCOM 2002
npm install @ediflow/core @ediflow/edifact @ediflow/eancom-2002
Enter fullscreen mode Exit fullscreen mode

? Full changelog
? Examples
? Quick Start


The Way of Water ??

I've been building EDIFlow alone - no team, no funding. Just a belief that TypeScript developers working in supply chain, logistics, and healthcare deserve better EDI tooling than what exists today.

The name isn't accidental. Inspired by the Taoist "Way of Water": EDI data should move through systems naturally - adapting to any standard, connecting everything, never forcing complexity on the developer.

?? Finds its way - intelligent parsing, adaptive error handling
?? Adapts to any form - EDIFACT, X12, HIPAA, EANCOM, more coming
?? Powerful but gentle - enterprise-grade performance, clean API
?? Connects everything - one unified interface for all EDI standards

If this resonates - or if you're tired of fighting brittle EDI parsers - consider giving the project a ? on GitHub. It helps others find it.

?? Website | ? Star on GitHub


What EDI standard are you working with? Drop a comment - I'd love to know what matters most for the next release.


Top comments (0)