private void btnGen_Click(object sender, System.EventArgs e) { // This is just an example program to show how to create a HIPAA 270 4010 X092 EDI X12 file // in C# with the Framework EDI component string sSefFile, sEdiFile, sPath; ediDocument oEdiDoc; ediInterchange oInterchange; ediGroup oGroup; ediTransactionSet oTransactionset; ediDataSegment oSegment = new ediDataSegment(); ediSchema oSchema; ediSchemas oSchemas; sPath = AppDomain.CurrentDomain.BaseDirectory; sSefFile = "270_X092.SEF"; sEdiFile = "270_X092_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 =":"; // create the interchange segment oInterchange = oEdiDoc.CreateInterchange("X", "004010"); ediDataSegment.Set(ref oSegment, (ediDataSegment) oInterchange.GetDataSegmentHeader()); oSegment.set_DataElementValue(1, 0, "00"); //oSegment.set_DataElementValue(2, 0, "00"); oSegment.set_DataElementValue(3, 0, "01"); oSegment.set_DataElementValue(4, 0, "SECRET"); oSegment.set_DataElementValue(5, 0, "ZZ"); oSegment.set_DataElementValue(6, 0, "9999"); oSegment.set_DataElementValue(7, 0, "ZZ"); oSegment.set_DataElementValue(8, 0, "7777"); oSegment.set_DataElementValue(9, 0, "930603"); oSegment.set_DataElementValue(10, 0, "1230"); oSegment.set_DataElementValue(11, 0, "U"); oSegment.set_DataElementValue(12, 0, "00401"); oSegment.set_DataElementValue(13, 0, "000000905"); oSegment.set_DataElementValue(14, 0, "1"); oSegment.set_DataElementValue(15, 0, "T"); oSegment.set_DataElementValue(16, 0, ":"); // create the functional group segment oGroup = oInterchange.CreateGroup("004010X092"); ediDataSegment.Set(ref oSegment, (ediDataSegment) oGroup.GetDataSegmentHeader()); oSegment.set_DataElementValue(1, 0, "HS"); oSegment.set_DataElementValue(2, 0, "SENDER CODE"); oSegment.set_DataElementValue(3, 0, "RECEIVER CODE"); oSegment.set_DataElementValue(4, 0, "19970101"); oSegment.set_DataElementValue(5, 0, "0802"); oSegment.set_DataElementValue(6, 0, "1"); oSegment.set_DataElementValue(7, 0, "X"); oSegment.set_DataElementValue(8, 0, "004010X092"); // HEADER // TRANSACTION SET HEADER oTransactionset = oGroup.CreateTransactionSet("270"); ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.GetDataSegmentHeader()); oSegment.set_DataElementValue(2, 0, "1234"); ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("BHT")); oSegment.set_DataElementValue(1, 0, "0022"); oSegment.set_DataElementValue(2, 0, "01"); oSegment.set_DataElementValue(3, 0, "12345"); oSegment.set_DataElementValue(4, 0, "20070329"); oSegment.set_DataElementValue(5, 0, "1225"); oSegment.set_DataElementValue(6, 0, "RT"); int nHlCounter = 0; int nHlInfoReceiverParent; int nHlSubscriberParent; int nHlDependentParent; //-------------------------------------------------------------------------------- // DETAIL INFO SOURCE LEVEL int nInfoSources = 1; for (int nInfoSourceCtr=1; nInfoSourceCtr <= nInfoSources; nInfoSourceCtr++) { nHlCounter = nHlCounter + 1; nHlInfoReceiverParent = nHlCounter; ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\HL")); oSegment.set_DataElementValue(1, 0, nHlCounter.ToString() ); oSegment.set_DataElementValue(3, 0, "20"); oSegment.set_DataElementValue(4, 0, "1"); // INFORMATION SOURCE NAME ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\NM1")); oSegment.set_DataElementValue(1, 0, "PR"); oSegment.set_DataElementValue(2, 0, "2"); oSegment.set_DataElementValue(3, 0, "WILSON"); oSegment.set_DataElementValue(4, 0, "BILL"); oSegment.set_DataElementValue(8, 0, "PI"); oSegment.set_DataElementValue(9, 0, "87728"); //---------------------------------------------------------------------------------- // INFORMATION RECEIVER LEVEL int nInfoReceivers = 1; for (int nInfoReceiverCtr=1; nInfoReceiverCtr <= nInfoReceivers; nInfoReceiverCtr++) { nHlCounter = nHlCounter + 1; nHlSubscriberParent = nHlCounter; ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\HL")); oSegment.set_DataElementValue(1, 0, nHlCounter.ToString() ); oSegment.set_DataElementValue(2, 0, nHlInfoReceiverParent.ToString() ); oSegment.set_DataElementValue(3, 0, "21"); oSegment.set_DataElementValue(4, 0, "1"); // INFORMATION RECEIVER NAME ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\NM1")); oSegment.set_DataElementValue(1, 0, "1P"); oSegment.set_DataElementValue(2, 0, "1"); oSegment.set_DataElementValue(3, 0, "PATRICK"); oSegment.set_DataElementValue(4, 0, "FITZGERALD"); oSegment.set_DataElementValue(5, 0, "M"); oSegment.set_DataElementValue(8, 0, "SV"); oSegment.set_DataElementValue(9, 0, "0202034"); //INFORMATION RECEVIER ADDITIONAL IDENTIFICATION. ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\REF")); oSegment.set_DataElementValue(1, 0, "N5"); oSegment.set_DataElementValue(2, 0, "129"); // INFORMATION RECEIVER ADDRESS. ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\N3")); oSegment.set_DataElementValue(1, 0, "Cross street Dr."); oSegment.set_DataElementValue(2, 0, "Suite 987"); // INFORMATION RECEIVER CITY, STATE ZIP ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\N4")); oSegment.set_DataElementValue(1, 0, "NewYork"); oSegment.set_DataElementValue(2, 0, "NY"); oSegment.set_DataElementValue(3, 0, "10023"); oSegment.set_DataElementValue(4, 0, "USA"); // INFORMATION RECEIVER CONTACT INFORMATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\PER")); oSegment.set_DataElementValue(1, 0, "IC"); oSegment.set_DataElementValue(2, 0, "BILLING DEPT"); oSegment.set_DataElementValue(3, 0, "TE"); oSegment.set_DataElementValue(4, 0, "2065551212"); oSegment.set_DataElementValue(5, 0, "EX"); oSegment.set_DataElementValue(6, 0, "2104"); oSegment.set_DataElementValue(7, 0, "FX"); oSegment.set_DataElementValue(8, 0, "2065551214"); // INFORMATION RECEIVER PROVIDER INFORMATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\PRV")); oSegment.set_DataElementValue(1, 0, "PE"); oSegment.set_DataElementValue(2, 0, "ZZ"); oSegment.set_DataElementValue(3, 0, "207K00000X"); //------------------------------------------------------------------------------ // SUBSCRIBER LEVEL int nSubscribers = 1; for (int nSubscbrCtr=1; nSubscbrCtr <= nSubscribers; nSubscbrCtr++) { nHlCounter = nHlCounter + 1; nHlDependentParent = nHlCounter; ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\HL")); oSegment.set_DataElementValue(1, 0, nHlCounter.ToString() ); oSegment.set_DataElementValue(2, 0, nHlSubscriberParent.ToString() ); oSegment.set_DataElementValue(3, 0, "22"); oSegment.set_DataElementValue(4, 0, "1"); // SUBSCRIBER TRACE NUMBER ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\TRN")); oSegment.set_DataElementValue(1, 0, "1"); oSegment.set_DataElementValue(2, 0, "98175-02157"); oSegment.set_DataElementValue(3, 0, "9877281234"); // SUBSCRIBER NAME ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\NM1")); oSegment.set_DataElementValue(1, 0, "IL"); oSegment.set_DataElementValue(2, 0, "1"); oSegment.set_DataElementValue(3, 0, "JONES"); oSegment.set_DataElementValue(4, 0, "EDWARD"); oSegment.set_DataElementValue(5, 0, "S"); oSegment.set_DataElementValue(8, 0, "MI"); oSegment.set_DataElementValue(9, 0, "11122333301"); // SUBSCRIBER ADDITIONAL IDENTIFICATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\REF")); oSegment.set_DataElementValue(1, 0, "1L"); oSegment.set_DataElementValue(2, 0, "19430519"); // SUBSCRIBER ADDRESS INFORMATATION ,SUBSCRIBER CITY STATE ZIP ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\N3")); oSegment.set_DataElementValue(1, 0, "435 th Street"); oSegment.set_DataElementValue(2, 0, "435 th Street"); ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\N4")); oSegment.set_DataElementValue(1, 0, "NewYork"); oSegment.set_DataElementValue(2, 0, "NY"); oSegment.set_DataElementValue(3, 0, "14008"); // SUBSCRIBER DEMOGRAPHIC INFORMATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\DMG")); oSegment.set_DataElementValue(1, 0, "D8"); oSegment.set_DataElementValue(2, 0, "19430917"); oSegment.set_DataElementValue(3, 0, "F"); // SUBSCRIBER DATE ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\DTP")); oSegment.set_DataElementValue(1, 0, "102"); oSegment.set_DataElementValue(2, 0, "D8"); oSegment.set_DataElementValue(3, 0, "19980818"); // SUBSCRIBER ELIGIBILITY OR BENEFIT INQUIRY INFORMATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\EQ\\EQ")); oSegment.set_DataElementValue(1, 0, "98"); oSegment.set_DataElementValue(3, 0, "FAM"); //SUBSCRIBER SPEND DOWN AMOUNT ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\EQ\\AMT")); oSegment.set_DataElementValue(1, 0, "R"); oSegment.set_DataElementValue(2, 0, "37.5"); //SUBSCRIBER ELIGIBILITY OR BENEFIT ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\EQ\\III")); oSegment.set_DataElementValue(1, 0, "BK"); oSegment.set_DataElementValue(2, 0, "486"); //SUBSCRIBER ADDITIONAL INFORMATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\EQ\\REF")); oSegment.set_DataElementValue(1, 0, "9F"); oSegment.set_DataElementValue(2, 0, "66045"); //SUBSCRIBER ELIGIBILITY/BENEFIT DATE ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\EQ\\DTP")); oSegment.set_DataElementValue(1, 0, "472"); oSegment.set_DataElementValue(2, 0, "D8"); oSegment.set_DataElementValue(3, 0, "19990707"); //------------------------------------------------------------------------------- //DEPENDENT LEVEL int nDependents = 1; for (int nDependentCtr=1; nDependentCtr <= nDependents; nDependentCtr++) { nHlCounter = nHlCounter + 1; ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\HL")); oSegment.set_DataElementValue(1, 0, nHlCounter.ToString() ); oSegment.set_DataElementValue(2, 0, nHlDependentParent.ToString() ); oSegment.set_DataElementValue(3, 0, "23"); oSegment.set_DataElementValue(4, 0, "0"); //DEPENDENT TRACE NUMBER ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\TRN")); oSegment.set_DataElementValue(1, 0, "1"); oSegment.set_DataElementValue(2, 0, "98175-02157"); oSegment.set_DataElementValue(3, 0, "9877281234"); oSegment.set_DataElementValue(4, 0, "RADIOLOGY"); //DEPENDENT NAME ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\NM1")); oSegment.set_DataElementValue(1, 0, "03"); oSegment.set_DataElementValue(2, 0, "1"); oSegment.set_DataElementValue(3, 0, "SMITH"); oSegment.set_DataElementValue(4, 0, "MARY LOU"); oSegment.set_DataElementValue(5, 0, "R"); //DEPENDENT ADDITIONAL IDENTIFICATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\REF")); oSegment.set_DataElementValue(1, 0, "SY"); oSegment.set_DataElementValue(2, 0, "003221234"); //DEPENDENT ADDRESS ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\N3")); oSegment.set_DataElementValue(1, 0, "WATERLOO"); oSegment.set_DataElementValue(2, 0, "32 PARK ST"); //DEPENDENT CITY/STATE/ZIP CODE ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\N4")); oSegment.set_DataElementValue(1, 0, "NEWYORK"); oSegment.set_DataElementValue(2, 0, "NY"); oSegment.set_DataElementValue(3, 0, "10023"); oSegment.set_DataElementValue(4, 0, "032"); //PROVIDER INFORMATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\PRV")); oSegment.set_DataElementValue(1, 0, "PE"); oSegment.set_DataElementValue(2, 0, "ZZ"); oSegment.set_DataElementValue(3, 0, "207K00000X"); //DEPENDENT DEMOGRAPHIC INFORMATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\DMG")); oSegment.set_DataElementValue(1, 0, "D8"); oSegment.set_DataElementValue(2, 0, "19430121"); oSegment.set_DataElementValue(3, 0, "M"); //DEPENDENT DATE ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\DTP")); oSegment.set_DataElementValue(1, 0, "102"); oSegment.set_DataElementValue(2, 0, "D8"); oSegment.set_DataElementValue(3, 0, "19500808"); //DEPENDENT ELIGIBILITY OR BENEFIT INQUIRY INFORMATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\EQ\\EQ")); oSegment.set_DataElementValue(1, 0, "30"); oSegment.set_DataElementValue(3, 0, "FAM"); //DEPENDENT ELIGIBILITY OR BENEFIT ADDITIONAL INQUIRY ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\EQ\\III")); oSegment.set_DataElementValue(1, 0, "BK"); oSegment.set_DataElementValue(2, 0, "486"); //DEPENDENT ADDITIONAL INFORMATION ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\EQ\\REF")); oSegment.set_DataElementValue(1, 0, "9F"); oSegment.set_DataElementValue(2, 0, "660415"); //DEPENDENT ELIGIBILITY/BENEFIT DATE ediDataSegment.Set(ref oSegment, oTransactionset.CreateDataSegment("HL\\NM1\\EQ\\DTP")); oSegment.set_DataElementValue(1, 0, "472"); oSegment.set_DataElementValue(2, 0, "D8"); oSegment.set_DataElementValue(3, 0, "19570807"); } //nDependents } //nSubscribers } //nInfoReceivers } //nInfoSources oEdiDoc.Save(sPath + sEdiFile); MessageBox.Show("Done. Output = " + sPath + sEdiFile); }