Misoso Assure

©2000-2004 Misoso, Inc.

Overview

Program Views

Program Views: Activity

Play

Capture

Generate

Simulate

Events

Traffic

Program Views: Information

System

Application

Address Book

What is the Capture Port?

What is the Simulator Port?

HL7 Properties

Outbound

Encoding

Protocol

File Manager

Duplicate a File

Rename a File

Creating a Simulator File

Sections

Steps

Layman Terms

ACK

HL7

IP Address

MLLP

NAK

Port Number

Protocol

TCP/IP

Sample Files

SokEvent.Log

SokScope.Log

Capture.Cap

Report.Txt

HL7v23Template.Sim

 

Overview

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.

 

Program Views

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.

 

Program Views: Activity

The Activity collection includes views specific to HL7 operations.

 

Play

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.

 

Capture

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.

 

Generate

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.

 

Simulate

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:

 

  • All required segments
  • Optional segments (if present)
  • Maximum field size and repetitions
  • Table values
  • Data types and format
  • Repeating segments
  • Repeating fields

 

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.

 

Events

The Events view displays HL7 network event information for all views.  The event information includes:

 

  • Date and time the event occurred
  • View that caused the event
  • Event description
  • IP address and port number associated with the event

 

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.

 

Traffic

The Traffic view displays HL7 network traffic for all views.  The traffic information includes:

 

  • Date and time the traffic occurred
  • Traffic description
  • IP address and port number associated with the traffic
  • Traffic data

 

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.

 

Program Views: Information

The Information collection includes views that display information related to your system or applications.

 

System

The System view provides basic information about your system including the operating system version, network settings, processor type and memory allocation.

 

Application

The Application view provides basic information about applications currently running on your PC.

 

Address Book

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 Capture Port and Simulator Port.

 

What is the Capture Port?

The Capture Port is a user-defined port number associated with the Capture function.  When you want to capture messages from a remote system, they must send the messages to the Assure IP address and Capture Port. 

 

In addition, you can send messages directly to the Capture Port from within Assure.

For example, playing messages directly to the Capture Port automatically activates the Capture function.  This is a nice way of getting acquainted with Assure features.

 

What is the Simulator Port?

The Simulator Port is a user-defined port number associated with the Simulate function.  When you want to analyze messages with the simulator, the remote system must send the messages to the Assure IP address and Simulator Port. 

 

In addition, you can send messages directly to the Simulator Port from within Assure.  For example, once you have captured a file of messages you can play those messages directly to the Assure Simulator Port.  The messages received on the Simulator Port are analyzed with the current simulator file.

 

HL7 Properties

HL7 Properties contains information describing the operation of HL7 within Assure. 

 

Outbound

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:

 

  • Replace the sending application and facility names
  • Replace the receiving application and facility names
  • Replace the date and time field with the current date and time
  • Replace encoding characters with those defined in the Encoding tab
  • Activate and support unique message control IDs
  • Activate and support protocol sequence numbers

 

Encoding

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.

 

Protocol

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

File Manager provides the tools necessary to manage your Assure files.  These include:

 

  • Simulator Files
  • Capture Files
  • Report Files
  • Log Files
  • Backup Files

 

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. 

 

Duplicate a File

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.

 

Rename a File

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. 

 

Creating a Simulator File

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.

 

Sections

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.

 

Steps

Follow these steps to create a new simulator file named Sample.Sim:

 

  1. Use File Manager to duplicate the HL7v23Template.Sim with the new name Sample.Sim
  2. Edit Sample.Sim and update the [MESSAGE TYPES] section

 

That seems easy enough.  For more details on defining the contents of a new simulator file, please review HL7v23Template.Sim.

 

Layman Terms

ACK

ACK is short for acknowledgement.  It represents a positive response.

HL7

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.

IP Address

An IP Address is a number that uniquely identifies a machine on a particular network. 

MLLP

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

NAK is short for negative-acknowledgement.  It represents a negative response.

Port Number

A port number identifies a connection point within an IP address.

Protocol

Protocol is a definition of how to do something.

TCP/IP

TCP/IP is an acronym for Transmission Control Protocol / Internet Protocol.  It is a software protocol used for connecting computers on a network.

 

Sample Files

SokEvent.Log

04/11/00 12:35:06  Capture  Received data           192.1.1.103    3701

04/11/00 12:35:06  Capture  Received HL7 message    192.1.1.103    3701

04/11/00 12:35:06  Capture  Sending HL7 message     192.1.1.103    3701

04/11/00 12:35:06  Play     Received data           192.1.1.103    2526

04/11/00 12:35:06  Play     Received HL7 message    192.1.1.103    2526

04/11/00 12:35:06  Play     Connection closed       192.1.1.103    2526

04/11/00 12:35:06  Capture  Connection closed       192.1.1.103    3701

 

SokScope.Log

04/11/00 12:35:06  Sending HL7 message              192.1.1.103    2526

<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.^^Atlanta^GA^30092<0Dh>

PRA|00001||||Speciality|UPIN<0Dh>

<1Ch><0Dh>

 

Capture.Cap

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.^^Atlanta^GA^30092

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.^^Atlanta^GA^30092

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.^^Atlanta^GA^30092

PRA|00001||||Speciality|UPIN

 

Report.Txt

Message analyzed 01/22/00 15:45:54 with 'tester.sim'

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

 

HL7v23Template.Sim

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,Auto Accident State

;    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