В 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» включен в запрос, он попадает в исключительную ситуацию, как показано на рисунке:
Большое спасибо заранее.