public static Uri CreateVocabularySearchRequestJsonAuthenticatedUrl(
            VocabularySearchParameters searchParameters,
            string jsonCallbackName,
            int timeToLiveMinutes)
        {
            Validator.ThrowIfArgumentNull(searchParameters, "searchParameters", "VocabularySearchParametersNull");
            Validator.ThrowIfStringNullOrEmpty(jsonCallbackName, "jsonCallbackName");

            StringBuilder queryString = new StringBuilder(1024);
            AppendVocabularySearchServiceParameters(queryString, jsonCallbackName);
            AppendAuthenticationParameters(queryString, timeToLiveMinutes);
            AppendVocabularySearchParameters(queryString, searchParameters);
            return
                new Uri(
                    HealthApplicationConfiguration.Current.HealthClientServiceUrl.OriginalString +
                    "?" +
                    queryString.ToString());
        }
        private static void AppendVocabularySearchParameters(
            StringBuilder queryString, 
            VocabularySearchParameters searchParameters)
        {
            queryString.AppendFormat(
                "&vocabName={0}",
                HttpUtility.UrlEncode(searchParameters.Vocabulary.Name));

            if (!String.IsNullOrEmpty(searchParameters.Vocabulary.Family))
            {
                queryString.AppendFormat(
                    "&vocabFamily={0}",
                    HttpUtility.UrlEncode(searchParameters.Vocabulary.Family));
            }

            if (!String.IsNullOrEmpty(searchParameters.Vocabulary.Version))
            {
                queryString.AppendFormat(
                    "&vocabVersion={0}",
                    HttpUtility.UrlEncode(searchParameters.Vocabulary.Version));
            }

            if (searchParameters.MaxResults.HasValue)
            {
                queryString.AppendFormat("&maxResults={0}", searchParameters.MaxResults.Value);
            }

            if (searchParameters.Culture != null)
            {
                queryString.AppendFormat(
                    "&culture={0}", HttpUtility.UrlEncode(searchParameters.Culture.Name));
            }
        }
        public static Uri CreateVocabularySearchRequestJsonUrl(
            VocabularySearchParameters searchParameters,
            string jsonCallbackName,
            Guid serviceToken)
        {
            Validator.ThrowIfArgumentNull(searchParameters, "searchParameters", "VocabularySearchParametersNull");
            Validator.ThrowIfStringNullOrEmpty(jsonCallbackName, "jsonCallbackName");

            Validator.ThrowArgumentExceptionIf(
                serviceToken == Guid.Empty,
                "serviceToken",
                "ServiceTokenEmpty");

            StringBuilder queryString = new StringBuilder(1024);
            AppendVocabularySearchServiceParameters(queryString, jsonCallbackName);
            AppendClientServiceToken(queryString, serviceToken);
            AppendVocabularySearchParameters(queryString, searchParameters);
            return
                new Uri(
                    HealthApplicationConfiguration.Current.HealthClientServiceUrl.OriginalString +
                    "?" +
                    queryString.ToString());
        }