internal QRResponseData(QueryRetrieveLevel queryLevel) { //fill response values from the DICOM request data QueryLevel = queryLevel; TagsToFill = new List <uint>(); SPSSTags = new List <uint>(); ResponseRows = new List <Dictionary <uint, object> >(); FilesToSend = new Queue <SendableImage>(); }
public DcmDataset ToDataset(DicomTransferSyntax ts) { DcmDataset dataset = new DcmDataset(ts); if (QueryRetrieveLevel != DcmQueryRetrieveLevel.Worklist) { dataset.AddElementWithValue(DicomTags.QueryRetrieveLevel, QueryRetrieveLevel.ToString().ToUpper()); } dataset.SaveDicomFields(this); AdditionalMembers(dataset); return(dataset); }
/// <summary> /// Create a new QRRequestData at the given query/retrieve level that will query with the given find level. /// </summary> /// <param name="queryRetrieveLevel">This is the query retrieve level for the request, which determines how the SCP /// will respond.</param> /// <param name="findLevel">This is the desired level of granularity for responses that are being requested.</param> public QRRequestData(QueryRetrieveLevel queryRetrieveLevel, QRLevelType findLevel) { QueryLevel = queryRetrieveLevel; FindLevel = findLevel; FillTagsList(null); SearchTerms = new Dictionary <uint, object>(); foreach (uint tag in TagsToFill) { SearchTerms[tag] = null; } }
/// <summary> /// Checks for other query retrieve levels already used, returns exception if trying to add a different level. /// Sets the QueryRetrieveLevel tag to the <paramref name="queryRetrieveLevel"/> if it's not invalid. /// </summary> /// <param name="queryRetrieveLevel">The query retrieve level.</param> /// <exception cref="InvalidOperationException">If adding an instance of a different Query Level</exception> private void CheckForOtherLevel(QueryRetrieveLevel queryRetrieveLevel) { QueryRetrieveLevel currentLevel = IodBase.ParseEnum(_dicomAttributeCollection[DicomTags.QueryRetrieveLevel].GetString(0, String.Empty), QueryRetrieveLevel.None); // Use the highest (most granular) query level (Image > Series > Study > Patient) if (queryRetrieveLevel > currentLevel) { IodBase.SetAttributeFromEnum(_dicomAttributeCollection[DicomTags.QueryRetrieveLevel], queryRetrieveLevel); } else if (queryRetrieveLevel != currentLevel) { string message = String.Format("The current query/retrieve level is '{0}' and cannot be set to {1}", currentLevel, queryRetrieveLevel); throw new InvalidOperationException(message); } }
/// <summary> /// Checks for other query retrieve levels already used, returns exception if trying to add a different level. /// Sets the QueryRetrieveLevel tag to the <paramref name="queryRetrieveLevel"/> if it's not invalid. /// </summary> /// <param name="queryRetrieveLevel">The query retrieve level.</param> /// <exception cref="InvalidOperationException">If adding an instance of a different Query Level</exception> private void CheckForOtherLevel(QueryRetrieveLevel queryRetrieveLevel) { QueryRetrieveLevel currentLevel = IodBase.ParseEnum(_dicomAttributeCollection[DicomTags.QueryRetrieveLevel].GetString(0, String.Empty), QueryRetrieveLevel.None); // Use the highest (most granular) query level (Image > Series > Study > Patient) if (queryRetrieveLevel > currentLevel) { IodBase.SetAttributeFromEnum(_dicomAttributeCollection[DicomTags.QueryRetrieveLevel], queryRetrieveLevel); } else if(queryRetrieveLevel != currentLevel) { string message = String.Format("The current query/retrieve level is '{0}' and cannot be set to {1}", currentLevel, queryRetrieveLevel); throw new InvalidOperationException(message); } }