コード例 #1
0
        private static NameValueCollection BuildFindQueryString(AimeSearchCriteria searchCriteria)
        {
            string annotationContainerUids = String.Empty;

            if (!String.IsNullOrEmpty(searchCriteria.AnnotationContainreUid))
            {
                annotationContainerUids = "'" + searchCriteria.AnnotationContainreUid + "'";
            }
            var keyValueCollection = new Collection <KeyValuePair <string, string> >();

            if (!String.IsNullOrEmpty(searchCriteria.Username))
            {
                keyValueCollection.Add(new KeyValuePair <string, string>("username", searchCriteria.Username));
            }
            if (!String.IsNullOrEmpty(searchCriteria.AnatomicEntity))
            {
                keyValueCollection.Add(new KeyValuePair <string, string>("anatomicalEntity",
                                                                         searchCriteria.AnatomicEntity));
            }
            if (!String.IsNullOrEmpty(searchCriteria.AnatomicEntityCharacteristic))
            {
                keyValueCollection.Add(new KeyValuePair <string, string>("anatomicEntityCharacteristic",
                                                                         searchCriteria.AnatomicEntityCharacteristic));
            }
            if (!String.IsNullOrEmpty(searchCriteria.ImagingObservationEntity))
            {
                keyValueCollection.Add(new KeyValuePair <string, string>("imagingObservationEntity",
                                                                         searchCriteria.ImagingObservationEntity));
            }
            if (!String.IsNullOrEmpty(searchCriteria.ImagingObservationEntityCharacteristic))
            {
                keyValueCollection.Add(new KeyValuePair <string, string>("imagingObservationEntityCharacteristic",
                                                                         searchCriteria.
                                                                         ImagingObservationEntityCharacteristic));
            }
            if (!String.IsNullOrEmpty(searchCriteria.StudyInstanceUid))
            {
                keyValueCollection.Add(new KeyValuePair <string, string>("studyInstanceUID",
                                                                         searchCriteria.StudyInstanceUid));
            }
            if (!String.IsNullOrEmpty(searchCriteria.PatientName))
            {
                keyValueCollection.Add(new KeyValuePair <string, string>("patientName", searchCriteria.PatientName));
            }
            if (!String.IsNullOrEmpty(searchCriteria.PatientId))
            {
                keyValueCollection.Add(new KeyValuePair <string, string>("patientID", searchCriteria.PatientId));
            }
            if (!String.IsNullOrEmpty(searchCriteria.AnnotationName))
            {
                keyValueCollection.Add(new KeyValuePair <string, string>("annotationName", searchCriteria.AnnotationName));
            }
            if (!String.IsNullOrEmpty(annotationContainerUids))
            {
                keyValueCollection.Add(new KeyValuePair <string, string>("annotationContainerUID",
                                                                         annotationContainerUids));
            }

            return(BuildQueryString(keyValueCollection));
        }
コード例 #2
0
        public static List<AimeAnnotationContainer> Find(string apiKey, AimeSearchCriteria searchCriteria)
        {
            using (var webClient = new WebClient())
            {
                string url = SearchSettings.Default.AimDataServiceUrl;

                if (String.IsNullOrEmpty(url))
                    //url = "http://imaging.cci.emory.edu/rest/aime-test/middleware/services/AIME/AIME4";
                    return new List<AimeAnnotationContainer>();

                if (!url.EndsWith("/"))
                    url = url.Trim() + "/";

                // Add encoded credentials to header as basic authentication
                webClient.Headers.Add("api_key", apiKey);
                webClient.Headers["Content-Type"] = "text/plain; charset=UTF-8";

                NameValueCollection queryString = BuildFindQueryString(searchCriteria);

                Platform.Log(LogLevel.Debug, "Find on AIM Data Service: " + url + "query/find?" + queryString);

                using (var ms = new MemoryStream(webClient.DownloadData(url + "query/find?" + queryString)))
                {
                    var serializer = new DataContractJsonSerializer(typeof (List<AimeAnnotationContainer>));

                    return (List<AimeAnnotationContainer>) serializer.ReadObject(ms);
                }
            }
        }
