/// <summary> /// Searches a specific vocabulary and retrieves the matching vocabulary items. /// </summary> /// /// <remarks> /// This method does text search matching of display text and abbreviation text /// for the culture defined by the <see cref="HealthServiceConnection.Culture"/>. /// The <paramref name="searchValue"/> is a string of characters in the specified /// culture. /// </remarks> /// /// <param name="connection"> /// The connection to use for this operation. The connection /// must have application capability. /// </param> /// /// <param name="vocabularyKey"> /// The <see cref="VocabularyKey"/> defining the vocabulary to search. If the /// family is not specified, the default HealthVault vocabulary family is used. /// If the version is not specified, the most current version of the vocabulary /// is used. /// </param> /// /// <param name="searchValue"> /// The search string to use. /// </param> /// /// <param name="searchType"> /// The type of search to perform. /// </param> /// /// <param name="maxResults"> /// The maximum number of results to return. If null, all matching results /// are returned, up to a maximum number defined by the service config /// value with key maxResultsPerVocabularyRetrieval. /// </param> /// /// <exception cref="ArgumentException"> /// If <paramref name="vocabularyKey"/> is <b>null</b>. /// <br></br> /// -Or- /// <br></br> /// If <paramref name="searchValue"/> is <b>null</b> or empty or greater /// than <b>255</b> characters. /// <br></br> /// -Or- /// <br></br> /// if <paramref name="searchType"/> is not a known /// <see cref="VocabularySearchType"/> value. /// <br></br> /// -Or- /// <br></br> /// when <paramref name="maxResults"/> is defined but has a value less than 1. /// </exception> /// /// <exception cref="HealthServiceException"> /// There is an error in the server request. /// <br></br> /// -Or- /// <br></br> /// The requested vocabulary is not found on the server. /// <br></br> /// -Or- /// The requested search culture is not supported. /// </exception> /// public virtual async Task <VocabularySearchResult> SearchVocabularyAsync( IHealthVaultConnection connection, VocabularyKey vocabularyKey, string searchValue, VocabularySearchType searchType, int?maxResults) { if (string.IsNullOrEmpty(searchValue) || searchValue.Length > 255) { throw new ArgumentException(Resources.VocabularySearchStringInvalid, nameof(searchValue)); } if (!Enum.IsDefined(typeof(VocabularySearchType), searchType)) { throw new ArgumentException(Resources.VocabularySearchTypeUnknown, nameof(searchType)); } if (maxResults.HasValue && maxResults.Value < 1) { throw new ArgumentException(Resources.SearchMaxResultsInvalid, nameof(maxResults)); } var method = HealthVaultMethods.SearchVocabulary; int methodVersion = 1; StringBuilder requestParameters = new StringBuilder(256); XmlWriterSettings settings = SDKHelper.XmlUnicodeWriterSettings; settings.OmitXmlDeclaration = true; settings.ConformanceLevel = ConformanceLevel.Fragment; using (XmlWriter writer = XmlWriter.Create(requestParameters, settings)) { vocabularyKey?.WriteXml(writer); writer.WriteStartElement("text-search-parameters"); writer.WriteStartElement("search-string"); writer.WriteAttributeString("search-mode", searchType.ToString()); writer.WriteString(searchValue); writer.WriteEndElement(); // <search-string> if (maxResults.HasValue) { writer.WriteElementString("max-results", maxResults.Value.ToString(CultureInfo.InvariantCulture)); } writer.WriteEndElement(); writer.Flush(); } string parameters = requestParameters.ToString(); HealthServiceResponseData responseData = await connection.ExecuteAsync(method, methodVersion, parameters).ConfigureAwait(false); if (vocabularyKey != null) { return(new VocabularySearchResult(CreateVocabularyItemCollectionFromResponse(method.ToString(), responseData))); } return(new VocabularySearchResult(CreateVocabularyKeysFromResponse(method.ToString(), responseData))); }
/// <summary> /// Searches a specific vocabulary and retrieves the matching vocabulary items. /// </summary> /// /// <remarks> /// This method does text search matching of display text and abbreviation text /// for the culture defined by the <see cref="HealthServiceConnection.Culture"/>. /// The <paramref name="searchValue"/> is a string of characters in the specified /// culture. /// </remarks> /// /// <param name="connection"> /// The connection to use for this operation. The connection /// must have application capability. /// </param> /// /// <param name="vocabularyKey"> /// The <see cref="VocabularyKey"/> defining the vocabulary to search. If the /// family is not specified, the default HealthVault vocabulary family is used. /// If the version is not specified, the most current version of the vocabulary /// is used. /// </param> /// /// <param name="searchValue"> /// The search string to use. /// </param> /// /// <param name="searchType"> /// The type of search to perform. /// </param> /// /// <param name="maxResults"> /// The maximum number of results to return. If null, all matching results /// are returned, up to a maximum number defined by the service config /// value with key maxResultsPerVocabularyRetrieval. /// </param> /// /// <param name="matchingVocabulary"> /// A <see cref="VocabularyItemCollection"/> populated with entries matching /// the search criteria. /// </param> /// /// <param name="matchingKeys"> /// A <b>ReadOnlyCollection</b> of <see cref="VocabularyKey"/> with entries /// matching the search criteria. /// </param> /// /// <exception cref="ArgumentException"> /// If <paramref name="vocabularyKey"/> is <b>null</b>. /// <br></br> /// -Or- /// <br></br> /// If <paramref name="searchValue"/> is <b>null</b> or empty or greater /// than <b>255</b> characters. /// <br></br> /// -Or- /// <br></br> /// if <paramref name="searchType"/> is not a known /// <see cref="VocabularySearchType"/> value. /// <br></br> /// -Or- /// <br></br> /// when <paramref name="maxResults"/> is defined but has a value less than 1. /// </exception> /// /// <exception cref="HealthServiceException"> /// There is an error in the server request. /// <br></br> /// -Or- /// <br></br> /// The requested vocabulary is not found on the server. /// <br></br> /// -Or- /// The requested search culture is not supported. /// </exception> /// public virtual void SearchVocabulary( HealthServiceConnection connection, VocabularyKey vocabularyKey, string searchValue, VocabularySearchType searchType, int? maxResults, out VocabularyItemCollection matchingVocabulary, out ReadOnlyCollection<VocabularyKey> matchingKeys) { Validator.ThrowArgumentExceptionIf( String.IsNullOrEmpty(searchValue) || searchValue.Length > 255, "searchString", "VocabularySearchStringInvalid"); Validator.ThrowArgumentExceptionIf( !Enum.IsDefined(typeof(VocabularySearchType), searchType), "searchType", "VocabularySearchTypeUnknown"); Validator.ThrowArgumentExceptionIf( maxResults.HasValue && maxResults.Value < 1, "maxResults", "VocabularySearchMaxResultsInvalid"); matchingVocabulary = null; matchingKeys = null; string methodName = "SearchVocabulary"; HealthServiceRequest request = new HealthServiceRequest(connection, methodName, 1); StringBuilder requestParameters = new StringBuilder(256); XmlWriterSettings settings = SDKHelper.XmlUnicodeWriterSettings; settings.OmitXmlDeclaration = true; settings.ConformanceLevel = ConformanceLevel.Fragment; using (XmlWriter writer = XmlWriter.Create(requestParameters, settings)) { if (vocabularyKey != null) { vocabularyKey.WriteXml(writer); } writer.WriteStartElement("text-search-parameters"); writer.WriteStartElement("search-string"); writer.WriteAttributeString("search-mode", searchType.ToString()); writer.WriteString(searchValue); writer.WriteEndElement(); // <search-string> if (maxResults.HasValue) { writer.WriteElementString("max-results", maxResults.Value.ToString(CultureInfo.InvariantCulture)); } writer.WriteEndElement(); //<text-search-parameters> writer.Flush(); } request.Parameters = requestParameters.ToString(); request.Execute(); if (vocabularyKey != null) { matchingVocabulary = CreateVocabularyItemCollectionFromResponse( methodName, request.Response); } else { matchingKeys = CreateVocabularyKeysFromResponse(methodName, request.Response); } }
/// <summary> /// Searches the keys of vocabularies defined by the HealthVault service. /// </summary> /// /// <remarks> /// This method does a text search of vocabulary names and descriptions. /// </remarks> /// /// <param name="searchString"> /// The search string to use. /// </param> /// /// <param name="searchType"> /// The type of search to perform. /// </param> /// /// <param name="maxResults"> /// The maximum number of results to return. If null, all matching results /// are returned, up to a maximum number defined by the service config /// value with key maxResultsPerVocabularyRetrieval. /// </param> /// /// <returns> /// A <b>ReadOnlyCollection</b> of <see cref="VocabularyKey"/> with entries /// matching the search criteria. /// </returns> /// /// <exception cref="ArgumentException"> /// If <paramref name="searchString"/> is <b>null</b> or empty or greater /// than <b>255</b> characters. /// <br></br> /// -Or- /// <br></br> /// if <paramref name="searchType"/> is not a known /// <see cref="VocabularySearchType"/> value. /// <br></br> /// -Or- /// <br></br> /// when <paramref name="maxResults"/> is defined but has a value less than 1. /// </exception> /// /// <exception cref="HealthServiceException"> /// There is an error in the server request. /// </exception> /// //[Obsolete("Use HealthServicePlatform.SearchVocabularyKeys() instead.")] public ReadOnlyCollection<VocabularyKey> SearchVocabularyKeys( string searchString, VocabularySearchType searchType, int? maxResults) { return HealthVaultPlatform.SearchVocabularyKeys(this, searchString, searchType, maxResults); }
/// <summary> /// Searches a specific vocabulary and retrieves the matching vocabulary items. /// </summary> /// /// <remarks> /// This method does text search matching of display text and abbreviation text /// for the culture defined by the <see cref="HealthServiceConnection.Culture"/>. /// The <paramref name="searchString"/> is a string of characters in the specified /// culture. /// </remarks> /// /// <param name="vocabularyKey"> /// The <see cref="VocabularyKey"/> defining the vocabulary to search. If the /// family is not specified, the default HealthVault vocabulary family is used. /// If the version is not specified, the most current version of the vocabulary /// is used. /// </param> /// /// <param name="searchString"> /// The search string to use. /// </param> /// /// <param name="searchType"> /// The type of search to perform. /// </param> /// /// <param name="maxResults"> /// The maximum number of results to return. If null, all matching results /// are returned, up to a maximum number defined by the service config /// value with key maxResultsPerVocabularyRetrieval. /// </param> /// /// <returns> /// A <see cref="VocabularyItemCollection"/> populated with entries matching /// the search criteria. /// </returns> /// /// <exception cref="ArgumentException"> /// If <paramref name="vocabularyKey"/> is <b>null</b>. /// <br></br> /// -Or- /// <br></br> /// If <paramref name="searchString"/> is <b>null</b> or empty or greater /// than <b>255</b> characters. /// <br></br> /// -Or- /// <br></br> /// if <paramref name="searchType"/> is not a known /// <see cref="VocabularySearchType"/> value. /// <br></br> /// -Or- /// <br></br> /// when <paramref name="maxResults"/> is defined but has a value less than 1. /// </exception> /// /// <exception cref="HealthServiceException"> /// There is an error in the server request. /// <br></br> /// -Or- /// <br></br> /// The requested vocabulary is not found on the server. /// <br></br> /// -Or- /// The requested search culture is not supported. /// </exception> /// //[Obsolete("Use HealthServicePlatform.SearchVocabulary() instead.")] public VocabularyItemCollection SearchVocabulary( VocabularyKey vocabularyKey, string searchString, VocabularySearchType searchType, int? maxResults) { return HealthVaultPlatform.SearchVocabulary(this, vocabularyKey, searchString, searchType, maxResults); }
public async Task <ReadOnlyCollection <VocabularyKey> > SearchVocabularyAsync(string searchValue, VocabularySearchType searchType, int?maxResults) { return((await HealthVaultPlatformVocabulary.Current.SearchVocabularyAsync(_connection, null, searchValue, searchType, maxResults).ConfigureAwait(false)).MatchingKeys); }
/// <summary> /// Searches the keys of vocabularies defined by the HealthVault service. /// </summary> /// /// <param name="connection"> /// The connection to use for this operation. The connection /// must have application capability. /// </param> /// /// <remarks> /// This method does a text search of vocabulary names and descriptions. /// </remarks> /// /// <param name="searchValue"> /// The search string to use. /// </param> /// /// <param name="searchType"> /// The type of search to perform. /// </param> /// /// <param name="maxResults"> /// The maximum number of results to return. If null, all matching results /// are returned, up to a maximum number defined by the service config /// value with key maxResultsPerVocabularyRetrieval. /// </param> /// /// <returns> /// A <b>ReadOnlyCollection</b> of <see cref="VocabularyKey"/> with entries /// matching the search criteria. /// </returns> /// /// <exception cref="ArgumentException"> /// If <paramref name="searchValue"/> is <b>null</b> or empty or greater /// than <b>255</b> characters. /// <br></br> /// -Or- /// <br></br> /// if <paramref name="searchType"/> is not a known /// <see cref="VocabularySearchType"/> value. /// <br></br> /// -Or- /// <br></br> /// when <paramref name="maxResults"/> is defined but has a value less than 1. /// </exception> /// /// <exception cref="HealthServiceException"> /// There is an error in the server request. /// </exception> /// public static ReadOnlyCollection<VocabularyKey> SearchVocabularyKeys( HealthServiceConnection connection, string searchValue, VocabularySearchType searchType, int? maxResults) { ReadOnlyCollection<VocabularyKey> matchingKeys; VocabularyItemCollection matchingVocabulary; HealthVaultPlatformVocabulary.Current.SearchVocabulary( connection, null, searchValue, searchType, maxResults, out matchingVocabulary, out matchingKeys); return matchingKeys; }
/// <summary> /// Searches a specific vocabulary and retrieves the matching vocabulary items. /// </summary> /// /// <remarks> /// This method does text search matching of display text and abbreviation text /// for the culture defined by the <see cref="HealthServiceConnection.Culture"/>. /// The <paramref name="searchValue"/> is a string of characters in the specified /// culture. /// </remarks> /// /// <param name="connection"> /// The connection to use for this operation. The connection /// must have application capability. /// </param> /// /// <param name="vocabularyKey"> /// The <see cref="VocabularyKey"/> defining the vocabulary to search. If the /// family is not specified, the default HealthVault vocabulary family is used. /// If the version is not specified, the most current version of the vocabulary /// is used. /// </param> /// /// <param name="searchValue"> /// The search string to use. /// </param> /// /// <param name="searchType"> /// The type of search to perform. /// </param> /// /// <param name="maxResults"> /// The maximum number of results to return. If null, all matching results /// are returned, up to a maximum number defined by the service config /// value with key maxResultsPerVocabularyRetrieval. /// </param> /// /// <returns> /// A <see cref="VocabularyItemCollection"/> populated with entries matching /// the search criteria. /// </returns> /// /// <exception cref="ArgumentException"> /// If <paramref name="vocabularyKey"/> is <b>null</b>. /// <br></br> /// -Or- /// <br></br> /// If <paramref name="searchValue"/> is <b>null</b> or empty or greater /// than <b>255</b> characters. /// <br></br> /// -Or- /// <br></br> /// if <paramref name="searchType"/> is not a known /// <see cref="VocabularySearchType"/> value. /// <br></br> /// -Or- /// <br></br> /// when <paramref name="maxResults"/> is defined but has a value less than 1. /// </exception> /// /// <exception cref="HealthServiceException"> /// There is an error in the server request. /// <br></br> /// -Or- /// <br></br> /// The requested vocabulary is not found on the server. /// <br></br> /// -Or- /// The requested search culture is not supported. /// </exception> /// public static VocabularyItemCollection SearchVocabulary( HealthServiceConnection connection, VocabularyKey vocabularyKey, string searchValue, VocabularySearchType searchType, int? maxResults) { Validator.ThrowIfArgumentNull(vocabularyKey, "vocabularyKey", "VocabularyKeyNullOrEmpty"); VocabularyItemCollection matchingVocabulary; ReadOnlyCollection<VocabularyKey> matchingKeys; HealthVaultPlatformVocabulary.Current.SearchVocabulary( connection, vocabularyKey, searchValue, searchType, maxResults, out matchingVocabulary, out matchingKeys); return matchingVocabulary; }