Как загрузить изображения dicom в XNAT с помощью cURL

У меня есть следующий скрипт для загрузки изображений dicom в экземпляр XNAT. Я хотел бы знать, если это правильный способ сделать это, так как довольно медленно.

Мои данные структурированы как [someDir]/[PatientID]/[sessionID]/ сканирования /[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 ответа

Это решение с использованием почтовых файлов, предоставленных Крисом Фахимом. Данные должны быть структурированы следующим образом: [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 команда storecu из пакета DCMTK. Pkt также доступен как deb pkt:

DCMTK включает в себя коллекцию библиотек и приложений для изучения, создания и преобразования файлов изображений DICOM, обработки автономных носителей, отправки и получения изображений по сетевому соединению, а также демонстрационных серверов хранения изображений и рабочих списков.

отправлять рекурсивные все файлы dicom через sorescu:

find . -name "*.dcm" -exec storescu -v --aetitle XNAT --call XNAT  ip.of.your.server 8104 {} \;
Другие вопросы по тегам