public static ListedCapabilityStatement BuildRestResourceComponent(this ListedCapabilityStatement statement, ResourceType resourceType, Action <ListedResourceComponent> componentBuilder) { EnsureArg.IsNotNull(statement, nameof(statement)); EnsureArg.IsNotNull(componentBuilder, nameof(componentBuilder)); var restComponent = statement.GetListedRestComponent(); var restNode = restComponent .Resource .FirstOrDefault(x => x.Type == resourceType); if (restNode == null) { restNode = new ListedResourceComponent { Type = resourceType, Profile = new ResourceReference(ResourceIdentity.Core(resourceType.ToString()).AbsoluteUri), }; restComponent.Resource.Add(restNode); } componentBuilder(restNode); return(statement); }
public ICapabilityStatementBuilder ApplyToResource(string resourceType, Action <ListedResourceComponent> action) { EnsureArg.IsNotNullOrEmpty(resourceType, nameof(resourceType)); EnsureArg.IsNotNull(action, nameof(action)); EnsureArg.IsTrue(_modelInfoProvider.IsKnownResource(resourceType), nameof(resourceType), x => GenerateTypeErrorMessage(x, resourceType)); ListedRestComponent listedRestComponent = _statement.Rest.Server(); ListedResourceComponent resourceComponent = listedRestComponent.Resource.SingleOrDefault(x => string.Equals(x.Type, resourceType, StringComparison.OrdinalIgnoreCase)); if (resourceComponent == null) { resourceComponent = new ListedResourceComponent { Type = resourceType, Profile = new ReferenceComponent { Reference = $"http://hl7.org/fhir/StructureDefinition/{resourceType}", }, }; listedRestComponent.Resource.Add(resourceComponent); } action(resourceComponent); return(this); }
public ICapabilityStatementBuilder UpdateRestResourceComponent(string resourceType, Action <ListedResourceComponent> action) { EnsureArg.IsNotNullOrEmpty(resourceType, nameof(resourceType)); EnsureArg.IsNotNull(action, nameof(action)); EnsureArg.IsTrue(_modelInfoProvider.IsKnownResource(resourceType), nameof(resourceType), x => GenerateTypeErrorMessage(x, resourceType)); ListedRestComponent listedRestComponent = _statement.Rest.Server(); ListedResourceComponent resourceComponent = listedRestComponent.Resource.SingleOrDefault(x => string.Equals(x.Type, resourceType, StringComparison.OrdinalIgnoreCase)); if (resourceComponent == null) { resourceComponent = new ListedResourceComponent { Type = resourceType, }; listedRestComponent.Resource.Add(resourceComponent); } action(resourceComponent); return(this); }