private string sconnection = ConfigurationManager.ConnectionStrings["Development"].ConnectionString

Similar documents
private string sconnection = ConfigurationManager.ConnectionStrings["Development"].ConnectionString

namespace csharp_gen837x223a2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

namespace Gen837X222A1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

C:\EDIdEv\Examples\HIPAA\5010\VbNet\vbNet_Gen837X222A1\Form1.vb Imports Edidev.FrameworkEDI

string spath; string sedifile = "277_005010X228.X12"; string sseffile = "277_005010X228.SemRef.EVAL0.SEF";

namespace csharp_gen277x214 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

// Specify SEF file to load. oschema = (edischema) oedidoc.loadschema(spath + sseffilename, SchemaTypeIDConstants. Schema_Standard_Exchange_Format);

// Specify SEF file to load. edischema oschema = oedidoc.loadschema(spath + sseffilename, SchemaTypeIDConstants. Schema_Standard_Exchange_Format);

C:\EDIdEv\Examples\HIPAA\5010\VbNet\vbNet_Gen277X214\Form1.vb Imports Edidev.FrameworkEDI

C:\EDIdEv\Examples\HIPAA\5010\VbNet\vbNet_Gen834X220A1\Form1.vb Imports Edidev.FrameworkEDI

C:\EDIdEv\Examples\HIPAA\5010\VbNet\vbNet_Gen835X221A1\Form1.vb Imports Edidev.FrameworkEDI

C:\EDIdEv\Examples\HIPAA\5010\VbNet\vbNet_Tran834X220A1\Form1.vb Imports Edidev.FrameworkEDI

5010 Upcoming Changes:

837 Professional Health Care Claim. Section 1 837P Professional Health Care Claim: Basic Instructions

SHARES 837P Companion Guide

837 Healthcare Claim Companion Guide ANSI ASC X12N (Version 4010A) Professional, Institutional, and Dental

COMMONWEALTH CARE ALLIANCE CCA COMPANION GUIDE

EDS SYSTEMS UNIT. Companion Guide: 837 Dental Claims Transaction

5010 Gap Analysis for Institutional Claims. Based on ASC X v5010 TR3 X223A2 Version 2.0 August 2010

837 Dental Health Care Claim

837 Health Care Claim Companion Guide. Professional and Institutional

HIPAA TRANSACTION STANDARD 837 HEALTH CARE CLAIM: PROFESSIONAL COMPANION GUIDE APRIL 21, 2004 VERSION X098A1

5010 Upcoming Changes: 837 Professional Claims and Encounters Transaction

Unsolicited 277 Trading Partner Specification

Refers to the Technical Reports Type 3 Based on ASC X12 version X /277 Health Care Claim Status Inquiry and Response

Cabinet for Health and Family Services Department for Medicaid Services

270/271 Health Care Eligibility, Coverage, or Benefit Inquiry and Response

X A1 ADDENDA COMPANION DOCUMENT PROFESSIONAL (004010X098A1)

837D Health Care Claim: Educational Guide

276 Health Care Claim Status Request Educational Guide

270/271 Companion Document ASC X12N. Health Care Eligibility and Benefit Inquiry and Response Version 4010A1 Addenda October 2002

EMBLEMHEALTH HIPAA Transaction Standard Companion Guide

Electronic Transaction Manual for Arkansas Blue Cross and Blue Shield FEDERALEMPLOYEEPROGRAM (FEP) DentalClaims

Pennsylvania PROMISe Companion Guide

Kentucky HIPAA HEALTH CARE CLAIM: DENTAL Companion Guide 837

837 Professional Health Care Claim

Integration Guide for Data Originators of Claim Status. Version 1.1

HIPAA 276/277 Companion Guide Cardinal Innovations Prepared for Health Care Providers

Vendor Specifications 270/271 Eligibility Benefit Inquiry and Response ASC X12N Version for. State of Idaho MMIS

ANSI ASC X12N 277 Claims Acknowledgement (277CA)

271 Health Care Eligibility Benefit Inquiry Response Educational Guide

HIPAA Transaction Health Care Claim Acknowledgement Standard Companion Guide (277CA, X214)

837 PROFESSIONAL CLAIMS AND ENCOUNTERS TRANSACTION COMPANION GUIDE

Kentucky HIPAA HEALTH CARE PAYER UNSOLICITED CLAIM STATUS Companion Guide Unsolicited 277. Version 1.1

It is recommended that separate transaction sets be used for different patients.

USVI HEALTH ELIGIBILITY/BENEFIT INQUIRY 5010 Companion Guide 270

Questions, comments, or suggestions regarding this information should be directed to

Refers to the Technical Reports Type 3 Based on ASC X12 version X223A2

X A1 Addenda Companion Document - Professional (004010X098A1) - EFFECTIVE 05/23/07

West Virginia HMO Rosters Companion Guide 834

Section 3 837D Dental Health Care Claim: Charts for Situational Rules

HIPAA X 12 Transaction Standards

816 Organizational Relationships

General Companion Guide 837 Professional and Institutional Healthcare Claims Submission Version Version Date: June 2017

X A1 Addenda Companion Document - Institutional (004010X096A1) - EFFECTIVE 05/23/07

BLUE CROSS AND BLUE SHIELD OF LOUISIANA PROFESSIONAL CLAIMS COMPANION GUIDE

HIPAA X 12 Transaction Standards

270/271 Benefit Eligibility Inquiry/Response Transactions Companion Guide ANSI ASC X12N 270/271 (Version 4010A)

SYSCO only provide the customer address of a certain type of customers.

BLUE CROSS AND BLUE SHIELD OF LOUISIANA INSTITUTIONAL CLAIMS COMPANION GUIDE

HIPAA Transaction 278 Request for Review and Response Standard Companion Guide

ANSI ASC X12N 837 Healthcare Claim Institutional, Professional and Dental Department of Labor-OWCP Companion Guide

276/ /277 Health Care Claim Status Request and Response Real-Time. Basic Instructions. Companion Document

West Virginia HEALTH ELIGIBILITY/BENEFIT INQUIRY Companion Guide 270

CALCULATOR APPLICATION

837 Health Care Claim Professional, Institutional & Dental Companion Guide

521 Income or Asset Offset

The report heading will contain a fourth line if the transmission is a New Biller test, in addition to having a different report number.

822 Account Analysis. Heading: Detail: Functional Group ID=AA. GISB Statement of Account

Horizon Blue Cross and Blue Shield of New Jersey

Streamline SmartCare Network180 EHR

278 Health Care Service Review and Response

Optum/Care Improvement Plus Healthcare Claim: 837 Companion Guide. Versions: X222A X223A2

Standard Companion Guide

RelayHealth EDI 12 Plug-in

X A1 ADDENDA COMPANION DOCUMENT INSTITUTIONAL (004010X096A1)

