我想搜索DICOM服务器。例如,如果用户输入一个病人id来进行说教,那么我的应用程序就会填充一个表,其中包含与该id相关的所有元数据,例如id、name、e.tc。如果dicom服务器中存在tha学习id,那么如何使用dcm4chee工具包来完成这一任务。-
发布于 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类中找到它。
考虑到以下因素:
FindSCU.java的第260:265行,您将看到可以管理四个不同的级别:PATIENT|STUDY|SERIES|IMAGE.This将指示can如何搜索匹配的属性。0020, 000D 0020, 000D标记。
0020, 000D标记值执行C/C操作。您可以看到如何配置属性键来执行C-查找SCU到CLIUtils.java类,这是dcm4che3 tool dcm4che-tool-common项目的一部分。见CLIUtils.addAttributes(Attributes, String[])。
希望能帮上忙!
编辑
由于您正在使用dcm4che2,并且您已经有了一个带有搜索结果的DicomObject,如果您想从这个DicomObject中获取元数据,您必须先使用DicomInputStream解析它,然后您可以使用BasiDicomObject中的getXXXX(Tag),如下所示:
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对象。
发布于 2015-10-05 05:54:46
如果您需要一些关于DICOM网络协议的一般描述,您可以阅读"用Orthanc理解DICOM“指南,更具体地说是关于C-查找的章节。
https://stackoverflow.com/questions/32926780
复制相似问题