Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Say you have a text file with a bunch of HL7 messages. Each segment ends with \r. And each message ends with \r\n. Here’s the file attached:

You could use the simulator component - but honestly it’s probably easier to write you own little component.

 Use a custom field for the input file name

See Custom Fields Here we use ~/test.txt for the default location of the input file.

You access that with:

local FileName = component.fields()
 Read in the file using the FIL library with FILread

The FIL library makes it really easy to inhale the file:

local Content = FILread("main.lua");
 Examine the file contents in the translator - each segment ends in \r but the message ends with \n characters

We can easily see by looking at the contents of the file using the Escaped Text mode:

 Then we split the contents on the \n with local List = Content:split("\n")

So now our code looks like this:

require "FIL.FILreadWrite"

function main(Data)
   local F = component.fields().InputFile
   trace(F)
   local Content = FILread(F)
   local List = Content:split("\n")
   trace(#List)   
end

In the editor it looks like:

By double clicking of the list coming back we can we the list of messages:

 With a for loop we can push these messages into the queue:
for i=1, #List do
   queue.push{data=List[i]}
end

And now we have a working test component!

 Connect it the component we want to test with - done!

See Linking components if you need a fresher.

Now for a little extra flourish:

 Add some custom logging

Let’s add some Custom Logging

Just added lines 7 and 11 to the script:

function main(Data)
   local F = component.fields().InputFile
   trace(F)
   local Content = FILread(F)
   local List = Content:split("\n")
   trace(#List)  
   iguana.logInfo("#start About to queue "..#List.." messages");
   for i=1, #List do
      queue.push{data=List[i]}
   end
   iguana.logInfo("#end Finished queueing "..#List.." messages");
end

Now we we run the script we can see custom logging:

 And some custom status

And now we have a simple tool that makes it easy to test our HL7 interfaces. But more importantly this exercise put together a set of little concepts that once you grasp you can solve not only simple problems, but you can solve complex ones as well. There are no bottlenecks you cannot solve.

  • No labels