if (say==0) { k.commandtext = "Insert into kullanici(k_adi,sifre) values('" + textbox3.text + "','" + textbox4.text + "')"; k.

276 STATUS REQUEST - Inbound Translation

/277 Companion Guide. Refers to the Implementation Guides Based on X12 version Companion Guide Version Number: 1.1

UNIT-3. Prepared by R.VINODINI 1

Standard Companion Guide

TIBCO Foresight Products

276/277 Health Care Claim Status Request/ Response Real-Time. Section 1 276/277 Claim Status Request/Response: Basic Instructions

Inbound ANSI X Version 04010

ANSI ASC X12N 837 Healthcare Claim (Version X222A1-June 2010) Professional Companion Guide

ILLINOIS DEPARTMENT OF HUMAN SERVICES DIVISION OF MENTAL HEALTH. Page 1 Version 1.3 9/18/09

ILLINOIS DEPARTMENT OF HUMAN SERVICES DIVISION OF MENTAL HEALTH. Page 1 Version 1.2 8/14/08

276/277 Health Care Claim Status Request/ Response Real-Time. Section 1 276/277 Claim Status Request/Response: Basic Instructions

837 Companion Guide. October PR.P.WM.1 3/17

Molina Healthcare HIPAA Transaction Standard Companion Guide

Inbound X Version 04010

Mainly three tables namely Teacher, Student and Class for small database of a school. are used. The snapshots of all three tables are shown below.

Medicare-Medicaid Encounter Data System

Concurrent Session 204 Transactions and Code Sets: Its All in the Guides

835 Health Care Claim Payment and Remittance Advice Companion Guide X091A1

CSIS 1624 CLASS TEST 6

MOLINA MEDICAID SOLUTIONS

HIPAA X 12 Transaction Standards

NYEIS. 837 Health Care Claim Professional Companion Guide

Appendix 4D. Deactivated Edits. Table 4D.1. Deactivated Edits

Transcription:

using System; using System.Configuration; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Windows.Forms; using Edidev.FrameworkEDIx64; 1 namespace Gen837X222A1 //THIS PROGRAM REQUIRES A DATABASE WITH A STRUCTURE SIMILAR TO THAT IN THE TRAN837X222 EXAMPLE PROGRAM, OR DO THE FOLLOWING TO CREATE THE DATABASE: // CREATE A DATABASE CALLED HIPAATESTDB // ON YOUR SQL SERVER, RUN THE SQL SCRIPTS LOCATED IN THE CREATE_SQL_TABLES FOLDER TO CREATE THE TABLES public partial class frmgen837 : Form public frmgen837() InitializeComponent(); ; private string sconnection = ConfigurationManager.ConnectionStrings["Development"].ConnectionString private void btngenerate_click(object sender, EventArgs e) edidocument oedidoc = null; edischemas oschemas = null; ediinterchange ointerchange = null; edigroup ogroup = null; editransactionset otransactionset = null; edidatasegment osegment = null; bool bdependent = false; int nhlcounter = 0; int nhlsubscriberparent = 0; int nhldependentparent = 0; int ninstance = 0; int nelempos = 0; string ssql = ""; string sapppath = AppDomain.CurrentDomain.BaseDirectory; SqlConnection oconnection = new SqlConnection(sConnection); string sedifile = "837_5010X222A1.X12"; string sseffile = "837_005010X222A1.SemRef.EVAL0.SEF"; //EVALUATION SEF FILE //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 = "~13:10"; oedidoc.elementterminator = "*"; oedidoc.compositeterminator = ":"; 2 //LOADS THE SEF FILE oedidoc.loadschema(sapppath + sseffile, 0); ssql = "select * from [Interchange]"; SqlDataAdapter ointerchangeadapter = new SqlDataAdapter(sSql, oconnection); DataSet ointerchangeds = new DataSet("dsInterchange"); ointerchangeadapter.fill(ointerchangeds, "dsinterchange"); foreach (DataRow ointerchangerow in ointerchangeds.tables["dsinterchange"].rows) //CREATES THE ISA SEGMENT ointerchange = (ediinterchange)oedidoc.createinterchange("x", "005010"); osegment = (edidatasegment)ointerchange.getdatasegmentheader(); osegment.set_dataelementvalue(1, 0, ointerchangerow["isa01_authorizationinfoqlfr"].tostring ()); //Authorization Information Qualifier osegment.set_dataelementvalue(2, 0, ointerchangerow["isa02_authorizationinfo"].tostring()); //Authorization Information osegment.set_dataelementvalue(3, 0, ointerchangerow["isa03_securityinfoqlfr"].tostring()); //Security Information Qualifier osegment.set_dataelementvalue(4, 0, ointerchangerow["isa04_securityinfo"].tostring()); //Security Information osegment.set_dataelementvalue(5, 0, ointerchangerow["isa05_senderidqlfr"].tostring()); //Interchange ID Qualifier osegment.set_dataelementvalue(6, 0, ointerchangerow["isa06_senderid"].tostring()); // Interchange Sender ID osegment.set_dataelementvalue(7, 0, ointerchangerow["isa07_receiveridqlfr"].tostring()); //Interchange ID Qualifier osegment.set_dataelementvalue(8, 0, ointerchangerow["isa08_receiverid"].tostring()); // Interchange Receiver ID osegment.set_dataelementvalue(9, 0, ointerchangerow["isa09_date"].tostring()); // Interchange Date osegment.set_dataelementvalue(10, 0, ointerchangerow["isa10_time"].tostring()); // Interchange Time osegment.set_dataelementvalue(11, 0, ointerchangerow["isa11_repetitionseparator"].tostring ()); //Repetition Separator osegment.set_dataelementvalue(12, 0, ointerchangerow["isa12_controlversionnumber"].tostring ()); //Interchange Control Version Number osegment.set_dataelementvalue(13, 0, ointerchangerow["isa13_controlnumber"].tostring()); //Interchange Control Number osegment.set_dataelementvalue(14, 0, ointerchangerow["isa14_acknowledgmentrequested"]. ToString()); //Acknowledgment Requested osegment.set_dataelementvalue(15, 0, ointerchangerow["isa15_usageindicator"].tostring()); //Usage Indicator osegment.set_dataelementvalue(16, 0, ointerchangerow["isa16_componentelementseparator"]. ToString()); //Component Element Separator (); ssql = "select * from [FuncGroup] where Interkey = " + ointerchangerow["interkey"].tostring SqlDataAdapter ogroupadapter = new SqlDataAdapter(sSql, oconnection); DataSet ogroupds = new DataSet("dsGroup"); ogroupadapter.fill(ogroupds, "dsgroup"); foreach (DataRow ogrouprow in ogroupds.tables["dsgroup"].rows) //CREATES THE GS SEGMENT ogroup = (edigroup)ointerchange.creategroup("005010x222a1"); edidatasegment.set(ref osegment, ogroup.getdatasegmentheader()); osegment.set_dataelementvalue(1, 0, ogrouprow["gs01_functionalidfrcode"].tostring()); //Functional Identifier Code osegment.set_dataelementvalue(2, 0, ogrouprow["gs02_senderscode"].tostring()); // Application Sender//s Code

osegment.set_dataelementvalue(3, 0, ogrouprow["gs03_receiverscode"].tostring()); // Application Receiver//s Code osegment.set_dataelementvalue(4, 0, ogrouprow["gs04_date"].tostring()); //Date osegment.set_dataelementvalue(5, 0, ogrouprow["gs05_time"].tostring()); //Time osegment.set_dataelementvalue(6, 0, ogrouprow["gs06_groupcontrolnumber"].tostring()); //Group Control Number osegment.set_dataelementvalue(7, 0, ogrouprow["gs07_responsibleagencycode"].tostring()) ; //Responsible Agency Code osegment.set_dataelementvalue(8, 0, ogrouprow["gs08_versionreleasecode"].tostring()); //Version / Release / Industry Identifier Code 3 ToString(); ssql = "select * from [837X222_Header] where Groupkey = " + ogrouprow["groupkey"]. SqlDataAdapter oheaderadapter = new SqlDataAdapter(sSql, oconnection); DataSet oheaderds = new DataSet("dsHeader"); oheaderadapter.fill(oheaderds, "dsheader"); foreach (DataRow oheaderrow in oheaderds.tables["dsheader"].rows) //CREATES THE ST SEGMENT otransactionset = (editransactionset)ogroup.createtransactionset("837"); edidatasegment.set(ref osegment, otransactionset.getdatasegmentheader()); osegment.set_dataelementvalue(1, 0, oheaderrow["st01_transetidfrcode"].tostring()); //Transaction Set Identifier Code osegment.set_dataelementvalue(2, 0, oheaderrow["st02_transetcontrolno"].tostring()) ; //Transaction Set Control Number osegment.set_dataelementvalue(3, 0, oheaderrow["st03_implementconventionref"]. ToString()); //Implementation Convention Reference //BHT BEGINNING OF HIERARCHICAL TRANSACTION edidatasegment.set(ref osegment, otransactionset.createdatasegment("bht")); osegment.set_dataelementvalue(1, 0, oheaderrow["bht01_hierarchstructcode"].tostring ()); //Hierarchical Structure Code osegment.set_dataelementvalue(2, 0, oheaderrow["bht02_transetpurposecode"].tostring ()); //Transaction Set Purpose Code osegment.set_dataelementvalue(3, 0, oheaderrow["bht03_refid"].tostring()); // Reference Identification osegment.set_dataelementvalue(4, 0, oheaderrow["bht04_date"].tostring()); // Date osegment.set_dataelementvalue(5, 0, oheaderrow["bht05_time"].tostring()); // Time osegment.set_dataelementvalue(6, 0, oheaderrow["bht06_trantypecode"].tostring()); //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(2, 0, oheaderrow["nm102_submittertypeqlfr"].tostring ()); //Entity Type Qualifier osegment.set_dataelementvalue(3, 0, oheaderrow[ "NM103_SubmitterLastOrOrganizationName"].ToString()); //Name Last or Organization Name osegment.set_dataelementvalue(4, 0, oheaderrow["nm104_submitterfirst"].tostring()); // Name First (1036) osegment.set_dataelementvalue(5, 0, oheaderrow["nm105_submittermiddle"].tostring()) ; // Name Middle (1037) osegment.set_dataelementvalue(8, 0, oheaderrow["nm108_submitteridcodeqlfr"]. ToString()); //Identification Code Qualifier osegment.set_dataelementvalue(9, 0, oheaderrow["nm109_submitteridcode"].tostring()) ; //Identification Code //PER SUBMITTER EDI CONTACT INFO edidatasegment.set(ref osegment, otransactionset.createdatasegment("nm1\\per")); nelempos = 3; if (oheaderrow["per0x_submitterphoneno"].tostring().trim()!= "")

osegment.set_dataelementvalue(nelempos, 0, "TE"); //Communication Number Qualifier osegment.set_dataelementvalue(nelempos + 1, 0, oheaderrow[ "PER0X_SubmitterPhoneNo"].ToString()); //Communication Number nelempos = nelempos + 2; 4 if (oheaderrow["per0x_submitterphoneextno"].tostring().trim()!= "") osegment.set_dataelementvalue(nelempos, 0, "EX"); //Communication Number Qualifier osegment.set_dataelementvalue(nelempos + 1, 0, oheaderrow[ "PER0X_SubmitterPhoneExtNo"].ToString()); //Communication Number nelempos = nelempos + 2; Qualifier "].ToString()); Qualifier "].ToString()); ToString()); if (oheaderrow["per0x_submitterfaxno"].tostring().trim()!= "") osegment.set_dataelementvalue(nelempos, 0, "FX"); //Communication Number osegment.set_dataelementvalue(nelempos + 1, 0, oheaderrow["per0x_submitterfaxno //Communication Number nelempos = nelempos + 2; if (oheaderrow["per0x_submitteremail"].tostring().trim()!= "") osegment.set_dataelementvalue(nelempos, 0, "EM"); //Communication Number osegment.set_dataelementvalue(nelempos + 1, 0, oheaderrow["per0x_submitteremail //Communication Number nelempos = nelempos + 2; if (nelempos > 3) osegment.set_dataelementvalue(1, 0, "IC"); //Contact Function Code osegment.set_dataelementvalue(2, 0, oheaderrow["per02_submittercontactname"]. //Name //1000B RECEIVER //NM1 RECEIVER edidatasegment.set(ref osegment, otransactionset.createdatasegment("nm1\\nm1")); osegment.set_dataelementvalue(1, 0, "40"); //Entity Identifier Code osegment.set_dataelementvalue(2, 0, oheaderrow["nm102_receivertypeqlfr"].tostring ()); //Entity Type Qualifier osegment.set_dataelementvalue(3, 0, oheaderrow[ "NM103_ReceiverLastOrOrganizationName"].ToString()); //Name Last or Organization Name osegment.set_dataelementvalue(8, 0, oheaderrow["nm108_receiveridcodeqlfr"].tostring ()); //Identification Code Qualifier osegment.set_dataelementvalue(9, 0, oheaderrow["nm109_receiveridcode"].tostring()); //Identification Code nhlcounter = 0; ssql = "select * from [837X222_InfoSource] where Headerkey = " + oheaderrow[ "Headerkey"].ToString(); SqlDataAdapter oinfosourceadapter = new SqlDataAdapter(sSql, oconnection); DataSet oinfosourceds = new DataSet("dsInfoSource"); oinfosourceadapter.fill(oinfosourceds, "dsinfosource"); //2000A INFORMATION SOURCE foreach (DataRow oinfosourcerow in oinfosourceds.tables["dsinfosource"].rows) nhlcounter = nhlcounter + 1; //increment HL loop

nhlsubscriberparent = nhlcounter; parent for the HL subscriber loop //The value of this HL counter is the HL 5 ID Number //HL BILLING PROVIDER edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\hl")); osegment.set_dataelementvalue(1, 0, nhlcounter.tostring()); //Hierarchical osegment.set_dataelementvalue(3, 0, "20"); osegment.set_dataelementvalue(4, 0, "1"); //Hierarchical Level Code //Hierarchical Child Code //PRV BILLING PROVIDER SPECIALTY INFORMATION if (oinfosourcerow["prv03_billingprovideridcode"].tostring().trim()!= "") 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, oinfosourcerow[ "PRV03_BillingProviderIdCode"].ToString()); //Reference Identification // Currency (CUR) if (oinfosourcerow["cur02_currencycode"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\cur ")); osegment.set_dataelementvalue(1, 0, "85"); // Entity Identifier Code (98) osegment.set_dataelementvalue(2, 0, oinfosourcerow["cur02_currencycode"]. ToString()); // Currency Code (100) //2010AA BILLING PROVIDER //NM1 BILLING PROVIDER NAME edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\ NM1")); osegment.set_dataelementvalue(1, 0, "85"); //Entity Identifier Code osegment.set_dataelementvalue(2, 0, oinfosourcerow[ "NM102_BillingProviderTypeQualifier"].ToString()); //Entity Type Qualifier osegment.set_dataelementvalue(3, 0, oinfosourcerow[ "NM103_BillingProviderLastOrOrganizationName"].ToString()); //Name Last or Organization Name osegment.set_dataelementvalue(4, 0, oinfosourcerow["nm104_billingproviderfirst" ].ToString()); // Name First (1036) osegment.set_dataelementvalue(5, 0, oinfosourcerow["nm105_billingprovidermiddle "].ToString()); // Name Middle (1037) osegment.set_dataelementvalue(8, 0, "XX"); //Identification Code Qualifier osegment.set_dataelementvalue(9, 0, oinfosourcerow["nm109_billingprovideridcode "].ToString()); //Identification Code "));.ToString());.ToString()); ")); ToString());.ToString()); //N3 BILLING PROVIDER ADDRESS INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\n3 osegment.set_dataelementvalue(1, 0, oinfosourcerow["n301_billingprovideraddr1"] //Address Information osegment.set_dataelementvalue(2, 0, oinfosourcerow["n302_billingprovideraddr2"] //Address Information //N4 BILLING PROVIDER LOCATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\n4 osegment.set_dataelementvalue(1, 0, oinfosourcerow["n401_billingprovidercity"]. //City Name osegment.set_dataelementvalue(2, 0, oinfosourcerow["n402_billingproviderstate"] //State or Province Code

osegment.set_dataelementvalue(3, 0, oinfosourcerow["n403_billingproviderzip"]. ToString()); //Postal Code osegment.set_dataelementvalue(4, 0, oinfosourcerow["n404_billingprovidercountry "].ToString()); // Country Code (26) osegment.set_dataelementvalue(7, 0, oinfosourcerow[ "N407_BillingProviderCountrySubdivision"].ToString()); // Country Subdivision Code (1715) ninstance = 1; //REF EMPLOYER'S IDENTIFICATION NUMBER if (oinfosourcerow["ref02_billingprovideremployerid"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1 \\REF(" + osegment.set_dataelementvalue(1, 0, "EI"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, oinfosourcerow[ "REF02_BillingProviderEmployerId"].ToString()); //Reference Identification //REF SOCIAL SECURITY NUMBER if (oinfosourcerow["ref02_billingprovidersocialsecurityno"].tostring().trim()! = "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1 \\REF(" + osegment.set_dataelementvalue(1, 0, "SY"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, oinfosourcerow[ "REF02_BillingProviderSocialSecurityNo"].ToString()); //Reference Identification //REF STATE LICENSE NUMBER if (oinfosourcerow["ref02_billingproviderstatelicenseno"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1 \\REF(" + osegment.set_dataelementvalue(1, 0, "0B"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, oinfosourcerow[ "REF02_BillingProviderStateLicenseNo"].ToString()); //Reference Identification //REF PROVIDER UPIN NUMBER if (oinfosourcerow["ref02_billingproviderproviderupin"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1 \\REF(" + osegment.set_dataelementvalue(1, 0, "1G"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, oinfosourcerow[ "REF02_BillingProviderProviderUPIN"].ToString()); //Reference Identification 6 PER")); // Administrative Communications Contact (PER) edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1\\ nelempos = 3; if (oinfosourcerow["per0x_billingproviderphoneno"].tostring().trim()!= "")

osegment.set_dataelementvalue(nelempos, 0, "TE"); //Communication Number Qualifier osegment.set_dataelementvalue(nelempos + 1, 0, oinfosourcerow[ "PER0X_BillingProviderPhoneNo"].ToString()); //Communication Number nelempos = nelempos + 2; 7 if (oinfosourcerow["per0x_billingproviderphoneextno"].tostring().trim()!= "") osegment.set_dataelementvalue(nelempos, 0, "EX"); //Communication Number Qualifier osegment.set_dataelementvalue(nelempos + 1, 0, oinfosourcerow[ "PER0X_BillingProviderPhoneExtNo"].ToString()); //Communication Number nelempos = nelempos + 2; if (oinfosourcerow["per0x_billingproviderfaxno"].tostring().trim()!= "") osegment.set_dataelementvalue(nelempos, 0, "FX"); //Communication Number Qualifier osegment.set_dataelementvalue(nelempos + 1, 0, oinfosourcerow[ "PER0X_BillingProviderFaxNo"].ToString()); //Communication Number nelempos = nelempos + 2; if (oinfosourcerow["per0x_billingprovideremail"].tostring().trim()!= "") osegment.set_dataelementvalue(nelempos, 0, "EM"); //Communication Number Qualifier osegment.set_dataelementvalue(nelempos + 1, 0, oinfosourcerow[ "PER0X_BillingProviderEmail"].ToString()); //Communication Number nelempos = nelempos + 2; if (nelempos > 3) osegment.set_dataelementvalue(1, 0, "IC"); //Contact Function Code osegment.set_dataelementvalue(2, 0, oinfosourcerow[ "PER02_BillingProviderContactName"].ToString()); //Name //2010AB PAY TO PROVIDER if (oinfosourcerow["n301_paytoprovideraddr1"].tostring().trim()!= "") //NM1 PAY TO PROVIDER NAME edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1 \\NM1")); osegment.set_dataelementvalue(1, 0, "87"); //Entity Identifier Code osegment.set_dataelementvalue(2, 0, oinfosourcerow[ "NM102_PayToProviderTypeQlfr"].ToString()); //Entity Type Qualifier //osegment.set_dataelementvalue(3, 0, oinfosourcerow[ "NM103_PayToProviderLastOrOrganizatioName"].ToString()); //Name Last or Organization Name \\N3")); "].ToString()); "].ToString()); \\N4")); ].ToString()); //N3 PAY TO PROVIDER ADDRESS INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1 osegment.set_dataelementvalue(1, 0, oinfosourcerow["n301_paytoprovideraddr1 //Address Information osegment.set_dataelementvalue(2, 0, oinfosourcerow["n302_paytoprovideraddr2 //Address Information //N4 PAY TO PROVIDER LOCATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1 osegment.set_dataelementvalue(1, 0, oinfosourcerow["n401_paytoprovidercity" //City Name osegment.set_dataelementvalue(2, 0, oinfosourcerow["n402_paytoproviderstate

"].ToString()); //State or Province Code osegment.set_dataelementvalue(3, 0, oinfosourcerow["n403_paytoproviderzip"].tostring()); //Postal Code osegment.set_dataelementvalue(4, 0, oinfosourcerow[ "N404_PayToProviderCountry"].ToString()); // Country Code (26) osegment.set_dataelementvalue(7, 0, oinfosourcerow[ "N407_PayToProviderCountrySubdivision"].ToString()); // Country Subdivision Code (1715) //2010AB PAY TO PROVIDER //2010AC PAYEE PROVIDER if (oinfosourcerow["nm103_payeelastororganizationname"].tostring().trim()!= "") //NM1 PAYEE PROVIDER NAME edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1 \\NM1")); osegment.set_dataelementvalue(1, 0, "PE"); //Entity Identifier Code osegment.set_dataelementvalue(2, 0, oinfosourcerow["nm102_payeetypeqlfr"]. ToString()); //Entity Type Qualifier osegment.set_dataelementvalue(3, 0, oinfosourcerow[ "NM103_PayeeLastOrOrganizationName"].ToString()); //Name Last or Organization Name osegment.set_dataelementvalue(9, 0, oinfosourcerow["nm109_payeeidcode"]. ToString()); //Identification Code 8 \\N3")); ToString()); ToString()); //N3 PAYEE PROVIDER ADDRESS INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1 osegment.set_dataelementvalue(1, 0, oinfosourcerow["n301_payeeaddr1"]. //Address Information osegment.set_dataelementvalue(2, 0, oinfosourcerow["n302_payeeaddr2"]. //Address Information \\N4")); //N4 PAYEE PROVIDER LOCATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\nm1 osegment.set_dataelementvalue(1, 0, oinfosourcerow["n401_payeecity"]. ToString()); //City Name osegment.set_dataelementvalue(2, 0, oinfosourcerow["n402_payeestate"]. ToString()); //State or Province Code osegment.set_dataelementvalue(3, 0, oinfosourcerow["n403_payeezip"]. ToString()); //Postal Code osegment.set_dataelementvalue(4, 0, oinfosourcerow["n404_payeecountry"]. ToString()); // Country Code (26) osegment.set_dataelementvalue(7, 0, oinfosourcerow[ "N407_PayeeCountrySubdivision"].ToString()); // Country Subdivision Code (1715) ninstance = 1; //REF PAYER IDENTIFICATION NUMBER" if (oinfosourcerow["ref02_payeepayerid"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ \NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "2U"); //Reference Identification Qualifier ].ToString()); osegment.set_dataelementvalue(2, 0, oinfosourcerow["ref02_payeepayerid" //Reference Identification //REF CLAIM OFFICE NUMBER if (oinfosourcerow["ref02_payeeclaimofficeno"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ \NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "FY"); //Reference

