3. Методы для передачи dicom-файлов
3.1. create_studies_zip / подготовить файл ZIP с dicom-архивом
3.2. get_studies_zip / получить архив с dicom-файлами
Описание настроек утилит для формирования архива с dicom-файлами
Для создания архива с dicom-файлами используются 2 утилиты:
- movescu— находится в папке рядом с REST-сервером
обязательные файлы - movescu.exe, dcmdata.dll, dcmnet.dll, oflog.dll, ofstd.dll - архиватор, например, 7zip установленный в системе
В REST-сервере реализована возможность получать файлы dicom из разных DICOM-серверов, в зависимости от префикса в AccessNumber.
Настройки хранятся в таблице MSS_WEB_CASH_DICOMSERV_PRM
Редактирование осуществляется через MS SQL Studio
Поля таблицы MSS_WEB_CASH_DICOMSERV_PRM
имя поля | описание | пример |
---|
Label | Название настройки | conQuest, Clininet, ZIP |
an_prefix | префикс в AccessNumber | CN в Клининете, PL в Медиалоге |
dir | директория для складирования и упаковки dicom файлов. | R:\testdir |
cmd_command | программа копирования или архиватор, путь+имя | .\movescu\movescu.exe C:\Program Files\7-Zip\7z.exe |
cmd_prms | параметры утилиты | |
Пример для копирования
-q -S -k 0008,0050=$AccessNumber$ +xa -od "$dir$" -aet MOVESCU +P 55555 -aec MSSCONQUEST 127.0.0.1 5679
ВНИМАНИЕ: необходимо указывать абсолютный путь до MOVESCU и других утилит.
Например t:\\dicom\movescu
, где
-k 0008,0050 - тэг поиска исследования по AccessNumber
$AccessNumber$ - параметр ID исследования который подставляет rest сервер
$dir$ - директория, в которой создается подпапка с именем ID исследования
MOVESCU - имя клиента которому прописан доступ на dicom сервере
+P 55555 - порт доступа, прописанный для программы
-aec MSSCONQUEST 127.0.0.1 5679 - имя , IP и порт dicom-сервера
-q - запрет вывода во время выполнения
-S - study, use study root information model
+xa - accept-all, accept all supported transfer syntaxes
-od - output-directory [d]irectory: string (default: ".") write received objects to existing directory d
Пример для упаковки/архивации
a -tzip -mx0 "$dir$.zip" "$dir$\"
, где
a - архивировать
-tzip - тип архива zip
-mx3 - степень сжатия 0..9 / 0-без сжатия совсем
-sdel - удалить файлы после упаковки
"$dir$.zip" - путь+имя архива
"$dir$\" - папка для упаковки
$dir$ - подставляемая переменная имя папки из пути + AccessNumber это же имя архива , надо приписать .zip
P.S. Степень сжатия mx3 ужимает 100Мб до 33,5Мб с хорошей скоростью, сжатие mx9 до 30Мб, но неприемлемо долго.
Хранимая функция - mss_rest_check_access_number используется для проверки наличия исследования чтобы не отдавать пустой архив.
При ответе 0 возвращает сообщение об ошибке
"str_done"="Отсутствует исследование с таким номером"
Алгоритм работы
- REST-сервер создает задание на упаковку
- Определяет по префиксу, какую утилиту и параметры использовать для копирования файлов/
- Создает подпапку по имени AccessNumber в указанной папке, например, CN1234
- Запускается утилита копирования, она запрашивает на указанном DICOM-сервере файлы и складирует их в подпапку.
- Папка архивируется с указанной степенью сжатия в файл с именем, равным имени папки, например, CN1234.zip
- Папка с файлами удаляется.
- REST-сервер соответствующим запросом отдает файл архива.