@@ -224,6 +224,39 @@ xnat.getSubjectExperiments = function(projectid, subjectid){
224224} )
225225}
226226
227+ xnat . getSubjectSession = function ( projectid , subjectid , sessionid ) {
228+ return new Promise ( function ( resolve , reject ) {
229+
230+ var params = {
231+ format : "json"
232+ }
233+
234+ var url ;
235+ if ( sessionid ) {
236+ url = "/data/archive/projects/" + projectid + "/subjects/" + subjectid + "/experiments/" + sessionid + "?" + qs . stringify ( params ) ;
237+ } else {
238+ url = "/data/archive/projects/" + projectid + "/subjects/" + subjectid + "/experiments?" + qs . stringify ( params ) ;
239+ }
240+
241+ var options = {
242+ url : xnat . getXnatUrl ( ) + url ,
243+ jar : xnat . jar
244+ }
245+
246+ request ( options , function ( err , res , body ) {
247+ if ( err ) {
248+ reject ( err ) ;
249+ } else {
250+ if ( res . statusCode === 200 ) {
251+ resolve ( JSON . parse ( body ) ) ;
252+ } else {
253+ reject ( body ) ;
254+ }
255+ }
256+ } ) ;
257+ } )
258+ }
259+
227260xnat . createSubject = function ( projectid , subjectid ) {
228261return new Promise ( function ( resolve , reject ) {
229262var options = {
@@ -245,7 +278,7 @@ xnat.createSubject = function(projectid, subjectid) {
245278} ) ;
246279}
247280
248- xnat . uploadImage = function ( projectid , subjectid , sessionid , filename ) {
281+ xnat . uploadImage = function ( projectid , subjectid , experimentid , filename ) {
249282return new Promise ( function ( resolve , reject ) {
250283
251284var params = {
@@ -254,7 +287,7 @@ xnat.uploadImage = function(projectid, subjectid, sessionid, filename){
254287dest : "/archive/projects/" + projectid ,
255288"import-handler" : "gradual-DICOM" ,
256289SUBJECT_ID : subjectid ,
257- EXPT_LABEL : sessionid
290+ EXPT_LABEL : experimentid
258291}
259292
260293var options = {
@@ -278,6 +311,99 @@ xnat.uploadImage = function(projectid, subjectid, sessionid, filename){
278311} )
279312}
280313
314+ xnat . uploadConvertedImage = function ( projectid , subjectid , experimentid , scanid , filename ) {
315+ return new Promise ( function ( resolve , reject ) {
316+
317+ var params = {
318+ inbody : true
319+ }
320+
321+ var options = {
322+ url : xnat . getXnatUrl ( ) + "/data/archive/projects/" + projectid + "/subjects/" + subjectid + "/experiments/" + experimentid + "/scans/" + scanid + "/files/" + path . basename ( filename ) + "?" + qs . stringify ( params ) ,
323+ method : "PUT" ,
324+ jar : xnat . jar ,
325+ body : fs . readFileSync ( filename )
326+ }
327+
328+ request ( options , function ( err , res , body ) {
329+ if ( err ) {
330+ reject ( err ) ;
331+ } else {
332+ if ( res . statusCode === 200 ) {
333+ console . log ( "File imported" ) ;
334+ resolve ( body ) ;
335+ } else {
336+ reject ( body ) ;
337+ }
338+ }
339+ } ) ;
340+ } )
341+ }
342+
343+ xnat . getScanFiles = function ( projectid , subjectid , experimentid , scanid ) {
344+ return new Promise ( function ( resolve , reject ) {
345+
346+ var params = {
347+ format : "json"
348+ }
349+
350+ var options = {
351+ url : xnat . getXnatUrl ( ) + "/data/archive/projects/" + projectid + "/subjects/" + subjectid + "/experiments/" + experimentid + "/scans/" + scanid + "/files?" + qs . stringify ( params ) ,
352+ method : "GET" ,
353+ jar : xnat . jar
354+ }
355+
356+ request ( options , function ( err , res , body ) {
357+ if ( err ) {
358+ reject ( err ) ;
359+ } else {
360+ try {
361+ if ( res . statusCode === 200 ) {
362+ var images = JSON . parse ( body ) ;
363+ resolve ( images . ResultSet . Result ) ;
364+ } else {
365+ reject ( body ) ;
366+ }
367+ } catch ( e ) {
368+ console . error ( "xnat.getScanFiles" , e ) ;
369+ reject ( e ) ;
370+ }
371+
372+ }
373+ } ) ;
374+ } ) ;
375+ }
376+
377+ xnat . deleteFile = function ( uri ) {
378+ return new Promise ( function ( resolve , reject ) {
379+
380+ var options = {
381+ url : xnat . getXnatUrl ( ) + uri ,
382+ method : "DELETE" ,
383+ jar : xnat . jar
384+ }
385+
386+ request ( options , function ( err , res , body ) {
387+ if ( err ) {
388+ reject ( err ) ;
389+ } else {
390+ try {
391+ if ( res . statusCode === 200 ) {
392+ console . log ( "File deleted" )
393+ resolve ( body ) ;
394+ } else {
395+ reject ( body ) ;
396+ }
397+ } catch ( e ) {
398+ console . error ( "xnat.getScanFiles" , e ) ;
399+ reject ( e ) ;
400+ }
401+
402+ }
403+ } ) ;
404+ } ) ;
405+ }
406+
281407xnat . triggerPipelines = function ( projectid , subjectid , experimentid ) {
282408return new Promise ( function ( resolve , reject ) {
283409
@@ -450,6 +576,10 @@ xnat.upload = function(){
450576require ( path . join ( __dirname , 'upload' ) ) ( xnat ) ;
451577}
452578
579+ xnat . importConverted = function ( ) {
580+ require ( path . join ( __dirname , 'importConverted' ) ) ( xnat ) ;
581+ }
582+
453583const getConfigFile = function ( ) {
454584 return new Promise ( function ( resolve , reject ) {
455585 try {
0 commit comments