是否有一种内置方法可以拒绝 fo-DICOM 服务器上的某些 SOP 类?

Is there a built in way to reject certain SOP Classes on a fo-DICOM server?

我想 运行 一个 returns DicomStatus SOPClassNotSupported 的 fo-DICOM 服务器,例如,如果我尝试在其上执行 CStoreRequest封装 PDF 文档的 SOP class。我可以预先定义要拒绝的 SOP classes 而不是必须在 OnCStoreRequest() 方法中明确拒绝它吗?

我目前拥有的:

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);
}

上面的代码有效,但如果有一些 official/built 方式来定义要拒绝的 SOP class,我会做不同的事情。

您可以在关联级别控制此行为。在发送 ASSOCIATE_ACCEPT.

之前验证建议的抽象语法
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 在收到的关联中保存所有建议的表示上下文。您逐一枚举。每个建议的表示上下文都包含抽象语法和建议的传输语法列表。您可以遍历传输语法列表并设置您喜欢的;因为你的问题不是关于它的,所以我在代码中跳过了那部分。

如果您可以接受 (receive/process) 建议的抽象语法和传输语法对,您可以通过设置其结果来接受该特定的表示上下文。如果你不这样做,请根据原因相应地设置结果。

最后,发送 ASSOCIATE_ACCEPT(或拒绝...)。