Identification Qualifier osegment.set_dataelementvalue(2, 0, oinfosourcerow[ "REF02_PayeeClaimOfficeNo"].ToString()); //Reference Identification 9 //REF NATIONAL ASSOCIATION OF INSURANCE COMMISSIONERS (NAIC) CODE if (oinfosourcerow["ref02_payeenaic_code"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ \NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "NF"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, oinfosourcerow[ "REF02_PayeeNAIC_Code"].ToString()); //Reference Identification //REF NATIONAL ASSOCIATION OF INSURANCE COMMISSIONERS (NAIC) CODE if (oinfosourcerow["ref02_payeeemployerid"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ \NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "EI"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, oinfosourcerow[ "REF02_PayeeEmployerId"].ToString()); //Reference Identification //2010AC PAYEE PROVIDER //2000B SUBSCRIBER HL LOOP ssql = "select * from [837X222_Subscriber] where InfoSourcekey = " + oinfosourcerow["infosourcekey"].tostring(); SqlDataAdapter osubscriberadapter = new SqlDataAdapter(sSql, oconnection); DataSet osubscriberds = new DataSet("dsSubscriber"); osubscriberadapter.fill(osubscriberds, "dssubscriber"); foreach (DataRow osubscriberrow in osubscriberds.tables["dssubscriber"].rows) nhlcounter = nhlcounter + 1; nhldependentparent = nhlcounter; if (osubscriberrow["sbr02_individualrelationshipcode"].tostring() == "18") bdependent = false; else bdependent = true; //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 (bdependent) osegment.set_dataelementvalue(4, 0, "1"); //Hierarchical Child Code else //self osegment.set_dataelementvalue(4, 0, "0"); //Hierarchical Child Code

