private void btnGen_Click(object sender, System.EventArgs e)
{
// This is just an example program to show how to create an EDI X12 270 4010 X092 HIPAA 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);
}