首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种内置的方法来拒绝fo-DICOM服务器上的某些SOP类?

有没有一种内置的方法来拒绝fo-DICOM服务器上的某些SOP类?
EN

Stack Overflow用户
提问于 2020-02-03 22:46:49
回答 1查看 177关注 0票数 2

我想运行一个返回DicomStatus SOPClassNotSupported的fo-DICOM服务器,例如,如果我尝试对封装的CStoreRequest文档使用SOP类对其执行CStoreRequest操作。我是否可以预先定义要拒绝的SOP类,而不必在OnCStoreRequest()方法中显式拒绝它?

到目前为止,我所拥有的:

代码语言:javascript
复制
public DicomCStoreResponse OnCStoreRequest(DicomCStoreRequest request)
{
   DicomStatus dicomStatus = DicomStatus.Success;
   var SOPClassUID = request.Dataset.GetSingleValue<DicomUID>(DicomTag.SOPClassUID);
   if(SOPClassUID == DicomUID.EncapsulatedPDFStorage) {
      dicomStatus = DicomStatus.SOPClassNotSupported;
   }
   return new DicomCStoreResponse(request, dicomStatus);
}

上面的代码可以工作,但如果有一些官方的/内置的方式来定义要拒绝的SOP类,我会用不同的方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-03 23:08:16

您可以在关联级别控制此行为。在发送ASSOCIATE_ACCEPT之前验证建议的抽象语法。

代码语言:javascript
复制
public Task OnReceiveAssociationRequestAsync(DicomAssociation association)
{
    foreach(var pc in association.PresentationContexts)
    {
        if(pc.AbstractSyntax == DicomUID.EncapsulatedPDFStorage)
            pc.SetResult(DicomPresentationContextResult.RejectAbstractSyntaxNotSupported);
        else
        {
            pc.AcceptTransferSyntaxes(AcceptedImageTransferSyntaxes);
            pc.SetResult(DicomPresentationContextResult.Accept);
        }
    }

    return SendAssociationAcceptAsync(association);
}

DicomAssociation association是您收到的ASSOCIATION_REQUEST。association.PresentationContexts在接收到的关联中保存所有建议的表示上下文。您将逐一枚举每一个。每个提议的呈现上下文包含抽象语法和提议的传输语法的列表。您可以遍历传输语法列表并设置您喜欢的语法;由于您的问题与此无关,因此我在代码中跳过了这一部分。

如果您可以接受(接收/处理)建议的抽象语法和传输语法对,则可以通过设置其结果来接受该特定的表示上下文。如果没有,请相应地使用原因设置结果。

最后,发送ASSOCIATE_ACCEPT (或reject...)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60041552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档