10 //SBR SUBSCRIBER INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\sbr ")); osegment.set_dataelementvalue(1, 0, osubscriberrow[ "SBR01_PayerResponsibilitySequenceNumberCode"].ToString()); // Payer Responsibility Sequence Number Code (1138) osegment.set_dataelementvalue(2, 0, osubscriberrow[ "SBR02_IndividualRelationshipCode"].ToString()); // Individual Relationship Code (1069) osegment.set_dataelementvalue(3, 0, osubscriberrow[ "SBR03_SubscriberGroup_PolicyNo"].ToString()); // Reference Identification (127) osegment.set_dataelementvalue(4, 0, osubscriberrow[ "SBR04_SubscriberGroupName"].ToString()); // Name (93) osegment.set_dataelementvalue(5, 0, osubscriberrow["sbr05_insurancetypecode "].ToString()); // Insurance Type Code (1336) osegment.set_dataelementvalue(9, 0, osubscriberrow[ "SBR09_ClaimFilingIndicatorCode"].ToString()); // Claim Filing Indicator Code (1032) ")); // Patient Information PAT edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\pat if (osubscriberrow["pat06_patientdeathdate"].tostring().trim()!= "") osegment.set_dataelementvalue(5, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(6, 0, osubscriberrow[ "PAT06_PatientDeathDate"].ToString()); // Date Time Period (1251) if (osubscriberrow["pat08_patientweightpounds"].tostring().trim()!= "") osegment.set_dataelementvalue(7, 0, "01"); // Unit or Basis for Measurement Code (355) osegment.set_dataelementvalue(8, 0, osubscriberrow[ "PAT08_PatientWeightPounds"].ToString()); // Weight (81) osegment.set_dataelementvalue(9, 0, osubscriberrow["pat09_pregnant"]. ToString()); // Yes/No Condition or Response Code (1073) //2010BA SUBSCRIBER if (osubscriberrow["nm103_subscriberlastororganizationname"].tostring(). Trim()!= "") //NM1 SUBSCRIBER NAME edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ \NM1\\NM1")); osegment.set_dataelementvalue(1, 0, "IL"); //Entity Identifier Code osegment.set_dataelementvalue(2, 0, osubscriberrow[ "NM102_SubscriberTypeQualifier"].ToString()); //Entity Type Qualifier osegment.set_dataelementvalue(3, 0, osubscriberrow[ "NM103_SubscriberLastOrOrganizationName"].ToString()); //Name Last or Organization Name osegment.set_dataelementvalue(4, 0, osubscriberrow[ "NM104_SubscriberFirst"].ToString()); //Name First osegment.set_dataelementvalue(5, 0, osubscriberrow[ "NM105_SubscriberMiddle"].ToString()); // Name Middle (1037) osegment.set_dataelementvalue(7, 0, osubscriberrow[ "NM107_SubscriberSuffix"].ToString()); // Name Suffix (1039) osegment.set_dataelementvalue(8, 0, osubscriberrow[ "NM108_SubscriberIdCodeQlfr"].ToString()); //Identification Code Qualifier osegment.set_dataelementvalue(9, 0, osubscriberrow[ "NM109_SubscriberIdCode"].ToString()); //Identification Code \NM1\\N3")); // Address Information (N3 edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ osegment.set_dataelementvalue(1, 0, osubscriberrow[

