public void GivenABadFhirPathExpression_WhenResolving_ThenResolveThrowException() { var expression = _compiler.Parse("Patient.cookie"); Assert.Throws <NotSupportedException>(() => SearchParameterToTypeResolver.Resolve( KnownResourceTypes.Patient, (SearchParamType.Token, expression, new Uri("http://hl7.org/fhir/SearchParameter/Patient-cookie")), null).ToArray()); }
public void GivenAFhirPathExpressionWithAsFunction_WhenResolvingTypes_ThenTheyAreReturnedCorrectly() { var expression = _compiler.Parse("Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').first().extension.where(url = 'ombCategory').value.as(string)"); SearchParameterTypeResult[] results = SearchParameterToTypeResolver.Resolve( KnownResourceTypes.Patient, (SearchParamType.Token, expression, new Uri("http://hl7.org/fhir/SearchParameter/Patient-race")), null).ToArray(); Assert.Equal("string", results.Single().FhirNodeType); }
public void GivenAFhirPathExpressionWithTwoPossibleOutcomeTypes_WhenResolve_TwoTypesReturned() { var expression = _compiler.Parse("CarePlan.activity.detail.product"); SearchParameterTypeResult[] results = SearchParameterToTypeResolver.Resolve( "CarePlan", (SearchParamType.Reference, expression, new Uri("http://hl7.org/fhir/SearchParameter/Patient-race")), null).ToArray(); Assert.Equal(2, results.Length); }
public void GivenAFhirPathExpressionWithOfType_WhenResolvingTypes_ThenTheyAreReturnedCorrectly() { var expression = _compiler.Parse("QuestionnaireResponse.item.where(extension('http://hl7.org/fhir/StructureDefinition/questionnaireresponse-isSubject').exists()).answer.value.ofType(Reference)"); SearchParameterTypeResult[] results = SearchParameterToTypeResolver.Resolve( KnownResourceTypes.QuestionnaireResponse, (SearchParamType.Reference, expression, new Uri("http://hl7.org/fhir/StructureDefinition/questionnaireresponse-isSubject")), null).ToArray(); Assert.Equal("Reference", results.Single().FhirNodeType); }
public void GivenAFhirPathExpressionWithFirstFunction_WhenResolvingTypes_ThenTheyAreRetunedCorrectly() { var expression = _compiler.Parse("Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').first().extension.where(url = 'ombCategory').value"); SearchParameterTypeResult[] results = SearchParameterToTypeResolver.Resolve( KnownResourceTypes.Patient, (SearchParamType.Token, expression, new Uri("http://hl7.org/fhir/SearchParameter/Patient-race")), null).ToArray(); if (ModelInfoProvider.Version == FhirSpecification.Stu3) { Assert.Equal(38, results?.Length); } else { Assert.Equal(49, results?.Length); } }
public void GivenAFhirPathExpressionAsConstructorFilter_WhenResolvingTypes_ThenTheyReturnedSameAsWhen() { var whereExpression = _compiler.Parse("Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race')"); var constructorExpression = _compiler.Parse("Patient.extension(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race')"); var whereResult = SearchParameterToTypeResolver.Resolve( KnownResourceTypes.Patient, (SearchParamType.Token, whereExpression, new Uri("http://hl7.org/fhir/SearchParameter/Patient-race")), null).First(); var constuctorResult = SearchParameterToTypeResolver.Resolve( KnownResourceTypes.Patient, (SearchParamType.Token, constructorExpression, new Uri("http://hl7.org/fhir/SearchParameter/Patient-race")), null).First(); Assert.Equal(whereResult.ClassMapping, constuctorResult.ClassMapping); Assert.Equal(whereResult.Path, constuctorResult.Path); Assert.Equal(whereResult.SearchParamType, constuctorResult.SearchParamType); Assert.Equal(whereResult.FhirNodeType, constuctorResult.FhirNodeType); Assert.Equal(whereResult.Definition, constuctorResult.Definition); }