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); }
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)); }
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) { }