Как получить полный строковый элемент элемента dicom с помощью fo-dicom?

Я пытаюсь получить строку плана лучевой терапии в файле dicom с fo-dicom. Кажется, это не так сложно для вас, но я застреваю, потому что не могу найти правильную команду.

Я фильтровал план, например, для Leaf/Jaw Positions, Строковое значение, отображаемое в режиме отладки VS, равно "-35//35", и я также нахожу его в редакторе DICOM. Но вывод только дает мне значение -35. Мой код похож

var Leaf = file.Dataset.Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamSequence).Items[0].
            Get<Dicom.DicomSequence>(Dicom.DicomTag.ControlPointSequence).Items[0].
            Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamLimitingDevicePositionSequence).Items[0].
            Get<string>(Dicom.DicomTag.LeafJawPositions);

Таким образом, с этим я получаю только первое упомянутое значение. Изменяя последний Get<string>() в Get<Dicom.DicomElement>() или что-то еще в отладке overwatch Я снова вижу всю строку, но не могу распечатать.

Как я посмотрел здесь, C# Разделить строку на другую строку или Самый простой способ разбить строку на новые строки в.NET? Я попробовал это с редактированием моего кода в

string Leaf = file.Dataset.Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamSequence).Items[0].
            Get<Dicom.DicomSequence>(Dicom.DicomTag.ControlPointSequence).Items[0].
            Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamLimitingDevicePositionSequence).Items[0].
            Get<Dicom.DicomElement>(Dicom.DicomTag.LeafJawPositions);

Но string не может принять Dicom.DicomElement как строка и с Get<string>() в последней строке я снова получаю только вырезанную строку.

Надеюсь, вы можете помочь найти, где я что-то не так сделал и как получить полную строку этого предмета.

1 ответ

Решение

На https://github.com/fo-dicom/fo-dicom/issues/491 они исправляют проблему с помощью нового API, но при условии, что вы используете более старую версию,

string Leaf = String.Join(@"\",
              ...
              Get<string[]>(Dicom.DicomTag.LeafJawPositions));

должен вернуть то, что вы ожидаете.

PS я пользуюсь string метод расширения для Join:

public static string Join(this IEnumerable<string> strings, string sep) => String.Join(sep, strings.ToArray());
public static string Join(this IEnumerable<string> strings, char sep) => String.Join(sep.ToString(), strings.ToArray());
Другие вопросы по тегам