"N301_SubscriberAddr1"].ToString()); // Address Information (166) osegment.set_dataelementvalue(2, 0, osubscriberrow[ "N302_SubscriberAddr2"].ToString()); // Address Information (166) 11 // Geographic Location (N4) edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ \NM1\\N4")); osegment.set_dataelementvalue(1, 0, osubscriberrow["n401_subscribercity "].ToString()); // City Name (19) osegment.set_dataelementvalue(2, 0, osubscriberrow[ "N402_SubscriberState"].ToString()); // State or Province Code (156) osegment.set_dataelementvalue(3, 0, osubscriberrow["n403_subscriberzip" ].ToString()); // Postal Code (116) osegment.set_dataelementvalue(4, 0, osubscriberrow[ "N404_SubscriberCountry"].ToString()); // Country Code (26) osegment.set_dataelementvalue(7, 0, osubscriberrow[ "N407_SubscriberCountrySubdivision"].ToString()); // Country Subdivision Code (1715) //DMG SUBSCRIBER DEMOGRAPHIC INFORMATION edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ \NM1\\DMG")); if (osubscriberrow["dmg02_subscriberbirthdate"].tostring().trim()!= "") osegment.set_dataelementvalue(1, 0, "D8"); //Date Time Period Format Qualifier osegment.set_dataelementvalue(2, 0, osubscriberrow[ "DMG02_SubscriberBirthDate"].ToString()); //Date Time Period osegment.set_dataelementvalue(3, 0, osubscriberrow[ "DMG03_SubscriberGenderCode"].ToString()); //Gender Code ninstance = 1; // REF SOCIAL SECURITY NUMBER if (osubscriberrow["ref02_subscribersocialsecurityno"].tostring().trim ()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment ("HL\\NM1\\REF(" + osegment.set_dataelementvalue(2, 0, osubscriberrow[ "REF02_SubscriberSocialSecurityNo"].ToString()); // Reference Identification (127 // REF AGENCY CLAIM NUMBER if (osubscriberrow["ref02_propertycasualtyclaimno"].tostring().trim()! = "") edidatasegment.set(ref osegment, otransactionset.createdatasegment ("HL\\NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "Y4"); // Reference Identification Qualifier (128) osegment.set_dataelementvalue(2, 0, osubscriberrow[ "REF02_PropertyCasualtyClaimNo"].ToString()); // Reference Identification (127 // Administrative Communications Contact (PER) if (osubscriberrow["per04_subscriberphoneno"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment ("HL\\NM1\\PER")); osegment.set_dataelementvalue(1, 0, "IC"); // Contact Function Code (366) osegment.set_dataelementvalue(2, 0, osubscriberrow[ "PER02_SubscriberContactName"].ToString()); // Name (93)

