如何用DCMTK的storescp/dcmrecv监听多AE_Title并识别发送方?
一、用dcmrecv的-uca配置多AE_Title映射
dcmrecv的-uca(User Configuration Association)选项支持配置多个接收AE_Title,每个可绑定独立的存储路径或处理规则。需创建一个配置文件,格式示例如下:
[DEVICE_A_AE] StorageArea = /data/dicom/device_a [DEVICE_B_AE] StorageArea = /data/dicom/device_b
启动dcmrecv时指定该配置文件:
dcmrecv -p 104 -uca /etc/dcmrecv_config.cfg
发送方使用DEVICE_A_AE发送的文件会自动存入/data/dicom/device_a,用DEVICE_B_AE则存入对应目录,通过存储路径即可直接区分发送方。
二、查看发送方的AE_Title
1. 实时查看dcmrecv日志输出
启动dcmrecv时添加-v(verbose)参数,控制台会输出详细的DICOM关联协商信息,其中包含发送方的AE_Title:
dcmrecv -p 104 -uca /etc/dcmrecv_config.cfg -v
日志中会出现类似条目:
Association Received:
Calling AE Title: SENDER_DEVICE_A
Called AE Title: DEVICE_A_AE
这里的Calling AE Title就是发送方实际使用的AE_Title。
2. 从接收的DICOM文件提取元数据
接收完成后,用DCMTK的dcmdump工具读取DICOM文件的元数据,发送方AE_Title对应标签0x0002,0x0010(CallingApplicationEntityTitle):
dcmdump +P CallingApplicationEntityTitle /data/dicom/device_a/xxx.dcm
执行后会直接返回发送方的AE_Title内容。
3. 配置日志文件持久化记录
若需要长期留存记录,可通过-ll指定日志级别,-lf指定日志文件路径:
dcmrecv -p 104 -uca /etc/dcmrecv_config.cfg -ll info -lf /var/log/dcmrecv.log
日志文件会持续写入关联事件信息,包括每次连接的发送方AE_Title,方便后续回溯查询。
三、用storescp实现多AE_Title接收
storescp本身不支持-uca参数,但可通过启动多个独立实例来绑定不同AE_Title和端口:
# 实例1:绑定AE_Title DEVICE_A_AE,监听端口1041 storescp -aet DEVICE_A_AE -p 1041 --output-directory /data/dicom/device_a # 实例2:绑定AE_Title DEVICE_B_AE,监听端口1042 storescp -aet DEVICE_B_AE -p 1042 --output-directory /data/dicom/device_b
让不同发送方对应不同端口和AE_Title,同样可通过存储路径识别发送方,查看发送方AE_Title的方法与上述一致。
内容的提问来源于stack exchange,提问作者Tullhead

