using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Edidev.FrameworkEDI; 1 namespace Gen837X222A1 public partial class Form1 : Form public Form1() InitializeComponent(); private void btngenerate_click(object sender, EventArgs e) edidocument oedidoc; edischemas oschemas; ediinterchange ointerchange; edigroup ogroup; editransactionset otransactionset; edidatasegment osegment; int nbillprovider; int nsubscribers; int ndependents; int nhlcounter; int nhlsubscriberparent; int nhldependentparent; string spath = AppDomain.CurrentDomain.BaseDirectory; string sedifile = "837_5010X222A1.X12"; string sseffile = "837_005010X222A1.SemRef.EVAL0.SEF"; //CREATES OEDIDOC OBJECT oedidoc = new edidocument(); //THIS MAKES CERTAIN THAT FREDI ONLY USES THE SEF FILE PROVIDED, AND THAT IT DOES //NOT USE ITS BUILT IN STANDARD REFERENCE TABLE TO GENERATE THE EDI FILE. oschemas = (edischemas)oedidoc.getschemas(); oschemas.enablestandardreference = false; //ENABLES FORWARD WRITE, AND INCREASES BUFFER I/O TO IMPROVE PERFORMANCE oedidoc.cursortype = DocumentCursorTypeConstants.Cursor_ForwardWrite; oedidoc.set_property(documentpropertyidconstants.property_documentbufferio, 200); //SET TERMINATORS oedidoc.segmentterminator = "~"; oedidoc.elementterminator = "*"; oedidoc.compositeterminator = ":"; //LOADS THE SEF FILE oedidoc.importschema(spath + sseffile, 0); //CREATES THE ISA SEGMENT ointerchange = (ediinterchange)oedidoc.createinterchange("x", "005010"); 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, "ZZ"); //Interchange ID Qualifier osegment.set_dataelementvalue(6, 0, "SENDER_ID"); //Interchange Sender ID osegment.set_dataelementvalue(7, 0, "ZZ"); //Interchange ID Qualifier osegment.set_dataelementvalue(8, 0, "REVEIVER_ID"); //Interchange Receiver ID osegment.set_dataelementvalue(9, 0, "020617"); //Interchange Date osegment.set_dataelementvalue(10, 0, "1816"); //Interchange Time osegment.set_dataelementvalue(11, 0, "^"); //Repetition Separator osegment.set_dataelementvalue(12, 0, "00501"); //Interchange Control Version Number osegment.set_dataelementvalue(13, 0, "000000238"); //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 2 //CREATES THE GS SEGMENT ogroup = (edigroup)ointerchange.creategroup("005010x222a1"); edidatasegment.set(ref osegment, ogroup.getdatasegmentheader()); osegment.set_dataelementvalue(1, 0, "HC"); //Functional Identifier Code osegment.set_dataelementvalue(2, 0, "SENDER_ID"); //Application Sender//s Code osegment.set_dataelementvalue(3, 0, "RECEIVER_ID"); //Application Receiver//s Code osegment.set_dataelementvalue(4, 0, "20020617"); //Date osegment.set_dataelementvalue(5, 0, "1816"); //Time osegment.set_dataelementvalue(6, 0, "206"); //Group Control Number osegment.set_dataelementvalue(7, 0, "X"); //Responsible Agency Code osegment.set_dataelementvalue(8, 0, "005010X222A1"); //Version / Release / Industry Identifier Code //CREATES THE ST SEGMENT otransactionset = (editransactionset)ogroup.createtransactionset("837"); edidatasegment.set(ref osegment, otransactionset.getdatasegmentheader()); osegment.set_dataelementvalue(1, 0, "837"); //Transaction Set Identifier Code osegment.set_dataelementvalue(2, 0, "0021"); //Transaction Set Control Number osegment.set_dataelementvalue(3, 0, "005010X222A1"); //Implementation Convention Reference //BHT BEGINNING OF HIERARCHICAL TRANSACTION edidatasegment.set(ref osegment, 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, "244579"); //Reference Identification osegment.set_dataelementvalue(4, 0, "20061015"); //Date osegment.set_dataelementvalue(5, 0, "1023"); //Time osegment.set_dataelementvalue(6, 0, "CH"); //Transaction Type Code //1000A SUBMITTER //NM1 SUBMITTER NAME edidatasegment.set(ref osegment, otransactionset.createdatasegment("nm1\\nm1")); osegment.set_dataelementvalue(1, 0, "41"); //Entity Identifier Code osegment.set_dataelementvalue(3, 0, "PREMIER BILLING SERVICE"); // Last or Organization osegment.set_dataelementvalue(8, 0, "46"); osegment.set_dataelementvalue(9, 0, "TGJ23"); //Identification Code Qualifier //Identification Code //PER SUBMITTER EDI CONTACT INFO edidatasegment.set(ref osegment, otransactionset.createdatasegment("nm1\\per")); osegment.set_dataelementvalue(1, 0, "IC"); //Contact Function Code osegment.set_dataelementvalue(2, 0, "JERRY"); // 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 //1000B RECEIVER //NM1 RECEIVER
edidatasegment.set(ref osegment, otransactionset.createdatasegment("nm1\\nm1")); osegment.set_dataelementvalue(1, 0, "40"); //Entity Identifier Code osegment.set_dataelementvalue(3, 0, "KEY INSURANCE COMPANY"); // Last or Organization osegment.set_dataelementvalue(8, 0, "46"); //Identification Code Qualifier osegment.set_dataelementvalue(9, 0, "66783JJT"); //Identification Code 3 nbillprovider = 1; nsubscribers = 1; ndependents = 1; nhlcounter = 0; //This example has one billing provider... //...one subscriber //...and one dependent //2000A BILLING PROVIDER HL LOOP for (int nbillprovidercounter = 1; nbillprovidercounter <= nbillprovider; nbillprovidercounter+ +) nhlcounter = nhlcounter + 1; //increment HL loop nhlsubscriberparent = nhlcounter; //The value of this HL counter is the HL parent for the HL subscriber loop //HL BILLING PROVIDER edidatasegment.set(ref osegment, 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 //PRV BILLING PROVIDER SPECIALTY INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\prv")); osegment.set_dataelementvalue(1, 0, "BI"); //Provider Code osegment.set_dataelementvalue(2, 0, "PXC"); //Reference Identification Qualifier osegment.set_dataelementvalue(3, 0, "203BF0100Y"); //Reference Identification //2010AA BILLING PROVIDER //NM1 BILLING PROVIDER NAME osegment.set_dataelementvalue(1, 0, "85"); //Entity Identifier Code osegment.set_dataelementvalue(3, 0, "BEN KILDARE SERVICE"); // Last or Organization osegment.set_dataelementvalue(8, 0, "XX"); //Identification Code Qualifier osegment.set_dataelementvalue(9, 0, "9876543210"); //Identification Code //N3 BILLING PROVIDER ADDRESS INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\n3")); osegment.set_dataelementvalue(1, 0, "234 SEAWAY ST"); //Address Information //N4 BILLING PROVIDER LOCATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\n4")); osegment.set_dataelementvalue(1, 0, "MIAMI"); //City osegment.set_dataelementvalue(2, 0, "FL"); //State or Province Code osegment.set_dataelementvalue(3, 0, "33111"); //Postal Code //REF BILLING PROVIDER TAX IDENTIFICATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\ref")); osegment.set_dataelementvalue(1, 0, "EI"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, "587654321"); //Reference Identification //2010AB PAY TO PROVIDER //NM1 PAY TO PROVIDER NAME osegment.set_dataelementvalue(1, 0, "87"); //Entity Identifier Code //N3 PAY TO PROVIDER ADDRESS INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\n3"));
osegment.set_dataelementvalue(1, 0, "2345 OCEAN BLVD"); //Address Information 4 //N4 PAY TO PROVIDER LOCATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\n4")); osegment.set_dataelementvalue(1, 0, "MAIMI"); //City osegment.set_dataelementvalue(2, 0, "FL"); //State or Province Code osegment.set_dataelementvalue(3, 0, "33111"); //Postal Code //2000B SUBSCRIBER HL LOOP for (int nsubscribercounter = 1; nsubscribercounter <= nsubscribers; nsubscribercounter++) nhlcounter = nhlcounter + 1; nhldependentparent = nhlcounter; //HL SUBSCRIBER LEVEL edidatasegment.set(ref osegment, 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 if (ndependents > 0) osegment.set_dataelementvalue(4, 0, "1"); //Hierarchical Child Code else osegment.set_dataelementvalue(4, 0, "0"); //Hierarchical Child Code Code //SBR SUBSCRIBER INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\sbr")); osegment.set_dataelementvalue(1, 0, "P"); //Payer Responsibility Sequence Number osegment.set_dataelementvalue(3, 0, "2222 SJ"); //Reference Identification osegment.set_dataelementvalue(9, 0, "CI"); //Claim Filing Indicator Code //2010BA SUBSCRIBER //NM1 SUBSCRIBER NAME osegment.set_dataelementvalue(1, 0, "IL"); //Entity Identifier Code osegment.set_dataelementvalue(2, 0, "1"); //Entity Type Qualifier osegment.set_dataelementvalue(3, 0, "SMITH"); // Last or Organization osegment.set_dataelementvalue(4, 0, "JANE"); // First osegment.set_dataelementvalue(8, 0, "MI"); //Identification Code Qualifier osegment.set_dataelementvalue(9, 0, "JS00111223333"); //Identification Code //DMG SUBSCRIBER DEMOGRAPHIC INFORMATION edidatasegment.set(ref osegment, 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, "F"); //Gender Code //2010BB PAYER //NM1 PAYER NAME osegment.set_dataelementvalue(1, 0, "PR"); //Entity Identifier Code osegment.set_dataelementvalue(3, 0, "KEY INSURANCE COMPANY"); // Last or Organization osegment.set_dataelementvalue(8, 0, "PI"); //Identification Code Qualifier osegment.set_dataelementvalue(9, 0, "999996666"); //Identification Code //REF BILLING PROVIDER SECONDARY IDENTIFICATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\ref")); osegment.set_dataelementvalue(1, 0, "G2"); //Reference Identification Qualifier
osegment.set_dataelementvalue(2, 0, "KA6663"); //Reference Identification 5 loop +) //The claims loop can occur in both the HL subscriber loop and HL patient (dependent) if (ndependents == 0) //Subscriber//s claims Proc_2300_Claim(oTransactionset); else //2000C PATIENT HL LOOP for (int ndependentcounter=1; ndependentcounter <= ndependents; ndependentcounter+ nhlcounter = nhlcounter + 1; //HL PATIENT LEVEL edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\hl")); osegment.set_dataelementvalue(1, 0, nhlcounter.tostring()); //Hierarchical ID Number osegment.set_dataelementvalue(2, 0, nhldependentparent.tostring()); // Hierarchical Parent ID Number osegment.set_dataelementvalue(3, 0, "23"); //Hierarchical Level Code osegment.set_dataelementvalue(4, 0, "0"); //Hierarchical Child Code //PAT PATIENT INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\pat")); osegment.set_dataelementvalue(1, 0, "19"); //Individual Relationship Code NM1")); ")); ")); DMG")); Qualifier //2010CA PATIENT //NM1 PATIENT NAME edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\ osegment.set_dataelementvalue(1, 0, "QC"); osegment.set_dataelementvalue(2, 0, "1"); osegment.set_dataelementvalue(3, 0, "SMITH"); osegment.set_dataelementvalue(4, 0, "TED"); //Entity Identifier Code //Entity Type Qualifier // Last or Organization // First //N3 PATIENT ADDRESS INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\n3 osegment.set_dataelementvalue(1, 0, "236 N MAIN ST"); //Address Information //N4 PATIENT LOCATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\n4 osegment.set_dataelementvalue(1, 0, "MIAMI"); osegment.set_dataelementvalue(2, 0, "FL"); osegment.set_dataelementvalue(3, 0, "33413"); //City //State or Province Code //Postal Code //DMG PATIENT DEMOGRAPHIC INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\ osegment.set_dataelementvalue(1, 0, "D8"); //Date Time Period Format osegment.set_dataelementvalue(2, 0, "19730501"); //Date Time Period osegment.set_dataelementvalue(3, 0, "M"); //Gender Code //Patient//s claims Proc_2300_Claim(oTransactionset); ; // for 2000C patient
; // if dependent 6 ; //for 2000B subscriber ; //for 2000A billing //TRAILING SEGMENTS ARE AUTOMATICALLY CREATED WHEN FREDI COMMITS (SAVES) //THE EDIDOC OBJECT INTO AN EDI FILE. oedidoc.save(spath + sedifile); //DISPLAY EDI ON SCREEN MessageBox.Show(oEdiDoc.GetEdiString()); //DESTROYS OBJECTS osegment.dispose(); otransactionset.dispose(); ogroup.dispose(); ointerchange.dispose(); oschemas.dispose(); oedidoc.dispose(); // btngenerate private void Proc_2300_Claim(ediTransactionSet otransactionset) edidatasegment osegment=null; int nclaims ; int nservices ; nclaims = 1; //This example has one Claim... //2300 CLAIM for (int nclaimcounter=1; nclaimcounter <= nclaims; nclaimcounter++) //CLM HEALTH CLAIM edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\clm")); osegment.set_dataelementvalue(1, 0, "26463774"); //Claim Submitter//s Identifier osegment.set_dataelementvalue(2, 0, "100"); //Monetary Amount osegment.set_dataelementvalue(5, 1, 0, "11"); //Facility Code Value osegment.set_dataelementvalue(5, 2, 0, "B"); //Facility Code Qualifier osegment.set_dataelementvalue(5, 3, 0, "1"); //Claim Frequency Type 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, "I"); //Release of Information Code //REF CLAIM IDENTIFICATION NUMBER FOR CLEARING HOUSES edidatasegment.set(ref osegment, 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 DIAGNOSIS CODES edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\hi")); osegment.set_dataelementvalue(1, 1, 0, "BK"); //Code List Qualifier Code osegment.set_dataelementvalue(1, 2, 0, "0340"); //Industry Code osegment.set_dataelementvalue(2, 1, 0, "BF"); //Code List Qualifier Code osegment.set_dataelementvalue(2, 2, 0, "V7389"); //Industry Code nservices = 4 ; //This example has 4 services under this claim //2400 SERVICE LINE for(int nservicecounter=1 ; nservicecounter <= nservices; nservicecounter++) //LX SERVICE LINE COUNTER edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\lx\\lx"));
osegment.set_dataelementvalue(1, 0, nservicecounter.tostring()); //Assigned Number 7 ; ; //SV1 PROFESSIONAL SERVICE edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\lx\\sv1")) osegment.set_dataelementvalue(1, 1, 0, "HC"); //Product/Service ID Qualifier osegment.set_dataelementvalue(1, 2, 0, "99213"); //Product/Service ID osegment.set_dataelementvalue(2, 0, "40"); //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, 0, "1"); //Diagnosis Code Pointer //DTP SERVICE DATE OR TIME OR PERIOD edidatasegment.set(ref osegment, 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, "20061003"); //Date Time Period //for 2400 service line //for 2300 claim //private void Proc_2300_Claim //public partial class form