示例#1
0
        protected virtual IQidoRequestModel CreateModel( )
        {
            IQidoRequestModel queryModel = new QidoRequestModel();

            queryModel.Query = new QidoQuery();

            return(queryModel);
        }
示例#2
0
        public void Web_SearchForStudies_SequenceTest( )
        {
            QidoRequestModel requestModel = GetQueryRequest();


            //Include a sequence on its own "PerformedProtocolCodeSequence"
            requestModel.Query.IncludeElements.Add("00400260");
            //RequestAttributeSequence
            //Include a sequence with element "RequestAttributesSequence.ScheduledProcedureStepID"
            requestModel.Query.IncludeElements.Add("00400275.00400009");
            var result = WebQueryService.SearchForStudies(requestModel);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.IsSuccessStatusCode);
        }
示例#3
0
        private static QidoRequestModel GetQueryRequest()
        {
            HttpContext.Current = new HttpContext(
                new HttpRequest("", "https://localhost:3000", ""),
                new HttpResponse(new StringWriter())
                );

            QidoRequestModel requestModel = new QidoRequestModel();
            var headers = new HttpClient().DefaultRequestHeaders;

            headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MimeMediaTypes.Json));
            requestModel.AcceptHeader = headers.Accept;
            requestModel.Headers      = headers;
            requestModel.Query        = new QidoQuery();
            return(requestModel);
        }
示例#4
0
        public bool TryParse(HttpRequestMessage request, out IQidoRequestModel result)
        {
            QidoRequestModel wadoReq = new QidoRequestModel( );

            wadoReq.Query = new QidoQuery( );

            wadoReq.AcceptHeader        = request.Headers.Accept;
            wadoReq.AcceptCharsetHeader = request.Headers.AcceptCharset;

            var query = request.RequestUri.ParseQueryString( );

            foreach (var key in query)
            {
                string queryKey = ((string)key).Trim( ).ToLower( );

                switch (queryKey)
                {
                case QidoRequestKeys.FuzzyMatching:
                {
                    bool fuzzy;

                    if (bool.TryParse(query[QidoRequestKeys.FuzzyMatching], out fuzzy))
                    {
                        wadoReq.FuzzyMatching = fuzzy;
                    }
                }
                break;

                case QidoRequestKeys.Limit:
                {
                    int limit;

                    if (int.TryParse(query[QidoRequestKeys.Limit], out limit))
                    {
                        wadoReq.Limit = limit;
                    }
                }
                break;

                case QidoRequestKeys.Offset:
                {
                    int offset;

                    if (int.TryParse(query[QidoRequestKeys.Offset], out offset))
                    {
                        wadoReq.Offset = offset;
                    }
                }
                break;

                case QidoRequestKeys.IncludeField:
                {
                    string includeFields = query[QidoRequestKeys.IncludeField];

                    if (!string.IsNullOrWhiteSpace(includeFields))
                    {
                        wadoReq.Query.IncludeElements.AddRange(includeFields.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
                    }
                }
                break;

                default:
                {
                    string matchingQuery = query[queryKey].Trim( );
                    //string[] matchingQueryValues = matchingQuery.Trim ( ).Split ( new char[] {','}, StringSplitOptions.RemoveEmptyEntries ) ;
                    var matchingElements = wadoReq.Query.MatchingElements;

                    //TODO: what if key exists
                    //should return invalid request
                    //foreach ( var matchingParam in matchingQueryValues )
                    {
                        matchingElements.Add(queryKey, matchingQuery);
                    }
                }
                break;
                }
            }

            result = wadoReq;

            return(true);
        }
        public bool TryParse(HttpRequestMessage request, out IQidoRequestModel result)
        {
            QidoRequestModel wadoReq = new QidoRequestModel( );

            wadoReq.Query = new QidoQuery( );

            wadoReq.AcceptHeader        = request.Headers.Accept;
            wadoReq.AcceptCharsetHeader = request.Headers.AcceptCharset;

            var query = request.RequestUri.ParseQueryString( );

            foreach (var key in query)
            {
                string queryKey = ((string)key).Trim( ).ToLower( );

                if (queryKey == "")
                {
                    continue;
                }

                switch (queryKey)
                {
                case QidoRequestKeys.FuzzyMatching:
                {
                    bool fuzzy;

                    if (bool.TryParse(query[QidoRequestKeys.FuzzyMatching], out fuzzy))
                    {
                        wadoReq.FuzzyMatching = fuzzy;
                    }
                }
                break;

                case QidoRequestKeys.Limit:
                {
                    int limit;

                    if (int.TryParse(query[QidoRequestKeys.Limit], out limit))
                    {
                        wadoReq.Limit = limit;
                    }
                }
                break;

                case QidoRequestKeys.Offset:
                {
                    int offset;

                    if (int.TryParse(query[QidoRequestKeys.Offset], out offset))
                    {
                        wadoReq.Offset = offset;
                    }
                }
                break;

                case QidoRequestKeys.IncludeField:
                {
                    string includeFields = query[QidoRequestKeys.IncludeField];

                    if (!string.IsNullOrWhiteSpace(includeFields))
                    {
                        wadoReq.Query.IncludeElements.AddRange(includeFields.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
                    }
                }
                break;

                default:
                {
                    string queryValue = query[queryKey].Trim( );


                    if (queryKey.StartsWith("_"))
                    {
                        wadoReq.Query.CustomParameters.Add(queryKey, queryValue);
                    }
                    else
                    {
                        wadoReq.Query.MatchingElements.Add(queryKey, queryValue);
                    }
                }
                break;
                }
            }

            result = wadoReq;

            return(true);
        }