Question
· Jun 26, 2023

Returning a DICOM Worklist using a non-DICOM external data source

Hi everyone.

Has anyone here had any luck with receiving a DICOM C-FIND-RQ and returning a worklist using data gathered from a non-DICOM source (for example, an external SQL query) and would be able to share how they achieved this?

I started to look at the demo however I'm tripping over the logic for building the response. I think I just need to just act on the initial message by executing the call to the external data source and then looping through the result set, however the demos structure seems to suggest that I need to almost loop through the result set outside of the process (using a "context variable") to allow for a DICOM C-CANCEL-RQ to be able to interrupt the result set loop.

Product version: IRIS 2022.1
Discussion (2)1
Log in or sign up to continue

Hey Guillaume.

Funnily enough - it's one of your github repos where I located the demo I'm trying use as a jumping off point (but from https://github.com/grongierisc/InstallEnsDemoHealth/blob/master/src/CLS/Demo/DICOM/Process/WorkList.cls)

Basically, I'm stuck trying to work out if I should scrap the wakeup calls etc, and just call the external data when I get a C-FIND-RQ message and then call "CreateIntermediateFindResponse" for each result set entry, or if it's necessary to use the wakeup calls and somehow hold the result set in context and move to the next result set entry on each Ens.AlarmResponse received.

ETA: The approach taken was to use the initial message as a trigger to call off to an external db, and write the results into a local table, and then use the Ens.AlarmResponse as the trigger to grab the top entry from the local table and return this to the calling system. This then allows for a cancel to come in and interrupt the process (the cancel will trigger a deletion of the appropriate rows in the local table)