Ejemplo n.º 1
0
        /// <summary>
        /// Add additional query parameters to the <paramref name="conditions"/> collection
        /// Study Level: (ModalitiesInStudy, NumberOfStudyRelatedSeries, NumberOfStudyRelatedInstances...)
        /// Series Level:
        /// Instance Level:
        /// </summary>
        /// <param name="conditions">
        /// A collection of <see cref="IEnumerable<IMatchingCondition>"/> that contains the conditions for the query.
        /// </param>
        /// <param name="options">
        /// An object of <see cref="IQueryOptions"/> with query options.
        /// </param>
        /// <param name="queryLevel">
        /// A <see cref="String"/> representing the DICOM query level (e.g. Study, Series, Instance)
        /// </param>
        protected virtual IEnumerable <IMatchingCondition> AddAdditionalQueryParameters
        (
            IEnumerable <IMatchingCondition> conditions,
            IQueryOptions options,
            string queryLevel
        )
        {
            List <IMatchingCondition> matchingConditions = new List <IMatchingCondition> (conditions);

            if (queryLevel == ObjectQueryLevelConstants.Study)
            {
                if (conditions.FirstOrDefault(n => n.KeyTag == DicomTag.ModalitiesInStudy) != null &&
                    conditions.FirstOrDefault(n => n.KeyTag == DicomTag.Modality) == null)
                {
                    var condition = new SingleValueMatching( );

                    condition.KeyTag = (uint)DicomTag.Modality;
                    condition.VR     = DicomTag.Modality.DictionaryEntry.ValueRepresentations.First( );

                    matchingConditions.Add(condition);
                }

                if (conditions.FirstOrDefault(n => n.KeyTag == DicomTag.NumberOfStudyRelatedSeries) != null &&
                    conditions.FirstOrDefault(n => n.KeyTag == DicomTag.SeriesInstanceUID) == null)
                {
                    var condition = new SingleValueMatching( );

                    condition.KeyTag = (uint)DicomTag.SeriesInstanceUID;
                    condition.VR     = DicomTag.SeriesInstanceUID.DictionaryEntry.ValueRepresentations.First( );

                    matchingConditions.Add(condition);
                }

                if (conditions.FirstOrDefault(n => n.KeyTag == DicomTag.NumberOfStudyRelatedInstances) != null &&
                    conditions.FirstOrDefault(n => n.KeyTag == DicomTag.SOPInstanceUID) == null)
                {
                    var condition = new SingleValueMatching( );

                    condition.KeyTag = (uint)DicomTag.SOPInstanceUID;
                    condition.VR     = DicomTag.SOPInstanceUID.DictionaryEntry.ValueRepresentations.First( );

                    matchingConditions.Add(condition);
                }
            }
            else if (queryLevel == ObjectQueryLevelConstants.Series)
            {
                if (conditions.FirstOrDefault(n => n.KeyTag == DicomTag.NumberOfSeriesRelatedInstances) != null &&
                    conditions.FirstOrDefault(n => n.KeyTag == DicomTag.SOPInstanceUID) == null)
                {
                    var condition = new SingleValueMatching();

                    condition.KeyTag = (uint)DicomTag.SOPInstanceUID;
                    condition.VR     = DicomTag.SOPInstanceUID.DictionaryEntry.ValueRepresentations.First();

                    matchingConditions.Add(condition);
                }
            }

            return(matchingConditions);
        }
        public SingleResultQueryCommand <InstanceMetadata> CreateGetMetadataCommand(IObjectId instance)
        {
            TableKey            studyTable     = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            TableKey            seriesTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.SeriesTableName);
            TableKey            instanceTable  = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);
            QueryBuilder        queryBuilder   = CreateQueryBuilder( );
            SingleValueMatching uidMatching    = new SingleValueMatching( );
            ColumnInfo          metadataColumn = SchemaProvider.GetColumn(instanceTable.Name,
                                                                          StorageDbSchemaProvider.MetadataTable.MetadataColumn);

            queryBuilder.ProcessColumn(instanceTable, seriesTable.ModelKeyColumns[0], uidMatching, new string[] { instance.SeriesInstanceUID });
            queryBuilder.ProcessColumn(instanceTable, studyTable.ModelKeyColumns[0], uidMatching, new string[] { instance.StudyInstanceUID });
            queryBuilder.ProcessColumn(instanceTable, instanceTable.ModelKeyColumns[0], uidMatching, new string[] { instance.SOPInstanceUID });
            queryBuilder.ProcessColumn(instanceTable, metadataColumn);

            return(new SingleResultQueryCommand <InstanceMetadata> (CreateCommand(queryBuilder.GetQueryText(instanceTable)),
                                                                    instanceTable,
                                                                    metadataColumn.ToString( ),
                                                                    CreateMetadata));

            //IDbCommand command  = CreateCommand ( ) ;
            //var        sopParam = CreateParameter ( "@" + DB.Schema.StorageDbSchemaProvider.MetadataTable.SopInstanceColumn, instance.SOPInstanceUID ) ;


            // command.CommandText = string.Format ( "SELECT {0} FROM {1} WHERE {2}=@{2}",
            //                                      DB.Schema.StorageDbSchemaProvider.MetadataTable.MetadataColumn,
            //                                      DB.Schema.StorageDbSchemaProvider.MetadataTable.TableName,
            //                                      DB.Schema.StorageDbSchemaProvider.MetadataTable.SopInstanceColumn ) ;

            //command.Parameters.Add ( sopParam );

            //SetConnectionIfNull ( command ) ;

            //return command ;
        }
        public virtual IDataAdapterCommand <long> CreateSelectStudyKeyCommand(IStudyId study)
        {
            TableKey            studyTable   = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            QueryBuilder        queryBuilder = CreateQueryBuilder( );
            SingleValueMatching uidMatching  = new SingleValueMatching( );


            queryBuilder.ProcessColumn(studyTable, studyTable.ModelKeyColumns [0], uidMatching, new string[] { study.StudyInstanceUID });

            return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(studyTable)),
                                                        studyTable.Name,
                                                        studyTable.KeyColumn.Name));
        }
        public virtual IDataAdapterCommand <long> CreateSelectInstanceKeyCommand(IObjectId instance)
        {
            QueryBuilder        queryBuilder   = CreateQueryBuilder( );
            TableKey            sourceTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);
            SingleValueMatching sopUIDMatching = new SingleValueMatching( );


            queryBuilder.ProcessColumn(sourceTable, sourceTable.ModelKeyColumns[0], sopUIDMatching, new string[] { instance.SOPInstanceUID });


            return(new SingleResultQueryCommand <long> (CreateCommand(queryBuilder.GetQueryText(sourceTable)),
                                                        sourceTable.Name,
                                                        sourceTable.KeyColumn.Name));
        }
