void onLocalSearchButtonClicked(object a, EventArgs b) { mainWindow.queryPage.study_ClickEvent -= onStudyClicked; mainWindow.queryPage.study_ClickEvent += onLocalStudyClicked; // StudyQueryIn studyQuery = new StudyQueryIn(mainWindow.queryPage); using (var db = new LiteDatabase("./databaseFolder/database.db")) { // Get a collection (or create, if doesn't exist) var col = db.GetCollection <StudyQueryOut>("studies"); var results = col.Find(x => x.StudyInstanceUID.Equals(studyQuery.StudyInstanceUID) || x.PatientID.Equals(studyQuery.PatientID) || x.PatientName.Contains(studyQuery.PatientName) || x.StudyDate.Equals(studyQuery.StudyDate) || x.ModalitiesInStudy.Equals(studyQuery.ModalitiesInStudy) ); mainWindow.queryPage.listView.Items.Clear(); foreach (var result in results) { mainWindow.queryPage.listView.Items.Add(result); } } }
// extern search--------------------------------------------------------------------- // search STUDIES----------------------------------------------- void onSearchButtonClicked(object a, EventArgs b) { mainWindow.queryPage.study_ClickEvent -= onLocalStudyClicked; mainWindow.queryPage.study_ClickEvent += onStudyClicked; // StudyQueryIn studyQuery = new StudyQueryIn(mainWindow.queryPage); // find studies DicomCFindRequest cfind = new DicomCFindRequest(DicomQueryRetrieveLevel.Study); cfind.Dataset.Add(DicomTag.PatientName, studyQuery.PatientName); cfind.Dataset.Add(DicomTag.StudyDate, studyQuery.StudyDate); cfind.Dataset.Add(DicomTag.ModalitiesInStudy, studyQuery.ModalitiesInStudy); cfind.Dataset.Add(DicomTag.StudyInstanceUID, ""); cfind.Dataset.Add(DicomTag.PatientID, studyQuery.PatientID); cfind.Dataset.Add(DicomTag.PatientBirthDate, ""); cfind.Dataset.Add(DicomTag.StudyDescription, ""); int numResponses = 0; cfind.OnResponseReceived = (request, response) => { if (response.HasDataset) { numResponses++; studyResponses.Add(new StudyQueryOut(response)); } if (!response.HasDataset) { Console.WriteLine("got " + numResponses.ToString() + " studies" + Environment.NewLine); } }; var client = new DicomClient(); client.AddRequest(cfind); mainWindow.queryPage.listView.Items.Clear(); studyResponses = new List <StudyQueryOut>(); try { Console.WriteLine("Querying server " + configuration.ip + ":" + configuration.port + " for STUDIES with:" + Environment.NewLine + studyQuery.ToString()); client.Send(configuration.ip, configuration.port, false, configuration.thisNodeAET, configuration.AET); } catch (Exception ec) { Console.WriteLine(ec.Message + Environment.NewLine + ec.StackTrace); } // arrange results in table foreach (StudyQueryOut studyResponse in studyResponses) { mainWindow.queryPage.listView.Items.Add(studyResponse); } }