'This is just an example program to translate an EDI X12 271 X092 HIPAA file
'in VB6 with Framework EDI component
Option Explicit
Private oEdiDoc As Fredi.ediDocument
Private oSchema As Fredi.ediSchema
Private oSchemas As Fredi.ediSchemas
Private oSegment As Fredi.ediDataSegment
Private oElement As Fredi.ediDataElement

Private Sub cmdSequential_Click()
'Translate an EDI file to an HTM file

    Dim sPath As String
    Dim sEntity As String
    Dim sQlfr As String
    Dim sEligQlfr As String
    Dim sSefFile As String
    Dim sEdiFile As String
    Dim sOutputFile As String
    Dim sSegmentID As String
    Dim nArea As Integer
    Dim sLoopSection As String
    Dim nCount As Integer
    Dim i As Integer
    
    Me.MousePointer = vbHourglass
    
    sPath = Trim(App.Path) & "\"
    sSefFile = sPath & "271_X092.SEF"
    sEdiFile = sPath & "271_x092.x12"
    sOutputFile = sPath & "271.HTM"
    
    'instantiate edi document object
    Set oEdiDoc = New Fredi.ediDocument
    
    'change cursor type from dynamic (default) to ForwardOnly to improve performance
    oEdiDoc.CursorType = Cursor_ForwardOnly
    
    'disable the internal standard referene library so that component will use SEF files only
    'to obtain schema
    Set oSchemas = oEdiDoc.GetSchemas
    oSchemas.EnableStandardReference = False
    
    'load SEF file
    oEdiDoc.ImportSchema sSefFile, 0
    
    'load EDI file
    oEdiDoc.LoadEdi sEdiFile
    
    'get first segment in EDI file
    Set oSegment = oEdiDoc.FirstDataSegment
    
    'create a file to save htm format
    Open sOutputFile For Output As #1
    
    'loop that traverses through EDI file
    While Not oSegment Is Nothing
        'identify a segment uniquely by chacking its id, area and loopsection it is in.
        sSegmentID = oSegment.ID
        nArea = oSegment.Area
        sLoopSection = oSegment.LoopSection
        
        If nArea = "0" Then
            If sSegmentID = "ISA" Then
                'obtain ISA information here
                
            ElseIf sSegmentID = "GS" Then
                'obtain GS infomraiton here
                
            End If
        
        ElseIf nArea = "1" Then
            If sLoopSection = "" Then
                If sSegmentID = "BHT" Then  'Beginning of Hierarchical Transaction
                    SendToHTM "Reference ID: ", oSegment.DataElementValue(3)
                    SendToHTM "Date: ", oSegment.DataElementValue(4)
                Else
                End If
            Else
            End If
        
        ElseIf nArea = 2 Then
            If sLoopSection = "HL" And sSegmentID = "HL" Then
                sEntity = oSegment.DataElementValue(3)  'obtain the level code to identify the HL loop
            End If
            
            If sEntity = "20" Then  'Information Source Level
                If sLoopSection = "HL" Then
                    If sSegmentID = "HL" Then
                    End If
                    
                ElseIf sLoopSection = "HL;NM1" Then
                    If sSegmentID = "NM1" Then  'Information Source Name
                        SendToHTM "Payer Name: ", oSegment.DataElementValue(3)
                        SendToHTM "Payer ID: ", oSegment.DataElementValue(9)
                    End If
                End If
                
            ElseIf sEntity = "21" Then  'Information Receiver Level
                If sLoopSection = "HL" Then
                    If sSegmentID = "HL" Then
                    End If
                    
                ElseIf sLoopSection = "HL;NM1" Then
                    If sSegmentID = "NM1" Then  'Information Receiver Name
                        SendToHTM "Provider Lastname: ", oSegment.DataElementValue(3)
                        SendToHTM "Provider Firstname: ", oSegment.DataElementValue(4)
                        SendToHTM "Service Provider No: ", oSegment.DataElementValue(9)
                    End If
                End If
            
            ElseIf sEntity = "22" Then  'Subscriber Level
                If sLoopSection = "HL" Then
                    If sSegmentID = "HL" Then
                    ElseIf sSegmentID = "TRN" Then  'Subscriber Trace Number
                        SendToHTM "Subscriber ReferenceID: ", oSegment.DataElementValue(2)
                        SendToHTM "Subscriber Company ID: ", oSegment.DataElementValue(3)
                    End If
                    
                ElseIf sLoopSection = "HL;NM1" Then
                    If sSegmentID = "NM1" Then
                        sQlfr = oSegment.DataElementValue(1)
                    End If  'sSegmentID
                    
                    If sQlfr = "IL" Then
                        If sSegmentID = "NM1" Then  'Subscriber Name
                            SendToHTM "Insured Subscriber Lastname: ", oSegment.DataElementValue(3)
                            SendToHTM "Insured Subscriber Firstname: ", oSegment.DataElementValue(4)
                            SendToHTM "Insured Subscriber Middle Initial: ", oSegment.DataElementValue(5)
                            
                        ElseIf sSegmentID = "REF" Then  'Subscriber Additional Identification
                            SendToHTM "Subscriber Policy No: ", oSegment.DataElementValue(2)
                            
                        ElseIf sSegmentID = "N3" Then
                            SendToHTM "Address: ", oSegment.DataElementValue(1)
                            
                        ElseIf sSegmentID = "N4" Then
                            SendToHTM "Subscriber City:", oSegment.DataElementValue(1)
                            SendToHTM "Subscriber State:", oSegment.DataElementValue(2)
                            SendToHTM "Subscriber Zip:", oSegment.DataElementValue(3)
                            
                            
                        ElseIf sSegmentID = "DMG" Then  'Subscriber Demographic Information
                            SendToHTM "Subscriber Birthday: ", oSegment.DataElementValue(2)
                            SendToHTM "Subscriber Gender: ", oSegment.DataElementValue(3)
                            
                        End If  'sSegmentID
                    End If  'sQlfr
                       
                ElseIf sLoopSection = "HL;NM1;EB" Then
                    If sSegmentID = "EB" Then   'Eligibility or Benefit Information
                        sEligQlfr = oSegment.DataElementValue(1) 'Eligibility or Benefit Information
                    End If
                    
                    If sEligQlfr = "1" Then 'Active Coverage
                        If sSegmentID = "EB" Then
                            SendToHTM "Subscriber Active Coverage Level Code: ", oSegment.DataElementValue(2)
                            SendToHTM "Subscriber Active Coverage Type Code: ", oSegment.DataElementValue(3)
                        ElseIf sSegmentID = "HSD" Then
                        ElseIf sSegmentID = "REF" Then
                        ElseIf sSegmentID = "DTP" Then
                        End If
                        
                    ElseIf sEligQlfr = "B" Then 'Co-Payment
                        If sSegmentID = "EB" Then
                            SendToHTM "Subscriber Co-Payment Service Type Code: ", oSegment.DataElementValue(3)
                            SendToHTM "Subscriber Co-Payment Amount: ", oSegment.DataElementValue(7)
                        ElseIf sSegmentID = "HSD" Then
                        ElseIf sSegmentID = "REF" Then
                        ElseIf sSegmentID = "DTP" Then
                        End If
                    
                    ElseIf sEligQlfr = "C" Then 'Deductible
                        If sSegmentID = "EB" Then
                            SendToHTM "Subscriber Deductible Level Code: ", oSegment.DataElementValue(2)
                            SendToHTM "Subscriber Deductible Amount: ", oSegment.DataElementValue(7)
                        ElseIf sSegmentID = "HSD" Then
                        ElseIf sSegmentID = "REF" Then
                        ElseIf sSegmentID = "DTP" Then
                        End If
                    
                    ElseIf sEligQlfr = "L" Then 'Primary Care Provider
                    End If
                    
                ElseIf sLoopSection = "HL;NM1;EB;LS;nm1" Then
                    If sSegmentID = "NM1" Then
                        sQlfr = oSegment.DataElementValue(1)
                    End If
                    
                    If sQlfr = "P3" Then 'Primary Care Provider
                        If sSegmentID = "NM1" Then
                            SendToHTM "Subscriber Primary Care Provider Lastname: ", oSegment.DataElementValue(3)
                            SendToHTM "Subscriber Primary Care Provider Firstname: ", oSegment.DataElementValue(4)
                            SendToHTM "Subscriber Primary Care Provider Middle Initial: ", oSegment.DataElementValue(5)
                            SendToHTM "Subscriber Primary Care Provider ID: ", oSegment.DataElementValue(9)
                        
                        ElseIf sSegmentID = "PER" Then
                            SendToHTM Trim(oSegment.DataElementValue(2)) & "Telephone: ", oSegment.DataElementValue(4)
                        
                        End If  'sSegmentID
                        
                    End If  'sQlfr
                    
                End If  'sLoopSection
                    
            ElseIf sEntity = "23" Then  'Dependent Level
                'The Dependent Level should almost be quite similar to the Subscriber level
                
                If sLoopSection = "HL" Then
                    If sSegmentID = "HL" Then
                    ElseIf sSegmentID = "TRN" Then  'Dependent Trace Number
                        SendToHTM "Dependent ReferenceID: ", oSegment.DataElementValue(2)
                        SendToHTM "Dependent Company ID: ", oSegment.DataElementValue(3)
                        SendToHTM "Additional Dependent ReferenceID: ", oSegment.DataElementValue(4)
                    End If 'sSegmentID
                    
                ElseIf sLoopSection = "HL;NM1" Then
                    If sSegmentID = "NM1" Then
                        sQlfr = oSegment.DataElementValue(1)
                    End If
                    If sQlfr = "03" Then    'Depenedent
                        If sSegmentID = "NM1" Then  'Depenedent Name
                            SendToHTM "Insured Dependent Lastname: ", oSegment.DataElementValue(3)
                            SendToHTM "Insured Dependent Firstname: ", oSegment.DataElementValue(4)
                            SendToHTM "Insured Dependent Middle Initial: ", oSegment.DataElementValue(5)
                            
                        ElseIf sSegmentID = "REF" Then  'Depenedent Additional Identification
                            If oSegment.DataElementValue(1) = "SY" Then 'SSN
                                SendToHTM "Dependent SSN: ", oSegment.DataElementValue(2)
                            End If
                            
                        ElseIf sSegmentID = "N3" Then
                            SendToHTM "Dependent Address: ", oSegment.DataElementValue(1)
                            
                        ElseIf sSegmentID = "N4" Then
                            SendToHTM "Dependent City:", oSegment.DataElementValue(1)
                            SendToHTM "Dependent State:", oSegment.DataElementValue(2)
                            SendToHTM "Zip:", oSegment.DataElementValue(3)
                                                        
                        ElseIf sSegmentID = "DMG" Then
                            SendToHTM "Dependent Birthday: ", oSegment.DataElementValue(2)
                            SendToHTM "Dependent Gender: ", oSegment.DataElementValue(3)
                        
                        ElseIf sSegmentID = "INS" Then
                            SendToHTM "Dependent Relationship Code: ", oSegment.DataElementValue(2)
                        
                        ElseIf sSegmentID = "DTP" Then
                            SendToHTM "Dependent Service Date: ", oSegment.DataElementValue(3)
                        End If
                    End If  'sQlfr
                       
                ElseIf sLoopSection = "HL;NM1;EB" Then
                    If sSegmentID = "EB" Then   'Eligibility or Benefit Information
                        sEligQlfr = oSegment.DataElementValue(1) 'Eligibility or Benefit Information
                    End If
                    
                    If sEligQlfr = "1" Then 'Active Coverage
                        If sSegmentID = "EB" Then
                            SendToHTM "Dependent Active Coverage Level Code: ", oSegment.DataElementValue(2)
                            SendToHTM "Dependent Active Coverage Type Code: ", oSegment.DataElementValue(3)
                        ElseIf sSegmentID = "HSD" Then
                        ElseIf sSegmentID = "REF" Then
                        ElseIf sSegmentID = "DTP" Then
                        End If
                        
                    ElseIf sEligQlfr = "B" Then 'Co-Payment
                        If sSegmentID = "EB" Then
                            SendToHTM "Dependent Co-Payment Service Type Code: ", oSegment.DataElementValue(3)
                            SendToHTM "Dependent Co-Payment Amount: ", oSegment.DataElementValue(7)
                        ElseIf sSegmentID = "HSD" Then
                        ElseIf sSegmentID = "REF" Then
                        ElseIf sSegmentID = "DTP" Then
                        End If
                    
                    ElseIf sEligQlfr = "C" Then 'Deductible
                        If sSegmentID = "EB" Then
                            SendToHTM "Dependent Deductible Level Code: ", oSegment.DataElementValue(2)
                            SendToHTM "Dependent Deductible Amount: ", oSegment.DataElementValue(7)
                        ElseIf sSegmentID = "HSD" Then
                        ElseIf sSegmentID = "REF" Then
                        ElseIf sSegmentID = "DTP" Then
                        End If
                    
                    ElseIf sEligQlfr = "L" Then 'Primary Care Provider
                    End If
                    
                ElseIf sLoopSection = "HL;NM1;EB;LS;NM1" Then
                    If sSegmentID = "NM1" Then
                        sQlfr = oSegment.DataElementValue(1)
                    End If
                    
                    If sQlfr = "P3" Then 'Primary Care Provider
                        If sSegmentID = "NM1" Then
                            SendToHTM "Dependent Primary Care Provider Lastname: ", oSegment.DataElementValue(3)
                            SendToHTM "Dependent Primary Care Provider Firstname: ", oSegment.DataElementValue(4)
                            SendToHTM "Dependent Primary Care Provider Middle Initial: ", oSegment.DataElementValue(5)
                            SendToHTM "Dependent Primary Care Provider ID: ", oSegment.DataElementValue(9)
                        
                        ElseIf sSegmentID = "PER" Then
                            SendToHTM Trim(oSegment.DataElementValue(2)) & " Telephone: ", oSegment.DataElementValue(4)
                        
                        End If  'sSegmentID
                        
                    End If  'sQlfr
                    
                End If  'sLoopSection
                
            End If  'sEntity
        End If  'sArea
        
        Set oSegment = oSegment.Next
    Wend

    Close #1
    
    cmdSequential.Enabled = False
    Me.MousePointer = vbNormal
    MsgBox ("Done. Output file = " & sOutputFile)
    
End Sub

Private Sub SendToHTM(sTitle As String, sValue As String)

    Print #1, "<P><TAB> " & sTitle & " <B>" & sValue & "</B>"
    
End Sub