private void PerformQueryOrRelease() { if (_moveQueries.Count > 0) { byte pcid = Associate.FindAbstractSyntax(MoveSopClassUID); if (Associate.GetPresentationContextResult(pcid) == DcmPresContextResult.Accept) { CMoveQuery query = _moveQueries.Dequeue(); DcmDataset dataset = new DcmDataset(Associate.GetAcceptedTransferSyntax(pcid)); switch (query.QueryRetrieveLevel) { case DcmQueryRetrieveLevel.Patient: dataset.AddElementWithValue(DicomTags.QueryRetrieveLevel, "PATIENT"); dataset.AddElementWithValue(DicomTags.PatientID, query.PatientID); break; case DcmQueryRetrieveLevel.Study: dataset.AddElementWithValue(DicomTags.QueryRetrieveLevel, "STUDY"); dataset.AddElementWithValue(DicomTags.PatientID, query.PatientID); dataset.AddElementWithValue(DicomTags.StudyInstanceUID, query.StudyInstanceUID); break; case DcmQueryRetrieveLevel.Series: dataset.AddElementWithValue(DicomTags.QueryRetrieveLevel, "SERIES"); dataset.AddElementWithValue(DicomTags.PatientID, query.PatientID); dataset.AddElementWithValue(DicomTags.StudyInstanceUID, query.StudyInstanceUID); dataset.AddElementWithValue(DicomTags.SeriesInstanceUID, query.SeriesInstanceUID); break; case DcmQueryRetrieveLevel.Image: dataset.AddElementWithValue(DicomTags.QueryRetrieveLevel, "IMAGE"); dataset.AddElementWithValue(DicomTags.PatientID, query.PatientID); dataset.AddElementWithValue(DicomTags.StudyInstanceUID, query.StudyInstanceUID); dataset.AddElementWithValue(DicomTags.SeriesInstanceUID, query.SeriesInstanceUID); dataset.AddElementWithValue(DicomTags.SOPInstanceUID, query.SOPInstanceUID); break; default: break; } _current = query; SendCMoveRequest(pcid, 1, DestinationAE, Priority, dataset); } else { Log.Info("{0} -> Presentation context rejected: {1}", LogID, Associate.GetPresentationContextResult(pcid)); SendReleaseRequest(); } } else { SendReleaseRequest(); } }
private void PerformQueryOrRelease() { if (FindQueries.Count > 0) { Tq query = FindQueries.Dequeue(); _current = query; byte pcid = Associate.FindAbstractSyntax(FindSopClassUID); if (Associate.GetPresentationContextResult(pcid) == DcmPresContextResult.Accept) { DcmDataset dataset = query.ToDataset(Associate.GetAcceptedTransferSyntax(pcid)); SendCFindRequest(pcid, NextMessageID(), Priority, dataset); } else { Log.Info("{0} <- Presentation context rejected: {1}", LogID, Associate.GetPresentationContextResult(pcid)); SendReleaseRequest(); } } else { SendReleaseRequest(); } }