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 HIPAA 837 4010 X098 Professional EDI 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); }