Etlworks reads and writes EDI — both X12 (North America) and EDIFACT (international) — and supports healthcare standards: HL7 2.x and HL7 FHIR. NCPDP (US retail pharmacy) and VDA (German automotive) are also supported. Messages move over SFTP, FTPS, FTP, HTTP, email, AS2, and (for HL7) MLLP.
This article is the umbrella for the EDI capabilities — concepts shared across dialects and routing to the dialect-specific articles. For the end-to-end how-to, pick the dialect you're working with:
| Dialect | Article |
|---|---|
| X12 | Working with X12 |
| HL7 2.x or FHIR | Working with HL7 |
| EDIFACT, NCPDP, or VDA | Working with EDIFACT, NCPDP, and VDA |
What's new in 9.6.x
- Full AS2 send and receive for X12 (and arbitrary payloads) — signing (SHA-256 / SHA-1 / SHA-384 / SHA-512 / MD5), encryption (3DES / AES-128-CBC / AES-256-CBC), synchronous MDN.
- X12 message editor — a schema-driven editor for building X12 messages from any source, with lookup-driven loop construction.
- X12 mapping — segments, loops, and elements appear in the nested-mapping tree with human-readable descriptions and cardinality.
- UI-driven lookups in the mapping editor — resolve reference data per source row without writing JavaScript by hand.
- AI-assisted mapping for nested and X12 mappings — ask Simba to propose the first pass.
The four EDI formats
Etlworks ships four EDI format types in the format gallery. Three are dedicated to a single dialect; the fourth is a generic format that covers the others.
| Format type | Dialects | Read | Write | Tier |
|---|---|---|---|---|
| X12 | X12 | Yes | Yes | Included in all editions |
| HL7 2.x | HL7 2.x | Yes | Yes | Included |
| HL7 FHIR | HL7 FHIR | Yes | Yes | Included |
| EDI (generic) | EDIFACT, NCPDP, VDA (and X12 / HL7 for backward compatibility) | Yes | Not yet — coming soon | Premium |
Pick by dialect: if you're working with X12, use the dedicated X12 format and Working with X12. For HL7, use one of the HL7 formats and Working with HL7. For EDIFACT, NCPDP, or VDA, use the generic EDI format and Working with EDIFACT, NCPDP, and VDA.
The generic EDI format technically also handles X12 and HL7 dialects, but the dedicated formats are tuned for those and include writing support. The generic format is best for the dialects that don't have their own connector.
Concepts that apply across dialects
EDI messages are hierarchical
An EDI interchange has nested structure — envelope (ISA/IEA in X12, UNB/UNZ in EDIFACT, MSH in HL7), functional group (GS/GE in X12, UNG/UNE in EDIFACT, optional in HL7), transaction set, loops, segments, elements. Etlworks parses this into a tree of nested records, and the nested mapping editor is the natural way to manipulate it.
Three common patterns
| Pattern | What it does |
|---|---|
| Convert without mapping | Read an EDI message and emit XML, JSON, or CSV directly — no source-to-destination transformation. Fastest path for "I just need this file as JSON". |
| ETL into a database | Parse the EDI message and write each segment / loop into a database table. Use nested mapping for the structure-preserving case; flat mapping for one segment at a time; staging tables for full normalization. |
| Generate EDI from any source | Build the EDI hierarchy from a database query, a file, or an API response using nested mapping or the X12 Message Designer; write the result through the EDI format. Available for X12 and HL7 today; coming soon for EDIFACT / NCPDP / VDA. |
Transport vs. format
In Etlworks format (how the message is encoded) and transport (how it's moved) are decoupled. An X12 message can travel over AS2, SFTP, FTPS, HTTP, or email; an HL7 message over MLLP, HTTP, or any of the above; EDIFACT over the same transports as X12. The same source / destination flow types work across transports — the format and the connection are chosen independently.
Acknowledgments
Etlworks can generate inbound acknowledgments automatically:
- X12 → 997 functional acknowledgment. See Working with X12 → Acknowledgments.
- EDIFACT → CONTRL control message. See Working with EDIFACT, NCPDP, and VDA.
- HL7 (MLLP) → ACK / NACK at the protocol level. See Working with HL7.