如何使用cURL将dicom图像上传到XNAT

时间:2014-07-30 20:53:04

标签: curl upload batch-processing dicom xnat

我有以下脚本将dicom图像上传到XNAT实例。 我想知道这是否是正确的做法,因为它很慢。

我的数据结构为[someDir] / [patientID] / [sessionID] / scans / [scanName] / * .dcm

imageDir=$1
PROJECT=<projectId>
JSESSIONID=<cookie>

for patientDir in $(ls -d $imageDir/*/);
do 
    SUBJECT=$(basename ${patientDir##$imageDir})
    for session in $(ls -d $patientDir/*/)
    do
            SESSION=$(basename ${session##$patientDir})

            find $session -name "*.dcm" -exec curl  -H 'Content-Type: application/dicom' \
                                -X POST --cookie JSESSIONID=$JSESSIONID \ 
                                 "https://<XNAT URL>/data/services/import?inbody=true&PROJECT_ID=$PROJECT&SUBJECT_ID=$SUBJECT&EXPT_LABEL=$SESSION" \
                                --data-binary @'{}' \; 
    done
done

2 个答案:

答案 0 :(得分:1)

这是使用Chris Fahim提供的zip文件的解决方案。 必须按以下方式构建数据: [patientID] / [sessionID的] /扫描/ [scanName] / DICOM / *。DCM 上传完成后,zip文件将被解压缩并直接映射到项目,主题,会话和扫描。

curl -F "dest=/prearchive/projects/<projectId>" -F "import-handler=DICOM-zip" -F
"FILE=@$dcm" -u USERNAME:PASSWORD --insecure 
https://<xnat url>/data/services/import

我有一个可以在命令行中使用的xnat节点应用程序。 xnat-rest

答案 1 :(得分:0)

很棒而不是curl是来自DCMTK包的storescu命令。 pkt也可以作为deb pkt:

  

DCMTK包含一系列库和应用程序   检查,构建和转换DICOM图像文件,处理   离线媒体,通过网络发送和接收图像   连接,以及演示图像存储和工作清单   服务器

通过sorescu发送递归所有dicom文件:

find . -name "*.dcm" -exec storescu -v --aetitle XNAT --call XNAT  ip.of.your.server 8104 {} \;