osegment.set_dataelementvalue(3, 0, "TE"); // Communication Number Qualifier (365) osegment.set_dataelementvalue(4, 0, osubscriberrow[ "PER04_SubscriberPhoneNo"].ToString()); // Communication Number (364) if (osubscriberrow["per06_subscriberphoneextno"].tostring().trim()!= "") osegment.set_dataelementvalue(5, 0, "EX"); // Communication Number Qualifier (365) osegment.set_dataelementvalue(6, 0, osubscriberrow[ "PER06_SubscriberPhoneExtNo"].ToString()); // Communication Number (364) //if //if //2010BA SUBSCRIBER 12 //2010BB PAYER if (osubscriberrow["nm103_payerlastororganizationame"].tostring().trim()!= "") //NM1 PAYER NAME edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ \NM1\\NM1")); osegment.set_dataelementvalue(1, 0, "PR"); //Entity Identifier Code osegment.set_dataelementvalue(2, 0, osubscriberrow["nm102_payertypeqlfr "].ToString()); //Entity Type Qualifier osegment.set_dataelementvalue(3, 0, osubscriberrow[ "NM103_PayerLastOrOrganizatioName"].ToString()); //Name Last or Organization Name osegment.set_dataelementvalue(8, 0, "PI"); //Identification Code Qualifier osegment.set_dataelementvalue(9, 0, osubscriberrow["nm109_payeridcode"].tostring()); //Identification Code // Address Information (N3) edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ \NM1\\N3")); osegment.set_dataelementvalue(1, 0, osubscriberrow["n301_payeraddr1"]. ToString()); // Address Information (166) osegment.set_dataelementvalue(2, 0, osubscriberrow["n302_payeraddr2"]. ToString()); // Address Information (166) // Geographic Location (N4) edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\ \NM1\\N4")); osegment.set_dataelementvalue(1, 0, osubscriberrow["n401_payercity"]. ToString()); // City Name (19) osegment.set_dataelementvalue(2, 0, osubscriberrow["n402_payerstate"]. ToString()); // State or Province Code (156) osegment.set_dataelementvalue(3, 0, osubscriberrow["n403_payerzip"]. ToString()); // Postal Code (116) osegment.set_dataelementvalue(4, 0, osubscriberrow["n404_payercountry"].tostring()); // Country Code (26) osegment.set_dataelementvalue(7, 0, osubscriberrow[ "N407_PayerCountrySubdivision"].ToString()); // Country Subdivision Code (1715) ninstance = 1; //REF PAYER IDENTIFICATION NUMBER if (osubscriberrow["ref02_payerid"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment ("HL\\NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "2U"); //Reference Identification Qualifier.ToString()); //Reference Identification osegment.set_dataelementvalue(2, 0, osubscriberrow["ref02_payerid"]

13 //REF EMPLOYER'S IDENTIFICATION NUMBER if (osubscriberrow["ref02_employerid"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment ("HL\\NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "EI"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, osubscriberrow[ "REF02_EmployerId"].ToString()); //Reference Identification //REF CLAIM OFFICE NUMBER if (osubscriberrow["ref02_claimofficeno"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment ("HL\\NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "FY"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, osubscriberrow[ "REF02_ClaimOfficeNo"].ToString()); //Reference Identification //REF NATIONAL ASSOCIATION OF INSURANCE COMMISSIONERS (NAIC) CODE if (osubscriberrow["ref02_naic_code"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment ("HL\\NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "NF"); //Reference Identification Qualifier "].ToString()); //Reference Identification osegment.set_dataelementvalue(2, 0, osubscriberrow["ref02_naic_code //REF PROVIDER COMMERCIAL NUMBER if (osubscriberrow["ref02_providercommercialno"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment ("HL\\NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "G2"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, osubscriberrow[ "REF02_ProviderCommercialNo"].ToString()); //Reference Identification //REF LOCATION NUMBER if (osubscriberrow["ref02_locationno"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment ("HL\\NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "LU"); //Reference Identification Qualifier osegment.set_dataelementvalue(2, 0, osubscriberrow[ "REF02_LocationNo"].ToString()); //Reference Identification //if //2010BB PAYER

