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

如何使用cURL将dicom图像上载到XNAT,curl,upload,batch-processing,dicom,xnat,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 ${patie

我有以下脚本将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
imageDir=$1
计划=
JSESSIONID=
对于patientDir,单位为美元(ls-d$imageDir/*/);
做
主题=$(基本名称${patientDir##$imageDir})
以美元为单位的会话(ls-d$patientDir/*/)
做
会话=$(基本名称${SESSION##$patientDir})
查找$session-name“*.dcm”-exec curl-H'内容类型:application/dicom'\
-X POST--cookie JSSessionId=$JSSessionId\
"https:///data/services/import?inbody=true&PROJECT_ID=$PROJECT&SUBJECT\u ID=$SUBJECT&EXPT\u LABEL=$SESSION”\
--数据二进制@'{}'\;
完成
完成

这是一个使用Chris Fahim提供的zip文件的解决方案。 数据的结构必须如下所示: [patientID]/[sessionID]/scans/[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
curl-F“dest=/prearchive/projects/”-F“import handler=DICOM zip”-F
“FILE=@$dcm”-u用户名:密码--不安全
https:///data/services/import

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

DCMTK包中的storescu命令也可以代替curl。 pkt也可作为deb pkt提供:

DCMTK包括一组用于 检查、构建和转换DICOM图像文件,处理 脱机媒体,通过网络发送和接收图像 连接,以及演示图像存储和工作列表 服务器

通过sorescu发送所有dicom文件:

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