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