0

我有以下脚本将 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
4

2 回答 2

1

这是使用 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

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

于 2014-07-31T20:24:08.507 回答
0

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 {} \;
于 2016-07-21T08:11:25.353 回答