.NET FHIR Client With Token Example

Was looking at trying to find an example of leveraging the fhir-net-api to create a FHIR client server side and pass in an authorization token that is being passed back from a smart on fhir client application to my web server to make calls to the FHIR server where the token was generated/valid and not finding any examples of adding a token to the FHIR client before making the call to the FHIR server in the .net fhir documentation as the examples are all hitting public endpoints.

Do I just add it as a search parameter or is there something I am missing that I need to do to leverage the token when calling a non-public API that requires the token? I noticed that there is a token type in the search parameters but not sure how to leverage it... Here is a basic example of making a generic search call to an observation endpoint where I think I need to add the token as a search parameter:

_fhirClient = new FhirClient(openApi); _fhirClient.PreferredFormat = ResourceFormat.Json; _fhirSearchParamaters = new SearchParams(); _fhirSearchParamaters.Add("patient", mrn); //Not sure where to add this token to the FHIR client //before executing the search call to get the bundle from the FHIR server... _fhirSearchParamaters.Add("token", token); _fhirSearchParamaters.Add("code", "58941-6"); //return the bundle from the FHIR server return _fhirClient.Search(_fhirSearchParamaters); 

2 Answers

You can add a header to the call in the OnBeforeRequest event of the client like this:

_fhirClient.OnBeforeRequest += (object sender, BeforeRequestEventArgs e) => { // Replace with a valid bearer token for the server e.RawRequest.Headers.Add("Authorization", "Bearer XXXXXXX"); }; 

The documentation for this can be found here: .

2

Looks like the new way to do it with 2.0 version:

 var messageHandler = new HttpClientEventHandler(); string token = {{get your token}}; messageHandler.OnBeforeRequest += (object sender, BeforeHttpRequestEventArgs e) => { e.RawRequest.Headers .Add("Authorization", $"Bearer {token}"); ////var request = Encoding.UTF8.GetString(e.Body, 0, e.Body.Length); }; Hl7.Fhir.Rest.FhirClient client = new Hl7.Fhir.Rest.FhirClient(endpoint, messageHandler: messageHandler, settings: new FhirClientSettings() { PreferredFormat = ResourceFormat.Json }); 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like