我想搜索DICOM服务器。例如,如果用户输入患者ID以进行搜索,那么我的应用程序将填充一个表格,其中包含与该ID相关的所有元数据,例如id,name,登录号e.tc.如果在dicom服务器中存在研究ID,如何使用dcm4chee工具包完成。 -
答案 0 :(得分:5)
您可以使用 dcm4che3 工具dcm4che-tool-findscu
。此代码向您展示如何针对PACS(或任何实现C-FIND的SCP)进行C-FIND。
FindSCU.java
非常清楚,需要一段时间,不要错过Apache Commons CLI代码来理解来自控制台的输入。大多数CLI管理代码不在此项目中,但您可以在 dcm4che3 工具dcm4che-tool-common
项目org.dcm4che3.tool.common.CLIUtils.java
类中找到它。
考虑以下因素:
FindSCU.java
的第260:265行,你会看到你可以管理四个不同的级别:PATIENT|STUDY|SERIES|IMAGE
。这将指示C-FIND SCP如何搜索匹配的属性。0020, 000D
Study InstanceUID 标记。
0020, 000D
Study InstanceUID 标记值执行C-GET / C-MOVE操作。您可以看到如何配置属性键以将C-FIND SCU添加到属于 dcm4che3 工具CLIUtils.java
项目的dcm4che-tool-common
类中。请参阅CLIUtils.addAttributes(Attributes, String[])
。
希望它有所帮助!
由于您发表评论,您使用的是dcm4che2,并且您已经拥有搜索结果DicomObject
,如果您想从此DicomObject
获取元数据,则必须先使用{{1}解析它然后你可以使用DicomInputStream
中的getXXXX(Tag)
,如下所示:
BasiDicomObject
请记住,某些属性是序列内部,因此您必须先搜索它。
您还可以查看DicomObject dcmObj;
DicomInputStream dis = null;
dis = new DicomInputStream(file);
dcmObj = dis.readDicomObject();
String someVar = dcmObj.getString(Tag.SeriesInstanceUID);
,您将看到dcm4che-tool-dcm2txt
,在第170行等等,还有如何解析整个dicom对象。
答案 1 :(得分:0)
如果您需要有关DICOM网络协议的一般说明,可以阅读“Understanding DICOM with Orthanc”指南,更具体地说是section about C-Find。