public void GetCapabilityStatement() { Hl7.Fhir.Rest.FhirClient clientFhir = new Hl7.Fhir.Rest.FhirClient(_baseAddress, false); var result = clientFhir.CapabilityStatement(); Assert.IsNotNull(result, "Should be a capability statement returned"); Assert.IsNotNull(result.FhirVersion, "Should at least report the version of fhir active"); }
public void Test_MetadataCapabilityStatment() { Hl7.Fhir.Rest.FhirClient clientFhir = new Hl7.Fhir.Rest.FhirClient(StaticTestData.FhirEndpoint(), false); clientFhir.Timeout = 1000 * 720; // give the call a while to execute (particularly while debugging). Resource CapabilityStatment = null; try { CapabilityStatment = clientFhir.CapabilityStatement(SummaryType.Data); } catch (FhirOperationException ex) { Assert.Fail($"Call to server metadata operation threw an exception. {ex.Message}"); } if (CapabilityStatment is CapabilityStatement Cap) { Assert.NotNull(Cap.Contact, "No Contact element in CapabilityStatement."); Assert.AreEqual(1, Cap.Contact.Count(), "Not exactly 1 Contact elements in CapabilityStatement."); Assert.NotNull(Cap.Contact[0].Telecom, "No Contact[0].Telecom element in CapabilityStatement."); Assert.AreEqual(2, Cap.Contact[0].Telecom.Count(), "Not exactly 2 Contact[0].Telecom elements in CapabilityStatement."); Assert.AreEqual(1, Cap.Contact.Count(), "Not exactly 1 Format element in CapabilityStatement."); Assert.NotNull(Cap.Format, "No Format element in CapabilityStatement."); Assert.AreEqual(9, Cap.Format.Count(), "Not exactly 9 Format elements in CapabilityStatement."); Assert.NotNull(Cap.Rest, "No Rest element in CapabilityStatement."); Assert.AreEqual(1, Cap.Rest.Count, "Not exactly one Rest element in CapabilityStatement."); Assert.NotNull(Cap.Rest[0].Resource, "No Rest.Resource element in CapabilityStatement."); Assert.GreaterOrEqual(119, Cap.Rest[0].Resource.Count(), "Less than 197 FHIR resources in CapabilityStatement."); var ObsResourceElement = Cap.Rest[0].Resource.SingleOrDefault(x => x.Type == ResourceType.Observation); Assert.NotNull(ObsResourceElement, "No Observation Resource element in CapabilityStatement."); Assert.NotNull(ObsResourceElement.Interaction, "No Observation Interaction element in CapabilityStatement."); Assert.GreaterOrEqual(8, ObsResourceElement.Interaction.Count(), "Less than 8 Observation Interactions in CapabilityStatement."); Assert.AreEqual(CapabilityStatement.ResourceVersionPolicy.Versioned, ObsResourceElement.Versioning, "Versioning element incorrect"); Assert.AreEqual(true, ObsResourceElement.ReadHistory, "ReadHistory should be True"); Assert.AreEqual(true, ObsResourceElement.UpdateCreate, "UpdateCreate should be True"); Assert.AreEqual(true, ObsResourceElement.ConditionalCreate, "conditionalCreate should be True"); Assert.AreEqual(CapabilityStatement.ConditionalReadStatus.FullSupport, ObsResourceElement.ConditionalRead, "conditionalUpdate should be True"); Assert.AreEqual(true, ObsResourceElement.ConditionalUpdate, "conditionalUpdate should be True"); Assert.AreEqual(CapabilityStatement.ConditionalDeleteStatus.Multiple, ObsResourceElement.ConditionalDelete, "ConditionalDelete should be True"); Assert.AreEqual(CapabilityStatement.ReferenceHandlingPolicy.Literal, ObsResourceElement.ReferencePolicy.ElementAt(0), "ReferencePolicy 1 should be True"); Assert.AreEqual(CapabilityStatement.ReferenceHandlingPolicy.Local, ObsResourceElement.ReferencePolicy.ElementAt(1), "ReferencePolicy 2 should be True"); Assert.AreEqual(27, ObsResourceElement.SearchInclude.Count(), "Not exactly 27 SearchInclude elements in CapabilityStatement."); Assert.AreEqual(67, ObsResourceElement.SearchRevInclude.Count(), "Not exactly 67 SearchRevInclude elements in CapabilityStatement."); Assert.AreEqual(43, ObsResourceElement.SearchParam.Count(), "Not exactly 43 SearchParam elements in CapabilityStatement."); Assert.IsNotEmpty(ObsResourceElement.SearchParam[0].Name, "SearchParam Name element should not be empty in CapabilityStatement."); Assert.IsNotEmpty(ObsResourceElement.SearchParam[0].Definition, "SearchParam Definition element should not be empty in CapabilityStatement."); Assert.IsNotNull(ObsResourceElement.SearchParam[0].Type, "SearchParam Type element should not be empty in CapabilityStatement."); Assert.IsNotEmpty(ObsResourceElement.SearchParam[0].Documentation, "SearchParam documentation element should not be empty in CapabilityStatement."); } else { Assert.Fail($"Call to server metadata operation returned a resource not of type CapabilityStatement"); } }