コード例 #3
0
        public static List <AimeAnnotationContainer> Find(string apiKey, AimeSearchCriteria searchCriteria)
        {
            using (var webClient = new WebClient())
            {
                string url = SearchSettings.Default.AimDataServiceUrl;

                if (String.IsNullOrEmpty(url))
                {
                    //url = "http://imaging.cci.emory.edu/rest/aime-test/middleware/services/AIME/AIME4";
                    return(new List <AimeAnnotationContainer>());
                }

                if (!url.EndsWith("/"))
                {
                    url = url.Trim() + "/";
                }

                // Add encoded credentials to header as basic authentication
                webClient.Headers.Add("api_key", apiKey);
                webClient.Headers["Content-Type"] = "text/plain; charset=UTF-8";

                NameValueCollection queryString = BuildFindQueryString(searchCriteria);

                Platform.Log(LogLevel.Debug, "Find on AIM Data Service: " + url + "query/find?" + queryString);

                using (var ms = new MemoryStream(webClient.DownloadData(url + "query/find?" + queryString)))
                {
                    var serializer = new DataContractJsonSerializer(typeof(List <AimeAnnotationContainer>));

                    return((List <AimeAnnotationContainer>)serializer.ReadObject(ms));
                }
            }
        }
コード例 #4
0
            private List <AimeAnnotationContainer> Find()
            {
                var results = new List <AimeAnnotationContainer>();
                AimeSearchCriteria searchCriteria = Coordinator.CriteriaComponent.SearchCriteria;
                ApiKeyCredentials  credentials    = AimDataServiceLoginTool.Credentials;

                if (!String.IsNullOrEmpty(credentials.ApiKey))
                {
                    results = AimeWebService.Find(credentials.ApiKey, searchCriteria);
                }
                return(results);
            }
コード例 #5
0
        public static string Retrieve(string apiKey, AimeSearchCriteria searchCriteria)
        {
            using (var webClient = new WebClient())
            {
                string url = SearchSettings.Default.AimDataServiceUrl;

                if (String.IsNullOrEmpty(url))
                {
                    //url = "http://imaging.cci.emory.edu/rest/aime-test/middleware/services/AIME/AIME4";
                    return(null);
                }

                if (!url.EndsWith("/"))
                {
                    url = url.Trim() + "/";
                }

                // Add encoded credentials to header as basic authentication
                webClient.Headers.Add("api_key", apiKey);
                webClient.Headers["Content-Type"] = "text/plain; charset=UTF-8";

                NameValueCollection queryString = BuildFindQueryString(searchCriteria);

                Platform.Log(LogLevel.Debug, "Retrieve on AIM Data Service: " + url + "query/retrieve?" + queryString);

                string results = webClient.DownloadString(url + "query/retrieve?" + queryString);

                // Remove results tag
                const string resultsTagOpen  = "<results>";
                const string resultsTagClose = "</results>";
                if (results.Contains(resultsTagOpen) && results.Contains(resultsTagClose))
                {
                    results = results.Substring(
                        results.IndexOf(resultsTagOpen) + resultsTagOpen.Length,
                        results.IndexOf(resultsTagClose) - (results.IndexOf(resultsTagOpen) + resultsTagOpen.Length)
                        );
                }

                return(results);
            }
        }
