public FhirClientFactory( IAuthenticationService authenticationService, IOptions <FhirClientSettings> fhirClientSettings) { _authenticationService = authenticationService; _fhirClientSettings = fhirClientSettings.Value; }
public void Initialize() { _logger.LogDebug(nameof(Initialize)); var defSettings = new FhirClientSettings { UseFormatParameter = true, PreferredFormat = ResourceFormat.Json, PreferredReturn = Prefer.ReturnRepresentation, Timeout = 10000 // 10 seconds }; Endpoint = _fhirOptions.Endpoint; if (string.IsNullOrWhiteSpace(_fhirOptions.BearerToken)) { Client = new FhirClient(Endpoint, defSettings); } else { var messageHandler = new AuthenticationMessageHandler { Authorization = new AuthenticationHeaderValue("Bearer", _fhirOptions.BearerToken) }; Client = new FhirClient(Endpoint, defSettings, messageHandler); } }
public GoogleFhirClient(Uri endpoint, FhirClientSettings settings = null, HttpMessageHandler messageHandler = null, IStructureDefinitionSummaryProvider provider = null) : base(endpoint, settings, messageHandler, provider) { var creds = GoogleCredential.GetApplicationDefault().CreateScoped("https://www.googleapis.com/auth/cloud-platform"); var toks = creds.UnderlyingCredential.GetAccessTokenForRequestAsync("https://oauth2.googleapis.com/token"); RequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", toks.GetAwaiter().GetResult()); Settings.PreferredFormat = ResourceFormat.Json; }
public ClientCredentialsAuthenticationService( HttpClient httpClient, IMemoryCache cache, IOptions <FhirClientSettings> fhirClientSettings) { _httpClient = httpClient; _cache = cache; _fhirClientSettings = fhirClientSettings.Value; }
public ActionResult <Bundle> GetPatients() { var settings = new FhirClientSettings { Timeout = 10, PreferredFormat = ResourceFormat.Json, VerifyFhirVersion = true, PreferredReturn = Prefer.ReturnMinimal }; var client = new FhirClient("http://fhir.healthintersections.com.au/open", settings); Bundle results = client.Search <Patient>(new string[] { "family:exact=Eve" }); return(results); }
private async Task ValidateFhirClientUrl(string url, bool expectedIsValid) { var fhirClientSettings = new FhirClientSettings { PreferredFormat = ResourceFormat.Json, }; var fhirClient = new FhirClient(new Uri(url), fhirClientSettings.PreferredFormat); var logger = Substitute.For <ITelemetryLogger>(); bool actualIsValid = await fhirClient.ValidateFhirClientAsync(logger); Assert.Equal(expectedIsValid, actualIsValid); }
private static FhirClient CreateClient(IAuthService authService) { var url = System.Environment.GetEnvironmentVariable("FhirService:Url"); EnsureArg.IsNotNullOrEmpty(url, nameof(url)); EnsureArg.IsNotNull(authService, nameof(authService)); var fhirClientSettings = new FhirClientSettings { PreferredFormat = ResourceFormat.Json, }; var client = new FhirClient(url, fhirClientSettings, new BearerTokenAuthorizationMessageHandler(authService)); return(client); }
private static FhirClient CreateClient(TokenCredential tokenCredential, ITelemetryLogger logger) { var url = Environment.GetEnvironmentVariable("FhirService:Url"); EnsureArg.IsNotNullOrEmpty(url, nameof(url)); var uri = new Uri(url); EnsureArg.IsNotNull(tokenCredential, nameof(tokenCredential)); var fhirClientSettings = new FhirClientSettings { PreferredFormat = ResourceFormat.Json, }; var client = new FhirClient(url, fhirClientSettings, new BearerTokenAuthorizationMessageHandler(uri, tokenCredential, logger)); return(client); }
internal FhirClientWrapper(string endpoint, ILogger logger, FhirVersion?fhirVersion = null, string accessToken = null) { Endpoint = endpoint; _logger = logger; _accessToken = accessToken; if (fhirVersion == FhirVersion.None) { var r3Handler = new R3Rest.HttpClientEventHandler(); r3Handler.OnBeforeRequest += R3Client_OnBeforeRequest; r3Handler.OnAfterResponse += R3Client_OnAfterRequest; R3Client = new R3Rest.FhirClient(endpoint, FhirClientSettings.CreateDefault(), r3Handler); var meta = R3Client.CapabilityStatement(SummaryType.Text); fhirVersion = FhirVersionUtils.MapStringToFhirVersion(meta.FhirVersion); } if (fhirVersion == null) { throw new Exception("Unable to determine FhirVersion used by server. Please specify fhir version"); } FhirVersion = fhirVersion.Value; switch (FhirVersion) { case FhirVersion.R4: var r4Handler = new R4Rest.HttpClientEventHandler(); r4Handler.OnBeforeRequest += R4Client_OnBeforeRequest; r4Handler.OnAfterResponse += R4Client_OnAfterRequest; R4Client = new R4Rest.FhirClient(endpoint, FhirClientSettings.CreateDefault(), r4Handler); break; case FhirVersion.R3: var r3Handler = new R3Rest.HttpClientEventHandler(); r3Handler.OnBeforeRequest += R3Client_OnBeforeRequest; r3Handler.OnAfterResponse += R3Client_OnAfterRequest; R3Client = new R3Rest.FhirClient(endpoint, FhirClientSettings.CreateDefault(), r3Handler); break; } }
public override async Tasks.Task <OperationResultEnum> Execute() { IEnumerable <Resource> resources = null; _logger.LogInformation($"Uploading resources to endpoint: '{_arguments.FhirBaseUrl}'"); var clientMessageHandler = new HttpClientEventHandler(); clientMessageHandler.OnBeforeRequest += fhirClient_BeforeRequest; FhirClient fhirClient = new FhirClient(_arguments.FhirBaseUrl.Uri, FhirClientSettings.CreateDefault(), clientMessageHandler); foreach (Resource resource in resources) { Resource resource2; if (resource is Questionnaire && !string.IsNullOrWhiteSpace(resource.Id)) { Questionnaire questionnaire = resource as Questionnaire; questionnaire.Url = $"{_arguments.ProxyBaseUrl}Questionnaire/{resource.Id}"; } if (string.IsNullOrWhiteSpace(resource.Id)) { _logger.LogInformation($"Creating new resource of type: '{resource.TypeName}'"); resource2 = fhirClient.Create(resource); } else { _logger.LogInformation($"Updating resource with Id: '{resource.Id}' of type: '{resource.TypeName}'"); resource2 = fhirClient.Update(resource); } _logger.LogInformation($"Resource was assigned the Id: '{resource2.Id}'"); _logger.LogInformation($"Resource can be accessed at: '{fhirClient.Endpoint.AbsoluteUri}{ResourceType.Questionnaire.GetLiteral()}/{resource2.Id}'"); } _logger.LogInformation($"Successfully uploaded resources to endpoint: {_arguments.FhirBaseUrl}"); return(await Tasks.Task.FromResult(_issues.Any(issue => issue.Severity == IssueSeverityEnum.Error) ?OperationResultEnum.Failed : OperationResultEnum.Succeeded)); }
public static FhirClient CreateMockFhirClient(HttpMessageHandler messageHandler = null) { return(Substitute.For <FhirClient>("https://localhost", FhirClientSettings.CreateDefault(), messageHandler ?? CreateMockMessageHandler(), null)); }