procedure TForm1.cmdGenerateClick(Sender: TObject); // This is just an example program to show how to generate an EDI X12 837 4010 X096 // in Delphi with Framework EDI component var oEdiDoc : IediDocument; oInterchange : IediInterchange; oGroup : IediGroup; oTransactionset : IediTransactionset; oSegment : IediDataSegment; oSchemas : IediSchemas; i : Integer; sInstance : String; sPath : String; sSefFile : String; sEdiFile : String; nInfoSources : Integer; nInfoSourceCounter : Integer; nSubscribers : Integer; nSubscriberCounter : Integer; nHlCounter : Integer; nHlSubscriberParent : Integer; begin cmdGenerate.Enabled := False; sPath := Trim(GetCurrentDir) + '\'; sSefFile := '837_X096.SEF'; sEdiFile := '837_X096_OUTPUT.X12'; oEdiDoc := CoediDocument.Create(); //CHANGE CURSOR TYPE TO FORWARDWRITE TO IMPROVE PERFORMANCE oEdiDoc.CursorType := 2; //forwardWrite //DISABLE INTERNAL STADARD REFERENCE LIBRARY oSchemas := oEdiDoc.GetSchemas() as IediSchemas; oSchemas.EnableStandardReference := False; //LOAD SEF FILES oEdidoc.LoadSchema(sPath + sSefFile,0); //SET TERMINATORS oEdiDoc.SegmentTerminator := '~' + chr(13) + chr(10); oEdiDoc.ElementTerminator := '*'; oEdiDoc.CompositeTerminator := ':'; //CREATE INTERCHANGE oInterchange := oEdiDoc.CreateInterchange('X','004010') as IediInterchange; oSegment := oInterchange.GetDataSegmentHeader as IediDataSegment; oSegment.DataElementValue[1,0] := '00'; oSegment.DataElementValue[3,0] := '00'; oSegment.DataElementValue[5,0] := '12'; oSegment.DataElementValue[6,0] := 'SENDERID'; oSegment.DataElementValue[7,0] := '12'; oSegment.DataElementValue[8,0] := 'RECEIVERID'; oSegment.DataElementValue[9,0] := '020329'; oSegment.DataElementValue[10,0] := '0435'; oSegment.DataElementValue[11,0] := 'U'; oSegment.DataElementValue[12,0] := '00401'; oSegment.DataElementValue[13,0] := '000000020'; oSegment.DataElementValue[14,0] := '0'; oSegment.DataElementValue[15,0] := 'T'; oSegment.DataElementValue[16,0] := ':'; //CREATE GROUP oGroup := oInterchange.CreateGroup('004010X096') as IediGroup; oSegment := oGroup.GetDataSegmentHeader as IediDataSegment; oSegment.DataElementValue[1,0] := 'HC'; oSegment.DataElementValue[2,0] := 'SENDERDEPT'; oSegment.DataElementValue[3,0] := 'RECEIVERDEPT'; oSegment.DataElementValue[4,0] := '20020329'; oSegment.DataElementValue[5,0] := '0435'; oSegment.DataElementValue[6,0] := '1'; oSegment.DataElementValue[7,0] := 'X'; oSegment.DataElementValue[8,0] := '004010X096'; //TRANSACTION SET HEADER oTransactionset := oGroup.CreateTransactionset('837') as IediTransactionset; oSegment := oTransactionset.GetDataSegmentHeader as IediDataSegment; oSegment.DataElementValue[2,0] := '987654'; //BHT BEGINNING OF HIERARCHICAL TRANSACTION oSegment := oTransactionset.CreateDataSegment('BHT') as IediDataSegment; oSegment.DataElementValue[1,0] := '0019'; oSegment.DataElementValue[2,0] := '00'; oSegment.DataElementValue[3,0] := '0123'; oSegment.DataElementValue[4,0] := '20081201'; oSegment.DataElementValue[5,0] := '0932'; oSegment.DataElementValue[6,0] := 'CH'; //REF TRANSMISSION TYPE IDENTIFICATION oSegment := oTransactionset.CreateDataSegment('REF') as IediDataSegment; oSegment.DataElementValue[1,0] := '87'; oSegment.DataElementValue[2,0] := '004010X098'; //NM1 SUBMITTER oSegment := oTransactionset.CreateDataSegment('NM1\NM1') as IediDataSegment; //including the loop instance number 2 in NM1 is not necessary with cursor type forwardwrite oSegment.DataElementValue[1,0] := '41'; oSegment.DataElementValue[2,0] := '2'; oSegment.DataElementValue[3,0] := 'Jones Hospital'; oSegment.DataElementValue[8,0] := '46'; oSegment.DataElementValue[9,0] := '12345'; //PER RECEIVER EDI CONTACT INFORMATION oSegment := oTransactionset.CreateDataSegment('NM1\PER') as IediDataSegment; oSegment.DataElementValue[1,0] := 'IC'; oSegment.DataElementValue[2,0] := 'JANE DOE'; oSegment.DataElementValue[3,0] := 'TE'; oSegment.DataElementValue[4,0] := '9055555555'; //NM1 RECEIVER NAME oSegment := oTransactionset.CreateDataSegment('NM1(2)\NM1') as IediDataSegment; oSegment.DataElementValue[1,0] := '40'; oSegment.DataElementValue[2,0] := '2'; oSegment.DataElementValue[3,0] := 'Medicare'; oSegment.DataElementValue[8,0] := '46'; oSegment.DataElementValue[9,0] := '00120'; nInfoSources := 1; nInfoSourceCounter := 1; nSubscribers := 1; nSubscriberCounter := 1; nHlCounter := 0; //2000A BILLING / PAY-TO PROVIDER HL LOOP while nInfoSourceCounter <= nInfoSources do begin nHlCounter := nHlCounter + 1; nHlSubscriberParent := nHlCounter; //HL - BILLING PROVIDER oSegment := oTransactionset.CreateDataSegment('HL\HL') as IediDataSegment; oSegment.DataElementValue[1,0] := IntToStr(nHlCounter); oSegment.DataElementValue[3,0] := '20'; oSegment.DataElementValue[4,0] := '1'; //BILLING PROVIDER SPECIALTY INFORMATION oSegment := oTransactionset.CreateDataSegment('HL\PRV') as IediDataSegment; oSegment.DataElementValue[1,0] := 'BI'; oSegment.DataElementValue[2,0] := 'ZZ'; oSegment.DataElementValue[3,0] := '203BA0200N'; //2010AA BILLING PROVIDER //NM1 BILLING PROVIDER NAME oSegment := oTransactionset.CreateDataSegment('HL\NM1\NM1') as IediDataSegment; oSegment.DataElementValue[1,0] := '85'; oSegment.DataElementValue[2,0] := '2'; oSegment.DataElementValue[3,0] := 'Jones Hospital'; oSegment.DataElementValue[8,0] := 'XX'; oSegment.DataElementValue[9,0] := '330127'; //N3 BILLING PROVIDER ADDRESS oSegment := oTransactionset.CreateDataSegment('HL\NM1\N3') as IediDataSegment; oSegment.DataElementValue[1,0] := '225 Main Street Barkley Building'; //NM1 BILLING CITY STATE ZIP oSegment := oTransactionset.CreateDataSegment('HL\NM1\N4') as IediDataSegment; oSegment.DataElementValue[1,0] := 'Smallville'; oSegment.DataElementValue[2,0] := 'TX'; oSegment.DataElementValue[3,0] := '22334'; while nSubscriberCounter <= nSubscribers do begin nHlCounter := nHlCounter + 1; //2000B SUBSCRIBER HL LOOP //HL - SUBSCRIBER oSegment := oTransactionset.CreateDataSegment('HL\HL') as IediDataSegment; oSegment.DataElementValue[1,0] := IntToStr(nHlCounter); oSegment.DataElementValue[2,0] := IntToStr(nHlSubscriberParent); oSegment.DataElementValue[3,0] := '22'; oSegment.DataElementValue[4,0] := '0'; //SUBSCRIBER INFORMATION oSegment := oTransactionset.CreateDataSegment('HL\SBR') as IediDataSegment; oSegment.DataElementValue[1,0] := 'P'; oSegment.DataElementValue[2,0] := '18'; oSegment.DataElementValue[9,0] := 'MB'; //NM1 SUBSCRIBER NAME oSegment := oTransactionset.CreateDataSegment('HL\NM1\NM1') as IediDataSegment; oSegment.DataElementValue[1,0] := 'IL'; oSegment.DataElementValue[2,0] := '1'; oSegment.DataElementValue[3,0] := 'DOE'; oSegment.DataElementValue[4,0] := 'JOHN'; oSegment.DataElementValue[5,0] := 'T'; oSegment.DataElementValue[8,0] := 'MI'; oSegment.DataElementValue[9,0] := '030005074A'; //SUBSCRIBER ADDRESS oSegment := oTransactionset.CreateDataSegment('HL\NM1\N3') as IediDataSegment; oSegment.DataElementValue[1,0] := '125 City Avenue'; //NM1 SUBSCRIBER CITY STATE ZIP oSegment := oTransactionset.CreateDataSegment('HL\NM1\N4') as IediDataSegment; oSegment.DataElementValue[1,0] := 'Centerville'; oSegment.DataElementValue[2,0] := 'PA'; oSegment.DataElementValue[3,0] := '11711'; //NM1 SUBSCRIBER DEMOGRAPHIC INFORMATION oSegment := oTransactionset.CreateDataSegment('HL\NM1\DMG') as IediDataSegment; oSegment.DataElementValue[1,0] := 'D8'; oSegment.DataElementValue[2,0] := '19261111'; oSegment.DataElementValue[3,0] := 'M'; //2010BB SUBSCRIBER/PAYER //PAYER NAME oSegment := oTransactionset.CreateDataSegment('HL\NM1(2)\NM1') as IediDataSegment; oSegment.DataElementValue[1,0] := 'PR'; oSegment.DataElementValue[2,0] := '2'; oSegment.DataElementValue[3,0] := 'Medicare B'; oSegment.DataElementValue[8,0] := 'PI'; oSegment.DataElementValue[9,0] := '00435'; //2300 CLAIM //CLM CLAIM LEVEL INFORMATION oSegment := oTransactionset.CreateDataSegment('HL\CLM\CLM') as IediDataSegment; oSegment.DataElementValue[1,0] := '00111222333'; oSegment.DataElementValue[2,0] := '89.93'; oSegment.DataElementValue[5,1] := '14'; oSegment.DataElementValue[5,2] := 'A'; oSegment.DataElementValue[5,3] := '1'; oSegment.DataElementValue[6,0] := 'Y'; oSegment.DataElementValue[7,0] := 'A'; oSegment.DataElementValue[8,0] := 'Y'; oSegment.DataElementValue[9,0] := 'Y'; oSegment.DataElementValue[18,0] := 'Y'; //DTP DATE OF STATEMENT oSegment := oTransactionset.CreateDataSegment('HL\CLM\DTP') as IediDataSegment; oSegment.DataElementValue[1,0] := '434'; oSegment.DataElementValue[2,0] := 'D8'; oSegment.DataElementValue[3,1] := '19960911'; //REF CLAIM CODES oSegment := oTransactionset.CreateDataSegment('HL\CLM\CL1') as IediDataSegment; oSegment.DataElementValue[1,0] := '3'; oSegment.DataElementValue[2,0] := '1'; //HI HEALTH CARE DIAGNOSIS CODES oSegment := oTransactionset.CreateDataSegment('HL\CLM\HI') as IediDataSegment; oSegment.DataElementValue[1,1] := 'BK'; oSegment.DataElementValue[1,2] := '366.9'; //HI HEALTH CARE DIAGNOSIS CODES oSegment := oTransactionset.CreateDataSegment('HL\CLM\HI(2)') as IediDataSegment; oSegment.DataElementValue[1,1] := 'BF'; oSegment.DataElementValue[1,2] := '401.9'; oSegment.DataElementValue[2,1] := 'BF'; oSegment.DataElementValue[2,2] := '794.31'; //HI HEALTH CARE DIAGNOSIS CODES oSegment := oTransactionset.CreateDataSegment('HL\CLM\HI(3)') as IediDataSegment; oSegment.DataElementValue[1,1] := 'BQ'; oSegment.DataElementValue[1,2] := '15.3'; oSegment.DataElementValue[1,3] := 'D8'; oSegment.DataElementValue[1,4] := '19960911'; //HI HEALTH CARE DIAGNOSIS CODES oSegment := oTransactionset.CreateDataSegment('HL\CLM\HI(4)') as IediDataSegment; oSegment.DataElementValue[1,1] := 'BH'; oSegment.DataElementValue[1,2] := 'A1'; oSegment.DataElementValue[1,3] := 'D8'; oSegment.DataElementValue[1,4] := '19261111'; oSegment.DataElementValue[1,1] := 'BH'; oSegment.DataElementValue[1,2] := 'A2'; oSegment.DataElementValue[1,3] := 'D8'; oSegment.DataElementValue[1,4] := '19911101'; oSegment.DataElementValue[1,1] := 'BH'; oSegment.DataElementValue[1,2] := 'B1'; oSegment.DataElementValue[1,3] := 'D8'; oSegment.DataElementValue[1,4] := '19261111'; oSegment.DataElementValue[1,1] := 'BH'; oSegment.DataElementValue[1,2] := 'B2'; oSegment.DataElementValue[1,3] := 'D8'; oSegment.DataElementValue[1,4] := '19870101'; //HI HEALTH CARE DIAGNOSIS CODES oSegment := oTransactionset.CreateDataSegment('HL\CLM\HI(5)') as IediDataSegment; oSegment.DataElementValue[1,1] := 'BE'; oSegment.DataElementValue[1,2] := 'A2'; oSegment.DataElementValue[1,5] := '15.31'; //HI HEALTH CARE DIAGNOSIS CODES oSegment := oTransactionset.CreateDataSegment('HL\CLM\HI(6)') as IediDataSegment; oSegment.DataElementValue[1,1] := 'BG'; oSegment.DataElementValue[1,2] := '09'; //NM1 ATTENDING PHYSICIAN oSegment := oTransactionset.CreateDataSegment('HL\CLM\NM1\NM1') as IediDataSegment; oSegment.DataElementValue[1,0] := '71'; oSegment.DataElementValue[2,0] := '1'; oSegment.DataElementValue[3,0] := 'JONES'; oSegment.DataElementValue[4,0] := 'JOHN'; oSegment.DataElementValue[5,0] := 'J'; oSegment.DataElementValue[8,0] := 'XX'; oSegment.DataElementValue[9,0] := 'B99937'; //PRV RENDERING PROVIDER INFORMATION oSegment := oTransactionset.CreateDataSegment('HL\CLM\NM1\PRV') as IediDataSegment; oSegment.DataElementValue[1,0] := 'AT'; oSegment.DataElementValue[2,0] := 'ZZ'; oSegment.DataElementValue[3,0] := '363LP0200N'; //SUBSCRIBER INFORMATION oSegment := oTransactionset.CreateDataSegment('HL\CLM\SBR\SBR') as IediDataSegment; oSegment.DataElementValue[1,0] := 'S'; oSegment.DataElementValue[2,0] := '01'; oSegment.DataElementValue[3,0] := '351630'; oSegment.DataElementValue[4,0] := 'STATE TEACHERS'; oSegment.DataElementValue[9,0] := '09'; //DEMOGRAPHIC INFORMATION oSegment := oTransactionset.CreateDataSegment('HL\CLM\SBR\DMG') as IediDataSegment; oSegment.DataElementValue[1,0] := 'D8'; oSegment.DataElementValue[2,0] := '19261111'; oSegment.DataElementValue[3,0] := 'F'; //OTHER HEALTH INSURANCE INFORMATION oSegment := oTransactionset.CreateDataSegment('HL\CLM\SBR\OI') as IediDataSegment; oSegment.DataElementValue[3,0] := 'Y'; oSegment.DataElementValue[6,0] := 'Y'; //NM1 SUBSCRIBER NAME oSegment := oTransactionset.CreateDataSegment('HL\CLM\SBR\NM1\NM1') as IediDataSegment; oSegment.DataElementValue[1,0] := 'IL'; oSegment.DataElementValue[2,0] := '1'; oSegment.DataElementValue[3,0] := 'DOE'; oSegment.DataElementValue[4,0] := 'JANE'; oSegment.DataElementValue[5,0] := 'S'; oSegment.DataElementValue[8,0] := 'MI'; oSegment.DataElementValue[9,0] := '222004433'; //SUBSCRIBER ADDRESS oSegment := oTransactionset.CreateDataSegment('HL\CLM\SBR\NM1\N3') as IediDataSegment; oSegment.DataElementValue[1,0] := '125 City Avenue'; //SUBSCRIBER CITY STATE ZIP oSegment := oTransactionset.CreateDataSegment('HL\CLM\SBR\NM1\N4') as IediDataSegment; oSegment.DataElementValue[1,0] := 'Centerville'; oSegment.DataElementValue[2,0] := 'PA'; oSegment.DataElementValue[3,0] := '17111'; //NM1 PAYER NAME oSegment := oTransactionset.CreateDataSegment('HL\CLM\SBR\NM1(2)\NM1') as IediDataSegment; oSegment.DataElementValue[1,0] := 'PR'; oSegment.DataElementValue[2,0] := '2'; oSegment.DataElementValue[3,0] := 'STATE TEACHERS'; oSegment.DataElementValue[8,0] := 'PI'; oSegment.DataElementValue[9,0] := '1135'; for i := 1 to 3 do begin sInstance := trim(IntToStr(i)); //LX SERVICE LINE COUNTER oSegment := oTransactionset.CreateDataSegment('HL\CLM\LX\LX') as IediDataSegment; oSegment.DataElementValue[1,0] := sInstance; //SV2 INSTITUTIONAL SERVICE oSegment := oTransactionset.CreateDataSegment('HL\CLM\LX\SV2') as IediDataSegment; oSegment.DataElementValue[1,0] := '305'; oSegment.DataElementValue[2,1] := 'HC'; oSegment.DataElementValue[2,2] := '85025'; oSegment.DataElementValue[3,0] := '13.39'; oSegment.DataElementValue[4,0] := 'UN'; oSegment.DataElementValue[5,0] := '1'; //DTP DATE - SERVICE DATE(S) oSegment := oTransactionset.CreateDataSegment('HL\CLM\LX\DTP') as IediDataSegment; oSegment.DataElementValue[1,0] := '472'; oSegment.DataElementValue[2,0] := 'D8'; oSegment.DataElementValue[3,0] := '19960911'; end; nSubscriberCounter := nSubscriberCounter + 1; end; nInfoSourceCounter := nInfoSourceCounter + 1; end; //write EDI to file oEdiDoc.Save(sPath + sEdiFile,0); ShowMessage('Generate done. Output file = ' + sEdiFile ); cmdGenerate.Enabled := true; end;