是否有一种内置方法可以拒绝 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(或拒绝...)。
我想 运行 一个 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(或拒绝...)。