ID элемента и группы для пациента: 0x0010, 0x0020. Вы можете просматривать элементы как есть, и останавливать итерацию, когда найдете нужные значения.
string tag = "";
string op = "";
string val_rep = "";
string war = "";
if (DicomFile.IsDicomFile(f))
{
Sequence se = plik.GetJointDataSets().GetJointSubsequences();
foreach (DataElement el in se)
{
if (el.Tag.Element == "0010" && el.Tag.Group == "0020")
{
tag = el.Tag.ToString(); //tag group and element
op = el.VR.Tag.GetDictionaryEntry().Description;//tag description
val_rep = el.VR.ToString();//value representative
war = el.Value.ToString();//
break;
}
}
}
Это должно установить переменные tag
, op
, val_rep
и war
для вас, когда он найдет тег ID пациента, а затем выйдет из foreach.
Как я уже упоминал здесь несколько раз, я не очень хорошо разбираюсь в библиотеке openDicom, но если предположить, что остальная часть вашего кода верна, это должно дать вам то, что вы хотите. Документация openDICOM для свойств Group и Element класса Tag выглядит несколько странно: «Элемент представляет собой шестнадцатеричное строковое значение формата« eeee ».», Поэтому я предполагаю, что сравниваемые значения должны быть в этом формате, но есть небольшая вероятность того, что форматирование не будет правильным.
Я скажу, что если вы только изучаете C #, и DICOM не является чем-то, что вы вынуждены делать, найдите что-то более легкое для начала, потому что изучение использования стандарта DICOM может быть по меньшей мере настолько запутанным, как изучение нового языка программирования и одновременное их комбинирование - это то, что я бы никому не рекомендовал.