예제 #1
0
        /// <summary>
        /// Parses the additional text box.
        /// </summary>
        /// <param name="text">The text to parse for qualifiers.</param>
        /// <param name="inputFieldResult">The input field result.</param>
        /// <param name="conceptDetail">The concept detail.</param>
        public static void ParseAdditionalTextBox(string text, InputFieldResult inputFieldResult, ConceptDetail conceptDetail)
        {
#if SILVERLIGHT
            string normalisedSearchString = text.ToUpper(CultureInfo.InvariantCulture);
#else
            string normalisedSearchString = text.ToUpperInvariant();
#endif
            ObservableCollection <string> domains = new ObservableCollection <string>();

            domains.Add(TerminologyManager.QualifiersDomainString);

            SearchState searchState = new SearchState();
            searchState.SearchTextOriginal = text;
            searchState.ConceptDetail      = conceptDetail;
            searchState.InputFieldResult   = inputFieldResult;

            if (conceptDetail.RefinableCharacteristics.Count > 0)
            {
                TerminologyManager.terminologyProviderClient.IndexTextAsync(normalisedSearchString, domains, null, false, TerminologyManager.LocaleString, searchState);
            }
            else
            {
                TerminologyManager.RaiseAdditionalTextBoxCompleted(new ObservableCollection <AdditionalTextBoxResult>(), searchState);
            }
        }
예제 #2
0
        /// <summary>
        /// Converts an InputFieldResult into a TextBlock.
        /// </summary>
        /// <param name="value">The InputFieldResult.</param>
        /// <param name="targetType">The target type.</param>
        /// <param name="parameter">The font size parameter.</param>
        /// <param name="culture">The culture info.</param>
        /// <returns>A formatted textblock.</returns>
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                return(null);
            }

            TextBlock textBlock = new TextBlock();

            textBlock.TextWrapping = TextWrapping.Wrap;

            if (value.GetType() == typeof(InputFieldResult))
            {
                InputFieldResult result = (InputFieldResult)value;

                if (result.IsNegated)
                {
                    Run description = new Run();
                    description.Text = string.Format(culture, "No {0}, ", result.Description);
                    textBlock.Inlines.Add(description);

                    Run knownAbsence = new Run();
                    knownAbsence.FontStyle = FontStyles.Italic;
                    knownAbsence.Text      = "known absence of ";
                    textBlock.Inlines.Add(knownAbsence);

                    Run fullySpecifiedName = new Run();
                    fullySpecifiedName.Text = result.Concept.FullySpecifiedName;
                    textBlock.Inlines.Add(fullySpecifiedName);
                }
                else if (result.Description != result.Concept.PreferredTerm)
                {
                    Run descriptionName = new Run();
                    descriptionName.Text = result.Description;
                    textBlock.Inlines.Add(descriptionName);

                    Run knownAbsence = new Run();
                    knownAbsence.FontSize = knownAbsence.FontSize - 1;
                    knownAbsence.Text     = " synonym of";
                    textBlock.Inlines.Add(knownAbsence);
                }
                else
                {
                    Run fullySpecifiedName = new Run();
                    fullySpecifiedName.Text = result.Concept.FullySpecifiedName;
                    textBlock.Inlines.Add(fullySpecifiedName);
                }
            }
            else if (value.GetType() == typeof(ConceptResult))
            {
                ConceptResult result             = (ConceptResult)value;
                Run           fullySpecifiedName = new Run();
                fullySpecifiedName.Text = result.FullySpecifiedName;
                textBlock.Inlines.Add(fullySpecifiedName);
            }

            return(textBlock);
        }
예제 #3
0
        /// <summary>
        /// Encodes the concept.
        /// </summary>
        /// <param name="inputFieldResult">The input field result.</param>
        /// <param name="additionalTextBoxResults">The additional text box results.</param>
        public static void EncodeConcept(InputFieldResult inputFieldResult, ObservableCollection <AdditionalTextBoxResult> additionalTextBoxResults)
        {
            SearchState searchState = new SearchState();

            searchState.InputFieldResult         = inputFieldResult;
            searchState.AdditionalTextBoxResults = additionalTextBoxResults;
            searchState.UserState = UserState.EncodingMainConcept;

            terminologyProviderClient.GetConceptDetailsAsync(inputFieldResult.Concept.SnomedConceptId, TerminologyManager.LocaleString, searchState);
        }
