Example #1
0
        public void GivenAValidReference_WhenParsing_ThenCorrectSearchValueShouldBeReturned(string reference, string baseUri, ResourceType?resourceType, string resourceId)
        {
            ReferenceSearchValue value = _referenceSearchValueParser.Parse(reference);

            Assert.NotNull(value);
            Assert.Equal(baseUri == null ? null : new Uri(baseUri), value.BaseUri);
            Assert.Equal(resourceType, value.ResourceType);
            Assert.Equal(resourceId, value.ResourceId);
        }
        public void GivenAReferenceSearchValueWithRelativeReference_WhenGenerated_ThenCorrectJObjectShouldBeCreated()
        {
            const string resourceId = "xyz";

            var value = new ReferenceSearchValue(ReferenceKind.InternalOrExternal, null, ResourceType.Immunization, resourceId);

            var expectedValues = new[]
            {
                CreateTuple(ReferenceResourceTypeName, "Immunization"),
                CreateTuple(ReferenceResourceIdName, resourceId),
            };

            TestAndValidateOutput(
                "reference",
                value,
                expectedValues);
        }
        public void GivenAResourceReferenceWithReference_WhenConverted_ThenAReferenceSearchValueShouldBeCreated()
        {
            const string reference = "Patient/123";

            var expectedSearchValue = new ReferenceSearchValue(ReferenceKind.InternalOrExternal, null, null, "123");

            _referenceSearchValueParser.Parse(reference).Returns(expectedSearchValue);

            _reference.Reference = reference;

            IEnumerable <ISearchValue> results = _converter.ConvertTo(_reference.ToTypedElement());

            Assert.NotNull(results);
            Assert.Collection(
                results,
                e => Assert.Same(expectedSearchValue, e));
        }
        public void GivenASearchValue_WhenToStringIsCalled_ThenCorrectStringShouldBeReturned(
            string uriString,
            ResourceType?resourceType,
            string resourceId,
            string expected)
        {
            Uri uri = null;

            if (uriString != null)
            {
                uri = new Uri(uriString);
            }

            var value = new ReferenceSearchValue(ReferenceKind.InternalOrExternal, uri, resourceType, resourceId);

            Assert.Equal(expected, value.ToString());
        }
        public void GivenAReferenceSearchValueWithAbsoluteReference_WhenGenerated_ThenCorrectJObjectShouldBeCreated()
        {
            var          baseUri    = new Uri("https://localhost/stu3/");
            const string resourceId = "123";

            var value = new ReferenceSearchValue(ReferenceKind.Internal, baseUri, ResourceType.Account, resourceId);

            var expectedValues = new[]
            {
                CreateTuple("rb", baseUri.ToString()),
                CreateTuple(ReferenceResourceTypeName, "Account"),
                CreateTuple(ReferenceResourceIdName, resourceId),
            };

            TestAndValidateOutput(
                "reference",
                value,
                expectedValues);
        }
Example #6
0
        public async Task GivenAReferenceExtension_WhenConverted_ThenAReferenceSearchValueShouldBeCreated()
        {
            var reference = new ResourceReference("Patient/123");
            var extension = new Extension("test", reference);

            ReferenceSearchValue expected = _referenceSearchValueParser.Parse(reference.Reference);

            var values = (await GetTypeConverterAsync()).ConvertTo(extension.ToTypedElement()).ToList();

            Assert.NotNull(values);
            Assert.True(values.Count == 1);

            var actual = (ReferenceSearchValue)values[0];

            Assert.Equal(expected.Kind, actual.Kind);
            Assert.Equal(expected.BaseUri, actual.BaseUri);
            Assert.Equal(expected.ResourceType, actual.ResourceType);
            Assert.Equal(expected.ResourceId, actual.ResourceId);
        }
        void ISearchValueVisitor.Visit(ReferenceSearchValue reference)
        {
            EnsureArg.IsNotNull(reference, nameof(reference));

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

            EnsureOnlyEqualComparatorIsSupported();

            if (reference.BaseUri != null)
            {
                // The reference is external.
                _outputExpression = Expression.And(
                    Expression.StringEquals(FieldName.ReferenceBaseUri, _componentIndex, reference.BaseUri.ToString(), false),
                    Expression.StringEquals(FieldName.ReferenceResourceType, _componentIndex, reference.ResourceType.Value.ToString(), false),
                    Expression.StringEquals(FieldName.ReferenceResourceId, _componentIndex, reference.ResourceId, false));
            }
            else if (reference.ResourceType == null)
            {
                // Only resource id is specified.
                _outputExpression = Expression.StringEquals(FieldName.ReferenceResourceId, _componentIndex, reference.ResourceId, false);
            }
            else if (reference.Kind == ReferenceKind.Internal)
            {
                // The reference must be internal.
                _outputExpression = Expression.And(
                    Expression.Missing(FieldName.ReferenceBaseUri, _componentIndex),
                    Expression.StringEquals(FieldName.ReferenceResourceType, _componentIndex, reference.ResourceType.Value.ToString(), false),
                    Expression.StringEquals(FieldName.ReferenceResourceId, _componentIndex, reference.ResourceId, false));
            }
            else
            {
                // The reference can be internal or external.
                _outputExpression = Expression.And(
                    Expression.StringEquals(FieldName.ReferenceResourceType, _componentIndex, reference.ResourceType.Value.ToString(), false),
                    Expression.StringEquals(FieldName.ReferenceResourceId, _componentIndex, reference.ResourceId, false));
            }
        }
        public ITypedElement Resolve(string reference)
        {
            if (string.IsNullOrWhiteSpace(reference))
            {
                return(null);
            }

            ReferenceSearchValue parsed = _referenceParser.Parse(reference);

            if (parsed == null || !_modelInfoProvider.IsKnownResource(parsed.ResourceType))
            {
                return(null);
            }

            ISourceNode node = FhirJsonNode.Create(
                JObject.FromObject(
                    new
            {
                resourceType = parsed.ResourceType,
                id           = parsed.ResourceId,
            }));

            return(node.ToTypedElement(_modelInfoProvider.StructureDefinitionSummaryProvider));
        }
Example #9
0
 void ISearchValueVisitor.Visit(ReferenceSearchValue reference)
 {
     AddPropertyIfNotNull(SearchValueConstants.ReferenceBaseUriName, reference.BaseUri?.ToString());
     AddPropertyIfNotNull(SearchValueConstants.ReferenceResourceTypeName, reference.ResourceType?.ToString());
     AddProperty(SearchValueConstants.ReferenceResourceIdName, reference.ResourceId);
 }
 public void Visit(ReferenceSearchValue reference)
 {
 }