コード例 #6
0
        private static NameValueCollection BuildFindQueryString(AimeSearchCriteria searchCriteria)
        {
            string annotationContainerUids = String.Empty;
            if (!String.IsNullOrEmpty(searchCriteria.AnnotationContainreUid))
            {
                annotationContainerUids = "'" + searchCriteria.AnnotationContainreUid + "'";
            }
            var keyValueCollection = new Collection<KeyValuePair<string, string>>();
            if (!String.IsNullOrEmpty(searchCriteria.Username))
                keyValueCollection.Add(new KeyValuePair<string, string>("username", searchCriteria.Username));
            if (!String.IsNullOrEmpty(searchCriteria.AnatomicEntity))
                keyValueCollection.Add(new KeyValuePair<string, string>("anatomicalEntity",
                                                                        searchCriteria.AnatomicEntity));
            if (!String.IsNullOrEmpty(searchCriteria.AnatomicEntityCharacteristic))
                keyValueCollection.Add(new KeyValuePair<string, string>("anatomicEntityCharacteristic",
                                                                        searchCriteria.AnatomicEntityCharacteristic));
            if (!String.IsNullOrEmpty(searchCriteria.ImagingObservationEntity))
                keyValueCollection.Add(new KeyValuePair<string, string>("imagingObservationEntity",
                                                                        searchCriteria.ImagingObservationEntity));
            if (!String.IsNullOrEmpty(searchCriteria.ImagingObservationEntityCharacteristic))
                keyValueCollection.Add(new KeyValuePair<string, string>("imagingObservationEntityCharacteristic",
                                                                        searchCriteria.
                                                                            ImagingObservationEntityCharacteristic));
            if (!String.IsNullOrEmpty(searchCriteria.StudyInstanceUid))
                keyValueCollection.Add(new KeyValuePair<string, string>("studyInstanceUID",
                                                                        searchCriteria.StudyInstanceUid));
            if (!String.IsNullOrEmpty(searchCriteria.PatientName))
                keyValueCollection.Add(new KeyValuePair<string, string>("patientName", searchCriteria.PatientName));
            if (!String.IsNullOrEmpty(searchCriteria.PatientId))
                keyValueCollection.Add(new KeyValuePair<string, string>("patientID", searchCriteria.PatientId));
            if (!String.IsNullOrEmpty(searchCriteria.AnnotationName))
                keyValueCollection.Add(new KeyValuePair<string, string>("annotationName", searchCriteria.AnnotationName));
            if (!String.IsNullOrEmpty(annotationContainerUids))
                keyValueCollection.Add(new KeyValuePair<string, string>("annotationContainerUID",
                                                                        annotationContainerUids));

            return BuildQueryString(keyValueCollection);
        }
コード例 #7
0
        public static string Retrieve(string apiKey, AimeSearchCriteria searchCriteria)
        {
            using (var webClient = new WebClient())
            {
                string url = SearchSettings.Default.AimDataServiceUrl;

                if (String.IsNullOrEmpty(url))
                    //url = "http://imaging.cci.emory.edu/rest/aime-test/middleware/services/AIME/AIME4";
                    return null;

                if (!url.EndsWith("/"))
                    url = url.Trim() + "/";

                // Add encoded credentials to header as basic authentication
                webClient.Headers.Add("api_key", apiKey);
                webClient.Headers["Content-Type"] = "text/plain; charset=UTF-8";

                NameValueCollection queryString = BuildFindQueryString(searchCriteria);

                Platform.Log(LogLevel.Debug, "Retrieve on AIM Data Service: " + url + "query/retrieve?" + queryString);

                string results = webClient.DownloadString(url + "query/retrieve?" + queryString);

                // Remove results tag
                const string resultsTagOpen = "<results>";
                const string resultsTagClose = "</results>";
                if (results.Contains(resultsTagOpen) && results.Contains(resultsTagClose))
                {
                    results = results.Substring(
                        results.IndexOf(resultsTagOpen) + resultsTagOpen.Length,
                        results.IndexOf(resultsTagClose) - (results.IndexOf(resultsTagOpen) + resultsTagOpen.Length)
                        );
                }

                return results;
            }
        }
コード例 #8
0
 public void ResetSearchCriteria()
 {
     SearchCriteria = new AimeSearchCriteria();
 }
コード例 #9
0
 internal AimDataServiceSearchCriteriaComponent(AimDataServiceSearchCoordinator coordinator)
 {
     _coordinator   = coordinator;
     SearchCriteria = new AimeSearchCriteria();
 }