FAQ

Redix XML GUI Mapper with EDI Authoring Tools FAQ

I have an XML file, and I need to map the XML file into an X12 transaction set. What are the steps to map the file using the Redix GUI Mapper?

I noticed that in the Redix HealthCare EDI Authoring Tools, there are two messages defined for the HIPAA 837 professional, i.e., 837op and 837prof. I am wondering what is the difference between the two messages.

How can I enter a combined function in the Redix Mapper?

The Redix Mapping Tools can generate the integration code in Visual Basic or Visual C++. They both use redix_app. Besides redix_app, is there any other method we can use?

What are the steps to customize my mapping report?

I need to print two counters in my EDI message. One counter is used inside the PO1 loop, which indicates the sequence of the PO1 used. Another counter is in the total PO1 used in the CTT segment.

I don't have a DTD, but I have an XML file. How can I import the XML file to the Redix GUI Mapper for data mapping?

I need to map data in a loop to the same record at different positions. How can I achieve this?

After a field is mapped, I need to overwrite the mapping condition. Is it possible?

I need to sort and sequence the records in the output. How can I do this in the Redix Mapper?

How can I use the user exit functions in the Redix Mapper?

I have a situation that I don't know how to handle. The input string of a mapping field is sometimes empty. When the input string is empty, I would like to assign a constant or a default value. How can I achieve this?
 

 

I have an XML file, and I need to map the XML file into an X12 transaction set. What are the steps to map the file using the Redix GUI Mapper?                                                                                        
These are the steps to map your XML message to an EDI message:

1) Create a DTD using your XML file. You can refer to the following to create a DTD: FAQ (I don't have a DTD. How can I import an XML file?)
2) Import the DTD.
3) Create a message definition using the EDI standard. You can create a new message definition by going to the Message|New menu item, and then select the "Using the EDI Standard" option.
4) Create a new map, that is XML to message.
5) Do the drag and drop operations.

I noticed that in the Redix HealthCare EDI Authoring Tools, there are two messages defined for the HIPAA 837 professional, i.e., 837op and 837prof. I am wondering what is the difference between the two messages.                                                              
The 837prof message is the generic 837 definition defined in X12 4010. However, the 837op is a specific  form of the 837 standard, based on HIPAA. The 837op has been rigorously defined in the usage of various segments and loops, and therefore, would eliminate the possibility of vagueness. In the 837prof, for example, loop 2010 is described in the form of individual names and organizations. Any user can utilize the loop 2010 to insert a payer's name, subscriber's name, or responsible party's name in any sequence. In 837op, however, loop 2010 is rigorously defined in the HIPAA 837, therefore, a user would have to put the subscriber's name first, followed by the payer's name, and the responsible party's name. The segments associated with each name are also rigorously defined.

It is recommended that you use the 837op for an outbound mapping conversion to generate a HIPAA 837 message. Use the 837prof for an inbound mapping conversion. As a matter of fact, the pre-defined maps for the NSF to the HIPAA 837 standard, and the HIPAA 837 to the NSF standard follow this rule.

How can I enter a combined function in the Redix Mapper?                                                                 
The Redix GUI Mapper allows you to enter combined OFD functions to any field, either mapped or not mapped. You can use, for example, "Add an OFD statement" in the Mapping Definition screen to enter a combined function.

If, for example, you need to map today's date in two digits, such as if the date were December 22, 2003, then the program would extract "22" to a field. You can reach the "Add an OFD statement" by either right clicking the mouse in the Mapping Definition screen and select the option, or simply use the button. You can then combine the strsub and sysdate functions into one OFD statement as follows:

strsub(sysdate("YR2MONDT"), 5, 6)

The above statement means that the fifth to sixth characters of the example's date, 031222 of the system's date, will be mapped.

The Redix Mapping Tools can generate the integration code in Visual Basic or Visual C++. They both use redix_app. Besides redix_app, is there any other method we can use?                                                                                              
You can also use the command line interface: redix. In fact, the command-line interface is built using the API function, redix_ncc. To use the command line interface, you need to prepare a configuration file, which has the information as follows:

