It is possible to query for Patient Information using a DICOM C-FIND operation with Modality as a filter, in order to find all patients who have ever had a series with a particular modality. This can be done by a STUDY root STUDY level C-FIND query. A DoRawQuery(QueryDataSet) method in COM version of DicomObjects or Find(QueryDataSet) method in .NET version is required with ModatiesInStudy field (0008,0061) being explicitly added as a modality to search for.

Note that you may only specify one modality in the filter (asking for all studies which include this modality), but you may get multiple values back in this field (all the modalities in the study). Also, if a patient has multiple studies which match the modality then you will get one result for each study which includes that modality.


 DicomQuery q = new DicomQuery();
 DicomDataSet queryDataSet;
 DicomDataSetCollection results;
 q.Node = "";
 q.Port = 104;

 q.CallingAE = "SCU";
 q.CalledAE = "SCP";
 q.Root = QueryRoot.Study;
 q.Level = QueryLevel.STUDY;
 q.PatientID = "1234";

 queryDataSet = q.QueryDataSet();
 queryDataSet.Add(Keyword.ModalitiesInStudy, "CT");

 results = q.Find(queryDataSet);


 Dim Query As New DicomQuery
 Dim QueryDataSet As New DicomDataSet
 Dim QueryResults As DicomDataSets
 Query.Node = ""
 Query.Port = 104
 Query.CallingAE = "SCU"
 Query.CalledAE = "SCP"
 Query.Root = "STUDY"
 Query.Level = "STUDY" 
 Query.PatientID = "1234"
 QueryDataSet.Attributes.Add &H0008, &H0061, "CT"
 QueryResults = Query.DoRawQuery(QueryDataSet)