'This is just an example program to translate a HIPAA 271 X092 EDI X12 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
    

    Click here to download a trial version of the Framework EDI