//The claims loop can occur in both the HL subscriber loop and HL patient (dependent) loop if (!bdependent) //self //Subscriber //2300 CLAIM INFORMATION Proc_2300_Claim(ref otransactionset, ref oconnection, "select * from [837X222_Claims] where Subscriberkey = " + osubscriberrow["subscriberkey"].tostring()); else //2000C PATIENT HL LOOP ssql = "select * from [837X222_Dependent] where Subscriberkey = " + osubscriberrow["subscriberkey"].tostring(); SqlDataAdapter odependentadapter = new SqlDataAdapter(sSql, oconnection); DataSet odependentds = new DataSet("dsDependent"); odependentadapter.fill(odependentds, "dsdependent"); 14 Rows) foreach (DataRow odependentrow in odependentds.tables["dsdependent"]. 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, odependentrow[ "PAT01_IndividualRelationshipCode"].ToString()); // Individual Relationship Code (1069) if (odependentrow["pat06_patientdeathdate"].tostring().trim()!= "") osegment.set_dataelementvalue(5, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(6, 0, odependentrow[ "PAT06_PatientDeathDate"].ToString()); // Date Time Period (1251) if (odependentrow["pat08_patientweightpounds"].tostring().trim()!= "") osegment.set_dataelementvalue(7, 0, "01"); // Unit or Basis for Measurement Code (355) osegment.set_dataelementvalue(8, 0, odependentrow[ "PAT08_PatientWeightPounds"].ToString()); // Weight (81) osegment.set_dataelementvalue(9, 0, odependentrow["pat09_pregnant"].tostring()); // Yes/No Condition or Response Code (1073).Trim()!= "") //2010CA PATIENT if (odependentrow["nm103_patientlastororganizationname"].tostring() //NM1 PATIENT NAME edidatasegment.set(ref osegment, otransactionset.

CreateDataSegment("HL\\NM1\\NM1")); osegment.set_dataelementvalue(1, 0, "QC"); //Entity Identifier Code osegment.set_dataelementvalue(2, 0, odependentrow[ "NM102_PatientTypeQualifier"].ToString()); //Entity Type Qualifier osegment.set_dataelementvalue(3, 0, odependentrow[ "NM103_PatientLastOrOrganizationName"].ToString()); //Name Last or Organization Name osegment.set_dataelementvalue(4, 0, odependentrow[ "NM104_PatientFirst"].ToString()); //Name First osegment.set_dataelementvalue(5, 0, odependentrow[ "NM105_PatientMiddle"].ToString()); // Name Middle (1037) osegment.set_dataelementvalue(7, 0, odependentrow[ "NM107_PatientSuffix"].ToString()); // Name Suffix (1039) 15 //N3 PATIENT ADDRESS INFORMATION edidatasegment.set(ref osegment, otransactionset. CreateDataSegment("HL\\NM1\\N3")); osegment.set_dataelementvalue(1, 0, odependentrow[ "N301_PatientAddr1"].ToString()); //Address Information osegment.set_dataelementvalue(2, 0, odependentrow[ "N302_PatientAddr2"].ToString()); // Address Information (166) CreateDataSegment("HL\\NM1\\N4")); //N4 PATIENT LOCATION edidatasegment.set(ref osegment, otransactionset. osegment.set_dataelementvalue(1, 0, odependentrow[ "N401_PatientCity"].ToString()); //City Name osegment.set_dataelementvalue(2, 0, odependentrow[ "N402_PatientState"].ToString()); //State or Province Code osegment.set_dataelementvalue(3, 0, odependentrow[ "N403_PatientZip"].ToString()); //Postal Code osegment.set_dataelementvalue(4, 0, odependentrow[ "N404_PatientCountry"].ToString()); // Country Code (26) osegment.set_dataelementvalue(7, 0, odependentrow[ "N407_PatientCountrySubdivision"].ToString()); // Country Subdivision Code (1715) //DMG PATIENT DEMOGRAPHIC INFORMATION edidatasegment.set(ref osegment, otransactionset. CreateDataSegment("HL\\NM1\\DMG")); if (odependentrow["dmg02_patientbirthdate"].tostring().trim()! = "") osegment.set_dataelementvalue(1, 0, "D8"); //Date Time Period Format Qualifier osegment.set_dataelementvalue(2, 0, odependentrow[ "DMG02_PatientBirthDate"].ToString()); //Date Time Period osegment.set_dataelementvalue(3, 0, odependentrow[ "DMG03_PatientGenderCode"].ToString()); //Gender Code ninstance = 1; // Reference Identification (REF) "AGENCY CLAIM NUMBER" if (odependentrow["ref02_propertycasualtyclaimno"].tostring(). Trim()!= "") edidatasegment.set(ref osegment, otransactionset. CreateDataSegment("HL\\NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "Y4"); // Reference Identification Qualifier (128) osegment.set_dataelementvalue(2, 0, odependentrow[ "REF02_PropertyCasualtyClaimNo"].ToString()); // Reference Identification (127) // Reference Identification (REF) SOCIAL SECURITY NUMBER if (odependentrow["ref02_patientsocialsecurityno"].tostring().

