跳转到主要内容

使用docbook格式的DICOM规范输入的Python DICOM工具

项目描述

dcm-spec-tools

dcm-spec-tools计划成为一套简单的纯Python命令行工具,这些工具从由ACR NEMA提供的docbook格式的DICOM标准中获取输入。

当前可用的工具

  • validate_iods检查DICOM文件是否具有给定SOP类正确的属性。
  • dump_dcm_info输出给定DICOM文件的DICOM标签ID和值。

请注意,这仍处于开发初期阶段。

使用pydicom读取/解析DICOM文件。

安装

最新版本可在PyPI上获得,可以通过以下方式安装:

pip install dcm-spec-tools

使用

dump_dcm_info [-r <revision>] [-src <spec dir>] <DICOM filename>
validate_iods [-r <revision>] [-src <spec dir>] [-v] <DICOM files or directories>

使用每个脚本的--help选项获取使用信息。

访问DICOM标准

在工具首次启动时,将下载最新版本的DICOM标准的一部分,解析它,并将所需的信息保存到json文件中。然后,工具将使用这些文件。定期(每月一次),工具会检查DICOM标准的更新版本,并在找到时下载它。

还可以通过命令行选项使用标准的旧版本,前提是它们仍然可供下载(在撰写本文时,标准自2014a以来可用)。

dcm_dump_info

这是一个非常简单的DICOM转储工具,它使用标准第6部分中读取的DICOM字典。它打印给定DICOM文件的DICOM头,或者打印给定目录中递归的所有DICOM文件的头。输出如下所示

(py3_test) c:\dev\GitHub\dcm-spec-tools>dump_dcm_info "c:\dev\DICOM Data\SR\image12.dcm"

c:\dev\DICOM Data\SR\image12.dcm
(0005,0010) [Unknown]                                LO    1  [AEGIS_DICOM_2.00]
(0005,1000) [Unknown]                                UN    1  [\x00\x05 \x08\x00\x00\x00\n  RIGHT   \x00\x05\xc1X\x00\x00\x00\x06 0.09 \x00\x05...]
(0008,0008) Image Type                               CS    0  []
(0008,0016) SOP Class UID                            UI    1  [Ultrasound Image Storage (Retired)]
(0008,0018) SOP Instance UID                         UI    1  [1.2.840.113680.3.103.775.2873347909.282313.2]
(0008,0020) Study Date                               DA    1  [19950119]
(0008,0030) Study Time                               TM    1  [092854.0]
(0008,0050) Accession Number                         SH    1  [ACN000001]
(0008,0060) Modality                                 CS    1  [US]
(0008,0070) Manufacturer                             LO    1  [Acuson]
(0008,0090) Referring Physician's Name               PN    1  []
(0008,1010) Station Name                             SH    1  [QV-00775]
(0008,1030) Study Description                        LO    1  [ABDOMEN]
(0008,1050) Performing Physician's Name              PN    1  [KLOFAS,EDWARD]
(0008,1060) Name of Physician(s) Reading Study       PN    1  []
(0008,1070) Operators' Name                          PN    1  [DO]
(0008,1080) Admitting Diagnoses Description          LO    1  [RSNA'95 Data Not Delete]
(0009,0010) [Unknown]                                LO    1  [AEGIS_DICOM_2.00]
...

如果您只想显示特定标签,可以使用选项--show-tags

(py3_test) c:\dev\GitHub\dcm-spec-tools>dump_dcm_info "c:\dev\DICOM Data\SR\image12.dcm" --show-tags 0010,0010 PatientID

c:\dev\DICOM Data\SR\image12.dcm
(0010,0010) Patient's Name                           PN    1  [NAPPER^MARGRET]
(0010,0020) Patient ID                               LO    1  [ACN000001]

validate_iods

此功能检查给定DICOM文件,或给定目录中递归的所有DICOM文件,以验证相关SOP类的正确标签。仅检查标签的存在或
不存在,以及标签值的存在的,而不是检查包含的值本身(可能稍后会添加对正确枚举值的检查)。这是通过查找此SOP类所需的所有必需模块和可选模块来完成的,并检查这些模块的标签。列出不允许或缺失在模块中的标签。使用DICOM标准的第3部分和第4部分收集所需信息。如果可能,评估1C和2C模块和标签的条件。如果评估失败,则将相应的模块和标签视为可选。如果条件评估失败,可能是以下原因:

  • 所需信息未包含在DICOM文件中(例如,如“如果患者是动物”之类的冗长描述)
  • 信息与其它DICOM文件相关(例如,引用的图像)
  • 解析失败是因为条件太复杂、意外或由于错误
  • 相关的标签已退役且未列在当前标准中

单个文件的输出可能如下所示

(py3_test) c:\dev\GitHub\dcm-spec-tools>validate_iods "c:\dev\DICOM Data\SR\test.dcm"

Processing DICOM file "c:\dev\DICOM Data\SR\test.dcm"
SOP class is "1.2.840.10008.5.1.4.1.1.88.33" (Comprehensive SR IOD)

Errors
======
Module "SR Document Content":
Tag (0040,A043) (Concept Name Code Sequence) is not allowed due to condition:
  Value Type is equal to "TEXT", "NUM", "CODE", "DATETIME", "DATE", "TIME", "UIDREF" or "PNAME"
Tag (0040,A300) (Measured Value Sequence) is missing
Tag (0040,A168) (Concept Code Sequence) is missing
Tag (0008,1199) (Referenced SOP Sequence) is missing
Tag (0070,0022) (Graphic Data) is missing
Tag (0070,0023) (Graphic Type) is missing
Tag (3006,0024) (Referenced Frame of Reference UID) is missing
Tag (0040,A130) (Temporal Range Type) is missing
Tag (0040,A138) (Referenced Time Offsets) is missing due to condition:
  Referenced Sample Positions is not present and Referenced DateTime is not present
Tag (0040,A13A) (Referenced DateTime) is missing due to condition:
  Referenced Sample Positions is not present and Referenced Time Offsets is not present

注意:不对结果的正确性做出保证。这是一个预alpha软件,主要被视为一个概念验证。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

dcm-spec-tools-0.3.1.tar.gz (34.4 kB 查看散列值)

上传时间

构建分发

dcm_spec_tools-0.3.1-py3-none-any.whl (42.6 kB 查看散列值)

上传时间 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面