Как получить RetrieveURL DicomTag серии с fo-dicom? - PullRequest
0 голосов
/ 10 июля 2019

В PACS мы храним файлы DICOM, JPEG и PDF. Я могу без проблем загружать изображения DICOM с помощью библиотеки fo-dicom, но не могу загружать файлы PDF и JPEG.

Я хочу загружать файлы JPEG и PDF по HTTP / FTP / FileSystem, как пилы Амит Джоши. Для этого я добавляю DicomTag «RetrieveURL» в запросе Cfind, но набор данных ответа не имеет этого DicomTag и попадает в исключение. Я не знаю, каков правильный вызов для получения данных этого DicomTag.

Я использую библиотеку fo-dicom, а сервер pacs является dcm4chee.

Код:

    var studyUID = studyUids[0];
                request = CreateSeriesRequestByStudyUID(studyUID);
                var serieUids = new List<string>();
                var serieRetrieveURLs = new List<string>();
                request.OnResponseReceived += (req, response) =>
                {
                   // DebugSerieResponse(response);
                    serieUids.Add(response.Dataset?.GetSingleValue<string>(DicomTag.SeriesInstanceUID));
                    serieRetrieveURLs.Add(response.Dataset?.GetSingleValue<string>(DicomTag.RetrieveURL));
                };
                client.AddRequest(request);
                client.SendAsync(QRSer`enter code here`verHost, QRServerPort, false, AET, QRServerAET).Wait();


 public DicomCFindRequest CreateSeriesRequestByStudyUID(string studyInstanceUID)
        {
            // there is a built in function to create a Study-level CFind request very easily: 
            // return DicomCFindRequest.CreateSeriesQuery(studyInstanceUID);

            // but consider to create your own request that contains exactly those DicomTags that
            // you realy need pro process your data and not to cause unneccessary traffic and IO load:
            var request = new DicomCFindRequest(DicomQueryRetrieveLevel.Series);

            request.Dataset.AddOrUpdate(new DicomTag(0x8, 0x5), "ISO_IR 100");

            // add the dicom tags with empty values that should be included in the result
            request.Dataset.AddOrUpdate(DicomTag.SeriesInstanceUID, "");
            request.Dataset.AddOrUpdate(DicomTag.SeriesDescription, "");
            request.Dataset.AddOrUpdate(DicomTag.RetrieveURL, "");
            request.Dataset.AddOrUpdate(DicomTag.Modality, "");
            request.Dataset.AddOrUpdate(DicomTag.NumberOfSeriesRelatedInstances, "");

            // add the dicom tags that contain the filter criterias
            request.Dataset.AddOrUpdate(DicomTag.StudyInstanceUID, studyInstanceUID);

            return request;
        }

Когда он выполняется, несмотря на то, что DicomTag «RetrieveURL» включен в запрос, он попадает в исключительную ситуацию, как показано на рисунке:

enter image description here

Большое спасибо заранее.

...