Ejemplo n.º 5
0
        protected virtual void ProcessSelectObjectInstance
        (
            IObjectId objectInstance,
            QueryBuilder queryBuilder,
            TableKey objectInstanceTable,
            TableKey sourceTable
        )
        {
            SingleValueMatching uidMatching = new SingleValueMatching( );


            queryBuilder.ProcessColumn(sourceTable,
                                       objectInstanceTable.ModelKeyColumns [0],
                                       uidMatching,
                                       new string[] { objectInstance.SOPInstanceUID });
        }
Ejemplo n.º 6
0
        protected virtual void ProcessSelectSeries
        (
            ISeriesId series,
            QueryBuilder queryBuilder,
            TableKey seriesTable,
            TableKey sourceTable
        )
        {
            SingleValueMatching uidMatching = new SingleValueMatching( );


            queryBuilder.ProcessColumn(sourceTable,
                                       seriesTable.ModelKeyColumns [0],
                                       uidMatching,
                                       new string[] { series.SeriesInstanceUID });
        }
Ejemplo n.º 7
0
        protected virtual void ProcessSelectStudy
        (
            IStudyId study,
            QueryBuilder queryBuilder,
            TableKey studyTable,
            TableKey sourceTable
        )
        {
            SingleValueMatching uidMatching = new SingleValueMatching( );


            queryBuilder.ProcessColumn(sourceTable,
                                       studyTable.ModelKeyColumns [0],
                                       uidMatching,
                                       new string[] { study.StudyInstanceUID });
        }
        public ResultSetQueryCommand <InstanceMetadata> CreateGetMetadataCommand(ISeriesId series)
        {
            TableKey            studyTable     = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.StudyTableName);
            TableKey            seriesTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.SeriesTableName);
            TableKey            sourceTable    = SchemaProvider.GetTableInfo(StorageDbSchemaProvider.ObjectInstanceTableName);
            QueryBuilder        queryBuilder   = CreateQueryBuilder( );
            SingleValueMatching uidMatching    = new SingleValueMatching( );
            ColumnInfo          metadataColumn = SchemaProvider.GetColumn(sourceTable.Name,
                                                                          StorageDbSchemaProvider.MetadataTable.MetadataColumn);

            queryBuilder.ProcessColumn(sourceTable, seriesTable.ModelKeyColumns[0], uidMatching, new string[] { series.SeriesInstanceUID });
            queryBuilder.ProcessColumn(sourceTable, studyTable.ModelKeyColumns[0], uidMatching, new string[] { series.StudyInstanceUID });
            queryBuilder.ProcessColumn(sourceTable, metadataColumn);

            return(new ResultSetQueryCommand <InstanceMetadata> (CreateCommand(queryBuilder.GetQueryText(sourceTable)),
                                                                 sourceTable,
                                                                 new string [] { metadataColumn.ToString( ) },
                                                                 CreateMetadata));
        }