Echoscu 失败:数据字典丢失
Echoscu Failed: Data Dictionary Missing
我是 运行 Orthanc 服务器,使用 docker-compose 文件并尝试使用 TLS connection.More 连接到 DICOM 服务器 https://groups.google.com/g/orthanc-users/c/6gNCOVwTc6c 详细信息。
我从 github 下载了 dcmtk 3.6.6 (https://github.com/DCMTK/dcmtk) 的源代码。按照构建说明进行操作,并在我的 debian 10 系统上构建了 dcmtk 3.6.6。我使用 export PATH 命令将“dcmtk-3.6.6-install/usr/local/bin/”文件夹添加到 PATH。
之后,我尝试使用命令 echoscu -v -aet ORTHANCA localhost 4242 +tls orthanc-a-server-key.pem orthanc-a-server-crt.pem +cf trusted-crt.pem
连接到 docker 容器。
我收到以下错误日志:
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 文件。它存在,但是我收到与上述相同的错误。
在 docker 终端日志中,我收到了相同的以下消息
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
我在这里遗漏了什么或做错了什么?
未找到您的 DICOM 词典,这意味着 build/installation 中可能出现了错误。
有 2 种可能包括 DICOM 字典:
- 编译进库(Windows下默认)
- 安装它并将环境变量
DCMDICTPATH
指向它的位置(默认在Posix下)
来自文档:
The built-in approach offers the advantage that a binary will not have to
load any information from a separate file which may get lost or or used in an
outdated version. Loading the dictionary content from a separate file,
however, has the advantage that application programs need not be recompiled
if additions or corrections are made to the data dictionary.
相关信息可以在dcmdata/docs/datadict.txt
下的dcmtk源中找到,还有一个online version的文件
简而言之,对于 non-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
更新: 添加了 Jörg Riesmeier 评论中的说明。
我是 运行 Orthanc 服务器,使用 docker-compose 文件并尝试使用 TLS connection.More 连接到 DICOM 服务器 https://groups.google.com/g/orthanc-users/c/6gNCOVwTc6c 详细信息。 我从 github 下载了 dcmtk 3.6.6 (https://github.com/DCMTK/dcmtk) 的源代码。按照构建说明进行操作,并在我的 debian 10 系统上构建了 dcmtk 3.6.6。我使用 export PATH 命令将“dcmtk-3.6.6-install/usr/local/bin/”文件夹添加到 PATH。
之后,我尝试使用命令 echoscu -v -aet ORTHANCA localhost 4242 +tls orthanc-a-server-key.pem orthanc-a-server-crt.pem +cf trusted-crt.pem
连接到 docker 容器。
我收到以下错误日志:
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 文件。它存在,但是我收到与上述相同的错误。
在 docker 终端日志中,我收到了相同的以下消息
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
我在这里遗漏了什么或做错了什么?
未找到您的 DICOM 词典,这意味着 build/installation 中可能出现了错误。
有 2 种可能包括 DICOM 字典:
- 编译进库(Windows下默认)
- 安装它并将环境变量
DCMDICTPATH
指向它的位置(默认在Posix下)
来自文档:
The built-in approach offers the advantage that a binary will not have to load any information from a separate file which may get lost or or used in an outdated version. Loading the dictionary content from a separate file, however, has the advantage that application programs need not be recompiled if additions or corrections are made to the data dictionary.
相关信息可以在dcmdata/docs/datadict.txt
下的dcmtk源中找到,还有一个online version的文件
简而言之,对于 non-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
更新: 添加了 Jörg Riesmeier 评论中的说明。