2012 Summer Project Week:XNATSlicerIntegration

From NAMIC Wiki
Jump to: navigation, search
Home < 2012 Summer Project Week:XNATSlicerIntegration

Key Investigators

  • Washington University in St. Louis: Daniel Marcus, Sunil Kumar
  • Isomics: Steve Pieper

Objective

Allow data exchange between XNAT and Slicer. A detailed objective list can be found here.

Approach, Plan

Phase 1: Develop a beta module that fulfills the outlined objectives.
Phase 2: Solidify UI and functionality though user testing.
Phase 3: Port the REST API-based UI into a web-based UI.

Progress

As of June 2012, a beta version of this widget is being tested.


Known Issues

Increased Crash Frequency

Downloading Larger Data Sets - XNAT REST API
The module tends to crash more frequently during the download of larger data sets. Likely a thread issue. Determination of next steps currently in process.
Closing scenes
The close scene command (ctrl+w) sometimes results in Slicer crashing. Unsure if the cause is internal to Slicer, or the widget.

DICOM Details Popup

The XNAT-Slicer module utilizes the DICOM Details Popup (from the DICOM module) after a user loads a scan folder of DICOM images from the XNAT. While this communication is incredibly useful, we believe a few adjustments to the DICOM module would streamline the workflow of XNAT-Slicer.

1 - Refreshing DICOM Details Popup:
After downloading a scan in the XNAT-Slicer module, the "DICOM Details" popup lists the downloaded DICOMs only when the popup hasn't yet been used in the current Slicer session. If the popup has already been used/opened, the "DICOM Details" popup does not list the new set. This is in spite of the downloaded files being successfully inserted in Slicer's SQL DICOM database. In this scenario, when the user restarts Slicer and opens the DICOM module, they will find that the "DICOM Details" popup contains the newly downloaded set. This is likely the result of a highly controlled "refresh" condition in reading the updated database. This may be by design, and consequently a "fix" by be out of reach.
Next step: Inquire if the popup can be refreshed or a one-off "Details Popup" window can be developed that will allow the developer to control its behavior.

2 - Customization of DICOM Details Popup:
If a user downloads a DICOM folder off of XNAT, it would be nice to have the ability to load a customized "DICOM Details" popup where the only DICOM set presented is the one the user just downloaded. Right now, the popup lists all DICOM sets downloaded by the user.
Next Step: inquire what the effort would be to create such a customized popup.

Scene Packaging:

(Refers to command "slicer.app().applicationLogic().SaveSceneToSlicerDataBundleDirectory()")
1 - Spaces in file names:
Investigate the possibility of eliminating the use of spaces in the packaged filenames. (Ex. "Master Scene View.png" should become "MasterSceneView.png").
2 - More Control Over How Scenes Are Packaged:
Assess to what control is given over how scenes are packaged: compression of DICOMS, file localization (paths), etc.

MRML Adjusting:

1- Altering directory references and volumes:
Parsing the MRML and changing URLs from local references to remote references has some consequences in terms of how volumes are built. It appears that volume names are stored deeper than the MRML file itself. Therefore, changing filenames and filepaths could lead to Slicer not being able to find the volumes. This is evidenced in testing conducted with a potential user -- renamed filenames in the MRML apparently reference volume names not apparent in the MRML itself (likely embedded in the referenced files). Consequently, changing the filenames in the MRML is only one step of many that need to occur in changing the filenames.

XNAT Install Check:

Check for relevant files:
Right now the module checks for the XNAT install folder, but does not check for the relevant files. Needs to be a check in place to make sure they exist.

Check for Updated Nodes

Lag times:
About 60% of the lag time in the "Update Scene" workflow comes from resending unmodified data sets back to XNAT. Need to determine the simplest way to get Slicer to check if a node has been modified.

Empty or Unmodified Scene

Determine the best way to check for an empty or unmodified scene.

Firewall issues for some users

Acquire thoughts on ways to circumvent firewall issues -- sample data, access to XNAT server and extensions behind a firewall.

References