首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DICOM服务器上搜索元数据

在DICOM服务器上搜索元数据
EN

Stack Overflow用户
提问于 2015-10-03 19:45:25
回答 2查看 1.6K关注 0票数 1

我想搜索DICOM服务器。例如,如果用户输入一个病人id来进行说教,那么我的应用程序就会填充一个表,其中包含与该id相关的所有元数据,例如id、name、e.tc。如果dicom服务器中存在tha学习id,那么如何使用dcm4chee工具包来完成这一任务。-

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-04 07:52:12

您可以使用dcm4che3 tool dcm4che-tool-findscu。这段代码向您展示了如何针对PACS (或任何实现against作为SCP的实现)执行C-FIND。

FindSCU.java非常清楚,需要一段时间,并且不要错过Apache代码来理解来自控制台的输入。大多数CLI管理代码不在此项目中,但您可以在dcm4che3 tool dcm4che-tool-common项目org.dcm4che3.tool.common.CLIUtils.java类中找到它。

考虑到以下因素:

  • 指定查询/检索的搜索级别。您可以使用多个搜索级别来将属性匹配到PACS中。如果您查看FindSCU.java的第260:265行,您将看到可以管理四个不同的级别:PATIENT|STUDY|SERIES|IMAGE.This将指示can如何搜索匹配的属性。
  • 告诉C-查找SCP,您要检索哪些属性。如果您想在以后搜索要检索的研究,您必须请求0020, 000D 0020, 000D标记。
    • 当然,添加要填充表的所有属性。

  • 使用检索到的Study​InstanceUID 0020, 000D标记值执行C/C操作。

您可以看到如何配置属性键来执行C-查找SCU到CLIUtils.java类,这是dcm4che3 tool dcm4che-tool-common项目的一部分。见CLIUtils.addAttributes(Attributes, String[])

希望能帮上忙!

编辑

由于您正在使用dcm4che2,并且您已经有了一个带有搜索结果的DicomObject,如果您想从这个DicomObject中获取元数据,您必须先使用DicomInputStream解析它,然后您可以使用BasiDicomObject中的getXXXX(Tag),如下所示:

代码语言:javascript
复制
DicomObject dcmObj;
DicomInputStream dis = null;
dis = new DicomInputStream(file);
dcmObj = dis.readDicomObject();
String someVar = dcmObj.getString(Tag.SeriesInstanceUID);

请记住,有些属性在序列中,因此您必须先搜索它。

您还可以查看dcm4che-tool-dcm2txt,您将看到Dcm2Txt.java,在第170行中,还有如何解析整个dicom对象。

票数 6
EN

Stack Overflow用户

发布于 2015-10-05 05:54:46

如果您需要一些关于DICOM网络协议的一般描述,您可以阅读"用Orthanc理解DICOM“指南,更具体地说是关于C-查找的章节

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32926780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档