簡體   English   中英

嘗試獲取DicomDataset時獲取“ DicomTag不支持值”

[英]Getting “DicomTag doesn't support values” when trying to obtain DicomDataset

升級到fo-dicom 4.0后,我開始獲得DicomDataException: 'DicomTag doesn't support values'嘗試從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。

如何使用fo-dicom的當前版本獲取數據集?

最后,在仔細研究了fo-dicom的Gitter和GitHub問題(以及注釋中提到@BenVoight )之后,我發現在4.0中,我們應該使用GetSequence(DicomTag.IconImageSequence)而不是GetValue<DicomSequence>(DicomTag.IconImageSequence) :檢索序列時,將使用GetValue拋出。 在項目的Dataset測試中可以看到,還添加了其他一些Get方法,例如GetValueOrDefaultGetValues<T>而不是GetValue<T[]>等。

此外,作為推論,我還發現了與先前版本有關的4.0中的另一個API不兼容(如果有人升級並丟失更改,我會在此處發布它):處理DicomImage時,我們不應訪問其.Dataset檢索值,因為它也已棄用。 相反,我們應該存儲對創建DicomImage的數據集的引用,以便檢索標簽值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM