我使用以下脚本将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发布于 2014-08-01 04:24:09
这是一个使用Chris Fahim给出的zip文件的解决方案。数据必须以以下方式组织: patientID/sessionID/scans/scanName/DICOM/*.dcm上传完成后,压缩文件将被解压缩,并直接映射到项目、主题、会话和扫描。
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
发布于 2016-07-21 16:11:25
替代curl的还有来自DCMTK包的storescu命令。该pkt也可以作为deb pkt:
DICOM DCMTK包括一组库和应用程序,用于检查、构建和转换
图像文件、处理离线媒体、通过网络连接发送和接收图像,以及演示图像存储和工作列表服务器。
通过sorescu发送递归的所有dicom文件:
find . -name "*.dcm" -exec storescu -v --aetitle XNAT --call XNAT ip.of.your.server 8104 {} \;https://stackoverflow.com/questions/25046720
复制相似问题