void ISearchValueVisitor.Visit(StringSearchValue s) { EnsureArg.IsNotNull(s, nameof(s)); EnsureOnlyEqualComparatorIsSupported(); if (_modifier == null) { // Based on spec http://hl7.org/fhir/STU3/search.html#string, // is case-insensitive search so we will normalize into lower case for search. _outputExpression = Expression.StartsWith(FieldName.String, _componentIndex, s.String, true); } else if (_modifier == SearchModifierCode.Exact) { _outputExpression = Expression.StringEquals(FieldName.String, _componentIndex, s.String, false); } else if (_modifier == SearchModifierCode.Contains) { // Based on spec http://hl7.org/fhir/STU3/search.html#modifiers, // contains is case-insensitive search so we will normalize into lower case for search. _outputExpression = Expression.Contains(FieldName.String, _componentIndex, s.String, true); } else { ThrowModifierNotSupported(); } }