示例#1
0
 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>();
 }
示例#2
0
        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);
        }
示例#3
0
        /// <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;
            }
        }
示例#4
0
        /// <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);
            }
        }
示例#5
0
        /// <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);
			}
        }