Difference between revisions of "CTSC Slicer XNE"

From NAMIC Wiki
Jump to: navigation, search
Line 28: Line 28:
  
 
=== 1. Select XNAT Enterprise Server ===
 
=== 1. Select XNAT Enterprise Server ===
 +
This sets the current URI handler to be the XNE_HttpHandler for subsequent REST-based client calls to XNE web services.
  
 
=== 2. Authentication Dialog Presented ===
 
=== 2. Authentication Dialog Presented ===
Line 62: Line 63:
 
** else xml is parsed to get list of scans
 
** else xml is parsed to get list of scans
  
=== 7. User Selects One Subject ===
+
=== 7. User Selects One Subject, Configures Filters to Narrow Search & Selects Search ===
 
 
=== 8. User Selects Pull-Down Filters to Narrow Search for Scans & Selects Search ===
 
  
 
  * Experiments: { Experiment_IDs }
 
  * Experiments: { Experiment_IDs }
Line 85: Line 84:
 
** else xml is parsed to get list of scans
 
** else xml is parsed to get list of scans
  
=== 10. User Selects One Scan and Clicks Download ===
+
=== 9. User Selects One Scan and Clicks Download ===
 +
 
 +
curl $XNE_Svr/projects/$ProjectID/subjects/$SubjectID/experiments/$ExpID/scans/$ScanID/resources/DICOM/files
 +
 
 +
This returns a list of URIs which Slicer uses to populate a vtkMRMLVolumeArchetypeStorageNode:URI and vtkMRMLVolumeArchetypeStorageNode::URIListMembers
  
=== 11. Scan is Loaded into Slicer ===
+
=== 10. Scan is Loaded into Slicer ===
 +
vtkMRMLVolumeArchetypeStorageNode::ReadData( vtkMRMLVolumeArchetypeStorage *node) is called, which calls vtkMRMLStorageNode::StageReadData (*node) to download data using the XNE_HttpHandler.

Revision as of 17:03, 4 August 2009

Home < CTSC Slicer XNE

UXP & functionality planning for Slicer's XNE client

Workflow & Implementation approaches

All Workflow Steps:

  • Select XNAT Enterprise server
  • Authentication dialog presented
  • Dialog input is processed
  • XNAT queried for projects
  • response is checked for http error codes
  • xml parsed to get list of projects
  • GUI populated
  • One project selected
  • XNAT queried for subjects in that project
  • response is checked for http error codes
  • xml parsed to get list of subjects
  • GUI populated
  • One subject and filters selected to narrow search
  • User selects "search" for all scans
  • XNAT queried for appropriate scans
  • response is checked for http error codes
  • xml is parsed to get list of scans
  • GUI is populated
  • User selects one scan and "download"
  • Scan is loaded into Slicer

Each step is detailed below.

1. Select XNAT Enterprise Server

This sets the current URI handler to be the XNE_HttpHandler for subsequent REST-based client calls to XNE web services.

2. Authentication Dialog Presented

  • Enter user name and password

3. Process Dialog Input

  • Save the username (XNE_UserName) and password (XNE_Password)
  • Authenticate and create a session:
curl -d POST $XNE_Svr/REST/JSESSION -u $XNE_UserName:$XNE_Password

4. Query XNAT for Projects Available to User

  • XNAT queried for appropriate projects
curl $XNE_Srv/REST/projects?format=xml --cookie JSESSIONID=$sessionID
  • response is checked for http error codes
    • if error is found, report to user
    • else xml is parsed to get list of scans

5. User Selects One Project

6. Query XNAT for Subjects in Selected Project

  • XNAT queried for appropriate subjects
curl $XNE_Svr/REST/projects/$projectID/subjects?format=xml --cookie JSESSIONID=$sessionID
  • response is checked for http error codes
    • if error is found, report to user
    • else xml is parsed to get list of scans

7. User Selects One Subject, Configures Filters to Narrow Search & Selects Search

* Experiments: { Experiment_IDs }
** Imaging Sessions: { MR, PET, CT ...}
*** Scans: { Scan_IDs }
*** Reconstructions: { Reconstruction_IDs }
*** Assessors: { Assessor_IDs }
** Non-imaging Assessments: { Asessor_IDs }

Default selections?: All Scans

8. Example Query XNAT for All Scans for Selected Experiment

  • XNAT queried for appropriate scans
curl $XNE_Svr/REST/projects/$ProjectID/subjects/$SubjectID/experiments/$ExpID/scans?format=xml --cookie JSESSION=$sessionID
  • response is checked for http error codes
    • if error is found, report to user
    • else xml is parsed to get list of scans

9. User Selects One Scan and Clicks Download

curl $XNE_Svr/projects/$ProjectID/subjects/$SubjectID/experiments/$ExpID/scans/$ScanID/resources/DICOM/files

This returns a list of URIs which Slicer uses to populate a vtkMRMLVolumeArchetypeStorageNode:URI and vtkMRMLVolumeArchetypeStorageNode::URIListMembers

10. Scan is Loaded into Slicer

vtkMRMLVolumeArchetypeStorageNode::ReadData( vtkMRMLVolumeArchetypeStorage *node) is called, which calls vtkMRMLStorageNode::StageReadData (*node) to download data using the XNE_HttpHandler.