At the end of this course each person should be capable of installing, setting and up and administrating an Iguana server and using all it's major capabilities with the Translator. While we use specific examples to teach the Translator, the course does teach core principles to apply the Translator to a wide variety of problems.
Day 1
Introduction to HL7 and installing Iguana 5.5
- Introductions.
- HL7 overview.
- Introduce the Wiki and explain how to best use this helpful resource.
-
Installation of Iguana 5.5.
- Getting a license and how to get one in an emergency.
Iguana Overview
- Introduce Iguana 5.5.
- Open Dashboard.
-
Build an Inbound Channel.
- LLP --> Channel (Queue).
- Test the channel using the built-in tools.
-
Finding your data within the logs.
-
Iguana uses a full text search index which means by default one searches for exact words.
- How to use '!' to disable this if linear search is needed.
- Look at the log views - hex, segment etc.
- Filtering logs by specific time.
- Exporting.
-
Iguana uses a full text search index which means by default one searches for exact words.
- Other Iguana Settings.
Translator
- Core Principles.
-
Create an Outbound Channel.
- Channel (Queue) --> LLP.
-
Configure the Translator filter component.
- We import a simple script from a zip file to demonstrate.
- It will only show a couple of functions to discuss core principles.
- Import sample data from text file.
-
Main IDE features.
-
Show how we can vary the sample data.
- Explain we use the sample data for development and testing.
- That it can be pulled from logs and edited directly.
- Show the data coming into main and coming out as mapped table data.
-
Walk through the script.
- Demonstrate code navigation.
- Show pop out dialogs and how they are synced with the data.
-
Explain annotations and auto-completion.
- Introduce key concept that the code is actually executed within the IDE environment.
-
Show how we can vary the sample data.
Day 2
HL7 to HL7 Interface
- Start with our Outbound Channel --> LLP channel.
- Configure the Filter component with our own mapping.
-
Save the first milestone.
- Add a comment line and save this milestone.
- Explore the differences window.
-
Explain that source code control is a fundamental part of the Translator environment.
- Everything must be committed before it can be run in production.
- We use the opensource BSD licensed Fossil source control under the hood.
- Everything is versioned.
-
Go to the channel screen.
- See reference to milestone.
- Explain choice between most recent and a specific milestone.
- Start the channel.
- Show the use of the HL7 simulator and HL7 Listener to feed data through the channel.
- We should have the example set up so we get at least one error.
- Resetting the Queue.
-
Building a Z Segment module.
- Load in a string.split function to break apart a field that has two parts to it.
-
Trouble shooting an error.
- Find error in logs.
- Export error to Translator.
-
Filtering out unrecognized messages.
- Correct the Error.
- Save Milestone.
- Restart the channel.
-
Understanding the Message schema file (vmd).
- 'Get' the 'transform.vmd' file.
- Utilizing the Diff module to compare Message translation.
- An easy way to deal with dates - fuzzy date time parser.
-
Do the classic Clean Phone routine.
- Strip non numerical characters from a phone number which has spaces and brackets using gsub.
- Use # operator to get the length of the string.
- Then use string.sub to break the string into pieces.
- Use concatenation .. operator to add them together.
-
Cover the important concept of methods and node extension routines.
- i.e. make a cleanPhone() method like.
- Patient.HomePhone = PID[10]:cleanPhone().
- Introduce important concept of a Shared Module that can be used across many projects.
- Building a cross reference table in your translation.
- Inserting segments into your outbound message.
-
This is useful work flow to show customers on how they can import the error into the Translator.
- Correct the error.
- Save a new milestone.
- Restart the channel.
- See the transaction correctly handled.
- Show the transaction history on the message.
-
Raising an Alert.
- Create an Alert in the settings.
- Build script to determine Alert trigger.
- Reset the Queue and view log.
-
Stop the channel.
- Show how we can reposition the queue to the very start.
- Start the channel and reprocess all the transactions.
- Show using the resubmission screen to re-process one transaction.
- Show how altering the message in real time alters the outcome.
This is a very hands on lab section with the trainer demonstrating the exercises while people try them out.
Introduction to Lua
- Working with String.
- Declaring variables.
- Loops.
- Demonstrate using the capitalize function. (WHITE --> White).
- Parsing a text file.
- Connecting to an Ftp server.
This is a very hands on lab section with the trainer demonstrating the exercises while people try them out.
It's important to understand that the Translator is an open extensible environment.
Day 3
HL7 to Database
- Set up LLP --> To Translator channel and ignore the classic To/From Database components.
- Configure the LLP listener component listening port.
- Export Sample Data from logs.
-
Configure the Translator component.
- We load basic modules from a zip file.
- It will only map ADT messages.
- i.e. PID segment data into one patient table.
-
Create database.
- Use Translator to execute statements on database.
-
Create Tables.
- Use built in feature to show how to create tables.
-
Build our mapping.
- Putting in the conn:merge{} statement.
- Explore the live=true/false flag.
- Commit the milestone.
- Save the first milestone.
-
Start the channel and use the HL7 Simulator to feed data through the channel.
- Set the debug setting to High.
-
Explore how the data gets into the database.
- View in logs to see update and insert statements.
- Open tables.vmd to show connection between vmd file and Iguana.
Error Handling
This is where we cover the:
- Use of the "retry" module.
- pcall and error.
The example channel will already have the retry module incorporated with it. This part of the course will explain how it works and visibly demonstrate it in action with stopping and starting a MySQL database.
Mapping Next of Kin
In this part of the tutorial covers adding a new table - Kin.
-
A closer look at the conn:merge{} function.
- Download the tables.vmd file from the example and look at the table definitions.
- See how the key column attribute alters the behaviour of conn:merge{}.
-
Add one more "Kin" table to our mapping.
- Use the Import tables from database wizard.
- Add the table definition to the single message defined in the tables.vmd file.
- Save the vmd file.
- Upload it to Iguana GUI.
- Use the diff window to see how the vmd XML changed.
-
Create a new mapping function for one next of kin.
- Start with mapping the first next of kin using a function.
- Cover the idea of handling a foreign key.
- Now how do we deal with repeated segments?
- Introduce for loop.
- Show how the Iguana GUI annotations work when a function is called more than once.
-
Save the milestone.
- Examine changes again.
- Run the channel.
- Confirm the data is being submitted.
And stop. At this point the class will do the same exercise.
From Database Interface
- Set up Translator --> To LLP channel.
- Configure the Source script.
-
Cover Seeding.
- Run channel.
- View the data that was sent.
-
Create the Filter Channel.
- Create script to form message.
- Handling NULL data from database.
At this point course attendees will have already seen the use of our database objects for querying. The key concept to teach is the concept of 'seeding'. i.e. where we make a very small amount of logic in the from channel to obtain IDs.
Also covered is how to deal with NULL data coming from the database.
Question and Answers with Iguana Developers
This session will include the opportunity to talk to members of the core Iguana development team. It's an opportunity to ask in depth questions about any technical questions you have about Iguana and the Translator.
System Administration
- Cover backing up and restoring an Iguana server.
- Exporting/Importing channels.
- Manual installation.
- Global dashboard.
-
Round off showing the remaining areas of the settings window.
- Environmental variables.
- Finding database DLLs.
- High availability.
Optional Modules
From this point the course covers extra exercises that course attendees can complete on their own with assistance. Because the course is small customers often bring problems that relate to their actual work in this section.
Simple Webservice Example
A very simple web service which maps codes from one set to another. Idea of centralizing such code mappings. Demonstrates mapping XML and JSON - i.e. with a GET/POST parameter to say which format to return. Covers the web services configuration part of settings and authentication.
Simple CDA Example
Show mapping of data from a CDA document into a database.
Custom Acknowledgments
Cover application acknowledgments and query-response example.


