softcare.jpg (3621 bytes)
Home | News | Products | ActiveX for Healthcare | NPI | DownLoads | Contact Softcare | | About Softcare
> Home
> Recent News
> Press Releases
> National Provider Identifier
> Duramax
> Hospice Agency Software
> Mail-Order Pharmacy
> HoverFrame
> ANSIX Activex for Electronic Claims
> National Provider Identifier
> ANSIX Activex for Electronic Claims
> NSF Activex for Electronic Claims
> National Provider Identifier
> ANSIX Order Details
> National Provider Identifier
> Product Downloads
> Contact Us
> Company History
> Sales
> Support
> Company Telephones
> Available Positions

  Ansix Activex (ocx) for Ansi X12 Electronic Insurance Claims

If you have just glanced at the Washington Publishing’s National Electronic Data Interchange Transaction Set Implementation Guide, Health Care Claim:Professional 837 ASC X12N 837 (004010X098) May 2000 , you know just by the title that chaos lies within.  That’s an under-statement if you have ever tried to read it and gain the knowledge necessary to write your procedures.  If you have tried you know that you must write a little refer back to the guide, write a little more, refer back to the guide, write a little more and run screaming madly through your office. 

Well, it’s a little better now. Introducing ANSIX an activex control (ocx) to help you write the ANSI X12 837 version 4010 electronic claims file.  Written using Washington Publishing's, the exclusive distributor of implementation guides, table data schema.

If you have been looking for an alternative to the Microsoft Biztalk Server this is it.  While the Biztalk server is a fine product it does take a team of programmers to manage. There are too many parts and it is impossible to package a stand alone application.  Also the cost to buy and implement is beyond most small providers. You need more than just BizTalk, you must use Windows 2000 Server, SQL Server 2000, and Visio together with Biztalk.   

To get an appreciation for ANSIX you should use it so a try and buy beta is available for download.  You must register as usual and we will email the URL to your valid email address.  Please be aware that you must provide a valid mailing address, telephone and company name otherwise you will not receive the try and buy beta email.    Note: Ansix.ocx requires the latest service packs for Win2000 (sp4) and WinXP (sp1). Ansix.ocx may not run properly in Visual Studio.Net 2002, however, Ansix.ocx will run correctly in Visual Studio.Net 2003.   Download Ansix. Download the Programmer's Reference in  ( word doc file )    or in Adobe PDF file ) format. Order Ansix online for $1595.00(US).

To get ready to write a ANSI X12 837 version 4010 file using ANSIX you should first download a copy of the Implementation Guide from the Washington Publishing Company 1.800.972.4334 http://www.wpc-edi.com. Download the Professional 837 Claim PDF file and the ASC X12N 837 (004010X098A1) October 2000 addendum. Both are free to download.  The addendum contains changes need to implement the code set. 

Once you have downloaded the guide you should look at page 51 to 57.  This is the complete Healthcare Claim: Professional.  Using these pages, ANSIX, and any Companion Guide available for carrier specific information will make writing the file much easier. 

Most of the segment members (elements) code values are contained within ANSIX, however, the usage and complete Description of a segment is contained within the Implementation Guide.

 ANSIX contains two types of properties. Loop properties, that are visible only in the code window, whilst you write code, using the IntelliSense feature of the language such as Visual Basic 6 or Visual Studio.Net, and properties that appear in the property window and appear in the IntelliSense dropdown during coding.

Properties that appear in the Property window: 

Property Annotation as boolean

Syntax:

Object.Filename = [True, False]

 Description:

Ansix will place with in the output file annotation.

Property DataElementSeparator as String

 Syntax:

Object.DataElementSeparator = char(1)

Description:

This single character separates each segment element.  This value defaults to “*”

Property ErrorTrap Property as Boolean

 True, Or False

Syntax:

Object.ErrorTrap = [True, False]

Part                             Description

True                             Disables all 'on error resume in the control'

False                           Enables 'on error resume in the control'

Remarks:

This is a debug feature used by Softcare.

Property Filename String PathFilename

Syntax:

Object.Filename = [path/filename]

Description:

Name of file to write claims to.  Must conform to the file system file specifications naming conventions.

Property NewLine

Syntax:

Object.Newline =        no_LForCR_ToSegmentEnd

                                                LfCr_ToSegmentEnd = 2

                                                LF_ToSegmentEnd = 1

Description:

Values determine if a linefeed (UNIX) or linefeed carriage return (DOS/Windows) or if file is contiguous.  Value enums are:

Property  SegmentCount as String

Syntax:

Value& = Object.SegmentCount

Description:

Read only value that represents the number of segments added to the file.  Available only at runtime.

Property SegmentTerminator as String

Syntax:

Object.SegmentTerminator = char(1)

Description:

The end of each segment is terminated with this single character.   This value defaults to “~”.

Property SubelementSeparator as String

