使用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的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 782a4a5401077ab6897ccd2a6206e910ce56b7addfd0b370dbae7f837b7dd17b |
|
MD5 | cff038cdb654067da86fa0ce2ae5f372 |
|
BLAKE2b-256 | cf3190c206f00d9bd002528a84ff513c3b0ebe3f0695bc133b4d83b1c9c95e89 |
dcm_spec_tools-0.3.1-py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | eb5b62fa0d94f58a4f68312d8c942f1e74872f79ee91d5c507f05c339045f5c1 |
|
MD5 | 55b8e701b27831bb3c1c657d1cf49fb6 |
|
BLAKE2b-256 | a6cc2f51d283dd80e59420837a70e1aa9454e680f7d52cede83114df77f75bce |