public static DicomRTReferencedSeries Read(DicomDataset ds) { var seriesInstanceUID = ds.GetStringOrEmpty(DicomTag.SeriesInstanceUID); var contourImages = new List <DicomRTContourImageItem>(); if (ds.Contains(DicomTag.ContourImageSequence)) { // Changed for new OSS fo-dicom-desktop var seq = ds.GetSequence(DicomTag.ContourImageSequence); //var seq = ds.Get<DicomSequence>(DicomTag.ContourImageSequence); foreach (var item in seq) { var contourImageItem = DicomRTContourImageItem.Read(item); contourImages.Add(contourImageItem); } } return(new DicomRTReferencedSeries(seriesInstanceUID, contourImages)); }
/// <summary> /// Read an RT Contour Item from the given dataset. /// </summary> /// <param name="ds"></param> /// <returns></returns> public static DicomRTContourItem Read(DicomDataset ds) { // Changed for new OSS fo-dicom-desktop var numberOfPoints = ds.GetSingleValue <int>(DicomTag.NumberOfContourPoints); // fo-dicom internally parses strings to decimal using InvariantCulture and then converts to double var data = ds.GetValues <double>(DicomTag.ContourData); //var numberOfPoints = ds.Get<int>(DicomTag.NumberOfContourPoints); //// fo-dicom internally parses strings to decimal using InvariantCulture and then converts to double //var data = ds.Get<double[]>(DicomTag.ContourData); var geometricType = ds.GetTrimmedStringOrEmpty(DicomTag.ContourGeometricType); List <DicomRTContourImageItem> listImages = new List <DicomRTContourImageItem>(); if (ds.Contains(DicomTag.ContourImageSequence)) { // Changed for new OSS fo-dicom-desktop var seqImages = ds.GetSequence(DicomTag.ContourImageSequence); //var seqImages = ds.Get<DicomSequence>(DicomTag.ContourImageSequence); foreach (var item in seqImages) { listImages.Add(DicomRTContourImageItem.Read(item)); } } return(new DicomRTContourItem(data, numberOfPoints, geometricType, listImages)); }