Ошибка Echoscu: отсутствует словарь данных
Я запускаю сервер Orthanc, используя файл docker-compose, и пытаюсь подключиться к серверу DICOM, используя соединение TLS. Подробнее здесь https://groups.google.com/g/orthanc-users/c/6gNCOVwTc6c . Я скачал исходный код с github для dcmtk 3.6.6 (https://github.com/DCMTK/dcmtk). Следовал инструкциям по сборке и собрал dcmtk 3.6.6 в моей системе Debian 10. Я добавил папку «dcmtk-3.6.6-install/usr/local/bin/» в PATH с помощью команды export PATH.
После этого я попытался подключиться к контейнеру докеров с помощью команды
echoscu -v -aet ORTHANCA localhost 4242 +tls orthanc-a-server-key.pem orthanc-a-server-crt.pem +cf trusted-crt.pem
. Я получил следующий журнал ошибок:
E: DcmDataDictionary: Cannot open file: /usr/local/share/dcmtk/dicom.dic
W: no data dictionary loaded, check environment variable: DCMDICTPATH
I: Requesting Association
I: Association Accepted (Max Send PDV: 16372)
I: Sending Echo Request (MsgID 1)
E: Echo Failed: 0006:0213 Data dictionary missing
E: Echo SCU Failed: 0006:0213 Data dictionary missing
I: Aborting Association
Я добавил "dcmtk-3.6.6-install/usr/local/share/dcmtk/" в PATH и проверил с помощью
echo $PATH
что он был добавлен правильно и в этом пути присутствует файл dicom.dic. Однако он присутствует, но я получаю ту же ошибку, что и выше.
В журналах терминала докера я получаю следующие сообщения для того же
orthanc-a-server_1 | I0123 16:14:23.498902 CommandDispatcher.cpp:332] (dicom) Association Received from AET ORTHANCA on IP 192.168.7.1
orthanc-a-server_1 | I0123 16:14:23.499024 main.cpp:318] Incoming connection from AET ORTHANCA on IP 192.168.7.1, calling AET ANY-SCP
orthanc-a-server_1 | I0123 16:14:23.499142 CommandDispatcher.cpp:663] (dicom) Association Acknowledged (Max Send PDV: 16372) to AET ORTHANCA on IP 192.168.7.1
orthanc-a-server_1 | I0123 16:14:23.499831 CommandDispatcher.cpp:917] (dicom) Finishing association with AET ORTHANCA on IP 192.168.7.1: Peer aborted Association (or never connected)
orthanc-a-server_1 | I0123 16:14:23.499917 CommandDispatcher.cpp:930] (dicom) Association Aborted with AET ORTHANCA on IP 192.168.7.1
Что я здесь упускаю или делаю неправильно?
1 ответ
Ваш словарь DICOM не найден, что означает, что, возможно, что-то в сборке/установке пошло не так.
Есть 2 возможности включить словарь DICOM:
- скомпилировать его в библиотеку (по умолчанию в Windows)
- установите его и укажите переменную среды на его местоположение (по умолчанию в Posix)
Из документации:
Преимущество встроенного подхода заключается в том, что двоичному файлу не нужно загружать какую-либо информацию из отдельного файла, которая может быть потеряна или использоваться в устаревшей версии. Однако загрузка содержимого словаря из отдельного файла имеет то преимущество, что прикладные программы не нужно перекомпилировать, если в словарь данных вносятся дополнения или исправления.
Соответствующую информацию можно найти в источниках dcmtk в разделе
dcmdata/docs/datadict.txt
, есть и онлайн-версия файла.
Короче говоря, для систем, отличных от Windows:
Чтобы скомпилировать словарь в библиотеку:
- с autoconf используйте параметры
--enable-builtin-dict
а также--disable-external-dict
- с CMake используйте
DCMTK_ENABLE_BUILTIN_DICTIONARY
Чтобы использовать отдельный словарь:
используйте параметры сборки по умолчанию и убедитесь, что используется
install-libs
вариант; в таком случаеdicom.dic
будет установлен в папку по умолчанию (под<datadir>
) и должно быть найдено; для этого вы должны вызвать «make install» и указать путь установки во время «configure» (он же «--prefix»), если это необходимо.если вы хотите использовать свой собственный словарь или по какой-то причине хотите переместить словарь в другое место, вы должны установить
DCMDICTPATH
к местоположению этого словаря, например:
setenv DCMDICTPATH $HOME/dicom.dic
Обновление: добавлены инструкции из комментария Йорга Рисмайера.