diff Resources/Samples/Lua/Autorouting.lua @ 1007:871c49c9b11d lua-scripting

lua routing is working
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 08 Jul 2014 17:35:00 +0200
parents 649d47854314
children 187ed107a59f
line wrap: on
line diff
--- a/Resources/Samples/Lua/Autorouting.lua	Tue Jul 08 15:11:00 2014 +0200
+++ b/Resources/Samples/Lua/Autorouting.lua	Tue Jul 08 17:35:00 2014 +0200
@@ -1,9 +1,82 @@
-function OnStoredInstance(instance, tags, metadata)
+function _InitializeJob()
+   _job = {}
+end
+
+function _AccessJob()
+   return _job
+end
+
+function SendToModality(instanceId, modality)
+   if instanceId == nil then
+      error('Cannot send an nonexistent instance')
+   end
+
+   table.insert(_job, { 
+                   operation = 'store-scu', 
+                   instance = instanceId,
+                   modality = modality 
+                })
+   return instanceId
+end
+
+function SendToPeer(instanceId, peer)
+   if instanceId == nil then
+      error('Cannot send an nonexistent instance')
+   end
+
+   table.insert(_job, { 
+                   operation = 'store-peer', 
+                   instance = instanceId,
+                   peer = peer
+                })
+   return instanceId
+end
+
+function Delete(instanceId)
+   if instanceId == nil then
+      error('Cannot delete an nonexistent instance')
+   end
+
+   table.insert(_job, { 
+                   operation = 'delete', 
+                   instance = instanceId
+                })
+   return nil  -- Forbid chaining
+end
+
+function Modify(instanceId, replacements, removals, removePrivateTags)
+   if instanceId == nil then
+      error('Cannot modify an nonexistent instance')
+   end
+
+   if instanceId == '' then
+      error('Cannot modify twice an instance');
+   end
+
+   table.insert(_job, { 
+                   operation = 'modify', 
+                   instance = instanceId,
+                   replacements = replacements, 
+                   removals = removals,
+                   removePrivateTags = removePrivateTags 
+                })
+   return ''  -- Chain with another operation
+end
+
+
+function OnStoredInstance(instanceId, tags, metadata)
    --PrintRecursive(tags)
-   PrintRecursive(metadata)
-   print(metadata['RemoteAET'])
-   return { 
-      { "store", instance, "pacs" }, 
-      { "delete", instance } 
-   }
+   --PrintRecursive(metadata)
+   --print(metadata['RemoteAET'])
+
+   if true then
+      local patientName = string.lower(tags['PatientName'])
+      if string.find(patientName, 'david') ~= nil then
+         --Delete(SendToModality(instanceId, 'sample'))
+         --Delete(SendToPeer(instanceId, 'peer'))
+         Delete(SendToModality(Modify(instanceId, { PatientName = 'Hello^World' }), 'sample'))
+      else
+         Delete(instanceId)
+      end
+   end
 end