我们使用 DCM4CHEE 作为 PACS 服务器的副本。我有 8 位和 16 位图像分布在多项研究中。所有图像都存储在 DCM4CHEE 中。
我们在样本图像上运行 DICOM DUMP [DCM2TXT] 以识别位分配。这是一个漫长的过程。
DCM4CHEE 服务器是否将位表示形式存储在 DB 中?如果是,我在哪里可以找到有关已分配位的信息?
请帮助我找到最好的解决方案。
谢谢,
——阿尼尔·库马尔
是的,它在数据库中,可以非常快速地访问。在数据库/模式“pacsdb”中,表名是“instance”,列名是“inst_attrs”。很可能您必须使用涉及研究和系列表的连接进行选择,具体取决于您搜索/呈现数据的方式。
现在,问题是,inst_attrs 是一个带有二进制数据的 BLOB。在内部,您需要查找以下十六进制字符串(来自 DICOM 传输语法) 28 00 00 01 55 53 02 00 xx 00 此处,28 00 00 01 实际上是 (0028, 0100) 标记(已分配位)的十六进制,55 53 02 00 表示“Unsigned Short (US) 2 bytes long”,之后通常有 16 位图像 10 00 或 8 位图像 08 00 。所以,你真的只需要上面字节中的“xx”值。
根据您将用于获取此数据的数据库访问工具,您可以选择最佳策略。它可以是与 dcm4chee 一起部署的 Web 应用程序(.war),可能只需一堆 jsp 就足够了;它可以是一个单独的 Java 应用程序甚至 .NET - 选择的工具实际上取决于您需要它的位置和用途。对于 Web 访问,我宁愿用无状态会话 bean 做一个完整的 .ear 来获取数据,并使用受密码保护的小型 Web 应用程序来呈现数据并从外部提供 JSON / WS 访问。
更新 下面是一个 SQL 示例(仅限 MySQL),它返回研究 UID、系列 UID 和分配为 16 位图像的 10 和 8 位图像的 08 位:
SELECT study_iuid as StudyUID, series_iuid as SeriesUID,
SUBSTRING(HEX(inst_attrs),
LOCATE('2800000155530200',HEX(inst_attrs))+16
,2) as BitsAllocatedHex
FROM instance i JOIN series s ON i.series_fk=s.pk
JOIN study st ON s.study_fk=st.pk