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? |
|
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". |
|
|
|