/// <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)); }
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 }); }
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 }); }
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)); }