2017-02-16 13 views
2

FO-DICOMフレームワークでストレージコミットメントを実装しようとしていますが、結果はありません。私はN-ACTION要求を作成することができます。私はN-ACTION応答を受け取ることができます。しかし、EVENTREPORTの受信方法はわかりません。誰でも私を助け、正しい方法で私に対処することができますか?fo-dicomを使ったストレージコミット

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; 
} 
+1

あなたはこれまで何を持っていますか? – SaggingRufus

+0

私のコードが含まれています:メソッドSendRequestForCommitmentはストレージにNACTION要求を送信し、scImageUid引数はセカンダリキャプチャイメージの識別子です.NACTION呼び出し....の応答を受け取ったNActionResponseが安全に保存されたときに通知します。 EVENTREPORTメッセージをストレージからフックアップするには? –

+0

広い意味で私はその動機づけに同意しないので、質問は終了すると投票されたので、失望しています。 fo-dicomが私がやろうとしていることを理解できるかもしれないことを知っている人...私は、ストレージから返されたEventReportを受け取って解析する必要があり、誰かがサービスを使ってこのタスクを達成する方法を知っているかどうかを知りたいと思います/機能はすでにfo-di com –

答えて

2

免責事項:私は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 
} 

私はotherの回答で述べたように、あなたのSCUはNEventReportを処理する能力を持っている必要があります。行にclient.AddRequest(nAction);と書くことで、クライアントにNActionを追加しました。ツールキットのマニュアルを参照して、NEventReportにも同様のものを追加する必要があるかどうかを確認してください。私はこれが必要ではないと強く思っています。あなたはちょうどイベントを購読する必要があります。

関連する問題