Как получить полный строковый элемент элемента 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());