【发布时间】:2022-05-27 00:35:57
【问题描述】:
有一个类型为 2 的标签(“必需,如果未知则为空”),其值表示为 Integer String,我想将其留空。我试过像这样创建属性:
var attribute = new DicomIntegerString(DicomTag.SeriesNumber, string.Empty);
文件的存储工作。当我再次读取文件时,以下调用的结果返回null:
var result = dicomDataset.GetString(DicomTag.SeriesNumber); // <-- this is null
如何将元素设置为正确的“零长度”或“空,如果未知”?
谢谢。
【问题讨论】:
-
如何添加属性 - 使用
AddOrUpdate?您是否检查过标签是用 DICOM 标签查看器编写的?另外:您使用的是哪个版本的 fo-dicom? -
感谢你的回复。我只使用
DicomDataset构造函数。我现在检查了dcmdump,并且实际上正在写入标签,并且“没有可用的值”。评论。难道是 fo-dicoms 检索值的方法无法区分“未找到该标签的值”和“找到标签,但值为空”?我正在使用版本5.0.2。 -
是的,我想是的,必须检查。据我记得,如果找不到标签,就会引发异常。返回
null或空标签的空字符串是一个设计决策,因为不存在的值和空值之间没有语义差异(我记得在 pydicom 中进行了类似的讨论),并且应该由客户端以相同的方式处理- 虽然我同意返回一个空字符串对于字符串标签会更方便。 -
确认这是该行为。正如我所写的,在 DICOM 中,没有值的标记和具有空值的标记之间实际上没有区别(至少对于字符串标记而言),因此在这种情况下由库决定返回什么。作为用户,您可以将
null值作为字符串标签的空字符串处理。