private void btnGen_Click(object sender, System.EventArgs e)
{
//This program is just an example to show how to use the Framework EDI component in C#
//to generate an EDI 837 4010 X098 file.
string sSefFile, sEdiFile, sPath;
ediDocument oEdiDoc = null;
ediSchema oSchema = null;
ediSchemas oSchemas = null;
ediInterchange oInterchange = null;
ediGroup oGroup = null;
ediTransactionSet oTransactionset = null;
ediDataSegment oSegment = null;
sPath = AppDomain.CurrentDomain.BaseDirectory;
sSefFile = "837_X098.SEF";
sEdiFile = "837_X098_Output.x12";
oEdiDoc = new ediDocument();
// Change the cursor type from dynamic to forward to improve speed performance
oEdiDoc.CursorType = DocumentCursorTypeConstants.Cursor_ForwardWrite;
// Disable the internal standard reference library to be memory effecient
oSchemas = oEdiDoc.GetSchemas();
oSchemas.EnableStandardReference = false;
// Load the SEF file
oSchema = oEdiDoc.ImportSchema(sPath + sSefFile, 0);
// Set termintors
oEdiDoc.SegmentTerminator ="~{13:10}" ; //tilde followed by a carraige return line feed
oEdiDoc.ElementTerminator ="*";
oEdiDoc.CompositeTerminator =":";
//CREATES THE ISA SEGMENT
ediInterchange.Set(ref oInterchange, (ediInterchange) oEdiDoc.CreateInterchange("X","004010"));
ediDataSegment.Set(ref oSegment, (ediDataSegment) oInterchange.GetDataSegmentHeader());
oSegment.set_DataElementValue(1,0,"00"); //Authorization Information Qualifier
oSegment.set_DataElementValue(2,0," "); //Authorization Information
oSegment.set_DataElementValue(3,0,"00"); //Security Information Qualifier
oSegment.set_DataElementValue(4,0," "); //Security Information
oSegment.set_DataElementValue(5,0,"12"); //Interchange ID Qualifier
oSegment.set_DataElementValue(6,0,"Sender "); //Interchange Sender ID
oSegment.set_DataElementValue(7,0,"12"); //Interchange ID Qualifier
oSegment.set_DataElementValue(8,0,"ReceiverID "); //Interchange Receiver ID
oSegment.set_DataElementValue(9,0,"010821"); //Interchange Date
oSegment.set_DataElementValue(10,0,"1548"); //Interchange Time
oSegment.set_DataElementValue(11,0,"U"); //Interchange Control Standards Identifier
oSegment.set_DataElementValue(12,0,"00401"); //Interchange Control Version Number
oSegment.set_DataElementValue(13,0,"000000020"); //Interchange Control Number
oSegment.set_DataElementValue(14,0,"0"); //Acknowledgment Requested
oSegment.set_DataElementValue(15,0,"T"); //Usage Indicator
oSegment.set_DataElementValue(16,0,":"); //Component Element Separator
//CREATES THE GS SEGMENT
ediGroup.Set(ref oGroup, (ediGroup) oInterchange.CreateGroup("004010X098"));
ediDataSegment.Set( ref oSegment, (ediDataSegment) oGroup.GetDataSegmentHeader());
oSegment.set_DataElementValue(1,0,"HC"); //Functional Identifier Code
oSegment.set_DataElementValue(2,0,"SenderDept"); //Application Sender's Code
oSegment.set_DataElementValue(3,0,"ReceiverDept"); //Application Receiver's Code
oSegment.set_DataElementValue(4,0,"20010821"); //Date
oSegment.set_DataElementValue(5,0,"1548"); //Time
oSegment.set_DataElementValue(6,0,"1"); //Group Control Number
oSegment.set_DataElementValue(7,0,"X"); //Responsible Agency Code
oSegment.set_DataElementValue(8,0,"004010X098"); //Version / Release / Industry Identifier Code
//CREATES THE ST SEGMENT
ediTransactionSet.Set(ref oTransactionset, (ediTransactionSet) oGroup.CreateTransactionSet("837"));
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.GetDataSegmentHeader());
oSegment.set_DataElementValue(1,0,"837"); //Transaction Set Identifier Code
oSegment.set_DataElementValue(2,0,"0021"); //Transaction Set Control Number
//BHT - BEGINNING OF HIERARCHICAL TRANSACTION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("BHT"));
oSegment.set_DataElementValue(1,0,"0019"); //Hierarchical Structure Code
oSegment.set_DataElementValue(2,0,"00"); //Transaction Set Purpose Code
oSegment.set_DataElementValue(3,0,"0123"); //Reference Identification
oSegment.set_DataElementValue(4,0,"19981015"); //Date
oSegment.set_DataElementValue(5,0,"1230"); //Time
oSegment.set_DataElementValue(6,0,"RP"); //Transaction Type Code
//REF - REFERENCE IDENTIFICATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("REF"));
oSegment.set_DataElementValue(1,0,"87"); //Reference Identification Qualifier
oSegment.set_DataElementValue(2,0,"004010X098"); //Reference Identification
//NM1 - LOOP ID - 1000A SUBMITTER NAME
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("NM1\\NM1"));
oSegment.set_DataElementValue(1,0,"41"); //Entity Identifier Code
oSegment.set_DataElementValue(2,0,"2"); //Entity Type Qualifier
oSegment.set_DataElementValue(3,0,"Premier Billing Service"); //Name Last or Organization Name
oSegment.set_DataElementValue(8,0,"46"); //Identification Code Qualifier
oSegment.set_DataElementValue(9,0,"TGJ23"); //Identification Code
//PER - ADMINISTRATIVE COMMUNICATIONS CONTACT
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("NM1\\PER"));
oSegment.set_DataElementValue(1,0,"IC"); //Contact Function Code
oSegment.set_DataElementValue(2,0,"JERRY"); //Name
oSegment.set_DataElementValue(3,0,"TE"); //Communication Number Qualifier
oSegment.set_DataElementValue(4,0,"3055552222"); //Communication Number
oSegment.set_DataElementValue(5,0,"EX"); //Communication Number Qualifier
oSegment.set_DataElementValue(6,0,"231"); //Communication Number
//NM1 - LOOP ID - 1000B RECEIVER NAME
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("NM1\\NM1"));
oSegment.set_DataElementValue(1,0,"40"); //Entity Identifier Code
oSegment.set_DataElementValue(2,0,"2"); //Entity Type Qualifier
oSegment.set_DataElementValue(3,0,"XYZ REPRICER"); //Name Last or Organization Name
oSegment.set_DataElementValue(8,0,"46"); //Identification Code Qualifier
oSegment.set_DataElementValue(9,0,"66783JJT"); //Identification Code
int nHlCounter = 0;
int nHlSubscriberParent;
int nHlDependentParent;
//--------------------------------------------------------------------------------------------------------
// 2000A BILLING/PAY-TO PROVIDER HL LOOP
int nProviders = 1;
for (int nPrvdrCtr=1; nPrvdrCtr <= nProviders; nPrvdrCtr++)
{
nHlCounter = nHlCounter + 1;
nHlSubscriberParent = nHlCounter;
//HL - HIERARCHICAL LEVEL
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\HL"));
oSegment.set_DataElementValue(1,0,nHlCounter.ToString()); //Hierarchical ID Number
oSegment.set_DataElementValue(3,0,"20"); //Hierarchical Level Code
oSegment.set_DataElementValue(4,0,"1"); //Hierarchical Child Code
//NM1 - 2010AA BILLING PROVIDER
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\NM1"));
oSegment.set_DataElementValue(1,0,"85"); //Entity Identifier Code
oSegment.set_DataElementValue(2,0,"2"); //Entity Type Qualifier
oSegment.set_DataElementValue(3,0,"Premier Billing Service"); //Name Last or Organization Name
oSegment.set_DataElementValue(8,0,"24"); //Identification Code Qualifier
oSegment.set_DataElementValue(9,0,"587654321"); //Identification Code
//N3 - ADDRESS INFORMATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\N3"));
oSegment.set_DataElementValue(1,0,"234 Seaway St."); //Address Information
//N4 - GEOGRAPHIC LOCATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\N4"));
oSegment.set_DataElementValue(1,0,"Miami"); //City Name
oSegment.set_DataElementValue(2,0,"FL"); //State or Province Code
oSegment.set_DataElementValue(3,0,"33111"); //Postal Code
//NM1 - 2010AB PAY-TO PROVIDER
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\NM1"));
oSegment.set_DataElementValue(1,0,"87"); //Entity Identifier Code
oSegment.set_DataElementValue(2,0,"2"); //Entity Type Qualifier
oSegment.set_DataElementValue(3,0,"Kildare Associates"); //Name Last or Organization Name
oSegment.set_DataElementValue(8,0,"24"); //Identification Code Qualifier
oSegment.set_DataElementValue(9,0,"99878-ABA"); //Identification Code
//N3 - ADDRESS INFORMATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\N3"));
oSegment.set_DataElementValue(1,0,"2345 Ocean Blvd."); //Address Information
//N4 - GEOGRAPHIC LOCATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\N4"));
oSegment.set_DataElementValue(1,0,"Miami"); //City Name
oSegment.set_DataElementValue(2,0,"FL"); //State or Province Code
oSegment.set_DataElementValue(3,0,"33111"); //Postal Code
//-------------------------------------------------------------------------------------------------------------
// 2000B SUBSCRIBER HL LOOP
int nSubscriberCount = 1;
for (int nSubscbrCtr=1; nSubscbrCtr <= nSubscriberCount; nSubscbrCtr++)
{
nHlCounter = nHlCounter + 1;
nHlDependentParent = nHlCounter;
//HL - HIERARCHICAL LEVEL
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\HL"));
oSegment.set_DataElementValue(1,0,nHlCounter.ToString()); //Hierarchical ID Number
oSegment.set_DataElementValue(2,0,nHlSubscriberParent.ToString()); //Hierarchical Parent ID Number
oSegment.set_DataElementValue(3,0,"22"); //Hierarchical Level Code
oSegment.set_DataElementValue(4,0,"0"); //Hierarchical Child Code
//SBR - SUBSCRIBER INFORMATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\SBR"));
oSegment.set_DataElementValue(1,0,"P"); //Payer Responsibility Sequence Number Code
oSegment.set_DataElementValue(2,0,"18"); //Individual Relationship Code
oSegment.set_DataElementValue(3,0,"12312-A"); //Reference Identification
oSegment.set_DataElementValue(9,0,"HM"); //Claim Filing Indicator Code
//NM1 - 2010BA SUBSCRIBER
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\NM1"));
oSegment.set_DataElementValue(1,0,"IL"); //Entity Identifier Code
oSegment.set_DataElementValue(2,0,"1"); //Entity Type Qualifier
oSegment.set_DataElementValue(3,0,"Smith"); //Name Last or Organization Name
oSegment.set_DataElementValue(4,0,"Ted"); //Name First
oSegment.set_DataElementValue(8,0,"MI"); //Identification Code Qualifier
oSegment.set_DataElementValue(9,0,"000221111"); //Identification Code
//N3 - ADDRESS INFORMATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\N3"));
oSegment.set_DataElementValue(1,0,"236 N. Main St."); //Address Information
//N4 - GEOGRAPHIC LOCATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\N4"));
oSegment.set_DataElementValue(1,0,"Maimi"); //City Name
oSegment.set_DataElementValue(2,0,"Fl"); //State or Province Code
oSegment.set_DataElementValue(3,0,"33413"); //Postal Code
//DMG - DEMOGRAPHIC INFORMATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\DMG"));
oSegment.set_DataElementValue(1,0,"D8"); //Date Time Period Format Qualifier
oSegment.set_DataElementValue(2,0,"19430501"); //Date Time Period
oSegment.set_DataElementValue(3,0,"M"); //Gender Code
//NM1 - 2010BB SUBSCRIBER/PAYER
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\NM1"));
oSegment.set_DataElementValue(1,0,"PR"); //Entity Identifier Code
oSegment.set_DataElementValue(2,0,"2"); //Entity Type Qualifier
oSegment.set_DataElementValue(3,0,"Alliance Health and Life Insurance "); //Name Last or Organization Name
oSegment.set_DataElementValue(8,0,"PI"); //Identification Code Qualifier
oSegment.set_DataElementValue(9,0,"741234"); //Identification Code
//N2 - ADDITIONAL NAME INFORMATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\NM1\\N2"));
oSegment.set_DataElementValue(1,0,"COMPANY"); //Name
//----------------------------------------------------------------------------------------------------
// CLM - HEALTH CLAIM -- CLAIM LOOP
int nClaimsCount = 1;
for (int nClmCtr=1; nClmCtr <= nClaimsCount; nClmCtr++)
{
//CLM - HEALTH CLAIM
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\CLM"));
oSegment.set_DataElementValue(1,0,"26462967"); //Claim Submitter's Identifier
oSegment.set_DataElementValue(2,0,"100.00"); //Monetary Amount
oSegment.set_DataElementValue(5,1,"11"); //Claim Submitter's Identifier
oSegment.set_DataElementValue(5,3,"1"); //Claim Filing Indicator Code
oSegment.set_DataElementValue(6,0,"Y"); //Yes/No Condition or Response Code
oSegment.set_DataElementValue(7,0,"A"); //Provider Accept Assignment Code
oSegment.set_DataElementValue(8,0,"Y"); //Yes/No Condition or Response Code
oSegment.set_DataElementValue(9,0,"Y"); //Release of Information Code
oSegment.set_DataElementValue(10,0,"C"); //Patient Signature Source Code
//DTP - DATE OR TIME OR PERIOD
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\DTP"));
oSegment.set_DataElementValue(1,0,"431"); //Date/Time Qualifier
oSegment.set_DataElementValue(2,0,"D8"); //Date Time Period Format Qualifier
oSegment.set_DataElementValue(3,0,"19981003"); //Date Time Period
//REF - REFERENCE IDENTIFICATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\REF"));
oSegment.set_DataElementValue(1,0,"D9"); //Reference Identification Qualifier
oSegment.set_DataElementValue(2,0,"17312345600006351"); //Reference Identification
//HI - HEALTH CARE INFORMATION CODES
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\HI"));
oSegment.set_DataElementValue(1,1,"BK"); //Health Care Code Information
oSegment.set_DataElementValue(1,2,"0340"); //Health Care Code Information
oSegment.set_DataElementValue(2,1,"BF"); //Health Care Code Information
oSegment.set_DataElementValue(2,2,"V7389"); //Health Care Code Information
//NM1 - INDIVIDUAL OR ORGANIZATIONAL NAME
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\NM1\\NM1"));
oSegment.set_DataElementValue(1,0,"82"); //Entity Identifier Code
oSegment.set_DataElementValue(2,0,"1"); //Entity Type Qualifier
oSegment.set_DataElementValue(3,0,"Kildare"); //Name Last or Organization Name
oSegment.set_DataElementValue(4,0,"Ben"); //Name First
oSegment.set_DataElementValue(8,0,"34"); //Identification Code Qualifier
oSegment.set_DataElementValue(9,0,"112233334"); //Identification Code
//PRV - PROVIDER INFORMATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\NM1\\PRV"));
oSegment.set_DataElementValue(1,0,"PE"); //Provider Code
oSegment.set_DataElementValue(2,0,"ZZ"); //Reference Identification Qualifier
oSegment.set_DataElementValue(3,0,"203BF0100Y"); //Reference Identification
//NM1 - INDIVIDUAL OR ORGANIZATIONAL NAME
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\NM1\\NM1"));
oSegment.set_DataElementValue(1,0,"77"); //Entity Identifier Code
oSegment.set_DataElementValue(2,0,"2"); //Entity Type Qualifier
oSegment.set_DataElementValue(3,0,"Kildare Associates"); //Name Last or Organization Name
oSegment.set_DataElementValue(8,0,"24"); //Identification Code Qualifier
oSegment.set_DataElementValue(9,0,"581234567"); //Identification Code
//N3 - ADDRESS INFORMATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\NM1\\N3"));
oSegment.set_DataElementValue(1,0,"2345 Ocean Blvd."); //Address Information
//N4 - GEOGRAPHIC LOCATION
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\NM1\\N4"));
oSegment.set_DataElementValue(1,0,"Miami"); //City Name
oSegment.set_DataElementValue(2,0,"FL"); //State or Province Code
oSegment.set_DataElementValue(3,0,"33111"); //Postal Code
//----------------------------------------------------------------------------------------------------
// LX - 2400 SERVICE LINE LOOP
int nServiceLineCount = 4;
for (int nSrvLineCtr=1; nSrvLineCtr <= nServiceLineCount; nSrvLineCtr++)
{
//LX - ASSIGNED NUMBER
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\LX\\LX"));
oSegment.set_DataElementValue(1,0,nSrvLineCtr.ToString()); //Assigned Number
//SV1 - PROFESSIONAL SERVICE
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\LX\\SV1"));
oSegment.set_DataElementValue(1,1,"HC"); //Composite Medical Procedure Identifier
oSegment.set_DataElementValue(1,2,"99213"); //Monetary Amount
oSegment.set_DataElementValue(2,0,"40.00"); //Monetary Amount
oSegment.set_DataElementValue(3,0,"UN"); //Unit or Basis for Measurement Code
oSegment.set_DataElementValue(4,0,"1"); //Quantity
oSegment.set_DataElementValue(7,1,"1"); //Composite Medical Procedure Identifier
oSegment.set_DataElementValue(9,0,"N"); //Yes/No Condition or Response Code
//DTP - DATE OR TIME OR PERIOD
ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\CLM\\LX\\DTP"));
oSegment.set_DataElementValue(1,0,"472"); //Date/Time Qualifier
oSegment.set_DataElementValue(2,0,"D8"); //Date Time Period Format Qualifier
oSegment.set_DataElementValue(3,0,"19981003"); //Date Time Period
}
}
}
}
// save edi document object to file
oEdiDoc.Save (sPath + sEdiFile);
MessageBox.Show("Done. Output = " + sPath + sEdiFile);
}