/// <summary>
 /// Creates a new instance of the <see cref="DelegatePagination{T}"/> class.
 /// </summary>
 /// <param name="method">The method invoked to fetch data.</param>
 /// <param name="pageNumber">The current page number.</param>
 /// <param name="pageSize">Number of items per page.</param>
 /// <param name="additionalArgs">Additional data passed in the AdditionalArgs</param>
 public DelegatePagination(DoQueryDelegate <T> method, int pageNumber, int pageSize, object additionalArgs)
 {
     DoQuery         = method;
     _pageNumber     = pageNumber;
     _pageSize       = pageSize;
     _additionalArgs = additionalArgs;
 }
示例#2
0
        private HttpResponseMessage SearchForDicomEntity
        (
            IQidoRequestModel request,
            DicomAttributeCollection dicomSource,
            DoQueryDelegate doQuery
        )
        {
            if (null != request.Query)
            {
                var matchingParams = request.Query.MatchingElements;
                var includeParams  = request.Query.IncludeElements;

                foreach (var queryParam in  matchingParams)
                {
                    string paramValue = queryParam.Value;

                    InsertDicomElement(dicomSource, queryParam.Key, paramValue);
                }

                foreach (var returnParam in includeParams)
                {
                    InsertDicomElement(dicomSource, returnParam, "");
                }

                ICollection <DicomAttributeCollection> results = doQuery(QueryService, dicomSource, request.Limit, request.Offset);   //TODO: move configuration params into their own object

                StringBuilder jsonReturn = new StringBuilder("[");

                JsonDicomConverter converter = new JsonDicomConverter( )
                {
                    IncludeEmptyElements = true
                };

                foreach (var response in results)
                {
                    jsonReturn.AppendLine(converter.Convert(response));

                    jsonReturn.Append(",");
                }

                if (results.Count > 0)
                {
                    jsonReturn.Remove(jsonReturn.Length - 1, 1);
                }

                jsonReturn.Append("]");

                return(new HttpResponseMessage(System.Net.HttpStatusCode.OK)
                {
                    Content = new StringContent(jsonReturn.ToString( ), Encoding.UTF8, MimeMediaTypes.Json)
                });
            }

            return(null);
        }
示例#3
0
        private HttpResponseMessage SearchForDicomEntity
        (
            IQidoRequestModel request,
            DicomDataset dicomSource,
            DoQueryDelegate doQuery
        )
        {
            if (null != request.Query)
            {
                HttpResponseMessage response = null;
                var matchingParams           = request.Query.MatchingElements;
                var includeParams            = request.Query.IncludeElements;

                foreach (var returnParam in includeParams)
                {
                    InsertDicomElement(dicomSource, returnParam, "");
                }

                foreach (var queryParam in matchingParams)
                {
                    string paramValue = queryParam.Value;


                    InsertDicomElement(dicomSource, queryParam.Key, paramValue);
                }

                var results = doQuery(QueryService, dicomSource, request); //TODO: move configuration params into their own object

                if (MultipartResponseHelper.IsMultiPartRequest(request))
                {
                    response = CreateMultipartResponse(request, results.Result);
                }
                else
                {
                    response = CreateJsonResponse(results.Result);
                }

                AddResponseHeaders(request, dicomSource, response, results);

                return(response);
            }

            return(null);
        }
示例#4
0
        private HttpResponseMessage SearchForDicomEntity
        (
            IQidoRequestModel request,
            fo.DicomDataset dicomSource,
            DoQueryDelegate doQuery
        )
        {
            if (null != request.Query)
            {
                var matchingParams = request.Query.MatchingElements;
                var includeParams  = request.Query.IncludeElements;

                foreach (var returnParam in includeParams)
                {
                    InsertDicomElement(dicomSource, returnParam, "");
                }

                foreach (var queryParam in  matchingParams)
                {
                    string paramValue = queryParam.Value;


                    InsertDicomElement(dicomSource, queryParam.Key, paramValue);
                }

                ICollection <fo.DicomDataset> results = doQuery(QueryService, dicomSource, request);  //TODO: move configuration params into their own object

                if (MultipartResponseHelper.IsMultiPartRequest(request))
                {
                    if (MultipartResponseHelper.GetSubMediaType(request.AcceptHeader.FirstOrDefault( )) == MimeMediaTypes.xmlDicom)
                    {
                        HttpResponseMessage response;
                        MultipartContent    multiContent;


                        response     = new HttpResponseMessage( );
                        multiContent = new MultipartContent("related", MultipartResponseHelper.DicomDataBoundary);

                        response.Content = multiContent;

                        foreach (var result in results)
                        {
                            XmlDicomConverter converter = new XmlDicomConverter( );

                            MultipartResponseHelper.AddMultipartContent(multiContent,
                                                                        new WadoResponse(new MemoryStream(Encoding.ASCII.GetBytes(converter.Convert(result))),
                                                                                         MimeMediaTypes.xmlDicom));
                        }

                        multiContent.Headers.ContentType.Parameters.Add(new System.Net.Http.Headers.NameValueHeaderValue("type",
                                                                                                                         "\"" + MimeMediaTypes.xmlDicom + "\""));

                        return(response);
                    }
                    else
                    {
                        return(new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest));
                    }
                }
                else
                {
                    StringBuilder jsonReturn = new StringBuilder("[");

                    JsonDicomConverter converter = new JsonDicomConverter( )
                    {
                        IncludeEmptyElements = true
                    };

                    foreach (var response in results)
                    {
                        jsonReturn.AppendLine(converter.Convert(response));

                        jsonReturn.Append(",");
                    }

                    if (results.Count > 0)
                    {
                        jsonReturn.Remove(jsonReturn.Length - 1, 1);
                    }

                    jsonReturn.Append("]");

                    return(new HttpResponseMessage(System.Net.HttpStatusCode.OK)
                    {
                        Content = new StringContent(jsonReturn.ToString( ),
                                                    Encoding.UTF8,
                                                    MimeMediaTypes.Json)
                    });
                }
            }

            return(null);
        }