Retry a Custom ACK
Verified
Added by iNTERFACEWARE
Retries a a custom ACK using the retry.lua module
Source Code
local retry = require 'retry'
-- main() is given the original HL7 message.
function main(Data)
local Msg = hl7.parse{vmd='ack.vmd', data=Data}
local Ack = hl7.message{vmd='ack.vmd', name='Ack'}
Ack.MSH[3][1] = Msg.MSH[5][1]
Ack.MSH[4][1] = Msg.MSH[6][1]
Ack.MSH[5][1] = Msg.MSH[3][1]
Ack.MSH[6][1] = Msg.MSH[4][1]
Ack.MSH[10] = Msg.MSH[10]
Ack.MSH[9][1] = 'ACK'
Ack.MSH[11][1] = 'P'
Ack.MSH[12][1] = '2.6.1'
Ack.MSH[7][1] = os.date('%Y%m%d%H%M%S')
Ack.MSA[1] = 'AA'
Ack.MSA[2] = Msg.MSH[10]
Ack.MSA[3] = "Everything was okay dokay!"
-- after retries tried retry.call() raises an error which will stop the channel
-- this means no more messages will be processed until you restart the channel
local R1, R2 = retry.call{func = ack.send, arg1 = Ack:S(), retry = 10, pause = 2}
-- if you want to continue processing further messages then you can
-- use pcall() to trap the error and prevent the channel from stopping
local Success, R1, R2 = pcall(retry.call,
{ func = ack.send, arg1 = Ack:S(), retry = 10, pause = 2} )
if not Success then
local Err = R1
iguana.logInfo(Err)
-- do some other error processing if desired
end
end
Description
Retries a a custom ACK using the retry.lua module
Attachments
Usage Details
This code retries sending a custom ACK a specified number of times. If the retry fails it stops the channel, or raises an error and allows processing to continue.
How to use the code:
- Create a channel with an LLP Listener component
- Either load the retry_custom_ACK_LLP_Listener.zip project file or paste in the code
- Download the ack.vmd file and add it to the project
Note: You will need to remove the “.txt” first (.vmd attachments are not allowed)
More Information