Ошибка 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

Обновление: добавлены инструкции из комментария Йорга Рисмайера.

Другие вопросы по тегам