예제 #4
0
        /// <summary>
        /// Prepares the input field results.
        /// </summary>
        /// <param name="searchResult">The search result.</param>
        /// <param name="prefix">The prefix.</param>
        /// <param name="postfix">The postfix.</param>
        /// <param name="isNegated">If set to <c>true</c> [is negated].</param>
        /// <returns>A list of prepared input field results.</returns>
        private static ObservableCollection <InputFieldResult> PrepareInputFieldResults(SearchResult searchResult, string prefix, string postfix, bool isNegated)
        {
            ObservableCollection <InputFieldResult> preparedResults = new ObservableCollection <InputFieldResult>();

            foreach (TermResult termResult in searchResult.Terms)
            {
                InputFieldResult inputFieldResult = new InputFieldResult();

                inputFieldResult.Concept             = termResult.Concept;
                inputFieldResult.Description         = termResult.Description;
                inputFieldResult.SnomedDescriptionId = termResult.SnomedDescriptionId;
                inputFieldResult.PrefixText          = prefix;
                inputFieldResult.PostfixText         = postfix;
                inputFieldResult.IsNegated           = isNegated;

                preparedResults.Add(inputFieldResult);
            }

            return(preparedResults);
        }
예제 #5
0
        /// <summary>
        /// Returns 'is a' or 'is an' based on the start of the next word.
        /// </summary>
        /// <param name="value">The next piece of text.</param>
        /// <param name="targetType">The target type.</param>
        /// <param name="parameter">The parameter.</param>
        /// <param name="culture">The culture info.</param>
        /// <returns>Either 'is a' or 'is an'.</returns>
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            InputFieldResult inputFieldResult = null;

            if ((inputFieldResult = value as InputFieldResult) != null)
            {
                if (inputFieldResult.IsNegated)
                {
                    return(Visibility.Collapsed);
                }

                if (inputFieldResult.Description == inputFieldResult.Concept.PreferredTerm)
                {
                    return(Visibility.Collapsed);
                }
            }
            else if (value is ConceptResult)
            {
            }

            return(Visibility.Visible);
        }
예제 #6
0
        /// <summary>
        /// Prepares the input field results.
        /// </summary>
        /// <param name="searchResult">The search result.</param>
        /// <param name="prefix">The prefix.</param>
        /// <param name="postfix">The postfix.</param>
        /// <param name="isNegated">If set to <c>true</c> [is negated].</param>
        /// <returns>A list of prepared input field results.</returns>
        private static ObservableCollection<InputFieldResult> PrepareInputFieldResults(SearchResult searchResult, string prefix, string postfix, bool isNegated)
        {
            ObservableCollection<InputFieldResult> preparedResults = new ObservableCollection<InputFieldResult>();

            foreach (TermResult termResult in searchResult.Terms)
            {
                InputFieldResult inputFieldResult = new InputFieldResult();
                
                inputFieldResult.Concept = termResult.Concept;
                inputFieldResult.Description = termResult.Description;
                inputFieldResult.SnomedDescriptionId = termResult.SnomedDescriptionId;
                inputFieldResult.PrefixText = prefix;
                inputFieldResult.PostfixText = postfix;
                inputFieldResult.IsNegated = isNegated;                                

                preparedResults.Add(inputFieldResult);
            }

            return preparedResults;
        }
예제 #7
0
        /// <summary>
        /// Encodes the concept.
        /// </summary>
        /// <param name="inputFieldResult">The input field result.</param>
        /// <param name="additionalTextBoxResults">The additional text box results.</param>
        public static void EncodeConcept(InputFieldResult inputFieldResult, ObservableCollection<AdditionalTextBoxResult> additionalTextBoxResults)
        {
            SearchState searchState = new SearchState();

            searchState.InputFieldResult = inputFieldResult;            
            searchState.AdditionalTextBoxResults = additionalTextBoxResults;
            searchState.UserState = UserState.EncodingMainConcept;

            terminologyProviderClient.GetConceptDetailsAsync(inputFieldResult.Concept.SnomedConceptId, TerminologyManager.LocaleString, searchState);
        }
예제 #8
0
        /// <summary>
        /// Parses the additional text box.
        /// </summary>
        /// <param name="text">The text to parse for qualifiers.</param>
        /// <param name="inputFieldResult">The input field result.</param>
        /// <param name="conceptDetail">The concept detail.</param>
        public static void ParseAdditionalTextBox(string text, InputFieldResult inputFieldResult, ConceptDetail conceptDetail)
        {           
#if SILVERLIGHT
            string normalisedSearchString = text.ToUpper(CultureInfo.InvariantCulture);
#else
            string normalisedSearchString = text.ToUpperInvariant();
#endif
            ObservableCollection<string> domains = new ObservableCollection<string>();

            domains.Add(TerminologyManager.QualifiersDomainString);

            SearchState searchState = new SearchState();
            searchState.SearchTextOriginal = text;
            searchState.ConceptDetail = conceptDetail;
            searchState.InputFieldResult = inputFieldResult;

            if (conceptDetail.RefinableCharacteristics.Count > 0)
            {
                TerminologyManager.terminologyProviderClient.IndexTextAsync(normalisedSearchString, domains, null, false, TerminologyManager.LocaleString, searchState);
            }
            else
            {
                TerminologyManager.RaiseAdditionalTextBoxCompleted(new ObservableCollection<AdditionalTextBoxResult>(), searchState);
            }
        }