Trim()!= "") edidatasegment.set(ref osegment, otransactionset. CreateDataSegment("HL\\NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "SY"); // Reference Identification Qualifier (128) osegment.set_dataelementvalue(2, 0, odependentrow[ "REF02_PatientSocialSecurityNo"].ToString()); // Reference Identification (127) 16 // Reference Identification (REF) MEMBER IDENTIFICATION NUMBER if (odependentrow["ref02_memberidno"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset. CreateDataSegment("HL\\NM1\\REF(" + osegment.set_dataelementvalue(1, 0, "1W"); // Reference Identification Qualifier (128) osegment.set_dataelementvalue(2, 0, odependentrow[ "REF02_MemberIdNo"].ToString()); // Reference Identification (127) // Administrative Communications Contact (PER) if (odependentrow["per04_patientphoneno"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset. CreateDataSegment("HL\\NM1\\PER")); osegment.set_dataelementvalue(1, 0, "IC"); // Contact Function Code (366) osegment.set_dataelementvalue(2, 0, odependentrow[ "PER02_PatientContactName"].ToString()); // Name (93) osegment.set_dataelementvalue(3, 0, "TE"); // Communication Number Qualifier (365) osegment.set_dataelementvalue(4, 0, odependentrow[ "PER04_PatientPhoneNo"].ToString()); // Communication Number (364) if (odependentrow["per06_patientphoneextno"].tostring(). Trim()!= "") osegment.set_dataelementvalue(5, 0, "EX"); // Communication Number Qualifier (365) osegment.set_dataelementvalue(6, 0, odependentrow[ "PER06_PatientPhoneExtNo"].ToString()); // Communication Number (364) //if //if //2010CA PATIENT //Patient//s claims Proc_2300_Claim(ref otransactionset, ref oconnection, "select * from [837X222_Claims] where Dependentkey = " + odependentrow["dependentkey"].tostring()); //foreach odependentrow //if (!bdependent) //foreach osubscriberrow //foreach oinfosourcerow //foreach oheaderrow //foreach ogrouprow //foreach ointerchangerow

17 //TRAILING SEGMENTS ARE AUTOMATICALLY CREATED WHEN FREDI COMMITS (SAVES) //THE EDIDOC OBJECT INTO AN EDI FILE. oedidoc.save(sapppath + sedifile); MessageBox.Show("Done"); //DESTROYS OBJECTS otransactionset.dispose(); ogroup.dispose(); ointerchange.dispose(); oschemas.dispose(); oedidoc.dispose(); // btngenerate private void Proc_2300_Claim(ref editransactionset otransactionset, ref SqlConnection oconnection, string ssql) edidatasegment osegment=null; int ninstance = 1; int nelempos = 0; //2300 CLAIM SqlDataAdapter oclaimsadapter = new SqlDataAdapter(sSql, oconnection); DataSet oclaimsds = new DataSet("dsClaims"); oclaimsadapter.fill(oclaimsds, "dsclaims"); foreach (DataRow oclaimsrow in oclaimsds.tables["dsclaims"].rows) //CLM HEALTH CLAIM edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\clm")); osegment.set_dataelementvalue(1, 0, oclaimsrow["clm01_patientcontrolno"].tostring()); //Claim Submitter//s Identifier osegment.set_dataelementvalue(2, 0, oclaimsrow["clm02_totalclaimchargeamount"].tostring()); //Monetary Amount osegment.set_dataelementvalue(5, 1, 0, oclaimsrow["clm05_01_placeofservicecode"].tostring ()); //Facility Code Value osegment.set_dataelementvalue(5, 2, 0, "B"); //Facility Code Qualifier osegment.set_dataelementvalue(5, 3, 0, oclaimsrow["clm05_03_claimfrequencycode"].tostring ()); //Claim Frequency Type Code osegment.set_dataelementvalue(6, 0, oclaimsrow["clm06_suppliersignatureindicator"].tostring ()); //Yes/No Condition or Response Code osegment.set_dataelementvalue(7, 0, oclaimsrow["clm07_planparticipationcode"].tostring()); //Provider Accept Assignment Code osegment.set_dataelementvalue(8, 0, oclaimsrow["clm08_benefitsassignmentcertindicator"]. ToString()); //Yes/No Condition or Response Code osegment.set_dataelementvalue(9, 0, oclaimsrow["clm09_releaseofinformationcode"].tostring ()); //Release of Information Code osegment.set_dataelementvalue(10, 0, oclaimsrow["clm10_patientsignaturesourcecode"]. ToString()); // Patient Signature Source Code (1351) osegment.set_dataelementvalue(11, 1, oclaimsrow["clm11_01_relatedcausescode"].tostring()); // Related Causes Code (1362) osegment.set_dataelementvalue(11, 2, oclaimsrow["clm11_02_relatedcausescode"].tostring()); // Related Causes Code (1362) osegment.set_dataelementvalue(11, 4, oclaimsrow["clm11_04_autoaccidentstatecode"].tostring ()); // State or Province Code (156) osegment.set_dataelementvalue(11, 5, oclaimsrow["clm11_05_countrycode"].tostring()); // Country Code (26) osegment.set_dataelementvalue(12, 0, oclaimsrow["clm112_specialprogramcode"].tostring()); // Special Program Code (1366)

osegment.set_dataelementvalue(20, 0, oclaimsrow["clm120_delayreasoncode"].tostring()); // Delay Reason Code (1514) 18 ninstance = 1; // Date or Time or Period (DTP) "ONSET OF CURRENT SYMPTOMS OR ILLNESS" if (oclaimsrow["dtp03_onsetofcurrentillnessinjurydate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "431"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_onsetofcurrentillnessinjurydate"].tostring()); // Date Time Period (1251) // Date or Time or Period (DTP) "INITIAL TREATMENT" if (oclaimsrow["dtp03_initialtreatmentdate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "454"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_initialtreatmentdate"].tostring ()); // Date Time Period (1251) // Date or Time or Period (DTP) LATEST VISIT OR CONSULTATION if (oclaimsrow["dtp03_lastseendate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "304"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_lastseendate"].tostring()); // Date Time Period (1251) // Date or Time or Period (DTP) ACUTE MANIFESTATION OF A CHRONIC CONDITION if (oclaimsrow["dtp03_acutemanifestationdate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "453"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_acutemanifestationdate"].tostring ()); // Date Time Period (1251) // Date or Time or Period (DTP) ACCIDENT if (oclaimsrow["dtp03_accidentdate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "439"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_accidentdate"].tostring()); // Date Time Period (1251)

19 // Date or Time or Period (DTP) LAST MENSTRUAL PERIOD if (oclaimsrow["dtp03_lastmenstrualperioddate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "484"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_lastmenstrualperioddate"]. ToString()); // Date Time Period (1251) // Date or Time or Period (DTP) "LAST X RAY" if (oclaimsrow["dtp03_lastxraydate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "455"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_lastxraydate"].tostring()); // Date Time Period (1251) // Date or Time or Period (DTP) PRESCRIPTION if (oclaimsrow["dtp03_hearvisionprescriptdate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "471"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_hearvisionprescriptdate"]. ToString()); // Date Time Period (1251) // Date or Time or Period (DTP) DISABILITY if (oclaimsrow["dtp03_disability"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "314"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "RD8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_disability"].tostring()); // Date Time Period (1251) // Date or Time or Period (DTP) INITIAL DISABILITY PERIOD START if (oclaimsrow["dtp03_initialdisabilityperiodstart"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "360"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_initialdisabilityperiodstart"]. ToString()); // Date Time Period (1251)

20 // Date or Time or Period (DTP) INITIAL DISABILITY PERIOD END if (oclaimsrow["dtp03_initialdisabilityperiodend"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "361"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_initialdisabilityperiodend"]. ToString()); // Date Time Period (1251) // Date or Time or Period (DTP) INITIAL DISABILITY PERIOD LAST DAY WORKED if (oclaimsrow["dtp03_lastworkeddate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "297"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_lastworkeddate"].tostring()); // Date Time Period (1251) // Date or Time or Period (DTP) INITIAL DISABILITY PERIOD RETURN TO WORK if (oclaimsrow["dtp03_workreturndate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "296"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_workreturndate"].tostring()); // Date Time Period (1251) // Date or Time or Period (DTP) ADMISSION if (oclaimsrow["dtp03_hospitalizationadmissiondate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "435"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_hospitalizationadmissiondate"]. ToString()); // Date Time Period (1251) // Date or Time or Period (DTP) DISCHARGE if (oclaimsrow["dtp03_hospitalizationdischargedate"].tostring().trim()!= "") edidatasegment.set(ref osegment, otransactionset.createdatasegment("hl\\clm\\dtp(" + osegment.set_dataelementvalue(1, 0, "096"); // Date/Time Qualifier (374) osegment.set_dataelementvalue(2, 0, "D8"); // Date Time Period Format Qualifier (1250) osegment.set_dataelementvalue(3, 0, oclaimsrow["dtp03_hospitalizationdischargedate"]. ToString()); // Date Time Period (1251)