In this tutorial we’ll discuss how to parse, load and validate EDI data using NodeJS.   EDIValidator is arguably one of the most important components in RDPCrystal EDI Library.  It takes two parameters, a validation rules file and an EDI file ( or string ) to validate.   The overall validation process looks like the diagram below.

 

 

A validation rule file contains all the data elements, segments, and loop meta data pertaining to a specific implementation guide.

The Code

const edi = require(‘rdpcrystal-edi-library’);
const fs = require(‘fs’);
 
//Create a validator instance

let validator = new edi.EDIValidator();

//Load a 5010 270 Validation Rules File
let validationRules = fs.readFileSync(‘Validation Rules/5010/Rules_5010_270_005010X279A1.Rules’).toString();

//Set the validation rules data
//Validation rules are found in the RDPCrystalInstallation\Validation Rules directory
validator.EDIRulesFileData = validationRules;
 
//Validate and also load the data into memory
validator.LoadValidatedData = true;
//Set EDI data to load and validate
validator.EDIDataString = “ISA*00*……….*01*SECRET….*ZZ*SUBMITTERS.ID..*ZZ*RECEIVERS.ID…*030101*1253*^*00501*000000905*1*T*:~” +
    “GS*Hk*SENDER CODE*RECEIVERCODE*19991231*0802*1*X*005010X279A1~” +
    “ST*271*1234*005010X279A1~” +
    “BHT*0022*13*10001234*20060501*1319~” +
    “HL*1**20*1~” +
    “NM1*PR*2*ABC COMPANY*****PI*842610001~” +
    “HL*2*1*21*1~” +
    “NM1*1P*2*BONE AND JOINT CLINIC*****SV*2000035~” +
    “HL*3*2*22*0~” +
    “TRN*1*93175-012547*9877281234~” +
    “NM1*IL*1*SMITH*ROBERT****MI*11122333301~” +
    “DMG*D8*19430519~” +
    “DTP*291*D8*20060501~” +
    “EQ*30~” +
    “SE*13*1234~” +
    “GE*1*1~” +
    “IEA*1*000000905~”;
 
validator.validate();

//Get all errors from the EDI data
for (let i = 0; i < validator.Errors.Count; i++) {
    let error = validator.Errors.getItem(i);
    console.log(
        {
            Type: “Error”,
            Line: error.LineNumber,
            Transaction: “”,
            SnipLevel: error.SnipLevel, 
            Message: error.Message,  
            Loop: error.Loop,
            Segment: error.Segment,
            Element: error.ElementOrdinal,
            Composite: error.CompositeElementOrdinal,
            Description: error.Description,
            Ordinal: error.SegmentOrdinal
        });
}

Now that was easy!

 

Take Charge Of EDI

RDPCrystal EDI Library

trial2