Skip to content

Instantly share code, notes, and snippets.

@Ravenheart
Last active May 29, 2024 16:08
Show Gist options
  • Save Ravenheart/c7a8a90e20ec80c787ec51584bf720f3 to your computer and use it in GitHub Desktop.
Save Ravenheart/c7a8a90e20ec80c787ec51584bf720f3 to your computer and use it in GitHub Desktop.
public IEnumerable<DicomCMoveResponse> OnCMoveRequest(DicomCMoveRequest request)
{
var dcm = request.Dataset;
string studyUid = dcm.Get<string>(DicomTag.StudyInstanceUID);
string studyPath = Path.Combine(Settings.Default.StorageFolder, studyUid);
if (!Directory.Exists(studyPath))
{
yield return new DicomCMoveResponse(request, DicomStatus.ProcessingFailure);
yield break;
}
if (!JoystickSCP.Modalities.ContainsKey(request.DestinationAE))
{
yield return new DicomCMoveResponse(request, DicomStatus.QueryRetrieveMoveDestinationUnknown);
yield return new DicomCMoveResponse(request, DicomStatus.ProcessingFailure);
yield break;
}
var modality = JoystickSCP.Modalities[request.DestinationAE];
var files = Directory.EnumerateFiles(studyPath, "*.dcm", SearchOption.TopDirectoryOnly);
bool fail = false;
foreach (string file in files)
{
DicomClient client = new DicomClient();
var cstore = new DicomCStoreRequest(file, DicomPriority.High);
cstore.OnResponseReceived = delegate(DicomCStoreRequest req, DicomCStoreResponse res)
{
if (res.Status == DicomStatus.ProcessingFailure)
{
fail = true;
}
};
if (fail)
{
yield return new DicomCMoveResponse(request, DicomStatus.ProcessingFailure);
yield break;
}
client.AddRequest(cstore);
yield return new DicomCMoveResponse(request, DicomStatus.Pending);
client.Send(modality.ModalityHost, modality.ModalityPort, false, Settings.Default.ServerAET, modality.ModalityAET);
}
yield return new DicomCMoveResponse(request, DicomStatus.Success);
}
@mizan14
Copy link

mizan14 commented May 29, 2024

where is JoystickSCP?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment