helix.fhir.client.sdk
Project description
from typing_extensions import Optionalfrom helix_fhir_client_sdk.responses.fhir_get_response import FhirGetResponsefrom build.lib.helix_fhir_client_sdk.responses.fhir_get_response import FhirGetResponsefrom helix_fhir_client_sdk.responses.fhir_get_response import FhirGetResponse
helix.fhir.client.sdk
Fluent API to call the FHIR server that handles:
- Authentication to FHIR server
- Renewing access token when they expire
- Retry when there are transient errors
- Un-bundling the resources received from FHIR server
- Paging
- Streaming
- Logging
- Simulating a $graph call when the server does not support it
Usage
pip install helix.fhir.client.sdk
Documentation
https://icanbwell.github.io/helix.fhir.client.sdk/
Test Project using this
https://github.com/icanbwell/fhir-server-performance
Python Version Support
- 1.x supports python 3.7+
- 2.x supports python 3.10+
- 3.x supports python 3.12+
Asynchronous Support
When communicating with FHIR servers, a lot of time is spent waiting for the server to respond.
This is a good use case for using asynchronous programming.
This SDK supports asynchronous programming using the async
and await
keywords.
The return types are Python AsyncGenerators. Python makes it very easy to work with AsyncGenerators.
For example, if the SDK provides a function like this:
async def get_resources(self) -> AsyncGenerator[FhirGetResponse, None]:
...
You can iterate over the results as they become available:
response: Optional[FhirGetResponse]
async for response in client.get_resources():
print(response.resource)
Or you can get a list of responses (which will return AFTER all the responses are received:
responses: List[FhirGetResponse] = [response async for response in client.get_resources()]
Or you can aggregate the responses into one response (which will return AFTER all the responses are received:
response: Optional[FhirGetResponse] = await FhirGetResponse.from_async_generator(client.get_resources())
Data Streaming
For FHIR servers that support data streaming (e.g., b.well FHIR server), you can just set the use_data_streaming
parameter to stream the data as it i received.
The data will be streamed in AsyncGenerators as described above.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for helix_fhir_client_sdk-3.0.5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36e235140ff47382d3fd8b87d19c446a4b047cd189e72bf4da675120f9ac409c |
|
MD5 | edbfc826abf342374507204ff6b669dd |
|
BLAKE2b-256 | 53a7400a0e48340bc2cd21271c426b42fc38a0ba9b311f0eab98c07830142934 |
Hashes for helix.fhir.client.sdk-3.0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1434aa64c4c088f9e465356c3d08ebfe2a59a47958081938cf530ebb8369572a |
|
MD5 | a19a5b93e581f2db925498d2b0c6b7fa |
|
BLAKE2b-256 | f7a094837bc4f8c5bd3b510d15325e463e2767ccbafef32ecb36876d99b9809f |