The Edival EDI Parsing Engine
Edival is an EDIFACT & X12 EDI data parser and validation library. It aims to be a clean, open source implementation of the EDI standards, with an initial goal of processing the HIPAA-mandated health care transactions. Although this is the initial goal, the library is currently capable of parsing any EDIFACT or X12 message. Validation will take place provided that the application making use of the parser has access to the correct specifications and loads them according to the library's API. Since the library is stream based, memory requirements are minimal and the processing speed is relatively fast.
Current features include, but are not limited to:
- Document tokenization for all types of EDIFACT & X12 data structures, including repeating elements (X12) and elements with escape characters (EDIFACT)
- Validation of segment position, repetition, and inclusion
- Data loops & composite structures
- Element size, type, & value (when applicable)
- Validation of element relationships (syntax notes), e.g. if element 1 is present, then element 5 must not be sent, etc.
- Reading of binary elements depending on an integral qualifier in the preceding element (BIN segment, for example)
- Error reporting that is auxilary to forming an acknowledgment transaction
Future goals include adding multiple language bindings for scripting languages such as Ruby, Perl, or Python. The online documentation is currently limited to only the library's header file, but an improved document should be made available in the future. If you try edival and would like additional features (or you find a bug), please contact me with any details.
Development Log
January 10, 2007 - Release 0.1.8
New features for this release:
- EDIFACT data parsing and validation support.
- Document start (ISA/UNA/UNB) and end (IEA/UNZ) event handlers are new and now required to be set in the parser.
See the project page at Sourceforge.net for more details on additional bug fixes.
November 20, 2006 - Release 0.1.7
This release contains an enhancement to the edival API that allows for the application program to receive pre-converted numeric values and in the form of a new EDI_DataElement structure. The structure also notifies of the element's type so that the application does not have to worry about consulting the schema once it is loaded.
Also, Interchange/Batch standards for X12 data are now rules-based. The standards that were hardcoded several versions ago in the x12 Parser module have been removed.
As in any release, there are many code cleanups throughout the library.
October 16, 2006 - Release 0.1.6
This release addresses a bug that prevented the usage of the binary element callback feature that was
first introduced in 0.1.5. Additionally, several of the schema-related function calls in the API have
changed signatures to no longer require a schema object pointer to be passed. See function descriptions
and usage information in the edival.h
source file.
Besides what is included in this release, work has begun on a Ruby extension to allow full access to edival in a Ruby-esque fashion. If you are interested in extensions to support the Python or Perl languages, let me know.