[英]Storage Commitment with fo-dicom
我正在尝试使用FO-DICOM框架实现存储承诺,但没有结果。 我能够创建N-ACTION请求。 我能够收到N-ACTION回复。 但我不知道如何收到EVENTREPORT 。 任何人都可以帮助我,并以正确的方式解决我的问题?
private DicomStatus _responseStatus;
public void SendRequestForCommitment(string scImageUid)
{
var client = new DicomClient();
var nAction = new DicomNActionRequest(DicomUID.StorageCommitmentPushModelSOPClass,
new UIDGenerator().PrivatelyDefinedSoapInstanceUid(), 1);
var ds = new DicomDataset();
nAction.Dataset = ds;
nAction.Dataset.Add(DicomTag.TransactionUID, new UIDGenerator().uid);
var sps = new DicomDataset();
nAction.Dataset.Add(new DicomSequence(DicomTag.ReferencedSOPSequence, sps));
sps.Add(DicomTag.ReferencedSOPClassUID, DicomUID.SecondaryCaptureImageStorage);
sps.Add(DicomTag.ReferencedSOPInstanceUID, scImageUid);
DicomNActionRequest.ResponseDelegate nActionResponseDelegate = NActionResponse;
nAction.OnResponseReceived = nActionResponseDelegate;
client.AddRequest(nAction);
client.Send("127.0.0.1", 105, false, "myAE", "DVTK_STRC_SCP");
}
private void NActionResponse(DicomNActionRequest request, DicomNActionResponse response)
{
_responseStatus = response.Status;
}
免责声明:我从未使用过FO-DICOM。 下面的代码只是一个伪代码,不是FO-DICOM语法。 我希望查看伪代码,您将能够在工具包中找出确切的成员(属性,方法和事件)。
在您的代码中,您已经在构建请求数据集。 然后,您正在调用client.AddRequest(nAction);
然后client.Send(.......);
。 我假设这将在内部建立连接,关联并将发送NAction请求。
然后你订阅了private void NActionResponse(....)
事件。 我认为这个事件正在被解雇,你正在获得NAction Response。
同样,您应该订阅NEventReport事件(在工具包中查找确切的语法),如下所示:
private void NEventReportReceived(DicomNEventReport request, ......)
{
//Parse the request here.
//Check what files were archived and what were failed.
//Do your stuff accordingly.
//Send NEventReport response conveying the status.
client.SendReleaseRequest();
}
订阅另一个事件来处理发布响应。
private void ReleaseResponseReceived(......)
{
//Close connection
}
正如我在其他答案中所说,你的SCU应该有能力处理NEventReport。 您已通过编写行client.AddRequest(nAction);
将NAction添加到您的客户端client.AddRequest(nAction);
。 检查工具包文档,看看是否还需要为NEventReport添加类似的东西。 我强烈认为不应该这样做; 你只需要订阅一个活动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.