©2000-2004 Misoso, Inc.
WARNING:
Use of this tool can drastically reduce the amount of time required to develop
and test your Health Level Seven (HL7) interfaces.
Assure is
a tool designed to aid in the testing, development and analysis of HL7
interfaces. This goal is achieved with
the implementation of four primary functions:
The Play
function allows you to automatically send an ASCII text file of captured
messages to another system. The file can
be created with the Capture function or any text editor.
The
Capture function allows you to record (much like a tape recorder) messages
transmitted by a remote system. These
messages are stored in an ASCII text file and may be played-back to another
system using the Play function.
The
Generate function allows you to automatically generate any number of unique
messages from a single source message.
Would you like to see how your database handles 10,000 new patients?
The
Simulate function allows you to configure Assure to “act-like” another HL7
system. This is accomplished with a
simulator text file that defines the specific HL7 requirements of the system
you want to simulate. As messages are
received, they are analyzed with the simulator file and a very detailed report
is generated.
For
detailed descriptions of these functions, please keep reading.
Icons on
the left side of the main window represent program views. To select a different view, simply use the
mouse and click the desired icon. You
can also cycle through views by pressing CTRL + UP ARROW or CTRL + DOWN
ARROW. To change the icon size,
right-click within the icon panel and select either large or small.
Each view
supports a primary function that provides immediate event notification. To clear the current notifications, click the
“Refresh” button located in the top right corner of the main window.
The
Activity collection includes views specific to HL7 operations.
The Play
view allows you to play messages (much like a tape recorder) from a file to a
remote system. The play file may be
created by the Capture feature or simply created with
any text editor.
All
messages in the file are sent to the remote system; however, each message must
be acknowledged before the next message is sent. If no acknowledgement is received in the
time-out period (see HL7 Properties: Protocol), the
message is resent. If the connection to
the remote system is dropped, Assure dynamically reconnects and continues
sending.
In order
to play a file, you simply identify the source filename and select a
destination from the Address Book. You can select a remote system or direct the
messages to your own Capture Port or Simulator Port.
In the latter case, Assure automatically activates the receive function
when play begins.
The MSH segment of messages you play can be
modified from the HL7 Properties: Outbound
window. In addition, you can repeat
sending the play file forever.
The
Capture view allows you to capture messages from any sending system and store
those messages in an ASCII text file.
You can specify the name and location of the capture file so the
filename reflects the type of messages captured. Captured messages can be later sent to a
remote system with the Play feature.
Assure
provides a user-defined Capture Port for
capturing inbound messages. The remote
system simply sends messages to the Assure IP address and Capture Port.
Capture files are denoted with the file extension CAP.
The
capture file can be disabled if you do not want to store the inbound
messages. In addition, Capture can be
configured to automatically ACK inbound messages or manually respond to each
message. If you select to manually
respond to captured messages, ACK and NAK response buttons are enabled when a
message is received.
When
using manual response, you also have the option of not responding to the message. This allows you to test the sending system’s
resend logic.
The
default capture file is Capture.Cap.
The
Generate view allows you to generate a large number of unique messages from a
single source message. To configure
Generate, you must first select a source file that contains the seed HL7
message. If the selected file contains
more than one HL7 message, the first message in the file is used.
The
options window displays the seed message along with HL7 details taken from the
current simulator file. The simulator
file is defined in the Simulate view. To identify fields that must be unique for each
message, simply select the desired field and check the ‘This field must be
unique’ box.
Generate
uses the data field from the file as a mask to create subsequent unique
fields. Letters in the source field are
modified with new letters and numerals in the source field are modified with
new numerals for each generated message.
In addition, you specify the number of unique messages you wish to
generate. Once configured, this feature
is very similar to the Play function.
In
addition to generating unique fields, you may need to overlay each generated
message with valid data of your own.
This is accomplished with the Import feature. This feature allows you to import data fields
from a standard, comma-delimited file (CSV) and map those fields to specific
locations in the generated HL7 message.
The
message count field is disabled as a message is generated for each record
stored in the Import file. For example,
you may want to send valid Medical Record Numbers to an HIS. It is advisable to limit import file fields
only to those fields you wish to overlay.
The
Simulate view allows you to configure Assure to “act-like” another system. This is accomplished with the use of a
simulator file that details the specific HL7 requirements of the system you are
simulating. A simulator template file is
included with Assure so you can quickly create your own simulator file.
See Creating a Simulator File for more
information or HL7v23Template.Sim to view
the template file.
Assure
provides a user-defined Simulator Port for
receiving inbound messages. The remote
system simply sends messages to the Assure IP address and Simulator Port.
Simulator files are denoted with the file extension SIM.
As
messages are received on the simulator port, they are analyzed with the
simulator file and a detailed report is generated if any errors are
uncovered. You can specify the name and
location of the report file so the filename reflects the source of messages
analyzed.
The
report file can be disabled if you do not want to store the inbound
messages. The analysis is very detailed and
verifies:
If any
errors are uncovered, the report file includes the exact position of the error
and a description of the fault. See the
sample report file Report.Txt.
If Play
is configured to send messages to Simulate, a check box appears on the
simulator screen that allows you to automatically start Play when the simulator
Start button is selected. This allows
you to analyze message from Play without switching between the two views.
The
Events view displays HL7 network event information for all views. The event information includes:
This view
provides an application-wide snapshot of all network events. The events are recorded in the order in which
they occur and may be optionally stored in a self-maintained log file named SokEvent.Log.
When the
log file reaches a maximum size (about 1 MB), it is renamed to *.BAK and a new
log file is created. This insures you
have access to at least the last megabyte of activity at any time.
The
Traffic view displays HL7 network traffic for all views. The traffic information includes:
The
traffic data includes all framing characters that wrap the HL7 message. All non-ASCII traffic data is displayed in
the form ‘<##h>’, where ## is the hexadecimal value of the
character. This allows you to analyze
and detect framing problems and verify HL7 message structure.
The scope
may be enabled or disabled. If enabled,
the events may be optionally stored in a self-maintained log file named SokScope.Log.
When the
log file reaches a maximum size (about 1 MB), it is renamed to *.BAK and a new
log file is created. This insures you
have access to at least the last megabyte of activity at any time.
The
Information collection includes views that display information related to your
system or applications.
The
System view provides basic information about your system including the
operating system version, network settings, processor type and memory
allocation.
The
Application view provides basic information about applications currently
running on your PC.
The
Address Book contains destination locations for messages outbound from Assure
and supports the Play and Generate
functions. In order to identify a remote
system, you must supply its IP address and port number. The IP address identifies the machine and the
port number identifies a connection point on that machine.
Remote
systems are denoted by a description that you associate with a specific IP
address and port number. This allows you
to easily identify the remote system without memorizing network numbers.
You can
add, delete and edit entries in your address book.
The
Address Book automatically detects your local IP address each time the program
is started. It also contains a local
The
In
addition, you can send messages directly to the
For
example, playing messages directly to the
The
In
addition, you can send messages directly to the
HL7
Properties contains information describing the operation of HL7 within
Assure.
The
Outbound tab allows you to modify the MSH segment for all outbound
messages. When sending a message, other
than a response message, you may need to modify the existing MSH segment to
meet the specific requirements of the remote system.
The MSH
can be modified as follows:
The
Encoding tab allows you to define HL7 message delimiters that can be used in
place of the encoding characters already present in an outbound message. This feature allows you to test your
application with different sets of encoding characters. See the Outbound
tab for details.
The
Protocol tab allows you to specify the framing for HL7 messages. In addition, you can specify the response
timeout value. If a response to an
outbound message is not received in the allotted time, the message is
automatically resent.
File
Manager provides the tools necessary to manage your Assure files. These include:
In order
to add or remove a set of files from the list, simply check the box next to
that file type. File Manager can be used
to create a copy of an existing file or rename a current file. It also allows you to view/edit files and
launch Windows Explorer.
The
Duplicate button allows you to duplicate an existing Assure file with a new
name. Simply select a file from the
list, click the Duplicate button, type in the new file name and press enter.
This
function does not move the file to a new location. It creates a copy of the original file with a
new name. The new file is located in the
same folder as the original file. This
feature is useful when creating a new simulator file from an exiting template.
The
Rename button allows you to rename an existing Assure file. Simply select the file from the list, click
the Rename button, type in the new file name and press enter.
In order
to simulate another system with Assure, you must create a new simulator file
that describes the HL7 requirements of that system. The new simulator file is created using a
template file, such as HL7v23Template.Sim.
This template file contains default definitions for HL7 version
2.3. Any existing simulator file can be
used as a template to create another simulator.
Use File Manager to create a new simulator file.
The
template file looks like a standard INI file and is documented to assist you in
creating your own simulator file. Lines
starting with a semi-colon are comments and are not processed.
The
sections defined in the simulator file include:
[MESSAGE TYPES]
This
section defines the required and optional segments for each message type.
[REQUIRED CONDITIONAL FIELDS]
This
section allows you to conditionally require a field based upon the message
type.
[MSH]
(and all other segments)
This
section allows you to define the field requirements for each HL7 segment. I simply use MSH here for brevity.
[DATA
TYPES]
This
section defines the acceptable data types for all fields.
[DATA
TYPE COMPONENTS]
This
section defines complex data types that are comprised of multiple base data
types.
[TABLES]
This
section defines valid elements for HL7 tables.
By using
a simple text file to configure the simulator, Assure can simulate any HL7
system. You can add your own message
requirements, conditionally required fields, segments, Z segments, tables and
segment field requirements down to the sub-component level.
Follow
these steps to create a new simulator file named Sample.Sim:
That
seems easy enough. For more details on
defining the contents of a new simulator file, please review HL7v23Template.Sim.
ACK is
short for acknowledgement. It represents
a positive response.
HL7 is an
acronym for Health Level Seven. It is a
standard for electronic data exchange in all health-care environments with an
emphasis on hospitals.
An IP
Address is a number that uniquely identifies a machine on a particular
network.
MLLP is
an acronym for Minimal Lower-Layer Protocol.
It defines a set of special characters that surround an HL7
message. There is a single header byte
(0Bh) and two footer bytes (1Ch) (0Dh).
NAK is
short for negative-acknowledgement. It
represents a negative response.
A port
number identifies a connection point within an IP address.
Protocol
is a definition of how to do something.
TCP/IP is
an acronym for Transmission Control Protocol / Internet Protocol. It is a software protocol used for connecting
computers on a network.
<0Bh>
MSH|^~\&|EPIC|CLINIC|ASSURE|LAB|200001121722||MFN^M02|1|T|2.3<0Dh>
MFI|PRA||UPD|||NE<0Dh>
MFE|MUP|||00001<0Dh>
STF||||StaffType|||A|||7704932153|865
Rocky Rd.^^
PRA|00001||||Speciality|UPIN<0Dh>
<1Ch><0Dh>
MSH|^~\&|EPIC|CLINIC|ASSURE|LAB|200001121721||MFN^M02|1|T|2.3
MFI|PRA||UPD|||NE
MFE|MAD|||00001
STF||||StaffType|||A|||7704932153|865
Rocky Rd.^^
PRA|00001||||Speciality|UPIN
MSH|^~\&|EPIC|CLINIC|ASSURE|LAB|200001121722||MFN^M02|1|T|2.3
MFI|PRA||UPD|||NE
MFE|MUP|||00001
STF||||StaffType|||A|||7704932153|865
Rocky Rd.^^
PRA|00001||||Speciality|UPIN
MSH|^~\&|EPIC|CLINIC|ASSURE|LAB|200001121723||MFN^M02|1|T|2.3
MFI|PRA||UPD|||NE
MFE|MDC|||00001
STF||||StaffType|||A|||7704932153|865
Rocky Rd.^^
PRA|00001||||Speciality|UPIN
Message
analyzed
MSH|^~\&||A|PPM|A|200001221545||DFT^P01|5138|D|2.2|5138|
EVN|ABC^123^DEF^ABC|1^2^001^4&AL AN&5|19991230012332
PID||1234
PV1|||DENT^403^A^U
FT1||||199701121720
DFTP01
MSH 003.00.00 Required field not present
Segment Name......... MSH - Message Header
Sequence Number...... 003 - Sending
Application
Segment Occurrence... 1
Field Occurrence..... 1
Component............ 0
Subcomponent......... 0
Max Length........... 180
Data Type............ HD
Optionality..........
R
Max Repetition....... 1
Table Number.........
Item Number.......... 00003
Field Data...........
DFTP01
EVN 001.00.00 Component 4 NM data type contains non-numeric data
Segment Name......... EVN - Event Type
Sequence Number...... 001 - Event Type
Code
Segment Occurrence... 1
Field Occurrence..... 1
Component............ 0
Subcomponent......... 0
Max Length........... 20
Data Type............ SN
Optionality..........
R
Max Repetition....... 1
Table Number.........
Item Number.......... 00099
Field Data........... ABC
DFTP01
EVN 002.00.00 Component 4 HD, subcomponent 2 ST data type contains
non-printable data
Segment Name......... EVN - Event Type
Sequence Number...... 002 - Recorded
Date/Time
Segment Occurrence... 1
Field Occurrence..... 1
Component............ 0
Subcomponent......... 0
Max Length........... 26
Data Type............ CK
Optionality..........
R
Max Repetition....... 1
Table Number.........
Item Number.......... 00100
Field Data........... 4&AL AN&5
DFTP01
ACC 000.00.00 Required segment not present
The
following file is a subset of the actual template file. This file should not be changed. It is used as a template to create a new
simulator file. Any existing simulator
file can be used as a template to create another simulator.
;--------------------------------------------------------------------------
;
Assure Definition File (TEMPLATE 1.0)
;
HL7 Version: 2.3
;
;
This file is a template for creating a simulator file for Assure.
;
It includes the default configuration for the HL7 version listed above.
;
;
Create a copy of this file and give it a meaningful name with a
;
filename extension of SIM. Then modify
the file to meet the specific
;
requirements of the system you wish to simulate.
;
;
Basic File Rules:
; All entries must be left justified.
; Lines beginning with a semi-colon are
comments.
; Turn off word wrap to edit the file.
;
;
The only section you are required to update is [MESSAGE TYPES]. The
;
information that follows is provided incase you need to modify the
;
standard segment definitions or create your own.
;
;
Segment Section:
; [nnn]
; nnn - segment
name (e.g. [MSH])
;
; Segment Name Entry:
; SEGnnn
; nnn - segment
name
;
; Field Entry:
; nnnaaa.bb.cc
; nnn -
segment name
; aaa -
field sequence number ('###' matches any field number)
; bb
- field component number
; cc
- component sub-subcomponent number
;
; Field Value:
; Comma delimited string consisting of the
following:
; 1. Max Length - maximum field length ('K' = 1024 bytes)
; 2. Data Type - HL7 data type
; 3. Optionality - R)equired O)ptional C)onditional field
; 4. Max Repetition - maximum field
repetition Y)es N)o /#
; 5. Table Number - HL7 data set for this field
; 6. Item Number - HL7 unique field identifier
; 7. Name - field description
;
;
For Example:
;
; [ACC]
; SEGACC=Accident
; ACC001.00.00=26,TS,O,,,00527,Accident
Date/Time
; ACC002.00.00=60,CE,O,,0050,00528,Accident
Code
; ACC003.00.00=25,ST,O,,,00529,Accident
Location
; ACC004.00.00=60,CE,O,,,00812,
; ACC005.00.00=2,ID,O,,0136,00813,Accident
Job Related Indicator
; ACC006.00.00=2,ID,O,,0136,00814,Accident
Death Indicator
;
; The ACC segment has the name 'Accident'.
;
; It contains 6 fields.
;
; The field component number for all fields
is 0.
; If the component field number is 0, the
entry describes
; the entire field.
;
; If the component field number is not
zero, the entry
; describes that particular component of the
field.
;
; The field sub-component number for all
fields is 0.
; If the sub-component field number is 0,
the entry
; describes the entire component.
;
; If the sub-component field number is
not zero, the entry
; describes that particular sub-component
of the field.
;
; The field definition for field 1
(ACC001.00.00) is:
; Max Length = 26
; Data Type = TS
; Optionality = O
; Max Repetition = not defined
; Table Number = not defined
; Item Number = 00527
; Name = 'Accident Date/Time'
;--------------------------------------------------------------------------
[MESSAGE
TYPES]
;
This section allows you to define the required and optional segments for
;
inbound messages you want the simulator to process.
;
;
Optional segments must be enclosed in bracket characters [ ] and are
;
only analyzed if present in the inbound message.
;
;
Example:
; DFTP03=MSH,EVN,PID,PV1,[FT1]
;
;
Means:
; The DFTP03 message type has required
segments:
; MSH, EVN, PID and PV1
; and optional segment:
; FT1
;
; DFT is the message name
; P03 is the trigger event
;
;
Each segment has a separate section to define its field requirements.
;
Any or all segments can be required.
;
Any or all segments can be optional.
;
Inbound messages not defined here are not analyzed.
;
[REQUIRED
CONDITIONAL FIELDS]
;
This section allows you to require certain fields based on the message
;
type. In other words, they are
conditionally required.
;
;
Example:
; REQEVN003=DFTP03,ADTA04,ADTA08
;
;
Means:
; Field sequence number 3 in segment EVN
(EVN003) is required
; in
message types:
; DFTP03, ADTA04 and ADTA08