INFILE = (input file name)
IFD= (Input File Descriptor (IFD) name)
OFD= (Output File Descriptor (OFD) name)
ACKFILE = (file name for functional acknowledgment)
ERRFILE = (error report file name)
CONVFLAG= (e, x, f, b, or t)
SEGSEP= (segment terminator used in the EDI file)
ELEMSEP=(element separator used in the EDI file)
COMPSEP=(composite element separator used in the EDI file)
RELCHAR=(release character used in the EDI file)

A sample Visual C++ source code to call redix_ncc is shown below:

extern "C" __declspec(dllimport) int _stdcall redix_ncc(char *);
...
int i;
char ConfigurationFileName[128];
...
strcpy(ConfigurationFileName, "850test");
i= redix_ncc(ConfigurationFileName);

What are the steps to customize my mapping report?                                                                                
You can print a map report by going to Mapper|Reporter. When the Map Report screen appears, select a map name, and then click on the Report button to preview the report.

Go to View|Global Settings. The Settings Window is a tabbed dialog with four panes. The table below lists each pane by its title and function:

Pane Description
Text Sets the text for the Report Title, headers, and footers.
Fields Sets properties for each field in the report. Field properties include a field title, format, alignment, sort order, and aggregate function.
Styles Sets properties for each style in the report. Style properties include font, colors, borders, and spacing.
Global Sets properties for the entire report. Report properties include subtotal position, page borders, margins, orientation, number of columns, as well as line-and page-break settings.

The list on the left allows you to select which element you want to define. You may select Report titles, headers, or footers. In the Report title, for example, you can enter the title of the map, followed by any specific tag, such as <ddd> defined below.

The STYLE >> button is a shortcut that switches the Styles pane so that you can set the font, color, and spacing for the text on which you are working.

The SPECIAL button allows you to insert special tags into the string being edited. When the report is generated, the tags are translated into report information. The table below lists the available tags:

Tag Meaning Example
<p> Page number  
<n> Page count  
<line> Line break  
<db> Database name NWIND
<rs> Record source Invoices
<rf> Report file INVOICES.VRD
<d> Short date 3/10/99
<dd> Medium date 10-Mar-99
<ddd> Long date Wednesday, March 10, 1999
<t> Short time 13:27
<tt> Medium time 01:27 PM
<ttt> Long time 01:27:32 PM

 

I need to print two counters in my EDI message. One counter is used inside the PO1 loop, which indicates the sequence of the PO1 used. Another counter is in the total PO1 used in the CTT segment.                                                                         
Please follow these steps to print the counters.

Step 1: In your map definition screen, go to the right hand-side of the message tree structure, which in this case, is a X12 message. Click on the "ST" segment and press the right button on your mouse. Select "Edit the Record". The Segment/Record Condition screen will appear. Check the box Counter field, and then press the question mark button in the right side of the field. The Counter Variable screen will appear.

Step 2: Press the Add button to add a counter variable, CXX. This will initialize the counter CXX. Select CXX and press the OK button. When you go back to the Segment/Record Condition screen, you should see "CXX;" in the Counter field.

Step 3: Go to the PO1 segment and right click on the mouse. Select the "Edit the Record" menu, and select CXX from the Counter Variable screen. Press the OK button, and you should see "CXX;" in the Counter field.

Step 4: Go to the first element of the PO1 segment, and right click the mouse. Select the menu "Print the counter". Select CXX from the list and press the OK button. This will print the counter inside the PO1 loop.

Step 5: Go to the first element of the CTT segment, and repeat Step 4. This will print the total counter.

When an OFD is generated, the following statements should be included:

#initialize the CXX
CXX := 0
loop ...
# CXX is self-incremented
CXX := CXX + 1;
# print the variable CXX will print the current sequence number
endloop;
# print the variable CXX will print the accumulated counter value

I don't have a DTD, but I have an XML file. How can I import the XML file to the Redix GUI Mapper for data mapping?
The current version of Redix GUI Mapper does not support the import of an XML message. If you have a well-formed XML file, following are the steps to import the file:

Use a tool, such as SAXON (http://users.iclway.co.uk/mhkay/saxon/) to generate a DTD, based on your well-formed XML message.

Once the DTD is generated, you can import the DTD to the Redix GUI Mapper.

I need to map data in a loop to the same record at different positions. How can I achieve this?
You will have to use the "Before Event" and "After Event" in the Mapping Definition Detailed screen. If, for example, you need to map the data in a LX02360 loop to the record "50". The first occurrence of the loop data will be placed at the "50" record from location 21 to 60, and the data of second occurrence will be placed between location 61 and 100. The third occurrence will be placed from position 101 to 140, etc. To handle a situation like this, you will first finish the drag-drop as usual. After the drag-drop, you will need to place the following statements in the before event for the field at location 21:

if (atoi(LX02365_01) %3 =1) then;FinalFlag:="TRUE";

For the field that ends at location 60, you will need to enter the following statement in the "After Event":

endif;

For the field at location 61, you need to enter the following statement in the "Before Event":

end if;if (atoi(LX02365_01) %3 =2) then;FinalFlag:="TRUE";

For the field at location 100, you will have to answer the following statement at the "After Event":

endif;

For the field at location 101, you need to enter the following statement in the "Before Event":

end if;if (atoi(LX02365_01) %3 =0) then;FinalFlag:="FALSE";

For the field at location 140, you will have to answer the following statement at the "After Event":

writeln(of1,"",0,0,LEFT," ");endif;

In the record "50", make sure you have the loop start checked for the LX02360. You should also check the box "OFD statement" and enter the following information,

Cun50:=Cun50+1~;

You should also check the box "No writeln statement". This way, the Redix GUI Mapper will not generate the writeln statement automatically. When you are done, you will see the following statements at the bottom:

LoopStart: LX02360; OFD: Cun50:=Cun50+1~; Nowriteln;

Next, make sure the following OFD statements are entered in the next record.

LoopEnd: loopend~if (FinalFlag = "TRUE") then~writeln(of1, "",0,0,LEFT, " ")~endif~;

After a field is mapped, I need to overwrite the mapping condition. Is it possible?
Yes, you can enter the OFD statements to overwrite a mapping condition. In the Field Mapping Detailed Screen, press the button. In the Modify the Mapping String screen, you can enter any combination of OFD statements. The OFD statements has to start with "Func", such as:

Func dateconvert(0101005_07, "YR2MONDT", "YR4MONDT")

I need to sort and sequence the records in the output. How can I do this in the Redix Mapper?
You can achieve the sort and sequence of records by inserting the loop start and loop end statement around the records. If, for example, the PO1 segment is mapped to the record type "50", and the PID segment is mapped to the record type "60", we should place the loopstart and loopend statements around the "50" and "60" as follows:

loopstart PO1AABBBLOOP do
...
writeln(... "50"...);
...
writeln(..."60"...);
loopend;

The result will be 50,60,50,60, etc.

If we rearrange the loop statements as follows:
loopstart PO1AABBBLOOP do
...
writeln(... "50"...);
loopend;
loopstart PO1AABBBLOOP do
...
writeln(..."60"...);
loopend;

The result will be 50,50,60,60, etc.

In either way, you need to get into the Segment/Record Conditions screen. You can get to the screen by positioning your mouse on the record and press the button . Enter the Loop Start and Loop End information in the screen.

How can I use the user exit functions in the Redix Mapper?
To enter a user exit function, you need to first make sure that the function name you are going to use is implemented . Secondly, use the "Add an OFD statement" to enter a function name. If, for example, you are going to use the function call, userproc2, with a parameter "MyData", you should enter the following statement in the "Add an OFD statement":

userproc2("MyData")

The user exit function name must start from userproc and end with a number from 1 to 25. You can reach the "Add an OFD statement" by either right clicking the mouse in the Mapping Definition screen, and select the option, or simply use the button.

I have a situation that I don't know how to handle. The input string of a mapping field is sometimes empty. When the input string is empty, I would like to assign a constant or a default value. How can I achieve this?
The OFD statement, assignvalues, is designed for this purpose. You can either enter the assignvalues in the OFD statement, or you can do this from the GUI Mapper. If you are entering the OFD statement, you should enter something like the following:

assignvalues(N102030_01, "MyDefaultValue")

The system will then do the mapping, based on the value of N102030_01. If the input value is empty or null, then the default value in this case, "MyDefaultValue", will be used in the output.
Another way to accomplish this is through the GUI Mapper. You should first drag your input field and drop it in the output field. Once the Field Mapping Detailed Screen appears, select the Many to One tab. The first row in the table will have the input variable, i.e. N102030_01. In the second row, you should type the data, ie. "MyDefaultValue".