升级到fo-dicom 4.0后,尝试从DICOMDIR文件获取DicomDataset时,我开始得到DicomDataException: 'DicomTag doesn't support values'
。
代码如下:
var dicomDirectory = await DicomDirectory.OpenAsync(dicomdirPath);
foreach (var patientRecord in dicomDirectory.RootDirectoryRecordCollection)
{
foreach (var studyRecord in patientRecord.LowerLevelDirectoryRecordCollection)
{
foreach (var seriesRecord in studyRecord.LowerLevelDirectoryRecordCollection)
{
foreach (var imageRecord in seriesRecord.LowerLevelDirectoryRecordCollection)
{
//this is the problematic line
var dicomDataset = imageRecord.GetValue<DicomSequence>(DicomTag.IconImageSequence, 0).Items.First();
//more stuff
}
}
}
}
在以前的版本(3.?)中,我正在做var dicomImage = imageRecord.Get<DicomSequence>(DicomTag.IconImageSequence).Items.First();
,但工作正常,但是在升级后,我收到了过时警告,因此将其更改为推荐的方法,即GetValue。 / p>
如何使用最新版本的fo-dicom获取数据集?
答案 0 :(得分:3)
最后,在深入研究fo-dicom的Gitter和GitHub问题(以及注释中的@BenVoight mentioned)之后,我发现在4.0中,我们应该使用GetSequence(DicomTag.IconImageSequence)
而不是GetValue<DicomSequence>(DicomTag.IconImageSequence)
:检索序列时,将使用GetValue抛出。在项目的Dataset test中可以看到,添加了其他几种Get
方法,例如GetValueOrDefault
,GetValues<T>
而不是GetValue<T[]>
等。 / p>
此外,作为推论,我还发现了与先前版本有关的4.0中的另一个API不兼容(我将其发布在此处,以防有人升级并丢失更改):在处理DicomImage时,我们不应该访问其.Dataset
来检索值,因为它也已弃用。相反,我们应该存储对创建DicomImage的数据集的引用,以便检索标记值。