fo-dicom C-Move Query does not call CStoreRequestCallback

575 views Asked by At

var client = new DicomClient();

        var pcs = DicomPresentationContext.GetScpRolePresentationContextsFromStorageUids(
            DicomStorageCategory.Image,
            DicomTransferSyntax.ExplicitVRLittleEndian,
            DicomTransferSyntax.ImplicitVRLittleEndian,
            DicomTransferSyntax.ImplicitVRBigEndian);
        client.AdditionalPresentationContexts.AddRange(pcs);

        DicomDataset dataset = null;
        client.OnCStoreRequest = request =>
        {
            dataset = request.Dataset;
            return new DicomCStoreResponse(request, DicomStatus.Success);
        };

       
        var get = new DicomCMoveRequest(QRServer,
            StudyId,
            SeriesUd);


        var handle = new ManualResetEventSlim();
        get.OnResponseReceived = (request, response) =>
        {
            handle.Set();
        };
        client.AddRequest(get);
        client.Send(ipAddress, 104, false, AEClient, QRServer);
        handle.Wait();
        Thread.Sleep(10000);

In the above code snippet if AEClient & QRServer are same /same AETitle ,CMoveResponse succeded but not getting any CStoreRequest

If AEClient & QRServer are different , getting error like Move destination Unknown

1

There are 1 answers

0
gofal3 On

There are several DICOM-Protocols how to request data: C-Get and C-Move. they behave completely different. See for example here for a good explanation: https://saravanansubramanian.com/dicomtutorials/

A C-Move requests tells the server to send the images to a specific AETitle (the MoveDestination) in a new association. So you have to start a new instance of a StoreSCP server to receive the image. Therefore the server of course has to know the AETitle because from the MoveDestination the server has to know the IP and Port, too.

A C-Get on the other hand returns the data on the same accociation. In that case you will get the OnCStoreRequestCallback invoked.