'This is an example VB .NET source code for generating an EDI X12 837X098 Professional using the Framework EDI component. 'The complete sample program can be downloaded from our HIPAA EDI Support webpage at http://www.edidev.com/example_hipaa.html Private Sub cmdGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGenerate.Click Dim oEdiDoc As ediDocument = Nothing Dim oInterchange As ediInterchange = Nothing Dim oGroup As ediGroup = Nothing Dim oTransactionset As ediTransactionSet = Nothing Dim oSegment As ediDataSegment = Nothing Dim oSchema As ediSchema = Nothing Dim oSchemas As ediSchemas = Nothing Dim sSefFile As String Dim sEdiFile As String Dim nHlCount As Integer Dim nHlProvParent As Integer Dim nHlSubscriberParent As Integer Dim sPath As String = AppDomain.CurrentDomain.BaseDirectory 'connection string to an access database Dim sConnection As String = "persist security info=False; integrated security=true; initial catalog=TestDb; server=(local)" 'create connection to database Dim oConnection As New SqlConnection(sConnection) Me.Cursor = Cursors.WaitCursor sPath = AppDomain.CurrentDomain.BaseDirectory sSefFile = sPath & "837_X098A1.EVAL0.sef" 'evaluation SEF file sEdiFile = sPath & "837Ex1OUTPUT.x12" ediDocument.Set(oEdiDoc, New ediDocument) 'Changing the cursor type to forward write is memory efficient and improves performance. 'Also, the loop instances do not have to be specified in the heirarchy string syntax oEdiDoc.CursorType = DocumentCursorTypeConstants.Cursor_ForwardWrite 'Disable standard reference, and use SEF files oSchemas = oEdiDoc.GetSchemas oSchemas.EnableStandardReference = False 'load SEF file oSchema = oEdiDoc.[LoadSchema](sSefFile, 0) 'Prepare a dataset from the Interchange table Dim sSql As String = "select * from Interchange" Dim oAdapter As New SqlDataAdapter(sSql, oConnection) Dim oInterchangeDS As New DataSet("dsInterchange") oAdapter.Fill(oInterchangeDS, "dsInterchange") Dim oInterchangeRow As DataRow 'create interchange loop For Each oInterchangeRow In oInterchangeDS.Tables("dsInterchange").Rows 'set terminators oEdiDoc.SegmentTerminator = "~" & vbCrLf oEdiDoc.ElementTerminator = "*" oEdiDoc.CompositeTerminator = ":" 'CREATE INTERCHANGE ediInterchange.Set(oInterchange, oEdiDoc.CreateInterchange("X", "004010")) ediDataSegment.Set(oSegment, oInterchange.GetDataSegmentHeader) oSegment.DataElementValue(1) = "00" ' Authorization Information Qualifier (I01) oSegment.DataElementValue(3) = "00" ' Security Information Qualifier (I03) oSegment.DataElementValue(5) = "12" ' Interchange ID Qualifier (I05) oSegment.DataElementValue(6) = oInterchangeRow("SenderID") ' Interchange Sender ID (I06) oSegment.DataElementValue(7) = "ZZ" ' Interchange ID Qualifier (I05) oSegment.DataElementValue(8) = oInterchangeRow("ReceiverID") ' Interchange Receiver ID (I07) oSegment.DataElementValue(9) = "010101" ' Interchange Date (I08) oSegment.DataElementValue(10) = "0101" ' Interchange Time (I09) oSegment.DataElementValue(11) = "U" ' Interchange Control Standards Identifier (I10) oSegment.DataElementValue(12) = "00401" ' Interchange Control Version Number (I11) oSegment.DataElementValue(13) = oInterchangeRow("ControlNo") ' Interchange Control Number (I12) oSegment.DataElementValue(14) = "0" ' Acknowledgment Requested (I13) oSegment.DataElementValue(15) = "T" ' Usage Indicator (I14) oSegment.DataElementValue(16) = "!" ' Component Element Separator (I15) 'prepare dataset from the FuncGroup table sSql = "select * from FuncGroup where Interkey = " & Trim(Str(oInterchangeRow("Interkey"))) oAdapter = New SqlDataAdapter(sSql, oConnection) Dim oGroupDs As New DataSet("dsGroup") Dim oGroupRow As DataRow oAdapter.Fill(oGroupDs, "dsGroup") 'create the functional group loop For Each oGroupRow In oGroupDs.Tables("dsGroup").Rows 'CREATE FUNCTIONAL GROUP ediGroup.Set(oGroup, oInterchange.CreateGroup("004010X098")) ediDataSegment.Set(oSegment, oGroup.GetDataSegmentHeader) oSegment.DataElementValue(1) = oGroupRow("FuncID") ' Functional Identifier Code (479) oSegment.DataElementValue(2) = "APP SENDER" ' Application Sender's Code (142) oSegment.DataElementValue(3) = "APP RECEIVER" ' Application Receiver's Code (124) oSegment.DataElementValue(4) = "20010821" ' Date (373) oSegment.DataElementValue(5) = "1548" ' Time (337) oSegment.DataElementValue(6) = oGroupRow("ControlNo") ' Group Control Number (28) oSegment.DataElementValue(7) = "X" ' Responsible Agency Code (455) oSegment.DataElementValue(8) = "004010X098" ' Version / Release / Industry Identifier Code (480) 'prepare dataset from X098Header table sSql = "select * from X098Header where Groupkey = " & Trim(Str(oGroupRow("Groupkey"))) oAdapter = New SqlDataAdapter(sSql, oConnection) Dim oTranSetDs As New DataSet("dsTransactionSet") Dim oSetRow As DataRow oAdapter.Fill(oTranSetDs, "dsTransactionSet") 'create the transaction set loop For Each oSetRow In oTranSetDs.Tables("dsTransactionSet").Rows nHlCount = 0 'HEADER 'ST TRANSACTION SET HEADER ediTransactionSet.Set(oTransactionset, oGroup.CreateTransactionSet("837")) ediDataSegment.Set(oSegment, oTransactionset.GetDataSegmentHeader) oSegment.DataElementValue(1) = "837" ' Transaction Set Identifier Code (143) oSegment.DataElementValue(2) = oSetRow("ControlNo") ' Transaction Set Control Number (329) 'BHT BEGINNING OF HIERARCHICAL TRANSACTION ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("BHT")) oSegment.DataElementValue(1) = "0019" ' Hierarchical Structure Code (1005) oSegment.DataElementValue(2) = "00" ' Transaction Set Purpose Code (353) oSegment.DataElementValue(3) = "0123" ' Reference Identification (127) oSegment.DataElementValue(4) = "19981015" ' Date (373) oSegment.DataElementValue(5) = "1230" ' Time (337) oSegment.DataElementValue(6) = "RP" ' Transaction Type Code (640) 'REF TRANSMISSION TYPE IDENTIFICATION ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("REF")) oSegment.DataElementValue(1) = "87" ' Reference Identification Qualifier oSegment.DataElementValue(2) = oSetRow("ReferenceID") ' Reference Identification '1000A SUBMITTER If oSetRow("SubmitterCompanyName").ToString().Trim <> "" Then 'NM1 SUBMITTER ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("NM1\NM1")) oSegment.DataElementValue(1) = "41" ' Entity Identifier Code (98) oSegment.DataElementValue(2) = "1" ' Entity Type Qualifier (1065) oSegment.DataElementValue(3) = oSetRow("SubmitterCompanyName") ' Name Last or Organization Name (1035) oSegment.DataElementValue(8) = "46" ' Identification Code Qualifier (66) oSegment.DataElementValue(9) = oSetRow("SubmitterCode") ' Identification Code (67) 'PER SUBMITTER EDI CONTACT INFORMATION ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("NM1\PER")) oSegment.DataElementValue(1) = "IC" ' Contact Function Code (366) oSegment.DataElementValue(2) = oSetRow("SubmitterContactName") ' Name (93) oSegment.DataElementValue(3) = "TE" ' Communication Number Qualifier (365) oSegment.DataElementValue(4) = oSetRow("SubmitterPhone") ' Communication Number (364) oSegment.DataElementValue(5) = "EX" ' Communication Number Qualifier (365) oSegment.DataElementValue(6) = oSetRow("SubmitterExt") ' Communication Number (364) End If '1000A SUBMITTER '1000B RECEIVER If oSetRow("ReceiverCompanyName").ToString().Trim <> "" Then 'NM1 RECEIVER NAME ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("NM1(2)\NM1")) oSegment.DataElementValue(1) = "40" ' Entity Identifier Code (98) oSegment.DataElementValue(2) = "2" ' Entity Type Qualifier (1065) oSegment.DataElementValue(3) = oSetRow("ReceiverCompanyName") ' Name Last or Organization Name (1035) oSegment.DataElementValue(8) = "46" ' Identification Code Qualifier (66) oSegment.DataElementValue(9) = oSetRow("ReceiverCode") ' Identification Code (67) End If '1000B RECEIVER '**** BILLING/PAY-TO PROVIDER HIERARCHICAL LEVEL ******************************************* sSql = "select * from X098ProviderInfo where Headerkey = " & Trim(Str(oSetRow("Headerkey"))) oAdapter = New SqlDataAdapter(sSql, oConnection) Dim oProviderDs As New DataSet("dsProvider") Dim oProviderRow As DataRow oAdapter.Fill(oProviderDs, "dsProvider") For Each oProviderRow In oProviderDs.Tables("dsProvider").Rows nHlCount = nHlCount + 1 nHlProvParent = nHlCount '2000A BILLING/PAY-TO PROVIDER HL LOOP 'HL-BILLING PROVIDER ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\HL")) oSegment.DataElementValue(1) = nHlCount ' Hierarchical ID Number (628) oSegment.DataElementValue(3) = "20" ' Hierarchical Level Code (735) oSegment.DataElementValue(4) = "1" ' Hierarchical Child Code (736) '2010AA BILLING PROVIDER If oProviderRow("CompanyName").ToString().Trim <> "" Then 'NM1 BILLING PROVIDER NAME ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\NM1")) oSegment.DataElementValue(1) = "85" ' Entity Identifier Code (98) oSegment.DataElementValue(2) = "2" ' Entity Type Qualifier (1065) oSegment.DataElementValue(3) = oProviderRow("CompanyName") ' Name Last or Organization Name (1035) oSegment.DataElementValue(8) = "XX" ' Identification Code Qualifier (66) oSegment.DataElementValue(9) = oProviderRow("BillingID") ' Identification Code (67) 'N3 BILLING PROVIDER ADDRESS ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\N3")) oSegment.DataElementValue(1) = oProviderRow("Address1") ' Address Information (166) 'N4 BILLING PROVIDER LOCATION ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\N4")) oSegment.DataElementValue(1) = oProviderRow("City") ' City Name (19) oSegment.DataElementValue(2) = oProviderRow("State") ' State or Province Code (156) oSegment.DataElementValue(3) = oProviderRow("Zip") ' Postal Code (116) End If '2010AA BILLING PROVIDER 'LOOP 2000B SUBSCRIBER HIERARCHICAL LEVEL sSql = "select * from X098SubscriberInfo where Providerkey = " & Trim(Str(oProviderRow("Providerkey"))) oAdapter = New SqlDataAdapter(sSql, oConnection) Dim oSubscriberDs As New DataSet("dsSubscriber") Dim oSubscriberRow As DataRow oAdapter.Fill(oSubscriberDs, "dsSubscriber") For Each oSubscriberRow In oSubscriberDs.Tables("dsSubscriber").Rows nHlCount = nHlCount + 1 nHlSubscriberParent = nHlCount '2000B SUBSCRIBER HL LOOP 'HL-SUBSCRIBER ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\HL")) oSegment.DataElementValue(1) = nHlCount ' Hierarchical ID Number (628) oSegment.DataElementValue(2) = nHlProvParent ' Hierarchical Parent ID Number (734) oSegment.DataElementValue(3) = "22" ' Hierarchical Level Code (735) Dim sIndvRel As String = IIf(IsDBNull(oSubscriberRow("IndividualRelation")), "", oSubscriberRow("IndividualRelation")) If sIndvRel = "18" Then oSegment.DataElementValue(4) = "0" Else oSegment.DataElementValue(4) = "1" End If 'SBR SUBSCRIBER INFORMATION ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\SBR")) oSegment.DataElementValue(1) = "P" ' Payer Responsibility Sequence Number Code (1138) oSegment.DataElementValue(2) = sIndvRel ' Individual Relationship Code (1069) oSegment.DataElementValue(3) = oSubscriberRow("PolicyNo") ' Reference Identification (127) oSegment.DataElementValue(9) = "HM" ' Claim Filing Indicator Code (1032) '2010BA SUBSCRIBER If oSubscriberRow("SubscriberLastOrgName").ToString().Trim <> "" Then 'NM1 SUBSCRIBER NAME ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\NM1")) oSegment.DataElementValue(1) = "IL" ' Entity Identifier Code (98) oSegment.DataElementValue(2) = "1" ' Entity Type Qualifier (1065) oSegment.DataElementValue(3) = oSubscriberRow("SubscriberLastOrgName") ' Name Last or Organization Name (1035) oSegment.DataElementValue(4) = oSubscriberRow("SubscriberFirstname") ' Name First (1036) oSegment.DataElementValue(8) = "MI" ' Identification Code Qualifier (66) oSegment.DataElementValue(9) = oSubscriberRow("SubscriberMemberID") ' Identification Code (67) 'N3 SUBSCRIBER ADDRESS ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\N3")) oSegment.DataElementValue(1) = oSubscriberRow("SubscriberAddress") ' Address Information 'N4 SUBSCRIBER CITY ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\N4")) oSegment.DataElementValue(1) = oSubscriberRow("SubscriberCity") ' City Name (19) oSegment.DataElementValue(2) = oSubscriberRow("SubscrberState") ' State or Province Code (156) oSegment.DataElementValue(3) = oSubscriberRow("SubscriberZip") ' Postal Code (116) 'DMG SUBSCRIBER DEMOGRAPHIC INFORMATION If Not IsDBNull(oSubscriberRow("SubscriberDOB")) Then ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\DMG")) oSegment.DataElementValue(1) = "D8" ' Date Time Period Format Qualifier oSegment.DataElementValue(2) = oSubscriberRow("SubscriberDOB") ' Date Time Period oSegment.DataElementValue(3) = oSubscriberRow("SubscriberGender") ' Gender Code End If End If '2010BA SUBSCRIBER '2010BB SUBSCRIBER/PAYER If oSubscriberRow("PayerLastOrgName").ToString().Trim <> "" Then 'NM1 PAYER NAME ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\NM1")) oSegment.DataElementValue(1) = "PR" ' Entity Identifier Code (98) oSegment.DataElementValue(2) = "2" ' Entity Type Qualifier (1065) oSegment.DataElementValue(3) = oSubscriberRow("PayerLastOrgName") ' Name Last or Organization Name oSegment.DataElementValue(8) = "PI" ' Identification Code Qualifier oSegment.DataElementValue(9) = oSubscriberRow("PayerID") ' Identification Code 'N2 PAYER ADDITIONAL NAME INFORMATION ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\N2")) oSegment.DataElementValue(1) = "COMPANY" ' Name End If '2010BB SUBSCRIBER/PAYER If sIndvRel = "18" Then 'LOOP 2300 CLAIM INFORMATION sSql = "select * from X098Claims where Subscriberkey = " & Trim(Str(oSubscriberRow("Subscriberkey"))) Proc_2300_Claim(oTransactionset, oConnection, sSql) Else 'LOOP 2000C PATIENT HIERARCHICAL LEVEL sSql = "select * from X098PatientInfo where SubscriberKey = " & Trim(Str(oSubscriberRow("SubscriberKey"))) oAdapter = New SqlDataAdapter(sSql, oConnection) Dim oPatientDs As New DataSet("dsPatient") Dim oPatientRow As DataRow oAdapter.Fill(oPatientDs, "dsPatient") For Each oPatientRow In oPatientDs.Tables("dsPatient").Rows nHlCount = nHlCount + 1 '2000C Patient HL LOOP 'HL-Patient ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\HL")) oSegment.DataElementValue(1) = nHlCount ' Hierarchical ID Number (628) oSegment.DataElementValue(2) = nHlSubscriberParent ' Hierarchical Parent ID Number (734) oSegment.DataElementValue(3) = "23" ' Hierarchical Level Code (735) oSegment.DataElementValue(4) = "0" ' Hierarchical Child Code (736) 'PAT - PATIENT Patient INFORMATION ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\PAT")) oSegment.DataElementValue(1) = oPatientRow("RelationshipCode") 'Entity Identifier Code 'LOOP 2010CA PATIENT NAME If oPatientRow("Lastname").ToString().Trim <> "" Then 'NM1 - INDIVIDUAL OR ORGANIZATIONAL NAME ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1")) oSegment.DataElementValue(1) = "QC" 'Entity Identifier Code oSegment.DataElementValue(2) = "1" 'Entity Type Qualifier oSegment.DataElementValue(3) = oPatientRow("Lastname") 'Name Last or Organization Name oSegment.DataElementValue(4) = oPatientRow("Firstname") 'Name First 'oSegment.DataElementValue(5) = oRsGX098SubscriberInfo("NM105_MiddleName") 'Name Middle 'N3 - ADDRESS INFORMATION ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\N3")) oSegment.DataElementValue(1) = oPatientRow("Address") 'Address Information 'N4 - GEOGRAPHIC LOCATION ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\N4")) oSegment.DataElementValue(1) = oPatientRow("City") 'City Name oSegment.DataElementValue(2) = oPatientRow("State") 'State oSegment.DataElementValue(3) = oPatientRow("Zip") 'DMG - DEMOGRAPHIC INFORMATION If oPatientRow("DOB").ToString().Trim <> "" Then ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\NM1\DMG")) oSegment.DataElementValue(1) = "D8" 'Date Time Period Format Qualifier oSegment.DataElementValue(2) = oPatientRow("DOB") 'Date oSegment.DataElementValue(3) = oPatientRow("Gender") 'State Name End If End If 'LOOP 2010CA PATIENT NAME 'LOOP 2300 CLAIM INFORMATION sSql = "select * from X098Claims where Patientkey = " & Trim(Str(oPatientRow("Patientkey"))) Proc_2300_Claim(oTransactionset, oConnection, sSql) Next 'Patient End If 'sIndvRel Next 'Subscriber Next 'Provider Info Next 'SetRow Next 'GroupRow Next 'oInterchangeRow oEdiDoc.Save(sEdiFile) 'save to a file 'Display EDI string Dim ofrmViewEDI As frmViewEDI ofrmViewEDI = New frmViewEDI ofrmViewEDI.Text = "837 4010X098 EDI File" ofrmViewEDI.RichTextBox1.Text = oEdiDoc.GetEdiString() 'get EDI string from FREDI object ofrmViewEDI.Show() oSegment.Dispose() oTransactionset.Dispose() oGroup.Dispose() oInterchange.Dispose() oSchema.Dispose() oSchemas.Dispose() oEdiDoc.Dispose() Me.Cursor = Cursors.Default MsgBox("Done") cmdGenerate.Enabled = False End Sub Private Sub Proc_2300_Claim(ByRef oTransactionSet As ediTransactionSet, ByRef oConnection As SqlConnection, sSql As String) Dim oSegment As ediDataSegment = Nothing Dim iItemCount As Integer Dim oAdapter = New SqlDataAdapter(sSql, oConnection) Dim oClaimsDs = New DataSet("dsClaims") oAdapter.Fill(oClaimsDs, "dsClaims") Dim oClaimsRow As DataRow For Each oClaimsRow In oClaimsDs.Tables("dsClaims").Rows '2300 CLAIM 'CLM CLAIM LEVEL INFORMATION ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\CLM")) oSegment.DataElementValue(1) = oClaimsRow("PatientAccountNo") ' Claim Submitter's Identifier (1028) oSegment.DataElementValue(2) = oClaimsRow("ClaimAmount") ' Monetary Amount (782) oSegment.DataElementValue(5, 1) = "11" ' Facility Code Value (1331) oSegment.DataElementValue(5, 3) = "1" ' Claim Frequency Type Code (1325) oSegment.DataElementValue(6) = "Y" ' Yes/No Condition or Response Code (1073) oSegment.DataElementValue(7) = "A" ' Provider Accept Assignment Code (1359) oSegment.DataElementValue(8) = "Y" ' Yes/No Condition or Response Code (1073) oSegment.DataElementValue(9) = "Y" ' Release of Information Code (1363) oSegment.DataElementValue(10) = "C" ' Patient Signature Source Code (1351) 'DTP DATE OF ONSET ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\DTP")) oSegment.DataElementValue(1) = "431" ' Date/Time Qualifier (374) oSegment.DataElementValue(2) = "D8" ' Date Time Period Format Qualifier (1250) oSegment.DataElementValue(3) = oClaimsRow("OnsetDate") ' Date Time Period (1251) 'REF CLEARING HOUSE CLAIM NUMBER ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\REF")) oSegment.DataElementValue(1) = "D9" ' Reference Identification Qualifier (128) oSegment.DataElementValue(2) = "17312345600006351" ' Reference Identification (127) 'HI HEALTH CARE DIAGNOSIS CODES ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\HI")) oSegment.DataElementValue(1, 1) = "BK" ' Code List Qualifier Cod oSegment.DataElementValue(1, 2) = "0340" ' Industry Code oSegment.DataElementValue(2, 1) = "BF" ' Code List Qualifier Code oSegment.DataElementValue(2, 2) = "V7389" ' Industry Code '2310B RENDERING PROVIDER If oClaimsRow("RenderingLastname").ToString().Trim <> "" Then 'NM1 RENDERING PROVIDER NAME ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\NM1\NM1")) oSegment.DataElementValue(1) = "82" ' Entity Identifier Code (98) oSegment.DataElementValue(2) = "1" ' Entity Type Qualifier (1065) oSegment.DataElementValue(3) = oClaimsRow("RenderingLastname") ' Name Last or Organization Name (1035) oSegment.DataElementValue(4) = oClaimsRow("RenderingFirstname") ' Name First (1036) oSegment.DataElementValue(8) = "34" ' Identification Code Qualifier (66) oSegment.DataElementValue(9) = oClaimsRow("RenderingID") ' Identification Code (67) 'PRV RENDERING PROVIDER INFORMATION ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\NM1\PRV")) oSegment.DataElementValue(1) = "PE" ' Provider Code (1221) oSegment.DataElementValue(2) = "ZZ" ' Reference Identification Qualifier (128) oSegment.DataElementValue(3) = "203BF0100Y" ' Reference Identification (127) End If '2310B RENDERING PROVIDER '2310D SERVICE LOCATION If oClaimsRow("FacilityAddr").ToString().Trim <> "" Then 'NM1 SERVICE FACILITY LOCATION ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\NM1(2)\NM1")) oSegment.DataElementValue(1) = "77" ' Entity Identifier Code (98) oSegment.DataElementValue(2) = "2" ' Entity Type Qualifier (1065) oSegment.DataElementValue(3) = oClaimsRow("FacilityName") ' Name Last or Organization Name (1035) If oClaimsRow("FacilityID").ToString().Trim <> "" Then oSegment.DataElementValue(8) = "24" ' Identification Code Qualifier (66) oSegment.DataElementValue(9) = oClaimsRow("FacilityID") ' Identification Code (67) End If 'N3 SERVICE FACILITY ADDRESS ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\NM1(2)\N3")) oSegment.DataElementValue(1) = oClaimsRow("FacilityAddr") ' Address Information 'N4 SERVICE FACILITY CITY/STATE/ZIP ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\NM1(2)\N4")) oSegment.DataElementValue(1) = oClaimsRow("FacilityCity") ' City oSegment.DataElementValue(2) = oClaimsRow("FacilityState") 'State oSegment.DataElementValue(3) = oClaimsRow("FacilityZip") 'Postal Code End If 'LOOP 2400 SERVICE LINE sSql = "select * from X098ServiceInfo where Claimskey = " & Trim(Str(oClaimsRow("Claimskey"))) oAdapter = New SqlDataAdapter(sSql, oConnection) Dim oServiceDs = New DataSet("dsService") oAdapter.Fill(oServiceDs, "dsService") Dim oServiceRow As DataRow iItemCount = 0 For Each oServiceRow In oServiceDs.Tables("dsService").Rows iItemCount = iItemCount + 1 'LX SERVICE LINE COUNTER ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\LX\LX")) oSegment.DataElementValue(1) = iItemCount ' Assigned Number (554) 'SV1 PROFESSIONAL SERVICE ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\LX\SV1")) oSegment.DataElementValue(1, 1) = "HC" ' Product/Service ID Qualifier (235) oSegment.DataElementValue(1, 2) = oServiceRow("ServiceID") ' Product/Service ID (234) oSegment.DataElementValue(2) = oServiceRow("ServiceAmount") ' Monetary Amount (782) oSegment.DataElementValue(3) = "UN" ' Unit or Basis for Measurement Code (355) oSegment.DataElementValue(4) = "1" ' Quantity (380) oSegment.DataElementValue(7, 1) = oServiceRow("Diagnosis") ' Diagnosis Code Pointer (1328) oSegment.DataElementValue(9) = "N" ' Yes/No Condition or Response Code (1073) 'DTP DATE - SERVICE DATE(S) ediDataSegment.Set(oSegment, oTransactionSet.CreateDataSegment("HL\CLM\LX\DTP")) oSegment.DataElementValue(1) = "472" ' Date/Time Qualifier (374) oSegment.DataElementValue(2) = "D8" ' Date Time Period Format Qualifier (1250) oSegment.DataElementValue(3) = oServiceRow("ServiceDate") ' Date Time Period (1251) Next 'Service Next 'Claims End Sub