Distinguish between modalities in case of AET or institution name collisions

At my workplace we work with multiple medical institutions, each of it performs modality worklist queries and sends DICOM studies via C-Store.

Until now we’ve been using the issuer AET to distinguish between medical institutions in our custom modality worklist plugin, and the institution name dicom tag to know which institution has sent a DICOM study. That approach works well for most of the cases, but fails if some medical institutions use the same AET for some modalities or use the same institution name dicom tag in their DICOMS. That happens frequently when institutions are using some default or general values to set those params.

We need a way to distinguish which institution is sending the request on C-Store and Modality Worklist queries despite possible AET or institution name collisions. We’ve been thinking about using the IP address of the request on both cases but neither OrthancPluginWorklistCallback, OrthancPluginIncomingCStoreInstanceFilter nor OrthancPluginReceivedInstanceCallback callbacks provide the IP address of the request.

Is there a way to get the IP address of the request on those callbacks? If not, is there a way to add that feature to the Orthanc core or a different way to distinguish between institutions when there are AET or institution name collisions?

Thanks in advance.

Hi,

No, the IP is indeed currently not available and we always try to avoid modifying the Plugin SDK because we need to provide backward compatibility → changing a function signature is not an option, we need to add a new one.

Suggestion: could you configure all your institution to use a separate AET for Orthanc: Instead of calling Orthanc “ORTHANC”, they would call it “ORTHANC_A”, “ORTHANC_B”, … This way, you would be able to differentiate them through the CalledAET argument of OrthancPluginWorklistCallback.

For the instance storage, “RemoteIp” and “CalledAET” are available as instances metadata once the instance has been stored (this is probably too late for you).

It should be possible for me to add 2 functions in the SDK to get the RemoteIp and CalledAET from inside the OrthancPluginIncomingCStoreInstanceFilter callback but unfortunately not from OrthancPluginReceivedInstanceCallback.
There is already a OrthancPluginGetInstanceRemoteAet so it should be possible to create OrthancPluginGetInstanceCalledAet and OrthancPluginGetInstanceRemoteIp.

Note that you need to have this configuration set to false in order for Orthanc to not check its called AET.

  // Check whether the called AET corresponds to the AET of Orthanc
  // during an incoming DICOM SCU request
  "DicomCheckCalledAet" : false,

Another alternative solution (typically the one I would set up) is to have one specific “inbox” Orthanc for each institution with its own DicomPort that is used only for this institution. There, you know that data only comes from one institution and you can sanitize it before auto-forwarding it to the central Orthanc.

HTH,

Alain

Hi Alain,

Thanks for your great answer, the solutions that you propose are just what we need.

best regards.

Hi Rodrigo,

I actually proposed multiple solutions :slight_smile: so, Can you confirm that the last alternative solution of having one “inbox” Orthanc for each institution is fine for you ? In that case, I don’t have to modify Orthanc which is my preferred solution.

Best regards,

Alain

Hi Alain,

Sorry for the delay. We’ll obtain the origin IP of the studies using the method described here. For the origin of the modality worklist queries we’ll distinguish by the called AET as you describe above.

So no modifications in the Orthanc code are needed.

Again, thanks for your help.

Best regards,
Rodrigo.