예제 #1
0
        public void GivenAQuantitySearchValueWithUnequalLowAndHighValues_WhenGenerated_ThenCorrectJObjectShouldBeCreated()
        {
            const string  system = "system";
            const string  code   = "code";
            const decimal low    = 3.0m;
            const decimal high   = 5.0m;

            var value = new QuantitySearchValue(
                system,
                code,
                low,
                high);

            var expectedValues = new[]
            {
                CreateTuple(SystemName, system),
                CreateTuple(CodeName, code),
                CreateTuple("lq", low),
                CreateTuple("hq", high),
            };

            TestAndValidateOutput(
                "quantity",
                value,
                expectedValues);
        }
        public void GivenAValidString_WhenParsed_ThenCorrectSearchValueShouldBeReturned(string s, string expectedSystem, string expectedCode, decimal expectedQuantity)
        {
            QuantitySearchValue value = QuantitySearchValue.Parse(s);

            Assert.NotNull(value);
            Assert.Equal(expectedSystem, value.System);
            Assert.Equal(expectedCode, value.Code);
            Assert.Equal(expectedQuantity, value.Quantity);
        }
        public void GivenAValue_WhenInitialized_ThenAnySystemAndCodeShouldBeAllowed(string system, string code)
        {
            _builder.System = system;
            _builder.Code   = code;

            QuantitySearchValue value = _builder.ToQuantitySearchValue();

            Assert.Equal(system, value.System);
            Assert.Equal(code, value.Code);
        }
        public void GivenASearchValue_WhenToStringIsCalled_ThenCorrectStringShouldBeReturned(decimal quantity, string system, string code, string expected)
        {
            _builder.Value  = quantity;
            _builder.System = system;
            _builder.Code   = code;

            QuantitySearchValue value = _builder.ToQuantitySearchValue();

            Assert.Equal(expected, value.ToString());
        }
        public void GivenAStringWithTrailingZero_WhenParsed_ThenTrailingZeroShouldBePreserved()
        {
            string expected = "0.010|system|code";

            QuantitySearchValue value = QuantitySearchValue.Parse(expected);

            Assert.NotNull(value);
            Assert.Equal("system", value.System);
            Assert.Equal("code", value.Code);
            Assert.Equal(0.010m, value.Quantity);
            Assert.Equal(expected, value.ToString());
        }
예제 #6
0
        void ISearchValueVisitor.Visit(QuantitySearchValue quantity)
        {
            AddPropertyIfNotNull(SearchValueConstants.SystemName, quantity.System);
            AddPropertyIfNotNull(SearchValueConstants.CodeName, quantity.Code);

            if (quantity.Low == quantity.High)
            {
                AddProperty(SearchValueConstants.QuantityName, quantity.Low);
            }

            AddProperty(SearchValueConstants.LowQuantityName, quantity.Low);
            AddProperty(SearchValueConstants.HighQuantityName, quantity.High);
        }
        public void GivenAQuantitySearchValue_WhenGenerated_ThenCorrectJObjectShouldBeCreated()
        {
            const string  system   = "system";
            const string  code     = "code";
            const decimal quantity = 3.0m;

            var value = new QuantitySearchValue(
                system,
                code,
                quantity);

            var expectedValues = new[]
            {
                CreateTuple(SystemName, system),
                CreateTuple(CodeName, code),
                CreateTuple("q", quantity),
            };

            TestAndValidateOutput(
                "quantity",
                value,
                expectedValues);
        }
        void ISearchValueVisitor.Visit(QuantitySearchValue quantity)
        {
            EnsureArg.IsNotNull(quantity, nameof(quantity));

            if (_modifier != null)
            {
                ThrowModifierNotSupported();
            }

            var expressions = new List <Expression>(3);

            // Based on spec http://hl7.org/fhir/STU3/search.html#quantity,
            // The system is handled differently in quantity than token.
            if (!string.IsNullOrWhiteSpace(quantity.System))
            {
                expressions.Add(
                    Expression.StringEquals(FieldName.QuantitySystem, _componentIndex, quantity.System, false));
            }

            if (!string.IsNullOrWhiteSpace(quantity.Code))
            {
                expressions.Add(
                    Expression.StringEquals(FieldName.QuantityCode, _componentIndex, quantity.Code, false));
            }

            Debug.Assert(quantity.Low.HasValue && quantity.Low == quantity.High, "quantity low and high should be the same and not null");
            expressions.Add(GenerateNumberExpression(FieldName.Quantity, quantity.Low.Value));

            if (expressions.Count == 1)
            {
                _outputExpression = expressions[0];
            }
            else
            {
                _outputExpression = Expression.And(expressions.ToArray());
            }
        }
예제 #9
0
 void ISearchValueVisitor.Visit(QuantitySearchValue quantity)
 {
     AddPropertyIfNotNull(SearchValueConstants.SystemName, quantity.System);
     AddPropertyIfNotNull(SearchValueConstants.CodeName, quantity.Code);
     AddProperty(SearchValueConstants.QuantityName, quantity.Quantity);
 }
 public void GivenAStringContainingMoreThanTwoTokenSeparators_WhenParsing_ThenExceptionShouldBeThrown()
 {
     Assert.Throws <FormatException>(() => QuantitySearchValue.Parse(@"50|sys\|tem|co|de|"));
 }
 public void GivenAnInvalidNumber_WhenParsing_ThenExceptionShouldBeThrown(string s)
 {
     Assert.Throws <FormatException>(() => QuantitySearchValue.Parse(s));
 }
        public void GivenASearchValue_WhenIsValidCompositeComponentIsCalled_ThenTrueShouldBeReturned()
        {
            var value = new QuantitySearchValue("system", "code", 1);

            Assert.True(value.IsValidAsCompositeComponent);
        }
 public void Visit(QuantitySearchValue quantity)
 {
 }