Syntax:

Object.SubelementSeparator = char(1)

Description:

Each member element is separated with this single character. This value defaults to “:”

Subs , Events and Functions

Sub OpenFile([FilePath As String])

Description:

Open the file prior to adding the first segment.  Optional argument filename will open filename else Openfile uses the Filename property to open.

Sub CloseFile()

Description:

Function to close the file once opened. File should be closed after all segments are added.

Function Date_to_CCYYMMDD(inDate As Date) As String

Description:

Routine to convert a date variable to proper ansi syntax. See Implementation Guide.

Function StringToHex(Value As String) As String

Description:

Routine to convert String to hex for storage into a code value loop segment member.

Event BeforeAdd(SegmentValue As String, SegmentCount As Long, bCancel As Boolean)

Description:

Fired before an Additem.  Additem can be canceled.

Sub OpenFile([FilePath As String])

Description:

Open the file prior to adding the first segment.  Optional argument filename will open filename else Openfile uses the Filename property.

Loop Properties

Syntax:

Property LoopID_QUAL_OCCURANCE_Description As L?_???_??

Example:  Loop0_ISA_00_InterchangeControlHeader

Description:

There are over 200 loop properties.  You should study page 51 to 57 of the Washington Publishing Company’s Implementation Guide to see each loop.  And the sample application. Some loops only occur with in a file such as the ISA others will loop as needed.  See a Appendix A.1 for a complete list of Loop Properties and elements.

Sub Additem

Syntax: LoopProperty.Additem

Description:

Sub routine that is part of each Loop Property.  Calling this sub will cause the segment to add itself  to the file specified in filename or during OpenFile.

Installing Softcare’s ANSIX

 After downloading and installing the self-extracting file, there will be sample program in the ANSIX folder associated with Program Files.  Launch the program to see the sample coding.

Use of With With End. 

When using ANSIX control you should make use of the ‘with / end with’ statements.  ANSIX uses long property names and long code value names. Loop properties, segment elements and code value names contain the information that makes it easy for you to code.  Since the names are so long you must use the ‘with / end with’ structure or your language may return too long naming errors. Avoid this by using the ‘with’ structure.

Learn the Loop Hierarchy 

ANSIX expects you to know the 837-loop hierarchy, page 51 to 57 of the Implementation Guide is all you need to refer to.  There is the envelope loop ISA GS…  GE ISA which is described starting in appendix  B.3.  This is one of the most confusing things about the Implementation Guide.  The actual file is started with ISA and ends with IEA, however, the fine folks who created this manual buried this at the end of the manual.  Also the 837 uses the concept of loops however, they assign very cryptic ID numbers to the loops and don’t even assign loops ID to the ISA GS  or  the ST loops that do exist, so I decided to assign Loop0 for the ISA/GS envelope and Loop1 for the ST/BHT/REF segments that do not have one assigned. (See page 51 of the implementation guide you will see what I am talking about).  As you can see that the first loop is 1000.  That starts after the first segments ST/BHT/REF that don’t have a loop ID. 

Anyway ANSIX code properties all start with Loop (something) since loops increment in value loops you will use first start first in the IntelliSense window.

Step by Step 

Step 1 paste an ANSIX control on your form.  Add a command button or menu item.  Select the click event code window.

Step 2 Write your procedure using ‘with ansix /end with coding structure’

 With ansix1

Rem set the properties.Annotation = False
.ErrorTrap = True
.FileName = "C:\ANSI837.TXT"
rem open the file
.OpenFile
.SegmentTerminator = "~"
.DataElementSeparator = "*"
.SubelementSeparator = ":"
.NewLine = no_LForCR_ToSegmentEnd
Step 3   Add a loop

 

Step 4 Now choose your loop for this example it  should be:

With .Loop0_ISA_00_InterchangeControlHeader 

Step 5 Choose a segment element
Rectangular Callout: Xoop ID

    Loop _SegID_Occurance_Name
         |       |      |              |
 

               End With

 End With

* If a segment appears more than once in a loop the Occurrence in loop will increment.

Step 5 Add a value to a segment element.    

Segment elements are strings for some or built in code values values that will appear in the IntelliSense dropdown.  If nothing shows up in the IntelliSense dropdown then the value is a string and you must set it.  All loop segment property values are strings. The code values are stored internally as long integers, and if you choose not to choose one of the dropdown values in the IntelliSense dropdown you must use the StringTOHex() function. Which converts the string to Hex and saves a long number.  You will not need to do this but if you do the routine is provided for you.

Line Callout 2: DescriptionLine Callout 2: Code Value 

 Step 6 Complete the segment

Tip: After .AddItem, perform a  .clear.  This will assure that strings and code values are cleared after writing to the file with additem.

Step 7 Complete other loops including GE and ISA 

Step 8 Close the file

            .CloseFile

End With