/// <summary> /// Assumes input stream contains gzipped DICOM file contents. /// </summary> /// <param name="inputStream">The input stream.</param> /// <returns></returns> public DecodedSegmentationTaskData Decode(Stream inputStream) { // Get Dicom Files var dicomFolders = DicomZipSeries.DecompressSegmentationData(inputStream); var output = LoadVolumes(dicomFolders); // The primary series is always the first volume in the input/output data // we take the first set of DICOM identifiers of that series. var firstIdentifiers = output.First().Value.Identifiers.First(); return(new DecodedSegmentationTaskData(output, firstIdentifiers.Series.SeriesInstanceUid, firstIdentifiers.Patient.Id)); }
/// <summary> /// Given a compressed package of DICOM data, reads MedicalVolumes from the package. /// </summary> /// <param name="compressedData"></param> /// <returns></returns> public static IReadOnlyDictionary <string, MedicalVolume> LoadCompressedImageSeries(byte[] compressedData) { var dicomFolders = DicomZipSeries.DecompressSegmentationData(compressedData); var result = new Dictionary <string, MedicalVolume>(); foreach (var(channelId, content) in dicomFolders) { result.Add(channelId, LoadVolume(content)); } return(result); }